Zigarettenautomat und WLAN Keypad: Unterschied zwischen den Seiten

(Unterschied zwischen Seiten)
Zur Navigation springen Zur Suche springen
2.338 Bytes hinzugefügt ,  22:03, 20. Feb. 2020
K
>Icephoenix
 
>Mogwai
 
Zeile 1: Zeile 1:
{{Project
{{Project
|Why=Weil wir es können!
|Why=Senden von Tasteneingaben an einen MQTT Server
|What=hardware
|What=hardware, software
|Who=User:Mogwai
|Status=running
|Status=running
|Who=Icephoenix
|Tags=Keypad, ESP8266
|Tags=Elektronik,Hardware,Raum
}}
}}
[[File:Zigarettenautomat_vorher.png|thumb|Unser Zigarettenautomat]]
Ziel ist das Senden von Tasten Eingaben per WLAN an einen MQTT Server zur Weiterverarbeitung  (z.B. Steuerung von Raumfunktionen oder Lichteffekten)


Auf dem Kongress gibt es eine Hand voll Zigarettenautomaten, an denen Nerd Stuff verkauft wird. Wir haben dabei festgestellt, dass wir sowas auch cool fänden und sammeln schon einmal Ideen.


== Füllung ==
== Hardware ==
Dinge die definitiv in den Automaten kommen:
* Arduino Nano 328p CH340G 5V + Mikro USB Kabel
* WeMos D1 Mini, 4MiB Flash
* Breadboard (85x55mm) + Jumperkabel
* Maschinendeck Badge + Anleitung
* Random Überraschung


Andere Ideen:
* ESP8266
* Uart / TTL mit Original FTDI
* Alte Kassensystem Keypads aus dem Maschinendeck (Type FM015700C)
* Sekundenkleber
* Schrauben-Set (M3)
* Maschinendeck Fan Paket (Sticker, Kühlschrankmagnet, ...)
* Spannungsregler Paket (step up / step down / ...)
* Elektronikkits (gängige Bauteile + Lochraster)
* RFID Tags (werden auf Congress öfter für Challenges benötigt)
* WS2812 Streifen
* Mikro / Mini / USB-C
* Powerbank / 18650?


== TODO ==
== Pinbelegung Keypad und ESP8266 (vorläufig) ==
* Automat mit LEDs pimpen
* Netzteil für die Versorgung der Elektronik (12V, standby <1mA, bei Öffnung kurzzeitig einige 100mA) (evt. mit Backupakku)
* PayPal Support
* Füllung kaufen


== Aktueller Stand ==
{| class="wikitable"
Der Zigarettenautomat ist gekauft! Leider fehlt der Münzzähler, allerdings wurde schon Ersatz auf eBay gefunden. Der Originalzähler kostet um die 50€, während das Vorgängermodell ca. 30€ kostet. Aktuell versuche ich herauszufinden, ob es möglich ist einfach das Vorgängermodell zu verwenden.
! Keypad Pin
! Funktion
! Tasten
! ESP8266 PIN
! ESP8266 Bemerkungen
|-
| 0 || Gehäuse Schließkontakt Kette || Alle Schließkontakte (3x) || GND || -
|-
| 1 || Zeile 1 || 1, 2, 3, Cancel || IO 0 || INPUT, Externer Pull-Up, da PIN HIGH sein muss zu starten des ESP, LOW (extra Taster) für Programmierung
|-
| 2 || Zeile 2 || 4, 5, 6, Clear || IO 2 || INPUT, Pull-Up intern
|-
| 3 || Gehäuse Schließkontakt Kette || Alle Schließkontakte (3x) || T_OUT / ADC || Pull-Up Extern (Spannungsteiler!)
|-
| 4 || Zeile 3 || 7, 8, 9, Enter || IO 4 || INPUT, Pull-Up intern
|-
| 5 || Zeile 0 || PfeilHoch, Select, PfeilRunter, 0 || IO 3 || RX als IO-PIN konfigurieren, INPUT, Pull-Up intern
|-
| 6 || Spalte 0 || PfeilHoch, 1, 4, 7 || IO 14 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up)
|-
| 7 || Spalte 1 || 2, 5, 8, 0 || IO 12 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up)
|-
| 8 || Spalte 2 || Select, 3, 6, 9 || IO 13 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up)
|-
| 9 || Spalte 3 || PfeilRunter, Cancel, Clear, Enter || IO 5 || OUTPUT (LOW zum Ansteuern der Zeile, sonst INPUT und Pull-Up)
|}


Benötigt wird ein NRI G18.29xx, falls jemand so etwas günstig findet kann er sich bei [[User:Icephoenix]] melden.
== Tastencodes Keypad ==


== Schachteln ==
{| class="wikitable"
Schachteln im Format <code>57 x 24 x 88mm</code> wurden getestet und passen wie gewünscht.
! Tastencode
Wir haben 100 weiße Schachteln in diesem Format für 16ct/Schachtel gekauft. [[User:Icephoenix]] sucht nach Möglichkeiten diese zu bedrucken und nimmt gerne Vorschläge an.
! Taste
! Zeichenzuordnung
|-
|| 0x0000 || <keine> || <nix>
|-
|| 0x0001 || 1 || 1
|-
|| 0x0002 || 4|| 4
|-
|| 0x0004 || 7|| 7
|-
|| 0x0008 || PfeilHoch || u
|-
|| 0x0010 || 2 || 2
|-
|| 0x0020 || 5 || 5
|-
|| 0x0040 || 8|| 8
|-
|| 0x0080 || 0 || 0
|-
|| 0x0100 || 3 || 3
|-
|| 0x0200 || 6 || 6
|-
|| 0x0400 || 9 || 9
|-
|| 0x0800 || Select || s
|-
|| 0x1000 || Cancel || x
|-
|| 0x2000 || Clear || c
|-
|| 0x4000 || Enter || e
|-
|| 0x8000 || PfeilRunter || d
|}
 
== Geplante Funktionen ==
* Senden der gedrückten Taste per MQTT
* Zusammenfassen mehrerer Zeichen als Zeichenkette und senden dieser Kette nach Drücken der "Enter" Taste
* Konfiguration per JSON String im SPIFFS des ESP
* Konfigurierbare Tastenwiederholung
 
== Konfiguration ==
 
Die Konfiguration erfolgt per JSON String in der Deit config.txt im SPIFFS des ESP8266.
 
{| class="wikitable"
! Parameter (case sensitiv)
! Funktion
! Wertebereich
|-
| wifiSSID || WLAN SSID || String
|-
| wifiPassword || WLAN Passwort || String
|-
| mqttServer || IP Addresse des MQTT Servers || IPv4 als String
|-
| mqttServerPort || Portnummer des MQTT Servers || Numerisch 16-bit
|-
| mqttClientName || MQTT Client Name || String
|-
| mqttUser || MQTT Username || String
|-
| mqttPassword || MQTT Passwort || String
|-
| mqttPubTopic || MQTT Topic an das die Tastendaten geschickt wird || String
|-
| keypadDebounceTime || Debounce Zeit für Tastenerkennung in Ms || Numerisch 16-bit
|-
| keypadRepeatDelay || Wartezeit für erste Tastenwiederholung in Ms || Numerisch 16-bit
|-
| keypadRepeatInterval || Wiederholungsintervall bei Tastenwiederholung in Ms || Numerisch 16-bit
|-
| keypadRepeatMask || Maske der Tastencodes, für die eine Tastenwiederholung durchgeführt wird (siehe Tastencodes) || Numerisch 16-bit
|-
| keypadMultikeyTimeout || Timeout für Zusammenhängende Tasteneingabe in Ms || Numerisch 16-bit
|}
 
== MQTT Nachrichtenformat ==
 
Die Übermittlung der Tasteninformationen erfolgt per MQTT mit folgendem Inhalt:
 
{| class="wikitable"
! Parameter (case sensitiv)
! Funktion
! Wertebereich
|-
| keycode || Maske der Tastencodes der gedrückten Taste(n) || 16-Bit Integer
|-
| keyrepeat || Anzahl der bisherigen Wiederholungen der Taste || 16-Bit Integer
|-
| keychar || Zeichenentsprechung der gedrückten Taste(n) || String, sortiert nach Keycode bei mehreren gedrückten Tasten
|-
| keystring || Enthält mehrerer hintereinander gedrückte Tasten, die mit Enter bestätigt wurden || String
|-
| keypadEnclosureState || Ist Gehäuse geschlossen (1), oder offen (0)? || 8-Bit Integer
|}
Anonymer Benutzer

Navigationsmenü