Hackerspace-FFM Badge: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Software / Funktionen)
K (Updates der PDF Anleitungen)
Zeile 40: Zeile 40:
  
 
* '''REFLOW-LÖTEN''': [[Datei:Hackerspace-FFM Badge - REFLOW-LÖTEN.pdf]]
 
* '''REFLOW-LÖTEN''': [[Datei:Hackerspace-FFM Badge - REFLOW-LÖTEN.pdf]]
 +
* '''HANDLÖTEN''': [[Datei:Hackerspace-FFM Badge - HANDLÖTEN.pdf]] (Update)
 
* '''PROGRAMMIEREN''': [[Datei:Hackerspace-FFM_Badge_-_PROGRAMMIEREN.pdf]]
 
* '''PROGRAMMIEREN''': [[Datei:Hackerspace-FFM_Badge_-_PROGRAMMIEREN.pdf]]
 
* '''DIES UND DAS'''
 
* '''DIES UND DAS'''
* '''MECHANIK''': [[Datei:Hackerspace-FFM_Badge_-_MECHANIK.pdf]]
+
* '''MECHANIK''': [[Datei:Hackerspace-FFM_Badge_-_MECHANIK.pdf]] (Update)
* '''HANDLÖTEN''': [[Datei:Hackerspace-FFM Badge - HANDLÖTEN.pdf]]
+
  
 
== Software / Funktionen ==
 
== Software / Funktionen ==

Version vom 20. April 2025, 09:03 Uhr

Hackffm kid animeyes.gif

Impressionen

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:

Laufkarte AUDIO - A6.png

  1. 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
  2. Handlöten: Display-Connector, ESP-Modul, Neopixel, CR123 Halter, ggf. PCB-Patches, ggf. Speaker-Buchse werden per Hand gelötet
  3. Mechanischer Aufbau: Display einschrauben, PCB montieren, Neopixel platzieren, Halsband anbringen, ggf. Speaker montieren
  4. Programmieren: Grundprogram wird per USB-C eingespielt, Funktionen werden kontrolliert: Display, Neopixel, ggf. Speaker
  5. Testen: Batterie wird eingelegt: Test das Ein-Taster funktioniert und Touch Funktioniert
  6. Personalisieren: Name wird hinterlegt, Benutzergrafik (mit Name) kann erstellt und übertragen werden

Aufbaustationen

Damit mehrere Badges parallel aufgebaut werden können sind die Bauschritte auf Stationen verteilt:

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
  • USB Funktionen
    • Zur Zeit läuft USB noch im USB SERIAL(CDC)/JTAG Modus. Damit gehen nur genau zwei Sachen, die dafür aber recht gut:
      • Serial.XXX landet alles auf dem virtuellen Serial-Port
      • JTAG-Debuggen ist möglich (scheint in VSCode zu gehen, hilft aber nicht so arg viel)
      • Flashen geht verhältnismäßig zuverlässig (wenn nicht: Boot gedrückt halten bei Reset geht immer)
      • Light-Sleep kappt leider bereits auch hier die USB-Verbindung (nicht gut wenn man Strom/Batterie sparen will)
    • Ein Umschalten auf den nativen USB-Modus (=USB OTG genannt) würde ermöglichen
      • USB als Host sowie als Device benutzen
      • Host: Anschluss Tastatur/Maus/USB-Stick etc
      • Device: USB-Laufwerk (z.B. zur Konfiguration oder Firmwareupload .uf2)
      • Serieller Port für Logs (aber vermutlich nicht so stabil)
      • Video-Grabber: Displayinhalt könnte als "Webcam" gezeigt werden (sehr experimentel derzeit)

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...

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
  • Build FileSystem
platformio run --target buildfs --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


Optional: Hack-FFM Badge Desk Stand

Hack-FFM Kid Badge Desk Stand (2).jpg Hack-FFM Kid Badge Desk Stand (3).jpg

Hack-FFM Kid Badge Desk Stand - OpenSCAD.png