I have a robotic mower that isnt very smart and has no wifi. I will never manage to make it very smart, but my goal is to have "wifi control" over the physical buttons on the control panel.
The control panel has on/off, auto, start/stop and home buttons as well as a few LEDs indicating charging and error status. The control panel is connected to the main logic board using a flat cable with standard sized pin headers so it would be simple to put something in between that can "press buttons" and see the LED status, maybe even read or spoof the rain sensor.
Best I can tell there is no logic at all in the control panel (cant be sure, its glued in for waterproofness), and all the switches and leds are presumably just connected straight to the mainboard. I havent quite figured out the entire pinout, but probing around with my multimeter it appears to be just common ground, 1 wire per button, and not identified yet, but Im guessing one per LED and the others for the rain sensor (no idea yet) and Vcc.
For the buttons, to send commands to the mainboard, Im really confused as to how I need to do this. Can I just wire them directly to the digital out of an arduino/esp32, or do I need to isolate them using a "4066 quad bilateral switch" (found that somewhere) or optocoupler or what? Im yet to test this, but Im assuming for now 3 or 5v is being switched with neglible current.
If its not safe to connect directly, I would love to find a board or shield that has an esp32 (or similar) with whatever else I need to drive 4 or 5 "buttons" , but I can not find any shield that has provisions for this. Sure, relays, but that seems overkill. Wouldnt this be a rather typical use case for an esp32, making just about any dumb device smart by "pushing its buttons"? I mean, my coffee machine needs one too :).
What is the best way to make sure the physical buttons continue to work? Can I just put them in parallel with the microcontroller, or am I better off connecting them to digital inputs and then replicating the signal on the digital outs?
Aside from the buttons, the rest seems manageable. I can tap power straight from the mower battery using a buck convertor and will probably also use a voltage divider to read the battery voltage if for no other reason as turning off the microcontroller if the battery gets too low. "reading" and driving LEDs shouldnt be a problem. I have no idea yet how the rainsensor works, but Im guessing it has some variable resistance. Worst case or if I cant figure that out, can just ignore that.
Software wise, I was planning on using ESPhome, and then integrate it with my Home Assistant server.
I would appreciate any insights hints or pointers.