-
1Choose a device
I have checked that this project is compatible with the ESP32S3 and ESP32S. I recommend the ESP32S3 SuperMini, it's small and works well. Don't accidentally buy the ESP32C3 version, that one won't work.
With some difficulty, this firmware can work on the RP2040 as well -- but you will need to modify it, along with several of the underlying libraries, to make it work.
-
2Fetch, prepare, and flash the firmware
The firmware is available here.
The file you need is selectric256.ino. You will need to update the permanent IDs on the device.
The permanent IDs are what lets the devices automatically connect to each other, and are just 32 random bytes. You can generate them using:
tr -dc A-Za-z0-9 </dev/urandom | head -c 32; echoFor two devices to automatically connect, the local ID of one device needs to be the remote ID of the other. So the two devices have them swapped.
Once that's done, you can flash the firmware using the Arduino IDE. For the ESP32S3 Supermini, set the board as 'Ozobot DRVKit' (I thought ESP32S3 Dev Board would work, but it didn't for me). For ESP32S, Set it to ESP32 DevModule. You should also set Tools-->Pin numbering-->Legacy.
Finally, if not using an ESP32S3 SuperMini, you must comment out this line:
#define superMini
-
3Write a driver
The driver does three things:
1. It sends the configuration to the device during startup.
2. It sends serial commands to the device to control its operation.
3. It receives notifications from the device, such as when a new message is available.
Two example drivers in Python are provided. One is synchronous, the other is asynchronous. The async one is written by AI (given the protocol and previous driver as input), I wanted to make sure anyone who wants to use AI could one-shot it.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.