Hackerspace-FFM Badge: Unterschied zwischen den Versionen
Aus Hackerspace Ffm
(→FAQ / Probleme) |
(→PlatformIO) |
||
Zeile 65: | Zeile 65: | ||
Build platformio run --environment esp32s3 | Build platformio run --environment esp32s3 | ||
− | Upload platformio run --target upload --environment esp32s3 | + | *Upload* |
+ | platformio run --target upload --environment esp32s3 | ||
− | Erase flash platformio run --target erase --environment esp32s3 | + | *Erase flash* |
+ | platformio run --target erase --environment esp32s3 | ||
+ | |||
+ | *Upload FS* | ||
+ | platformio run --target uploadfs --environment esp32s3 |
Version vom 28. März 2025, 19:07 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().Draw(); bringt das aktuelle Face aufs Display - und sonst nichts.
- 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. Hiermit können noch Veränderungen vorgenommen werden, bevor das Face gemalt wird...
- Ein fertig eingerichtetes Face-Objekt steht als Objekt-Member zur Verfügung, Zugriff über
FAQ / Probleme
- F: Kann der Einschalt-Button abgefragt werden? A: Nein, das geht leider nicht. Aber es kann der BOOT (Button0) hinten abgefragt werden.
- F: Programmieren klappt nicht mehr, seit ich ein komisches Update gemacht habe. A: Halte BOOT gedrückt, wärend du RESET drückst. Damit kommt das MCU-Modul in einen Bootloader-Modus und der Upload sollte wieder klappen.
- F: Das Programmieren will trotz BOOT+RESET Kombo (s.O.) nicht ganz klappen. A: Wenn du das schwarze MCU Board (typ. von Tenstore) hast, kann es helfen, beim Upload auch noch GPIO3 an 3V3 zu verbinden - das ist ein seltsamer Strapping Pin. Beim blauen MCU Board ist da bereits ein Spannungsteiler enthalten.
- F: Warum ist der USB-Stecker von der Batterie blockiert? A: Das ist Absicht, damit der USB-Stecker nicht eingesteckt werden kann, wenn eine Batterie eingesetzt ist. Wir verwenden Primär-Batterien, die ansonsten über USB geladen werden würden und dabei explodieren könnten.
- F: Die LED auf dem MCU Board blinkt rot-blau beim Einschalten A: Das OLED wurde nicht gefunden und die restliche Hardware kann damit nicht initialisiert werden. Kontrolliere das OLED bzw. die Verbindungen dazu.
- F: OLED geht nicht/wird heiß/Pin-Belegung ist nicht VDD an Pin1. A: 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.
PlatformIO
Build platformio run --environment esp32s3
- Upload*
platformio run --target upload --environment esp32s3
- Erase flash*
platformio run --target erase --environment esp32s3
- Upload FS*
platformio run --target uploadfs --environment esp32s3