Mobiler RFID -Leser - Ein Maker -Kit -Projekt mit Particle und Ubidots

In den letzten Jahren Ubidots Particle zusammengetan, um ein ultimatives Ziel zu erzielen. Ermöglichen Sie eine schnelle, einfache und effiziente Schaffung von IoT -Lösungen.

Heute können wir mit Stolz sagen, dass IoT -Projekten auf globaler Ebene eingesetzt werden . Von Unternehmern und Start-ups bis hin zu großen und kleinen Unternehmen unterstützen wir Unternehmen bei der Gestaltung der datengesteuerten Zukunft.

Vor kurzem Friedl die Herausforderung, ein IoT -Produkt von Grund auf neu zu erstellen. Von Anfang an war Friedls Knowl edge zu diesem Thema begrenzt. Dank der von ihm durchgeführten Forschungen - und vielen YouTube -Videos - war er jedoch zuversichtlich, eine Vielzahl von Werkzeugen zu verwenden, um sein Ziel zu materialisieren. Erstellen eines mobilen RFID -Lesers, ohne ein IoT -Experte zu sein.

Nachdem wir dieses erstaunliche Ergebnis erzielt hatten, nahmen wir Kontakt mit Friedl auf, um ihm zu seinem Erfolg zu gratulieren und aus seiner Leistung zu lernen. Wir wollten diese Geschichte auch mit der Ubidots -Community teilen, weil wir glauben, dass sie inspirierend ist und von der man lernen kann.

Angesichts dieser großartigen Erfolge werde ich mich in meinem Interview mit Friedls Entwicklungsprozess, den Techniken, mit denen er sein Ziel erreichte, und anderen wertvollen Lektionen befassen.

Der ursprüngliche Beitrag befindet sich auf der Website der Particle . Friedl hat es freundlicherweise auch mit Ubidots .

Geschrieben von : friedl_1977

Als erstes Projekt wollte ich einen mobilen RFID-Leser bauen, der Live-Daten über Webhooks entweder an MySQL, Google Sheets oder Ubidots sendet.

Notiz:

Dies ist kein Tutorial als solches, sondern nur ein Schaufenster des Produkts. Da ich im Particle viel Hilfe hatte, habe ich beschlossen, meine Eagle -Dateien und -Codes zu veröffentlichen, um sie jedem zur Verfügung zu stellen, die sie möglicherweise verwenden möchten.

Ich gehe davon aus, dass Sie eine grundlegende Knowledge der Particle , Webhaken haben und Ihr Konto und Ihre Geräte in Particle einrichten. Wenn nicht, tun Sie dies bitte, bevor Sie diesen Build versuchen.

Der Auftrag:

Aufbau eines wirklich drahtlosen (mobilen) RFID-Scanners mit dem Zweck, RFID-Karten zu scannen, die UIDs dieser Karten zu erfassen und sie entweder zu senden;

Stückliste:

  1. MFRC522 3 Kartenlesermodul
  2. 3,7 V LiPo 1 1100 mA Akku
  3. Batterieladung 1 Modul
  4. LM394N 1
  5. Reihe von 0603-LEDs für die Batterieanzeige
  6. 2 x RGB-LEDs für Systemstatus und Kartenlesestatus
  7. Particle
  8. Schiebeschalter – Hauptstrom
  9. Neigungsschalter 1
  10. Kundenspezifische Leiterplatte (von PCBWAY oder ähnlich )
  11. Gehäuse nach Maß
  12. Verschiedene 0603-Widerstände
  13. Ferrit 2 !!!

Das Wichtigste zuerst:

Wenn Sie so etwas wie ich sind, reicht ein einfaches generisches Prototypengehäuse nicht aus. Deshalb habe ich ein wenig zusätzliche Anstrengungen unternommen, meinen Weg in den Rhinoceros kennengelernt und ein einfaches, aber elegantes (oder zumindest ich es mir fürs), das das Particle und einige andere Komponenten präsentiert, entwarf.

Darüber hinaus habe ich mich entschieden, mich nicht für ein generisches Protoboard zu entscheiden, da ich Kabel absolut hasse. Ich habe ein Bild von meinem ersten Versuch beigefügt, eine „hübsche“ Platine aus Protoplatine und Überbrückungsdrähten zu bauen, aber nach ein paar Stunden wurde mir klar, dass das einfach nicht geht. Noch eine Lernkurve: Google habe ein paar Stunden auf YouTube verbracht und es geschafft, mich in Autodesk Eagle zurechtzufinden. Jede Minute wert.

***Das letzte Bild zeigt die vollständig zusammengebaute Platine mit der Status-LED, die „OK “ anzeigt, sowie den LM3914N in Aktion, der eine zu ±90 % geladene Batterie anzeigt. (7 von 8 LEDs)

Ich habe die Gerber-Dateien an PCBWAY und in weniger als einer Woche waren meine brandneuen kundenspezifischen Leiterplatten für die Montage bereit.

Das Wichtige:

Nun, die Kodierung, dies ist der Teil, mit dem ich am meisten zu kämpfen habe, aber dank eines hilfreichen Gentleman in den Particle und Hackster -Foren habe ich den Code unten ausgedacht. Jetzt ist es wahrscheinlich nicht der sauberste Code, der jemals geschrieben wurde, aber es funktioniert. Sie können also gerne verwendet und verbessern, wenn Sie möchten.

// Projekt: Mobile RFID -Anwesenheit Register // Ein Projekt von Firfli (Pty) Ltd // Datum: Juli 2019 // Zusammengestellt von: Friedl Basson // Details: Scannen Sie nach UIDs von RFID -Karten und Posting über Webhooks bis hin zu UbiDots, MySQL DB oder Google Sheets // besondere Dank: Besonderer Dank an die Particle -Community for Assisting und Assisting und Make This Assisting mögliche Projekte! // Firmware: v2.1.1 // Systemmodus // - Kommentieren Sie, ob Sie WLAN über Particle -App einrichten und nach der Tatsache keine Verbindung zu einem anderen drahtlosen Netzwerk herstellen müssen // system_mode (semi_automatic); // Diese #include -Anweisung wurde automatisch von der Particle -IDE hinzugefügt. #include "RFID.h" #include <Ubidots.h> /* Define the pins used for the SS (SDA) and RST (reset) pins for BOTH hardware and software SPI */ #define SS_PIN A2 #define RST_PIN D2 /* Define the pins used for the DATA OUT (MOSI), DATA IN (MISO) and CLOCK (SCK) pins for SOFTWARE SPI ONLY */#define mosi_pin d3 #define miseo_pin d4 #define sck_pin d5 // Initialisierung von RGB -Start - RGB -LED und Summer wird als Systemstatusindikator int redpin = d6 verwendet; int greenpin = d1; int bluepin = d0; int buzzpin = d7; // Initialisieren von RGB -Ende/ * Erstellen Sie eine Instanz der RFID -Bibliothek */#if definiert (_use_soft_spi_) rfid rc522 (ss_pin, rst_pin, mosi_pin, Miso_Pin, sck_pin); // Software SPI #else RFID RC522 (SS_PIN, RST_PIN); // Hardware spi #endif // const char* webhook_name = "rfid_uid"; const char* webhook_name = "Ubidots"; Ubidots ubidots("Webhook", UBI_PARTICLE); void setup () {serial.begin (9600); // wifi.listen (); PinMode (Redpin, Ausgang); PinMode (GreenPin, Ausgang); PinMode (Bluepin, Ausgang); PinMode (BuzzPin, Ausgabe); // Anmeldeinformationen für eine neue WLAN -Verbindung einstellen /* Dieser Abschnitt wird nur benötigt, wenn Sie nach dem Ersteinricht eine Verbindung zu einem neuen WLAN -Netzwerk herstellen möchten. Dies funktioniert nur, wenn aktuelle WLAN -Anmeldeinformationen gelöscht wurden. Der Code wird nur einmal beim Start ausgeführt und neue Anmeldeinformationen festgelegt. Sobald neue Anmeldeinformationen festgelegt sind, wird dieser Code nicht erneut ausgeführt. */ Wifi.on (); if (! } Wifi.connect (); Waituntil (WiFi.Ready); Particle.Connect (); #if! Defined (_use_soft_spi_) / * Aktivieren Sie die HW SPI -Schnittstelle * / spi.setDatamode (SPI_MODE0); SPI.SetBitorder (MSBFirst); SPI.SetClockDivider (SPI_Clock_Div8); Spi.begin (); #endif / * initialise den RFID -Leser * / RC522.init (); Verzögerung (5000); DigitalWrite (Bluepin, hoch); DigitalWrite (GreenPin, High); DigitalWrite (Redpin, niedrig); } void Loop () { / * Temporärer Schleifenzähler * / uint8_t i; /* Wurde eine Karte erkannt? */ if (rc522.iscard ()) {/ *wenn ja, dann erhalten Sie die Seriennummer */ Rc522.readCardSerial (); Char Str [16]; SNPRINTF (STR, SIZEOF (STR), " %02X %02X %02X %02x", RC522.SERNUM [0], RC522.SERNUM [1], RC522.SERNUM [2], RC522.SERNUM [3]); // Webhooks /// * rfid_wp = Ihr Webhook -Name Particle= Ihre Daten, die Sie private oder öffentliche veröffentlichen möchten. // Daten an WordPress DB veröffentlichen // Particle.Publish ("xls", str, privat); // Daten an Google Sheets serial.print (str) veröffentlichen; / * Fügt Kontextschlüsselwertepaare hinzu */ ubidots.AddContext ("uid", str); char * context = (char *) malloc (sizeof (char) * 60); / * Erstellt den Kontext mit dem oben genannten Array an Ubidots */ ubidots.getContext (Kontext); ubidots.Add ("uid", 1, Kontext); // Änderung für Ihren Variablennamen bool bufferent = false; bufferent = ubidots.send (webhook_name, öffentlich); // verwendet particle -Webhooks, um Daten zu senden //} // - Versuchen Sie Ubidots - // // digitalWrite (BuzzPin, High); Verzögerung (500); DigitalWrite (BuzzPin, Low); DigitalWrite (Bluepin, niedrig); Verzögerung (750); DigitalWrite (Bluepin, hoch); } else if (rc522.iscard ()) {rc522.readCardSerial (); Char Str [16]; SNPRINTF (STR, SIZEOF (STR), " %02X %02X %02X %02x", RC522.SERNUM [0], RC522.SERNUM [1], RC522.SERNUM [2], RC522.SERNUM [3]); DigitalWrite (Bluepin, niedrig); DigitalWrite (GreenPin, Low); DigitalWrite (Redpin, hoch); // DigitalWrite (BuzzPin, High); Verzögerung (1000); DigitalWrite (Bluepin, hoch); DigitalWrite (GreenPin, High); DigitalWrite (Redpin, niedrig); DigitalWrite (BuzzPin, Low); } Verzögerung (500); }

Frontends:

Dank der Webhook -Funktion in der Particle konnte ich den Code nahtlos auf irgendwohin veröffentlichen. Wenn Sie nun PHP und MySQL gut kennen, können Sie möglicherweise Ihr eigenes Server -Seitenskript schreiben, aber für diejenigen, die wie mich neu sind, würde ich die folgenden beiden Dienste empfehlen.

Da es große Unterschiede gibt, schauen Sie sich beide an, um herauszufinden, welches für Ihren Einsatz besser geeignet ist. Fazit: Wenn Sie möchten, dass die Daten live an einem Ort Ihrer Wahl veröffentlicht werden, ist Zapier (oder etwas Ähnliches) die richtige Wahl. Wenn es Ihnen nichts ausmacht, Daten auf dem Server einer anderen Person zu speichern, Ubidots eine viel kostengünstigere Lösung (Kosten pro Datenpunkt) und bietet den zusätzlichen Vorteil einiger praktischer Widgets zur grafischen Darstellung Ihrer Daten. Ich habe einen Screenshot eines Beispiel Dashboard das ich in Ubidots .

Im Nachhinein:

Anfangs dachte ich, dass es die beste Idee wäre, eine Batterieanzeige zu bauen, die außerhalb des Mikrocontrollers funktioniert, da sie unabhängig funktionieren würde und dringend benötigte digitale Pins freigibt, aber der Nachteil dabei ist, dass kein analoger Eingang an den MC gesendet wird , können Sie die Akkulaufzeit nicht auf einem dashboardanzeigen. Der LM3914N erfordert außerdem einige Berechnungen, um Referenzspiralen festzulegen und zu bestimmen, welche Widerstände je nach Spannungsunterschied zwischen „vollständig geladen“ und „entladen“ verwendet werden sollen. Bedenken Sie, dass Sie aus praktischen Gründen mit 3,1 V an der Batterie arbeiten sollten, da die Batterie leer ist, da die meisten Komponenten unter 3 V nicht mehr funktionieren oder sporadisch zu reagieren beginnen. Sechs davon, nehme ich an.

Ich würde den Neigungsschalter auch nicht erneut verwenden, um die Batterieanzeige auszulösen, da diese zu empfindlich ist und ein „Flackern“ verursacht. Ein einfacher taktiler Schalter scheint eine viel bessere Idee zu sein … nur eine Überlegung.

Ein Muss:

Die größte Lernkurve hier war für mich die Auswirkung jedes Metalls oder Schaltkreises und eines RFID-Lesegeräts. Ich habe die gesamte Einheit entworfen, gebaut und getestet, zunächst verbunden mit einem konstanten Netzteil. Aufgrund der kompakten Bauweise des Geräts wurde die Batterie in unmittelbarer Nähe zum RFID-Lesemodul installiert. Die Konsequenz…. Keine Scans 😲 Als vorübergehende Maßnahme habe ich die Batterie mit Isolierband umwickelt, was „ok“ funktioniert hat. Ich habe bei Amazon etwas Ferrit als Ave Maria bestellt und wie von Zauberhand gehörten die Störungen der Vergangenheit an.

Vielen Dank an alle, die in irgendeiner Weise mit dem Projekt Particle wurden . Ich freue mich auf weitere Projekte !!!

Dateien:

Eagle-Schaltplan – DOWNLOAD

Eagle Board-Datei - DOWNLOAD


Großartig, oder? Nun, wie versprochen... Hier finden Sie einige der Fragen, die Friedl freundlicherweise beantwortet hat.

F/ Was hat Sie dazu bewogen, in das IoT Ökosystem einzusteigen?

A/ Ich war schon immer technikbegeistert und mein Wunsch, neue Dinge zu schaffen, passt perfekt in den IoT Bereich. Neue Dinge zu entwickeln, die das Leben verbessern können, ist das, was mir am meisten Spaß macht.

F/ Warum haben Sie viele Plattformen ausprobiert?

A/ Da ich ein völliger IoT Neuling bin und mich nicht besonders für das Programmieren interessiere, war ich auf der Suche nach einer benutzerfreundlichen Plattform, die im Vergleich zum Schreiben einer eigenen Plattform auch kosteneffizient ist. Ich habe festgestellt, dass die meisten Plattformen unter Berücksichtigung erfahrener Benutzer entwickelt wurden, was es für jemanden, der neu im IoTist, sehr schwierig macht. Selbst einige erfahrene Benutzer könnten es als unnötig kompliziert empfinden, zu viel Zeit mit der Konfiguration des Systems zu verbringen. Da mein Fokus hauptsächlich auf der Entwicklung von Produkten, dem Produkt- und PCB-Design liegt, war es für mich unerlässlich, eine Lösung zu finden, die ich schnell verstehen und anwenden kann.

F/ Was haben Sie von jedem einzelnen gelernt?

A/ Die meisten Plattformen scheinen entmutigend zu erlernen und sehr teuer zu sein, wenn man nicht aufpasst. Niedrige Vorabkosten oder „kostenlose“ Versionen können Sie leicht dazu verleiten, das Produkt zu nutzen, aber sobald Sie mit dem Streamen von Live-Daten beginnen, wird es sich als recht teuer erweisen.

F/ Warum haben Sie sich für Ubidotsentschieden?

A/ Ubidots erwies sich als das Beste aus beidem: leicht zu erlernen, recht kostengünstig und faire Datennutzungsrichtlinie. Darüber hinaus war der Support großartig! Die Benutzeroberfläche ist leicht zu verstehen und die Option zur benutzerdefinierten Beschriftung ist interessant, wenn auch etwas teuer.


Ich hoffe wirklich, dass diese Geschichte Sie dazu inspiriert, mit dem Aufbau und Tüfteln Ihrer eigenen unterschiedlichen IoT Ubidots , um Ihr Bestes zu geben, um Ihren Prozess zu ermöglichen.