In diesem Beitrag möchte ich dir zeigen wie du die RFID UNIT am M5Stack ATOM Matrix programmieren kannst. Den kleinen Microcontroller M5Stack ATOM Matrix habe ich im Beitrag Programmieren des M5Stack ATOM Matrix mit UI Flow vorgestellt und auch gezeigt wie einfach du mit UI Flow programmieren kannst. Hier möchte ich dir nun zeigen wie du eine RFID Karte erkennst und darauf reagieren kannst.
Die RFID UNIT kann nicht nur an den hier gezeigten M5Stack ATOM Matrix gesteckt werden, sondern auch an andere Mikrocontroller, welche über eine Grove Schnittstelle verfügt.
Bezug der RFID UNIT für den M5Stack
Das Modul habe ich über den offiziellen Shop auf aliexpress.com für knapp 5€ inkl. Versandkosten erstanden, die Lieferzeit war mit 3 Wochen zwar recht lange aber wenn man den Preis von 13€ auf ebay.de gegenüber setzt, lohnt sich das warten doch schon.
Lieferumfang
Zum Lieferumfang der RFID UNIT gehört neben dem RFID Sensor lediglich ein vierpoliges Anschlusskabel mit Grove Schnittstelle. Es fehlt somit wenigstens eine RFID Karte, mit welcher man sofort starten könnte.
Da ich diverse Arduino Starter Kits* habe, welche mit einem RFID Reader ausgestattet sind, habe ich ein paar RFID Karten & Schlüsselanhänger da und kann somit gleich loslegen. Passende RFID Karten zum Experimentieren findest du aber recht günstig auf ebay.de* für schon 2,64 € zzgl. Versandkosten.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Komischerweise habe ich mit der Sendung von HAT Sensoren / Aktoren für den M5StickC (diese folgen in separaten Beiträgen) eine RFID Karte geliefert bekommen.
technische Daten der RFID UNIT
Da wie bereits erwähnt die RFID UNIT über eine Grove Schnittstelle verfügt, hat dieser Sensor 4 Pins (SCL, SSDA, 5V, GND).
- Betriebsspannung: 5V
- Anschluss: Grove, I2C
- Betriebsfrequenz: 13,56 MHz
- unterstützte Protokolle: ISO14443A, MIFARE und NTAG
- Abmaße (LxBxH): 47 mm x 25 mm x 8 mm
Programmieren der RFID UNIT mit UI Flow
Für den Sensor gibt es in der Software UI Flow (Web / Offline IDE ) eine Möglichkeit des einfachen hinzufügen zum Code. Somit entfällt zumindest bei dieser Art der Programmierung die Suche nach einer passenden Bibliothek.
einbinden der benötigten Bibliothek zum auslesen der RFID UNIT
Wenn du die Anwendung UI Flow gestartet hast dann müssen wir zunächst die benötigte Bibliothek einbinden, dieses wir mit wenigen Klicks erledigt.
Als erstes müssen wir auf das große “+” Zeichen links unten mit der Beschriftung “UNITS” klicken (1) , danach öffnet sich ein neuer Dialog in welchem wir etwas nach unten scrollen müssen um dann auf der rechten Seite die UNIT “RFID” markieren (2) und diese auswahl mit der Schaltfläche “OK” (3) bestätigen.
Wenn die RFID UNIT erfolgreich hinzugefügt wurde, dann findest du unter dem Eintrag “Einheiten” den Eintrag “RFID”.
auslesen der RFID Kartennummern
Nachdem wir nun die Bibliothek eingebunden haben müssen wir erstmal die RFID Kartennummern auslesen damit wir diese in eine Liste übertragen können. Diese Liste ist später unsere “Whitelist” für erlaubte RFIDs.
Das einfachste ist es diese UIDs mithilfe eines Arduino UNOs auszulesen wie du das machst habe ich dir im Beitrag Arduino Lektion 20 – Teil 1: RFID RC522 – Kartenleser ausführlich erläutert.
Das dort gezeigte Sketch zeigt dir die UIDs auf dem seriellen Monitor der Arduino IDE an.
ACHTUNG für das spätere Programm müssen die großen Buchstaben in kleine umgewandelt werden!
In meinem Fall habe ich nachfolgende die UIDs ausgelesen:
c6a3352b7b b949e3b8ab 37fc943b64
kleines Programm mit UI Flow zum prüfen einer RFID UID
Zunächst wollen wir nur eine der UIDs prüfen und die anderen sollen abgelehnt werden.
Video
Download der *.m5f Datei
Hier nun der Download zum Programm:
erweitertes Projekt mit einem Piezo Buzzer und eine Liste von UIDs
Nachdem wir nun die UIDs ermittelt und ein erstes Projekt mit der RFID UNIT erstellt haben, möchte ich dir zeigen wie du einen Piezo Buzzer zur akustischen Untermalung des Status und eine Liste mit UIDs implementieren kannst.
Für den Aufbau benötigen wir noch folgende zusätzliche Bauteile:
- 1x Piezo Buzzer,
- 2x Breadboardkabel, 10cm, männlich – männlich,
- 1x Breadboard 170 Pin
Man kann natürlich auch den Piezo Buzzer mit mit entsprechenden Kabeln “versorgen” und an den ATOM Matrix direkt anschließen, jedoch steht dieser dann nicht mehr gerade auf dem Tisch.
Zwischenschritt – einen Ton ausgeben
Wollen wir uns zunächst einmal anschauen wie man einen einfachen Ton ausgeben kann.
Im ersten Schritt müssen wir uns ein PWM Signal auf einen Pin legen. Wir können ausgenommen die VCC & GND Pins jeden Pin für ein PWM Signal nutzen. In meinem Fall nutze ich den GPIO Pin 25. Die Frequenz definiert wie hoch bzw. tief der Ton ist, je höher der Wert desto höher ist der Ton. Das Tastverhältnis ist der Zeitliche Abstand zwischen zwei PWM Signale. Zum Schluss definieren wir einen Timer für das PWM Signal. Der Verbaute Chip hat 2 Timer welche wir verwenden können.
Damit der Buzzer nicht dauerhaft läuft müssen wir das PWM Signal “PWM0” pausieren und nur aktivieren wenn wir einen Ton ausgeben wollen. Das machen wir im Bereich “setup” bei der Initialisierung des Microcontrollers (beim Start).
Nachdem wir nun ein PWM Signal definiert und pausiert haben, starten wir eine Endlosschleife und prüfen in dieser Dauerhaft ob der Taster gedrückt wurde.
Wenn der Taster gedrückt wurde, wird die Funktion “makeBeep” ausgeführt in welcher
- das PWM Signal fortgesetzt,
- eine kleine Pause eingelegt,
- das PWM Signal pausiert
wird.
Video
Download
Hier nun das kleine Programm zum bequemen download.
eine Liste mit RFID UIDs prüfen
Im ersten Beispiel habe ich dir gezeigt wie wir mit einer einfachen If-Else-Bedingung einen RFID UID prüfen. Wenn wir jedoch mehr als eine UID haben bietet sich eine Liste an. Natürlich könnte man auch hier eine verschachtelte If-Else-Bedingung verwenden jedoch wird der Code dann schnell unübersichtlich und in UI Flow verdammt lang.
Nutzen wir also das Listen Element.
Programm
Video
In dem angezeigten Programm im Video habe ich den ersten Eintrag der Liste um die Zahl 1 am Ende erweitert, somit erkennt er die weiße RFID Karte nicht mehr und gibt somit ein rotes Kreuz und ein Signalton aus. Die andere Karte und der RFID Transponder werden korrekt erkannt.
Download
Hier jetzt das gesamte Programm zu download.