Das ButtonBoard PCB ist mein Versuch mehrere Fliegen mit einer Klappe zu schlagen. Zum einen war ich schon immer auf der Suche nach einer universellen und einfach zu programmierenden Fernbedienung für die oft sehr individuellen Steuerungsmöglichkeiten in meinem Smart Home. Zum anderen wollte ich eine einfache Möglichkeit haben meine Projekte (zum Beispiel das pxlBlck-Projekt) mit einer physischen Bedienmöglichkeit auszustatten.
Aktuell lassen sich die verschiedenen pxlBlck-Plattformen nämlich nur über die serielle Schnittstelle oder eine bereits bestehende WiFi-Verbindung kontrollieren.
Das hat leider zur Folge, dass man diese Projekte (zum Beispiel) schlecht verschenken kann. Zumindest nicht an Menschen die sich nicht selber für Arduino, Elektronik und Co. interessieren oder zumindest damit beschäftigen können/wollen wenn es zur Einstellung notwendig ist.
Diesen Nachteil will ich mit dem ButtonBoard lösen. 🙂
Dazu sind auf dem größeren Teil der Vorderseite des ButtonBoards zwölf einfache Taster und vier seitliche Taster verbaut. Ausgelesen werden diese über einen PCF8575 I2C Port Expander. Damit dies in dieser Kombination funktioniert ist außerdem jeder Taster mit einem externen pull-Up Widerstand ausgestattet.
Hier wäre es natürlich eleganter gewesen einen Port Expander mit integriertem/zuschaltbaren pull-Up bzw. pull-Down-Widerstand zu verwenden. Aufgrund der aktuellen Chipknappheit und weil ich den PCF8575 auch schon zuhause hatte wollte ich hier aber keine neuen Experimente eingehen.
Zusätzlich zu den Tastern sind neben jedem Taster noch zwei WS2812 2020 LEDs verbaut. So lassen sich die Tasten auch indirekt beleuchten oder Tastendrücke visualisieren.
Die weiteren Komponenten auf der Vorderseite des PCBs sind
- DS3232M RTC
- ADXL345 Beschleunigungssensor
- CH340G USB zu UART Wandler zur Programmierung des ESP32 über den USB-C Anschluss
Auf der Rückseite des buttonBoards ist im größeren Teil des PCBs ein ESP32-Wrover-B verbaut.
Dieser lässt sich mit der Arduino IDE programmieren und bietet neben einer WiFi- auch eine Bluetooth-Schnittstelle.
So kann man zum Beispiel auch das ESPEasy-Framework auf dem ESP32 installieren und hat schon damit ohne viel Programmieraufwand ein sehr mächtiges “Smart Home”- bzw. IOT-Werkzeug.
Neben dem ESP32 sind dort außerdem drei QWIIC-Ports verbaut über die sich noch weitere QWIIC- bzw. I2C kompatible Sensoren/Aktoren anschließen lassen.
Außerdem lässt sich dort ein Micro SD-Karten-Slot verbauen um ggf. auch größere Datenmengen speichern zu können.
Der braune Knopfzellenhalter wird als Halterung für die Pufferbatterie der DS3232M Real Time Clock genutzt.
Neben den genannten Usecases wäre zum Beispiel auch der Einsatz als (sehr einfache) Bluetooth-Tastatur bzw. Makropad möglich. So könnte man sich zum Beispiel auch einen Kamera-Fernauslöser für das Smartphone (oder in Kombination mit einer passenden App auch für andere Zwecke) bauen.
Damit das ButtonBoard auch mobil – also ohne Stromversorgung über den USB-C Anschluss – genutzt werden kann, habe ich auf dem kleinen Teil der PCB-Rückseite ein kompaktes LiPo/LiIon-Management verbaut. Dieses bietet einen einfachen Laderegler für den angeschlossenen LiPo/LiIon-Akku und schützt diesen auch vor über- bzw. unterschreiten der erlaubten Akkuspannung.
Dieser Teil des PCBs lässt sich außerdem vom “Hauptteil” des PCBs abtrennen. So kann man das Tastenfeld auch unabhängig(er) vom Einbauort des USB-C Anschluss verbauen.
Insgesamt sind auf dem ButtonBoard_V1.2 die folgenden Komponenten verbaut:
- ESP32 Wrover-B
- DS3232M RTC
- USB-C Anschluss inkl. Programmiermöglichkeit des verbauten ESP32
- Micro-SD-Karten-Slot
- Anschlussmöglichkeit für einen LDR zur Helligkeitsmessung
- Spannungsteiler zur Messung der Akku- bzw. Versorgungsspannung
- ADXL345 Beschleunigungssensor
- 3x QWIIC-I2C Erweiterungsport
- LiPo/LiIon Ladeschaltung basierend auf dem MCP73831, FS8205 und DW01-P
- 12x Taster auf der Oberseite des PCBs angeschlossen über einen PCF8575
- 4x seitliche Taster ebenfalls angeschlossen über den PCF8575
- 24x WS2812 2x2mm LEDs neben den Tastern
- Platinenteile lassen sich trennen und separat verbauen
Die Platine habe ich bei dem Platinen-Hersteller PCBWay.com fertigen lassen, welcher mir diese kostenlos zur Verfügung gestellt hat. An dieser Stelle nochmal vielen Dank für den tollen Service und die Zusammenarbeit. 🙂
Im folgenden seht Ihr ein paar Bilder der fertig aufgebauten Platine und (fast) allen möglichen Komponenten. Leider sind manche Sensoren aufgrund der aktuellen Chip-Knappheit sehr teuer bzw. schlecht verfügbar, weshalb ich sie nicht verbaut habe.
Sicherheitshinweise
Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/
Affiliatelinks/Werbelinks
Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂
Voraussetzungen
Für den Aufbau müsst ihr SMD Lötaufgaben bewältigen. Die folgenden Artikel enthalten Tipps dazu.
- Elektronik – Mein Freund der Lötkolben
- Elektronik – THT Bauteile per Hand verlöten
- Elektronik – SMD Bauteile per Hand verlöten
Benötigtes Werkzeug:
PCB-Fertigung: Alle infos die Ihr zur Fertigung der PCBs braucht, könnt Ihr hier finden:
Der Aufbau
In früheren Projekten habe ich an dieser Stelle einzelne Bilder eingefügt mit denen gezeigt wurde welche Komponenten wo auf dem PCB verlötet werden müssen.
Ein noch besserer Weg um eine Übersicht darüber zu bekommen welche Komponenten an welcher Stelle auf das PCB gehören seht Ihr im folgenden Absatz. Dank der Arbeit von Open Scope Project kann man nämlich sehr hilfreiche HTML Dateien generieren. Mit diesen kann man direkt sehen welche Komponenten wo auf dem PCB verbaut werden müssen.
Zur Übersicht für das ButtonBoard-PCB gelangt Ihr hier: buttonBoard_v1.2_bom
Die jeweils aktuelle Datei findet Ihr aber auch im GIT-Repository unter folgendem Link:
https://github.com/Nerdiyde/buttonBoard/blob/main/PCB/buttonBoard_v1.2_bom.html
(Beachtet dabei bitte, dass Ihr die HTML-Datei herunterladen müsst um sie anzuzeigen. Direkt aus dem GIT-Repository ist dies nicht möglich.)
Firmware programmieren
Die erste Version der Firmware zur Ansteuerung der Sensoren und auslesen der Taster auf dem ButtonBoard-PCB ist noch in der Entwicklung. Den aktuellen Stand könnt Ihr aus dem GIT-Repository herunterladen. Ihr findet die Firmware unter folgendem Link.
Viel Spaß mit dem Projekt
Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂
P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂