Änderungen

Hackerspace-FFM Badge

7.491 Byte hinzugefügt, 22 Juni
/* Software / Funktionen */
[[Datei:Hackffm kid animeyes.gif]]
 
== Impressionen ==
<gallery caption="Badge Aufbau Impressionen vom Open Hackerspace Day" perrow="5">
Datei:Badge alien.jpg
Datei:Badge hand solder.jpg
Datei:Badge hand solder 2.jpg
Datei:Badge hand solder 3.jpg
Datei:Badge hand solder 4.jpg
Datei:Badge hand solder 5.jpg
Datei:Badge happy customers.jpg
Datei:Badge smd placement.jpg
Datei:Badge smd placement 2.jpg
Datei:Badge smd reflow.jpg
</gallery>
== Basis ==
* CR123A 3V Zelle und Halter zur Versorgung
== Anleitungen für den Aufbau mit Laufkarte ==Besucher kaufen ein Badge und erhalten die Roh'''Event-PCBVersion, beim Speaker-Add-On einen Speaker sowie eine Laufkarteca. 60 Minuten:'''# Reflow* In der Event-Löten: Lotpaste wird aufgetragen, SMDs werden bestückt (bei Speaker-Add-On auch Version ist die Teile des SpeakerHauptplatine bereits mit SMD-Bereichs), gelötet wird im Bauteilen bestückt und das Reflow-Ofen oder auf Löten entfällt.* Die Programmierung des Controllers ist ebenfalls schon in der heißen Platte Vorbereitung erfolgt.# Handlöten: Display* Es gibt 2 Aufbaustationen mit entsprecehnder Anleitung -Connector, ESP-Modul, Neopixel, CR123 Halter, ggf. PCB-Patches, ggf. Speaker-Buchse werden per Hand gelötetHandlöten und Mechanik:# Mechanischer Aufbau<gallery mode="nolines" widths=300 heights=200>Image: Display einschrauben, PCB montieren, Neopixel platzieren, Halsband anbringen, ggf20250612 212407. Speaker montieren# Programmierenjpg|link=[[Datei: Grundprogram wird per USBHack-C eingespielt, Funktionen werden kontrolliertFFM Badge - HANDLÖTEN (v3).pdf]]|[[Datei: Display, Neopixel, ggfHack-FFM Badge - HANDLÖTEN (v3). Speakerpdf]]# TestenImage: Batterie wird eingelegt20250612 225441.jpg|link=[[Datei: Test das EinHack-Taster funktioniert und Touch Funktioniert# PersonalisierenFFM Badge - MECHANIK (v3).pdf]]|[[Datei: Name wird hinterlegt, Benutzergrafik Hack-FFM Badge - MECHANIK (mit Namev3) kann erstellt und übertragen werden.pdf]]</gallery>
== Software / Funktionen ==
* 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
** 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)  GPT generiertes Wiki auf DeepWikihttps://deepwiki.com/hackffm/ESP32S3_OLED_Eyes = Probleme = Feature Wünsche / Ideen ==* Schwarzes BoardVolle CircuitPython Unterstützung und Integration in die CircuitPython-Bibliothek (Basis für ein Teil mit OLED könnte [https: //github.com/adafruit/circuitpython/tree/main/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3 das] sein)* Arduboy Spiele portieren* Benachbarte Badge finden* Uhrzeit beim Start Syncen und dann Uhrzeit anzeigen == 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 nach 3V3 Verbinden (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 UploadStart * 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 stresst 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... * Door Funktionen:** Die Bibliothek erstellt einen zufälligen ED25519 Private key zur Signierung der Tür-Kommandos, sofern noch kein Key vorhanden ist.** Mit dem Kommandobefehl pXX.64HEXDIGITS..XX kann ein anderer private Key hinterlegt werden** Es gibt dann einige Funktionen in der Lib um die Tür zu finden und ggf zu öffnen/zu schliessen. == FAQ / Probleme ==* F: Kann der Einschalt-Button abgefragt werden? A: Nein, das geht leider nicht. Aber es rumkann der BOOT (Button0) hinten abgefragt werden.* Blinkt 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 EinschaltenA: Das OLED wurde nicht gefundenund 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.* F: Kann ich CircuitPython nutzen? A: Noch gibt es keine Variante genau für das Badge. Am nächsten ist das [https://circuitpython.org/board/waveshare_esp32_s3_zero/ Waveshare ESP32 S3 Zero] oder das [https://circuitpython.org/board/adafruit_feather_esp32s3_4mbflash_2mbpsram/ Feather ESP32-S3 4MB Flash 2MB PSRAM] - das CircuitPython lief bei mir bereits auf dem MCU-Board des Badge. Ist dann aber Handarbeit (Power-Hold-Leitung, Display, Touch, Audio etc richtig bedienen per Python). == 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: Aufbau in der Vollversion == === Stationen für Vollversion incl. SMD Löten, ca. 90 Minuten === Damit mehrere Badges parallel aufgebaut werden können sind die Bauschritte auf [[Hackerspace-FFM Badge - Stationen|Stationen]] verteilt: * '''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]]* '''MECHANIK''': [[Datei:Hackerspace-FFM_Badge_-_MECHANIK.pdf]] (Update) === Laufkarte ===Besucher kaufen ein Badge und erhalten die Roh-PCB, beim Speaker-Add-On einen Speaker sowie eine Laufkarte: * KID (ohne AUDIO): [[Datei:Laufkarte_KID_4_x_A6.odg]]* AUDIO: [[Datei:Laufkarte AUDIO - 4 x A6.odg]] [[Image:Laufkarte_AUDIO_-_A6.png|320px]] # 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  == Optional: Hack-FFM Badge Desk Stand == [[Datei:Hack-FFM Kid Badge Desk Stand (2).jpg|240px]] [[Datei:Hack-FFM Kid Badge Desk Stand (3).jpg|240px]] [[Datei:Hack-FFM Kid Badge Desk Stand - OpenSCAD.png|240px]] * OpenSCAD File: [[Datei:Hack-FFM Kid Badge Desk Stand.scad]]* STL: [[Datei:Hack-FFM Kid Badge Desk Stand.zip]]
952
Bearbeitungen