I was not able to improve the performance of CHESSmate much on the Arduino Pro Mini so I purchased an ESP32 ESP-WROOM-32 NodeMCU Development Board.
By sticking with the Arduino IDE it was relatively easy to port the code to the new device. Harder was finding a set of IO pins that did not conflict with internal ESP32 restrictions that are not always obvious. The ESP32 has a lot of pins that are billed as general purpose IO (GPIO), but there are many subtle caveats, like for instance:
Pins GPIO34, GPIO35, GPIO36(VP) and GPIO39(VN) cannot be configured as outputs. They can be used as digital or analog inputs, or for other purposes. They also lack internal pull-up and pull-down resistors, unlike the other GPIO pins.
At any rate I was able to find the 19 IO pins I needed. The compiled code runs much better on the ESP32, not surprising given that the CPU frequency can be set as high as 240 MHz. I actually found that running at 240 MHz was too fast. The code ran fine, but the sound effects in particular were just high pitched chirps of noise. Running at a sedate 80 MHz gives the most authentic user experience running at almost exactly the same speed at the original.
I have added to new code to GitHub.
So I am going to move ahead with the ESP32 version. From a cost point of view we are talking $10 for the ESP32 vs $3 for an Arduino Pro Mini. Not a big deal. Plus I have plans for the built-in Wi-Fi for a future "redux" version of CHESSmate.
Here is how CHESSmate runs on the ESP32.
One thing you might notice is the dim PLAYING BLACK LED. Since the ESP32 is running at 3.3V vs 5V for the Arduino, I'll have to rework the resistor values for the next version. For the current version I just swapped in some high brightness LEDs which did the trick.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.