>Mogwai |
|
Zeile 1: |
Zeile 1: |
| {{Project
| |
| |Why=Senden von Tasteneingaben an einen MQTT Server
| |
| |What=hardware, software
| |
| |Who=User:Mogwai
| |
| |Status=running
| |
| |Tags=Keypad, ESP8266
| |
| }}
| |
| Ziel ist das Senden von Tasten Eingaben per WLAN an einen MQTT Server zur Weiterverarbeitung (z.B. Steuerung von Raumfunktionen oder Lichteffekten)
| |
|
| |
|
|
| |
| == Hardware ==
| |
|
| |
| * ESP8266
| |
| * Alte Kassensystem Keypads aus dem Maschinendeck (Type FM015700C)
| |
| * Ein paar Widerstände
| |
| * Ein Spannungsregler für 3,3 Volt
| |
|
| |
| == Pinbelegung Keypad und ESP8266 ==
| |
|
| |
| {| class="wikitable"
| |
| ! 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: GND - 100K - T_OUT - 220K - Kontakt - 10K - VCC)
| |
| |-
| |
| | 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)
| |
| |}
| |
|
| |
| == Tastencodes Keypad ==
| |
|
| |
| {| class="wikitable"
| |
| ! Tastencode
| |
| ! 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 (done)
| |
| * Zusammenfassen mehrerer Zeichen als Zeichenkette und senden dieser Kette nach Drücken der "Enter" Taste (done)
| |
| * Konfiguration per JSON String im SPIFFS des ESP (done)
| |
| * Konfigurierbare Tastenwiederholung (done)
| |
|
| |
| == Erweiterungen ==
| |
| * tdb
| |
|
| |
| == Konfiguration ==
| |
|
| |
| Die Konfiguration erfolgt per JSON String in der Datei 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
| |
| |}
| |
|
| |
|
| |
|
| |
| == Schaltplan ==
| |
| * Muss noch erstellt werden
| |
|
| |
|
| |
| == Arduino Programm ==
| |
| * Upload erfolgt, wenn das Programm debugt ist
| |