WLAN-Handregler
Das Projekt ist aus Neugierde entstanden, als ich mich mit jemanden über Mikrocontroller und Wi-Fi/WLAN unterhalten habe. Eigentlich stellte ich mir die Frage, ob man einen AVR bzw. STM32 Mikrocontroller in einem selbst gebauten Handregler nutzen und ein separates WLAN-Modul anbinden könnte.
Relativ schnell stößt man bei Recherchen aber auf den 32-Bit-Mikrocontroller ESP8266, der von Haus aus mit einer WLAN-Schnittstelle ausgerüstet ist und auch viele weitere Schnittstellen bietet. Zudem gibt es den Nachfolger ESP32, den ich mir deshalb näher ansehen wollte.
Ich kaufte mir das sogenannte "SparkFun ESP32 Thing", um dies als Entwicklerboard zu nutzen. Dieses "Ding" verfügt über einen Anschluss für eine LiPo-Zelle und einen LiPo-Ladechip, sodass man den Akku per USB aufladen kann.
Für einen Handregler benötigt es jedoch mehr als nur das genannte ESP32 Thing. Wichtig war mir neben einigen Tasten auch einen Drehknopf (Inkrementalgeber) zu haben. Ich besorgte mir deshalb einen SparkFun Rotary Encoder, der über einen Druckknopf und eine RGB-LED verfügt. Des Weiteren kaufte ich ein OLED Display (Waveshare 1.3 inch 128x64), welches man per SPI bzw. I²C ansteuern kann.
Programmiert werden kann der ESP32 z.B. per C/C++, wobei man z.B. die Möglichkeit hat das Espressif IoT Development Framework einzusetzen und eine Entwicklungsumgebung je nach eigenen Vorzügen einzurichten. Relativ schnell kommt man aber auch mit den Stichworten ESP32 und Arduino zum ersten Erfolg, zumal es hierzu diverse Codebeispiele hinsichtlich WLAN gibt.
Jedoch machte ich mich zunächst an die Arbeit eine Platine zu entwerfen, auf der mehrere Tasten (Nummernblock) und der Inkrementalgeber gelötet werden können. Das Display und das ESP32 Thing wird auf Buchsenleisten aufgesteckt. Da ich bei den vielen Tasten an die I/O-Grenzen kam, habe ich auf der Platinenrückseite eine Porterweiterung (MCP23S17) und für die Akkuüberwachung einen Spannungsteiler vorgesehen.
Ebenfalls habe ich ein Gehäuse entworfen und mit dem 3D-Drucker gedruckt, sodass darin das gesamte Innenleben Platz findet. Im Gehäuse ist auch ein Schalter verbaut, mit dem ich den Akku komplett von der Schaltung trennen kann. Vielleicht wäre dies nicht unbedingt nötig, wenn man sämtliche Energiesparoptionen vom ESP32 ausnutzt, aber da bei mir auch mal Dinge länger in einer Ecke liegen, ist es mir lieber, wenn die gar keine Energie verbrauchen (mal von der Akku Selbstentladung abgesehen).
Fertig ist das Projekt noch nicht, denn ich gebe hier aktuell auf dem Display nur ein paar ADC-Werte aus. Das erkennt man auch daran, dass die Tasten noch nicht beschriftet sind. Eine Unterstützung in meiner Modellbahnsteuerungssoftware ist angedacht, wobei ich die Handregler-Firmware gerne so gestalten würde, dass der Handregler auch für andere Projekte außerhalb der Modellbahnwelt nutzbar wäre.