Dusting off a project from 2023 to write about it…
The idea behind this one was there’s a board that has a bunch of IO - stepper motor drivers, servo drivers, DC drivers, and digital drivers (I2C, UART, PWM, etc). Each section had an internal power supply or you could plug in an external power supply and switch to that if you wanted something higher powered.
And you use a no code interface to program it - I called them flows. You run one flow and can call another flow from within a flow. It ended up being pretty similar to PLCs.
However it took extremely long to implement all the individual blocks in firmware and get the system working and before I was done we had AI and so it was clear that AI driven programming would be the way forward. This project would be quite interesting with an AI driven natural language program generator instead of the flow based logic I have implemented - may get around to that some day!
Some interesting implementation details here:
The commercial idea behind this was I was expecting this to be copied by Chinese factories and they would produce it for super cheap but I would really just be charging for software access and so them making it cheaper would help me
It communicated with an MQTT server so you could actually program this remotely - i.e. you could be at home and reprogram this board at the office without a VPN/etc
The software was written primarily in micropython which allowed a lot of interesting dynamic runtime behaviour that would otherwise be much harder to implement in C (pre-AI, nowadays it’s probably much less difficult!).
I ended up writing some specific peripheral drivers eg. RMT driver in C (and in fact had to fix a bug in micropython which I ended up committing upstream (link))
Ended up writing an interesting authorization protocol to check whether a device was authorized to be on the MQTT network or not - will write more about this later
The devices can actually communicate with one another so you can link up multiple devices over MQTT
How to make sure a device only allowed talks to authorized devices was also an interesting problem - the answer was x509 certificates with limited scopes and user based channel hierarchy



