Kurs - Technisches Zeichnen und WLAN Keypad: Unterschied zwischen den Seiten

Aus Maschinendeck Wiki
(Unterschied zwischen Seiten)
Zur Navigation springen Zur Suche springen
>Mike
KKeine Bearbeitungszusammenfassung
 
>Mogwai
 
Zeile 1: Zeile 1:
{{#set_internal_recurring_event:Is instance of
{{Project
|property=Date
|Why=Senden von Tasteneingaben an einen MQTT Server
|Location=Eurener Str. 14, 54294 Trier
|What=hardware, software
|start=2019/08/27 20:00
|Who=User:Mogwai
|unit=month
|Status=running
|week number=-1
|Tags=Keypad, ESP8266
|period=1
|Tags=Kurs, Software
|Where=Eurener Str. 14, 54294 Trier
|What=software
|Who=User:Mike
|exclude=2019/12/31
}}
}}
Ziel ist das Senden von Tasten Eingaben per WLAN an einen MQTT Server zur Weiterverarbeitung  (z.B. Steuerung von Raumfunktionen oder Lichteffekten)


Technisches Zeichnen 


Jeden letzten Dienstag im Monat.
== Hardware ==


Weiter Informationen hier: https://wiki.maschinendeck.org/wiki/Zeichenkurs 
* ESP8266
* Alte Kassensystem Keypads aus dem Maschinendeck (Type FM015700C)


[[Category:Event]]
== 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
* 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

Version vom 20. Februar 2020, 22:29 Uhr

WLAN Keypad
Weshalb Senden von Tasteneingaben an einen MQTT Server
Was hardware, software
Wer User:Mogwai
Status läuft


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)

Pinbelegung Keypad und ESP8266

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

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

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:

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