Hackerspace-FFM Badge: Unterschied zwischen den Versionen
Aus Hackerspace Ffm
Tut (Diskussion | Beiträge) (→Probleme) |
Tut (Diskussion | Beiträge) |
||
Zeile 33: | Zeile 33: | ||
** Wenn viel "getoucht" wird entsprechend reagieren mit den Augen (Tamagochi wird fröhlich oder genervt etc) | ** Wenn viel "getoucht" wird entsprechend reagieren mit den Augen (Tamagochi wird fröhlich oder genervt etc) | ||
** Sounds ausgeben | ** Sounds ausgeben | ||
+ | |||
+ | == Konzept der Software und HackFFMBadge Bibliothek == | ||
+ | Damit das Hauptprogram einfach zu schreiben ist, sind sehr viele Dinge in den Hintergrund ausgelagert. | ||
+ | |||
+ | Die HackFFMBadge Bibliothek kümmert sich um: | ||
+ | * Verfügung stellen des "HackFFMBadge"-Objekt, das auch über "Badge" angesprochen werden kann. | ||
+ | * Hardware-Erkennung des Badges: | ||
+ | ** Alle Pinne werden automatisch zugeordnet - es muss aber ein OLED-Display richtig angeschlossen werden, denn daran richtet sich die Hardware-Erkennung | ||
+ | ** Nicht so zuverlässig wird das schwarze "ESP32-S3 Super Mini" Modul vom blauen "ESP32-S3-Zero" Modul unterschieden allein auf Grund eines Spannungsteilers an GPIO3 (weshalb dort Touch nicht geht...) | ||
+ | * OLED Funktionen: | ||
+ | ** Es steht ein "u8g2" zur Verfügung | ||
+ | ** Displayauswahl derzeit über einen Eintrag in der platformio.ini | ||
+ | ** Initialisierung des Displays, Logoanzeige beim Start | ||
+ | * Face Objekt: | ||
+ | ** Ein fertig eingerichtetes Face-Objekt steht als Objekt-Member zur Verfügung, Zugriff über | ||
+ | *** Entweder per "Badge.face().xxx" | ||
+ | *** oder per "Badge.face_->xxx" | ||
+ | ** Steht .faceActive auf true (automatisch nach .begin), dann wird das Face zumindest intern aktualisiert | ||
+ | ** Der Aufruf von Badge.face().UpdateBuffer(); zeichnet das aktuelle Face in den u8g2-Buffer, der aber vorher mit u8g2.clearBuffer(); manuel gelöscht werden muss und danach manuel mit u8g2.sendBuffer(); aufs Display gebracht werden muss. | ||
+ | |||
== Probleme == | == Probleme == |
Version vom 24. März 2025, 01:01 Uhr
Inhaltsverzeichnis
[Verbergen]Basis
- ESP32-S3 Modul, entweder "Super Mini ESP32-S3" oder "ESP32-S3-Zero"
- 1,3 SH1106 / (SSD1306) OLED, 128x64 1bit via I2C
- CR123A 3V Zelle und Halter zur Versorgung
Aufbau mit Laufkarte
Besucher kaufen ein Badge und erhalten die Roh-PCB, beim Speaker-Add-On einen Speaker sowie eine Laufkarte:
- Reflow-Löten: Lotpaste wird aufgetragen, SMDs werden bestückt (bei Speaker-Add-On auch die Teile des Speaker-Bereichs), gelötet wird im Reflow-Ofen oder auf der heißen Platte
- Handlöten: Display-Connector, ESP-Modul, Neopixel, CR123 Halter, ggf. PCB-Patches, ggf. Speaker-Buchse werden per Hand gelötet
- Mechanischer Aufbau: Display einschrauben, PCB montieren, Neopixel platzieren, Halsband anbringen, ggf. Speaker montieren
- Programmieren: Grundprogram wird per USB-C eingespielt, Funktionen werden kontrolliert: Display, Neopixel, ggf. Speaker
- Testen: Batterie wird eingelegt: Test das Ein-Taster funktioniert und Touch Funktioniert
- Personalisieren: Name wird hinterlegt, Benutzergrafik (mit Name) kann erstellt und übertragen werden
Software / Funktionen
- Initialisierung
- Hardware-Erkennung wo das Display angeschlossen ist - darüber Pin-Zurordnung
- Neopixel auf ESP-Modul zur Fehlerausgabe
- Versorgungstransistor einschalten
- Auto-Power-Off Task starten
- Version + Logo + etc auf Display anzeigen für ein paar Sekunden
- Hauptschleife
- Augen animieren
- Alle X-Sekunden Namen bzw. Custom-Bild statt den Augen anzeigen
- Hin und wieder Neopixel aktivieren
- Touch Sensor: Verschiebt Augen etwas in die Richtung, wechselt Augenausdruck für ein paar Sekunden
- Bei Tastendruck Boot-0:
- Wifi starten und ggf Firmwareupdate holen von fixen Space-Server (kostet viel Energie!)
- Featuritis wenn jemand anderes mitprogrammiert oder viel Zeit bleibt:
- Per ESP-Now andere Badges in der Nähe finden und "begrüßen", dabei evtl. den Namen des gegenüber übertragen
- Wenn viel "getoucht" wird entsprechend reagieren mit den Augen (Tamagochi wird fröhlich oder genervt etc)
- Sounds ausgeben
Konzept der Software und HackFFMBadge Bibliothek
Damit das Hauptprogram einfach zu schreiben ist, sind sehr viele Dinge in den Hintergrund ausgelagert.
Die HackFFMBadge Bibliothek kümmert sich um:
- Verfügung stellen des "HackFFMBadge"-Objekt, das auch über "Badge" angesprochen werden kann.
- Hardware-Erkennung des Badges:
- Alle Pinne werden automatisch zugeordnet - es muss aber ein OLED-Display richtig angeschlossen werden, denn daran richtet sich die Hardware-Erkennung
- Nicht so zuverlässig wird das schwarze "ESP32-S3 Super Mini" Modul vom blauen "ESP32-S3-Zero" Modul unterschieden allein auf Grund eines Spannungsteilers an GPIO3 (weshalb dort Touch nicht geht...)
- OLED Funktionen:
- Es steht ein "u8g2" zur Verfügung
- Displayauswahl derzeit über einen Eintrag in der platformio.ini
- Initialisierung des Displays, Logoanzeige beim Start
- Face Objekt:
- Ein fertig eingerichtetes Face-Objekt steht als Objekt-Member zur Verfügung, Zugriff über
- Entweder per "Badge.face().xxx"
- oder per "Badge.face_->xxx"
- Steht .faceActive auf true (automatisch nach .begin), dann wird das Face zumindest intern aktualisiert
- Der Aufruf von Badge.face().UpdateBuffer(); zeichnet das aktuelle Face in den u8g2-Buffer, der aber vorher mit u8g2.clearBuffer(); manuel gelöscht werden muss und danach manuel mit u8g2.sendBuffer(); aufs Display gebracht werden muss.
- Ein fertig eingerichtetes Face-Objekt steht als Objekt-Member zur Verfügung, Zugriff über
Probleme
- Schwarzes Board: GPIO3 nach 3V3 Verbinden beim Upload, sonst stresst es rum
- Blinkt rot-blau beim Einschalten: OLED nicht gefunden
- OLED:
- VDD muss Pin 1 sein, falls nicht gibt es aber bei einigen Displays auf der Rückseite 0-Ohm Jumper, die umgesetzt werden können, um VDD und GND zu tauschen.