I’ve been printing on the 3D printers using the SD cards, and I wanted to prototype a way to do remote monitoring and control of the printers (mostly allow remote print cancellation if something went bad). OctoPrint could be an option in the future, but for now it felt a bit heavy to attach something like a Raspberry Pi to each printer, or to restrict movement of the printers by running USB cables from each to a centralized Raspberry Pi.
Instead, I noticed there are a few variants of the ESP32 that actually support USB-OTG with host mode, so they support plugging the 3D printers directly into the ESP32 from their USB ports and giving the ESP32 access that way.
For available boards the ESP32-S3 seemed best and I went with a board that has an embedded camera (ESP32-S31 is better once it is available). For the printer stats/control aspect it becomes as simple as plugging the ESP32-S3 in via USB as shown in this picture (the second USB port is just for power).
And then I wrote some code for the ESP32 within the ESPHome framework. It detects being plugged into the printer, then it periodically queries it for information like whether an SD card print is in progress, and the current and target hotend/bed temps. It also exposes a button to cancel the prints. For this technical test, it just connects to the Wi-Fi and makes that info available via a web page…since it’s built in the ESPHome framework it would be easy to push this info to a Home Assistant Server, or whatever other centralized system we might prefer.
Just wanted to share what I’m playing with. At some point I’ll work on getting the camera working, then maybe make a little 3D printed enclosure that can attach to the printers. Since it’s just interrogating the printers via their exposed USB port and some gcode, it should be able to work with pretty much any printer in the space.

