GPN17:Badge-Development: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
KKeine Bearbeitungszusammenfassung
 
(25 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:


== '''Idee:''' ==
== '''Idee:''' ==
<gallery>
Datei:IMG_20170201_010254.jpg
Datei:IMG_tiwr24.jpg
Datei:IMG_20170203_020336.jpg
Datei:Badge3.png
Datei:Badge.jpg
Datei:Gpn_badge.png
Datei:Badge2.png
Datei:Badge1.png
</gallery>




Zeile 37: Zeile 48:
Die Platine bekommt ein längliches Design mit Noppenspielbaustein-kompatiblen Bohrungen im oberen drittel so wie im unteren achtel. In diese wird dann Noppenspielbausteine als Flügel und Leitwerk eingesteckt. Somit erhält das Badge die Form und das Aussehen einer Drone. Ebenso lässt dies viel Freiraum für die Phantasie der Badgeinhaber.(janhenrik 05.01)
Die Platine bekommt ein längliches Design mit Noppenspielbaustein-kompatiblen Bohrungen im oberen drittel so wie im unteren achtel. In diese wird dann Noppenspielbausteine als Flügel und Leitwerk eingesteckt. Somit erhält das Badge die Form und das Aussehen einer Drone. Ebenso lässt dies viel Freiraum für die Phantasie der Badgeinhaber.(janhenrik 05.01)


Eine Prototyping-area ist in der Mitte vorgesehen. Zu dieser sollen ALLE Pins des ESP noch mal hingeroutet werden.


Mögliches Design:
Mögliches Design:
Zeile 45: Zeile 55:
[[Datei:Gpn.png|600px]]
[[Datei:Gpn.png|600px]]


'''Display'''
[[Datei:gpnotifier.png|600px]]
 
== '''Software'''==
 
Der Flash auf dem Badge verfügt über 8MB (64Mib). Der ESP kann zu Laufzeit jedoch höchstens 1MB adressieren. Deshalb werden mehrere, auswählbare ROMs zu je 1MB größe aufgespielt, die durch einen bootloader ausgewählt werden können. Dazu verwenden wir rBoot: https://github.com/raburton/rboot
 
Memorymap:


Das Display wird vermutlich ein längliches, d.h. kann es vertikal oder horizontal auf dem PCB angebracht werden. Horizontal ist mit dem Risiko verbunden, dass es recht zerbrechlich/empfindlich ist solange wie keine Flügel eingesteckt sind.(janhenrik 05.01)
{| class="wikitable"
!colspan="3"|Memorymap
|-
|Adresse
|Nutzung
|Beispiel
|-
|0x000000
|Bootloader config
|obligatorisch
|-
|0x002000
|Custom ROM (max 1MB)
|GPNotifier
|-
|0x102000
|Custom ROM (max 1MB)
|.gif Player
|-
|0x202000
|Custom ROM (max 1MB)
|WiFi Scanner
|-
|0x302000
|Custom ROM (max 1MB)
|Pixelflut Server
|-
|0x402000
|Custom ROM (max 1MB)
|???
|-
|0x502000
|Custom ROM (max 1MB)
|???
|-
|0x602000
|Custom ROM (max 1MB)
|???
|-
|0x702000
|Boot select
|GUI + Joystick control
|}
 
Bis zum Verkauf haben alle Badges die gleiche Firmware.
Die Bootconfig wird so eingestellt, dass der GPNotifier bootet. Dieser erwartet über USB-bitbang eine Configdatei mir Username, WLAN config, mqtt Server IP Adresse, etc. Nun wird bei Ausgabe des Badges die Config angepasst und via USB eingespielt. Das GPNotifier ROM ändert nun die bootconfig des bootloaders so ab, dass Adresse 0x702000 geladen wird und killt sich mit einem Softreset selber. Der ESP rebootet, und der Bootloader lädt ein ROM mit GUI und Joystickeingabe. Hier werden alle verfügbaren ROMs aufgelistet und es kann interaktiv ein zu bootendes ROM ausgewählt werden (als default wohl den GPNotifier). Wird die Auswahl bestätigt, schreibt das Boot select ROM die jeweilige Adresse in die Bootconfig, und löst ebenfalls via Softreset einen reboot aus. Nun bootet die Ausgewählte App.
 
Um eine andere App zu booten, kann ein GPIO (z.B. der Joystick) verwendet werden. Wird er beim einschalten gedrückt gehalten, wird wieder in das Boot Select ROM gebootet. Außerdem sollte jedes Custom ROM über eine Funktion verfügen, um die bootconfig auf Boot Select zu ändern und einen Softreset auszulösen (sowas aka "Exit button / reboot"). Das macht die Bedienung leichter und schont den Power Switch.
 
Eine Idee wäre es auch, eine Art AppStore anzubieten. Dann könnte man mittels eines AppStore-ROMs von einem Server ROMs an einen freien Slot des Flashs runterladen und diesen dann mittels bootconfig / Boot select ausführen. (Niklas 11.01.2017)
 
== '''"Apps"'''==
 
Zu der Grundsoftware wollen wir "Apps" (bei Rad1o als "loadables" bekannt) anbieten. Folgende sind möglich (Schreibt euren Namen dahinter wenn ihr dies als App schreibt):
 
 
Mathematische Sachen
* GOL
* langtons ant
* Fraktale
* Apfelmännchen
* etc
 
Pixelflut (JanHenrik)
 
wifi-tools
* network-scan
* port-scan
* ip-scan
* ping
* trace-route
* Nach der GPN(?!), Angriffe(mitm,deAuth,Bruteforce,ROP,...)
* etc
 
push-notifier
 
Sensor auslesen/(Im Netzwerk)loggen
 
Namensschild(mit Animationen)
 
led-foo
 
wifi-Fernbedienung(mouse/keyboard via wifi, or display, mtp-remote, etc.)
 
USB-Eingabegerät
 
gif-player(Eventuell auch webm und/oder via Stream)
 
goulash(tm)-nacktscanner/röntgendingsie (Jamba-Troll-App mit dem Gyro und einem statischen Bild eines Skelettes)
 
Großes Zeichenpad(Jeder bekommt einen Plot zugewiesen und kann pixelart mit dem Badge machen, nachher kommt ein großes Bild raus)
 
Regler(Temp,Licht,Bewegung,Alkohol(?)(proof of concept, max 0,1 promille, will niemanden zum (be)trinken animieren))
 
Chatprogramm(irc,xmpp?) eventuell nur Lesen
 
Fahrplan
 
Pixelflut-Client (mit dem Bewegungssensor)
 
 
=== Interaktion mit der Veranstaltung ===
 
Push Notifyer!
 
LEDs auf Badge von der Lounge kontrollierbar machen. DMX?
 
 
 
=== Spiele ===
 
Multiplayer-Pong sp,2p,4p (JanHenrik)
 
Tron 2p~6p
 
Gulasch-Kart 2p~6p (JanHenrik)
 
Bomberman 2p,4p
 
hide'n'seek-IRL(RSSI)aka "meet a hacker/se"
 
-> Zwei(oder Mehr) zufällige Spieler starten das Spiel und müssen sich dann auf dem Event finden. Es werden keine Namen ausgetauscht, Funktioniert nach dem "Heiß/Kalt" prinzip. Motor vibriert stärker umso näher die teilnehmer sich sind. Positionsfindung via RSSI
 
cards against Gulasch


== '''Komponenten:'''==
== '''Komponenten:'''==


'''Vorläufige BOM:  https://docs.google.com/spreadsheets/d/1iimlYgi_jSKNMCs_KKNb-31OOcALHnjgBTikqFaacEc/edit?usp=sharing '''
'''Hier die immer aktuelle und einzig gültige Teileliste:'''
 
'''BOM:  https://docs.google.com/spreadsheets/d/1iimlYgi_jSKNMCs_KKNb-31OOcALHnjgBTikqFaacEc/edit?usp=sharing '''





Aktuelle Version vom 18. August 2023, 12:21 Uhr

Planung

Bitte hinter Ideen/Vorschläge Name + Datum zur einfacheren Planung schreiben, Danke! :)


Idee:


Für die GPN soll ein Badge her.

Eine Idee ist ein kleines Badge mit ESPxxxx, Akku, Display und Eingabedevice(s) zu haben. Dies soll z.B. als Pager dienen um Gulasch, Tschunk oder Ähnliches anzukündigen. (niklas, janhenrik, herbett 05.01)

Anforderungen

  • Grafikdisplay
  • HID (Buttons, Joystick, Touch).
  • Vibrationsmotor (keinen Piepser!)
  • CPU: ESP8266 (ESP32 zu teuer) --> kann wirklich jeder benutzen.
  • LiPo oder LiIon
  • Micro USB für laden und programmieren.
  • Solderpads für LEDs (teilweise bestückt), zB WS2812, APA102
  • Kosten maximal 10€ für den Besucher.
  • Muss mit fertiger Software kommen (wie R0cket oder rad1o), Plug&Play
  • Einseitige Bestückung (wird teuer bei Bestückung)
  • SMD only (sonst zu teuer für Bestückung)
  • Vorbestellung erfolderlich.
  • Anwendungsideen: Gulasch-Push-Notification (GPN), Spiel (mit NFC), Nickdisplay
  • Footprints für std. Bauelemente (z.B. Sensoren, LED's, Mikrofon, Piepser, Super-Sensor-Pack-9000...)
  • Optinal, falls Budget hergibt:
    • NFC / IR
    • Flugzeugform, mit LEDs dort wo auch bei Flugzeugen Licht ist.
    • Temperaturmessung

Platinendesign

Das Platinendesign soll optisch ansprechend sein. Da es nicht ganz trivial/praktisch ist die Platine als Drone anfertigen zu lassen haben wir uns folgendes überlegt:

Die Platine bekommt ein längliches Design mit Noppenspielbaustein-kompatiblen Bohrungen im oberen drittel so wie im unteren achtel. In diese wird dann Noppenspielbausteine als Flügel und Leitwerk eingesteckt. Somit erhält das Badge die Form und das Aussehen einer Drone. Ebenso lässt dies viel Freiraum für die Phantasie der Badgeinhaber.(janhenrik 05.01)


Mögliches Design: Gelb = Platine (wird später auch Rot sein)


Gpn.png

Gpnotifier.png

Software

Der Flash auf dem Badge verfügt über 8MB (64Mib). Der ESP kann zu Laufzeit jedoch höchstens 1MB adressieren. Deshalb werden mehrere, auswählbare ROMs zu je 1MB größe aufgespielt, die durch einen bootloader ausgewählt werden können. Dazu verwenden wir rBoot: https://github.com/raburton/rboot

Memorymap:

Memorymap
Adresse Nutzung Beispiel
0x000000 Bootloader config obligatorisch
0x002000 Custom ROM (max 1MB) GPNotifier
0x102000 Custom ROM (max 1MB) .gif Player
0x202000 Custom ROM (max 1MB) WiFi Scanner
0x302000 Custom ROM (max 1MB) Pixelflut Server
0x402000 Custom ROM (max 1MB) ???
0x502000 Custom ROM (max 1MB) ???
0x602000 Custom ROM (max 1MB) ???
0x702000 Boot select GUI + Joystick control

Bis zum Verkauf haben alle Badges die gleiche Firmware. Die Bootconfig wird so eingestellt, dass der GPNotifier bootet. Dieser erwartet über USB-bitbang eine Configdatei mir Username, WLAN config, mqtt Server IP Adresse, etc. Nun wird bei Ausgabe des Badges die Config angepasst und via USB eingespielt. Das GPNotifier ROM ändert nun die bootconfig des bootloaders so ab, dass Adresse 0x702000 geladen wird und killt sich mit einem Softreset selber. Der ESP rebootet, und der Bootloader lädt ein ROM mit GUI und Joystickeingabe. Hier werden alle verfügbaren ROMs aufgelistet und es kann interaktiv ein zu bootendes ROM ausgewählt werden (als default wohl den GPNotifier). Wird die Auswahl bestätigt, schreibt das Boot select ROM die jeweilige Adresse in die Bootconfig, und löst ebenfalls via Softreset einen reboot aus. Nun bootet die Ausgewählte App.

Um eine andere App zu booten, kann ein GPIO (z.B. der Joystick) verwendet werden. Wird er beim einschalten gedrückt gehalten, wird wieder in das Boot Select ROM gebootet. Außerdem sollte jedes Custom ROM über eine Funktion verfügen, um die bootconfig auf Boot Select zu ändern und einen Softreset auszulösen (sowas aka "Exit button / reboot"). Das macht die Bedienung leichter und schont den Power Switch.

Eine Idee wäre es auch, eine Art AppStore anzubieten. Dann könnte man mittels eines AppStore-ROMs von einem Server ROMs an einen freien Slot des Flashs runterladen und diesen dann mittels bootconfig / Boot select ausführen. (Niklas 11.01.2017)

"Apps"

Zu der Grundsoftware wollen wir "Apps" (bei Rad1o als "loadables" bekannt) anbieten. Folgende sind möglich (Schreibt euren Namen dahinter wenn ihr dies als App schreibt):


Mathematische Sachen

  • GOL
  • langtons ant
  • Fraktale
  • Apfelmännchen
  • etc

Pixelflut (JanHenrik)

wifi-tools

  • network-scan
  • port-scan
  • ip-scan
  • ping
  • trace-route
  • Nach der GPN(?!), Angriffe(mitm,deAuth,Bruteforce,ROP,...)
  • etc

push-notifier

Sensor auslesen/(Im Netzwerk)loggen

Namensschild(mit Animationen)

led-foo

wifi-Fernbedienung(mouse/keyboard via wifi, or display, mtp-remote, etc.)

USB-Eingabegerät

gif-player(Eventuell auch webm und/oder via Stream)

goulash(tm)-nacktscanner/röntgendingsie (Jamba-Troll-App mit dem Gyro und einem statischen Bild eines Skelettes)

Großes Zeichenpad(Jeder bekommt einen Plot zugewiesen und kann pixelart mit dem Badge machen, nachher kommt ein großes Bild raus)

Regler(Temp,Licht,Bewegung,Alkohol(?)(proof of concept, max 0,1 promille, will niemanden zum (be)trinken animieren))

Chatprogramm(irc,xmpp?) eventuell nur Lesen

Fahrplan

Pixelflut-Client (mit dem Bewegungssensor)


Interaktion mit der Veranstaltung

Push Notifyer!

LEDs auf Badge von der Lounge kontrollierbar machen. DMX?


Spiele

Multiplayer-Pong sp,2p,4p (JanHenrik)

Tron 2p~6p

Gulasch-Kart 2p~6p (JanHenrik)

Bomberman 2p,4p

hide'n'seek-IRL(RSSI)aka "meet a hacker/se"

-> Zwei(oder Mehr) zufällige Spieler starten das Spiel und müssen sich dann auf dem Event finden. Es werden keine Namen ausgetauscht, Funktioniert nach dem "Heiß/Kalt" prinzip. Motor vibriert stärker umso näher die teilnehmer sich sind. Positionsfindung via RSSI

cards against Gulasch

Komponenten:

Hier die immer aktuelle und einzig gültige Teileliste:

BOM: https://docs.google.com/spreadsheets/d/1iimlYgi_jSKNMCs_KKNb-31OOcALHnjgBTikqFaacEc/edit?usp=sharing


Display: http://www.pollin.de/shop/dt/MjgxOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_mit_Touch_und_LED_Beleuchtung_MC28G03A.html Pro: Billig, groß, gute Auflösung Contra: scheiß Interface, bräuchte CPLD + RAM

http://www.buydisplay.com/default/serial-spi-1-5-inch-color-oled-display-128x128-graphic-module-ssd1351 Pro: alles Contra: teuer

https://de.aliexpress.com/item/1-29-inch-39PIN-Full-Color-COF-OLED-Screen-SSD1351-Drive-IC-128RGB-96-Parallel-SPI/32298565228.html Pro: alles Contra: etwas teuer

And the winner is:

https://de.aliexpress.com/item/DHL-EMS-200pcs-1-44-128-128-SPI-LCD-Module-ST7735-driver-M71-3o/32787184344.html

  • Unschlagbar günstig
  • kein Steckverbinder
  • yay
  • gar nicht mal so scheiße
  • _genau_ richtige breite

GGf. sollte man einen P-Mosfet zum Abschalten vorsehen, weilwegen weniger Strom.


NOKIA

https://de.aliexpress.com/item/100-Tested-Wholesale-100pcs-For-NOKIA-2720-3110-3500C-3109-2680S-7070-2323C-Lcd-Display-Screen/32789711238.html

xxxx Bestes Preis Leistung Dings. https://de.aliexpress.com/item/lcd-screen-digitizer-for-NOKIA-3110-3120-2680S-2323-7070-2680-3109-High-Quality-MOQ-1/1038929168.html

http://andybrown.me.uk/2012/03/06/reverse-engineering-the-nokia-2730-qvga-lcd/


Controller/MCU

ESPxxxx

Nicht billig!: https://de.aliexpress.com/item/50pcs-lot-ESP8266EX-ESP8266E-ESP8266-WiFi-chip-QFN-IC-Best-quality/32690057144.html

Flash: https://de.aliexpress.com/item/100-original-GD25Q40BTIG-GD25Q40BT-GD25Q40-25Q40BT-new-SOP-8/32721574027.html

Akku

Möglichst länglich Möglichst Groß!

Halter: https://de.aliexpress.com/item/Hot-selling-single-bay-18650-battery-sled-1042-SMT-SMD-18650-battery-holder/32732476922.html

https://de.aliexpress.com/item/DVISI-100pcs-3-7V-2200mAh-18650-Li-ion-Rechargeable-Battery-with-ProtectION-Plate-for-LED-Flashlight/32750541356.html

https://de.aliexpress.com/item/Wholesale-063048-3-7V-750mah-Lithium-polymer-Battery-with-Protection-Board-For-MP4-MP5-PSP-GPS/1471745129.html

Laderegler

https://de.aliexpress.com/item/50PCS-TP4056-SOP8-4-2V-1A-current-New-and-original/32354647335.html

Gut, günstig, nehmen wir!

Tiefenentladeschutz

https://de.aliexpress.com/item/10PCS-CEG8205-8205A-SOP-8-Dual-N-Channel-Enhancement-Mode-Mosfet/32759066456.html

+

https://de.aliexpress.com/item/200PCS-DW01-SOT23-6-DW01A/32686112219.html

Joystick / Schalter https://de.aliexpress.com/item/Free-shipping-50PCS-LOTS-SMD-five-tact-switch-button-to-switch-press-the-joystick-in-multi/32727800636.html

Geht ggf, billiger, wir brauchen zwei weilwegen Power & USB select https://de.aliexpress.com/item/10pcs-MSS22D18-MINI-Miniature-SMD-Slide-Switch-2P2T-6Pin-for-DIY-Electronic-Accessories/32667809167.html

USB

Feature: Ich möchte einen Schiebeschalter, mit dem mal zwischen USB/UART und USB am ESP für USB bitbang wählen kann.

Buchse: https://de.aliexpress.com/item/Free-shipping-Small-Horn-5-pin-micro-usb-jack-5-p-micro-usb-connector-Tail-Charging/32305190506.html

UART/USB https://de.aliexpress.com/item/CP2102-GMR-CP2102-GM-CP2102-QFN-28-IC-100pcs-lot-Free-shipping/32257070150.html

ESD Schutz https://de.aliexpress.com/item/IP4220CZ6-Dual-USB-2-0-integrated-ESD-protection-to-IEC-61000-4-2level-4/32684609750.html



Vibrationsmotor (Rawr)

https://de.aliexpress.com/item/Free-shipping20PCS-Drag-cup-0610-6-10mm-3V-Micro-phone-Vibration-motor-Small-Toy-vibration-motor/32781800274.html

https://www.aliexpress.com/item/20pcs-lot-original-Ultra-Micro-Vibration-Motor-Rotor-Motor-DC-Massager-Motor-1-5-3V-Electric/32733390086.html

Winner? :

https://de.aliexpress.com/item/100pcs-lot-Original-import-DC-1-5V-3V-Super-Micro-Vibration-Motor-Double-Vibarting-Wheels/32708975014.html

oder die:

https://de.aliexpress.com/item/50pcs-DC3V-0834-Mobile-phone-micro-flat-vibration-motor-Coin-motor-Mini-vibrator-motor-Free-shipping/32697497372.html


LEGO

Leitwerk: 2x10 Rot

https://shop.lego.com/de-DE/Pick-a-Brick Nummer: 383221 Preis 0,25 €

Tragfläche: 2x20 Rot (oder 2x 2x10 Rot ? )

2x: https://shop.lego.com/de-DE/Pick-a-Brick Nummer: 383221 Preis 0,25 €