Im Rahmen des Projekts soll die bestehende Datenstruktur um 2 Punkte erweitert werden. Es soll zum einen ein Zähler eingeführt werden, welcher auf jedem Glas die Anzahl der Cocktails speichert, welches auf dieses geschrieben wurden.
Des Weiteren soll in einem Sektor der Eigentümer (HIT-Labor) permanent gekenzeichnet sein. Die aus vorherigen Semestern bestehende Datenstruktur soll ansonsten unverändert beibehalten werden.
So ist das richtige Lesen bzw. Schreiben der Chips unter den Gruppen garantiert. In der unteren Grafik ist die Datenstruktur schematisch dargestellt:
(Selbst erstellt auf Basis Gruppe CM-IoT_WaehlESP32)
RFID-Übertragung
Für den (MF)RC-522 RFID-Schreiber gibt es
bereits eine Bibliothek von miguelbalboa (https://github.com/miguelbalboa/rfid).
Diese wurde für eine SPI-Übertragung programmiert. Der für dieses
Projekt vorgegebene RFID-Schreiber ist auf den I²C-Bus ausgelegt.
Für die Arduino IDE gibt es die Klasse Wire.h, mit Hilfe dessen
relativ einfach ein I²C-Port geöffnet werden kann. Damit galt es nur
noch die entsprechenden Programmzeilen der RFID-Bibliothek mit den
neuen I²C-Befehlen zu ersetzen. Diese
modifizierte Bibliothek wurde während der initialen
Entwicklungsphase genutzt. Auf der Webseite
http://makecourse.weebly.com/week10segment1.html gibt es
reichlich Informationen und Beispiele für das Schreiben/Lesen mit
dem RC522.
Web-Server
Für die Entwicklung des Cocktail-Mixer
kommt ein Webserver zum Einsatz, der relativ schnell und
stabil bereits vorhanden ist. Es wurd jedoch ein automatischer Rücksprung zur Bestellkarte
hinzugefügt, der nach 5 Sekunden nach der Bestellung erfolgt.
Zu verzeichnen ist das dieser wesentlich stabiler läuft, wenn über einen Router verbunden und kein Netz vom Microcontroller selbst aufgebaut wird.
Softwarestand und Bestellung
Für den Softwarestand der RFID-Bezahlstation
gibt es eine Headerdatei sowie die dazugehörige Quellcodedatei.
Diese sind mit Kommentaren versehen. Wie oben beschrieben, besteht
die RFID-Komponenten aus zwei Teilen. Der erste Teil stellt die
Display-Ansteuerung dar. Dazu gibt es drei Funktionen. Es gibt eine
Init-Funktion und drei Schreibefunktionen für je, um eine einzelne
Nachricht zu schreiben sowie die Bestellung auf dem Display
darzustellen. Des weiteren wird ein NeoPixel Ring angesteuert, um die Nachricht auf dem Display zu untermalen.
Für die zweite Teilkomponente gibt es zwei Funktionen.
Eine Init-Funktion, um das RFID-Modul zu initialisieren sowie eine
Schreibefunktion, um Informationen einer Bestellung auf das
RFID-Chip zu schreiben.
Der Bestellvorgang läuft in etwa
folgendermaßen ab:
Kunde verbindet sich mit Webserver und ruft
Bestellseite auf. Diese ist 192.168.4.1 falls der Microcontroller sein eigenes WLAN aufbaut,
ansonsten kann die IP-Adresse über den Seriellen Monitor der Arduino IDE ausgelesen werden.
Danach bestellt der Kunde das Getränk. Webseite
aktualisiert sich und meldet erfolgreiche Bestellung und kehrt nach 5 Sekunden zur Karte zurück.
Bestellung wird im Hintergrund in Warteschlange gelegt. RFID-Modul holt
Bestellung aus Warteschlange und Kunde wird gebeten das Glas auf die vom LED-Ring umrandete Fläche zu stellen.
Chip wird erkannt und mit Informationen aus Bestellung beschrieben. Bei
Miss-Erfolg erhält der Kunde eine Rückmeldung auf dem Display. Aus
Schutzgründen wird nach 30 Sekunden und einer erfolglosen
Beschreibung des RFID-Chips die Bestellung verworfen. In diesem Fall
wird der Kunde gebeten sich an das Personal zu wenden.
Im Folgenden stellt das Flussdiagramm
den Bestell- sowie Schreibevorgang im Groben
schematisch dar. Schlägt dieser fehl, so wird die
Bestellung verworfen und der Kunde darüber informiert. Außerdem sind die Anweisungsblöcke für das
Display/LED-Ring nicht dargestellt.
Hinweis: Falls der Status beim ersten
Versuch nicht ausgelesen werden kann, so wird versucht mit Hilfe des
Standardschlüssels 0xFFFFFFFFFFFF der neue geheime Schlüssel in den
entsprechenden Block zu schreiben. (Überschreiben des alten
Schlüssels)
Test des Systems
Die Stabilität und Sicherheit des Systems konnte bereits am Campus Fest
getestet werden. Dazu wurden mehrere hundert Cocktails während mehreren Stunden auf Gläser "geschrieben".
Dies wurde sicher abgearbeitet.