Arduino Fingerabdruck-Anwesenheitssystem mit Cloud-Datenspeicherung
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
| ||||
|
Apps und Onlinedienste
|
Über dieses Projekt
Sie können dieses und andere tolle Tutorials lesen auf Offizielle Website von ElectroPeak .
Übersicht
Heutzutage ist es aufgrund der zunehmenden Verwendung von IoT-Systemen so wichtig, sich über den Betrieb und die Implementierung von IoT-Geräten zu informieren. In diesem Tutorial werden wir mit Arduino ein Fingerabdruck-Anwesenheitsgerät erstellen, das zusätzlich zum Speichern der Anmeldeinformationen und der Arbeitszeit auf der Speicherkarte diese Informationen auf die ThingSpeak-Plattform hochlädt, sobald diese mit dem Internet verbunden ist und Sie können diese Informationen aus dem Panel in verschiedenen Formaten herunterladen, z. B. CSV.
Was Sie lernen werden
- Mit Fingerabdrucksensoren arbeiten
- Hochladen von Daten auf ThingSpeak mit NodeMCU
- Erstellen Sie ein Anwesenheitsgerät mit dem Fingerabdrucksensor und Arduino
Was ist ThingSpeak?
Das IoT (Internet der Dinge) stellt sich eine Welt vor, in der eine Reihe von Dingen mit dem Internet verbunden sind, mit Einzelpersonen und anderen Geräten interagieren und normalerweise Daten zur Analyse in die Cloud hochladen.
ThingSpeak ist eine IoT-Plattform, mit der Sie Live-Daten im Cloud-Computing anzeigen und sammeln können.
Schnittstelle zu ThingSpeak und Hochladen von Daten
Befolgen Sie die folgenden Schritte, um die ThingSpeak-Verbindung zu starten:
Schritt 1 ) Rufen Sie die ThingSpeak.com-Website auf und erstellen Sie ein Konto.
Schritt 2 ) Melden Sie sich nach der Aktivierung Ihres Kontos an und klicken Sie auf Neuer Kanal im Mein Kanal Abschnitt.
Schritt 3 ) Geben Sie in dem für Sie neu geöffneten Fenster einen Namen für Ihr Panel und ggf. eine Beschreibung ein. Bestimmen Sie die Anzahl der benötigten Felder, indem Sie deren Namen zuweisen. Die restlichen Teile sind optional. Speichern Sie das Panel, nachdem Sie die Informationen ausgefüllt haben.
Schritt 4 ) Gehen Sie nun zu API-Schlüssel in Ihrem Panel.
Schritt 5 ) Du brauchst die Kanal-ID und API-Schlüssel schreiben um Daten zu übertragen, also schreiben Sie sie auf.
Schritt 6) ThingSpeak herunterladen Bibliothek und fügen Sie sie zu Ihrer Arduino-IDE hinzu.
Die ThingSpeak-Bibliothek
Schritt 7) Gehen Sie zur Arduino-IDE. Öffnen Sie das WriteMultipleFiels aus dem Beispielteil und geben Sie die Werte für SSID, Passwort, Kanal-ID und API-Schlüssel schreiben ein.
/* WriteMultipleFields Beschreibung:Schreibt alle 20 Sekunden Werte in die Felder 1,2,3,4 und den Status in einem einzigen Thingspeak-Update. Hardware:ESP8266-basierte Boards !!! WICHTIG - Ändern Sie die Datei secrets.h für dieses Projekt mit Ihrer Netzwerkverbindung und den Thingspeak-Kanaldetails. !!! Hinweis:- Erfordert die ESP8266WiFi-Bibliothek und das ESP8622-Board-Add-On. Weitere Informationen finden Sie unter https://github.com/esp8266/Arduino. - Wählen Sie die Zielhardware aus dem Menü Tools->Board - Dieses Beispiel wurde für ein Netzwerk geschrieben, das WPA-Verschlüsselung verwendet. Ändern Sie für WEP oder WPA den Aufruf WiFi.begin() entsprechend. Thingspeak ( https://www.Thingspeak.com ) ist ein analytischer IoT-Plattformdienst, mit dem Sie Live-Datenströme in der Cloud aggregieren, visualisieren und analysieren können. Besuchen Sie https://www.Thingspeak.com, um sich für ein kostenloses Konto anzumelden und einen Kanal zu erstellen. Die Dokumentation für die Thingspeak Communication Library für Arduino befindet sich im Ordner README.md, in dem die Bibliothek installiert wurde. Die vollständige Thingspeak-Dokumentation finden Sie unter https://www.mathworks.com/help/Thingspeak/index.html. Informationen zur Lizenzierung finden Sie in der beiliegenden Lizenzdatei. Copyright 2018, The MathWorks, Inc.*/#include "Thingspeak.h"#include "secrets.h"#include char ssid[] =SECRET_SSID; // Ihre Netzwerk-SSID (Name) char pass[] =SECRET_PASS; // Ihr Netzwerk-Passwortint keyIndex =0; // Ihr Netzwerkschlüssel Indexnummer (wird nur für WEP benötigt)WiFiClient-Client;unsigned long myChannelNumber =SECRET_CH_ID;const char * myWriteAPIKey =SECRET_WRITE_APIKEY;// Initialisieren Sie unsere Werteint number1 =0;int number2 =random(0,100);int number3 =random (0,100);int Zahl4 =random(0,100);String myStatus ="";void setup() { Serial.begin(115200); // Serielles WiFi.mode (WIFI_STA) initialisieren; Thingspeak.begin(Client); // Thingspeak initialisieren}void loop () {// Verbinden oder erneut mit WiFi verbinden if (WiFi.status () !=WL_CONNECTED) { Serial.print ( "Versuch, eine Verbindung zu SSID herzustellen:"); Serial.println (GEHEIM_SSID); while(WiFi.status() !=WL_CONNECTED){WiFi.begin(ssid, pass); // Verbindung zum WPA/WPA2-Netzwerk herstellen. Ändern Sie diese Zeile, wenn Sie ein offenes oder WEP-Netzwerk verwenden Serial.print("."); Verzögerung (5000); } Serial.println("\nVerbunden."); } // setze die Felder mit den Werten Thingspeak.setField(1, number1); Thingspeak.setField(2, Zahl2); Thingspeak.setField(3, Zahl3); Thingspeak.setField(4, Zahl4); // die Statusmeldung herausfinden if(number1> number2){ myStatus =String("field1 is größer als field2"); } else if(number1 99){Zahl1 =0; } Zahl2 =zufällig (0,100); Zahl3 =zufällig (0,100); Zahl4 =zufällig (0,100); Verzögerung (20000); // Warte 20 Sekunden, um den Kanal erneut zu aktualisieren}
Nach dem Hochladen des Codes werden in den Feldern 1 bis 4 Ihres Panels einige Zufallszahlen hochgeladen. Der gleiche strukturierte Code wird im Anwesenheitssystem zum Hochladen von Daten verwendet.
Hinweis
Warten Sie zwischen jedem Hochladen der Daten auf das ThingSpeak-Panel mindestens 15 Sekunden.
Erstellen eines Anwesenheitssystems mit dem Fingerabdrucksensor und Arduino
In diesem System werden nach der Registrierung der Ein- und Ausfahrt einer Person mit ihrem Fingerabdruck die Informationen wie Datum, Name, Ankunftszeit, Abfahrtszeit und Arbeitszeit des Mitarbeiters auf der SD-Karte gespeichert. Dann werden diese Informationen zu dem von Ihnen angegebenen Zeitpunkt an ThingSpeak gesendet. Bei fehlender Internetverbindung werden unveröffentlichte Daten gespeichert und an ThingSpeak weitergeleitet, sobald diese mit dem Internet verbunden sind. Da die Informationen im EEPROM des Mikrocontrollers gespeichert sind, gehen sie bei einem Stromausfall nicht verloren.
Schaltung
Nachdem Sie alle Module angeschlossen haben, legen Sie das LCD-Schild auf den Arduino.
Tipp
Da das LCD-Shield einige der Arduino-Pins abdeckt, können Sie den Draht von der Unterseite der Platine an einen bestimmten Pin angrenzen, wenn Sie diesen Pin benötigen.
Code
Für diesen Code benötigen Sie die folgenden Bibliotheken:
Adafruit-Fingerabdruck-Sensor-Bibliothek
Adafruit-GFX-Bibliothek
MCUFRIEND_kbv
RTClib
Laden Sie nun den folgenden Code herunter und laden Sie ihn auf Ihr Arduino hoch. Dieser Code ist für 11 Personen mit Standardnamen geschrieben, aber Sie können sie ändern und aus dem Standardmodus entfernen. Um einen neuen Namen zu registrieren, schließen Sie das Gerät einfach an Ihren Computer an und drücken Sie die Taste , um in den Registrierungsmodus zu gelangen. Öffnen Sie dann den Serial Monitor und folgen Sie dem Registrierungsprozess, wie er auf dem Serial Monitor angezeigt wird.
Laden Sie den Code aus den Anhängen herunter:
Weitere Informationen zur Verwendung einer SD-Karte, des Uhrenmoduls und des LCD finden Sie unter den folgenden Links:
SD-Kartenmodul mit Arduino:So lesen/schreiben Sie Daten
So verwenden Sie das DS1307 RTC-Modul mit Arduino und machen eine Erinnerung
Absoluter Anfängerleitfaden für TFT-LCD-Displays von Arduino.
NodeMCU führt die Aufgabe des Hochladens der Informationen in dieses System aus. Es nimmt die Upload-Informationen von Arduino über die serielle Schnittstelle und gibt den Status des Uploads zurück zu Arduino. Laden Sie den folgenden Code auf Ihre NodeMCU hoch.
#include "Thingspeak.h"#include ESP8266WiFi.h>char ssid[] ="IHRE SSID";char pass[] ="SSID PASSWORD";WiFiClient client;unsigned long myChannelNumber =IHRE KANAL-ID; const char * myWriteAPIKey ="IHR KANAL WRITE API KEY";String Final ="";String Date ="";String Enter ="";String Exit ="";String Name ="";String WT ="";void String_Analyze(String input) { int index1, index2, index3, index4; index1 =input.indexOf('*', 0); index2 =input.indexOf('*', index1 + 1); index3 =input.indexOf('*', index2 + 1); index4 =input.lastIndexOf('*'); Name =Eingabe; Datum =Eingabe; Eingabe =Eingabe; Ausgang =Eingang; WT =Eingabe; Name.entfernen(index1); Datum.entfernen(index2); Date.remove(0, index1 + 1); Enter.remove(index3); Enter.remove(0, index2 + 1); Exit.remove(index4); Exit.remove(0, index3 + 1); WT.remove (0, index4 + 1);}void Get_String(){ while (Serial.available()) { Final =Serial.readString(); // die eingehenden Daten als String lesen //Serial.println(Final); }}void setup () { Serial.begin (9600); WiFi.mode(WIFI_STA); Thingspeak.begin(Client); pinMode (LED_BUILTIN, AUSGANG); digitalWrite(LED_BUILTIN, HIGH);}void loop() { if (WiFi.status() !=WL_CONNECTED) {//Serial.print("Versuch, eine Verbindung mit SSID herzustellen:"); // Serial.println (ssid); while (WiFi.status() !=WL_CONNECTED) { WiFi.begin(ssid, pass); // Verbindung zum WPA/WPA2-Netzwerk herstellen. Ändern Sie diese Zeile, wenn Sie ein offenes oder WEP-Netzwerk verwenden Serial.print("0"); Verzögerung (5000); } } digitalWrite (LED_BUILTIN, LOW); //Seriell.println("\nVerbunden."); Get_String(); String_Analyze(Final); if (!Final.equals("")) { Thingspeak.setField(1, Datum); Thingspeak.setField(2, Name); Thingspeak.setField(3, Enter); Thingspeak.setField(4, Beenden); Thingspeak.setField(5, WT); int x =Thingspeak.writeFields(myChannelNumber, myWriteAPIKey); wenn (x ==200) { Verzögerung (100); Serial.print("1"); aufrechtzuerhalten. Sonst { Verzögerung (100); Serial.print("0"); } Verzögerung(17000); Finale =""; }
Ändere zuerst die Kanal-ID und API-Schlüssel schreiben gemäß Ihrem ThingSpeak-Panel.
Der String_Analuze();
Die Funktion in diesem Code teilt die NodeMCU-Eingabezeichenfolgen in Datum, Name, Ankunfts- und Abfahrtszeit sowie Arbeitszeiten und sendet diese Informationen an ThingSpeak. Wenn der Upload-Vorgang erfolgreich ist, sendet es das Zeichen „1“, andernfalls sendet es das Zeichen „0“ an den Arduino.
Zusammenbau des Anwesenheitsgeräts
Sie können die folgenden Karten und Plexiglas mit verschiedenen Farben oder jedem anderen Material verwenden, um den Körper des Anwesenheitsgeräts zu bauen.
Laden Sie die lasergeschnittene Karte des Gerätekörpers aus den Anhängen herunter:
Nachdem Sie die elektronischen Komponenten platziert und die gesamte Karosserie zusammengebaut haben, installieren Sie sie an der gewünschten Stelle. Schließen Sie jetzt einfach einen 12-V-Adapter an das Gerät an und es beginnt zu arbeiten.
Wie geht es weiter?
- Versuchen Sie, mehr Symbole auf dem LCD zu verwenden.
- Versuchen Sie, dem System eine RFID-Option hinzuzufügen.
- Versuchen Sie, die Daten in die Google-Tabellen hochzuladen statt ThingSpeak .
Wenn Sie dieses Tutorial hilfreich und interessant finden, liken Sie uns bitte auf Facebook.
Code
- Code 1
- Code 2
Code 1Arduino
Schnittstelle zu Thingspeak und Hochladen von Daten/* WriteMultipleFields Beschreibung:Schreibt alle 20 Sekunden Werte in die Felder 1,2,3,4 und den Status in einem einzigen Thingspeak-Update. Hardware:ESP8266-basierte Boards !!! WICHTIG - Ändern Sie die Datei secrets.h für dieses Projekt mit Ihrer Netzwerkverbindung und den Thingspeak-Kanaldetails. !!! Hinweis:- Erfordert die ESP8266WiFi-Bibliothek und das ESP8622-Board-Add-On. Weitere Informationen finden Sie unter https://github.com/esp8266/Arduino. - Wählen Sie die Zielhardware aus dem Menü Tools->Board - Dieses Beispiel wurde für ein Netzwerk geschrieben, das WPA-Verschlüsselung verwendet. Ändern Sie für WEP oder WPA den Aufruf WiFi.begin() entsprechend. Thingspeak ( https://www.Thingspeak.com ) ist ein analytischer IoT-Plattformdienst, mit dem Sie Live-Datenströme in der Cloud aggregieren, visualisieren und analysieren können. Besuchen Sie https://www.Thingspeak.com, um sich für ein kostenloses Konto anzumelden und einen Kanal zu erstellen. Die Dokumentation für die Thingspeak Communication Library für Arduino befindet sich im Ordner README.md, in dem die Bibliothek installiert wurde. Die vollständige Thingspeak-Dokumentation finden Sie unter https://www.mathworks.com/help/Thingspeak/index.html. Informationen zur Lizenzierung finden Sie in der beiliegenden Lizenzdatei. Copyright 2018, The MathWorks, Inc.*/#include "Thingspeak.h"#include "secrets.h"#includechar ssid[] =SECRET_SSID; // Ihre Netzwerk-SSID (Name) char pass[] =SECRET_PASS; // Ihr Netzwerk-Passwortint keyIndex =0; // Ihr Netzwerkschlüssel Indexnummer (wird nur für WEP benötigt)WiFiClient-Client;unsigned long myChannelNumber =SECRET_CH_ID;const char * myWriteAPIKey =SECRET_WRITE_APIKEY;// Initialisieren Sie unsere Werteint number1 =0;int number2 =random(0,100);int number3 =random (0,100);int Zahl4 =random(0,100);String myStatus ="";void setup() { Serial.begin(115200); // Serielles WiFi.mode (WIFI_STA) initialisieren; Thingspeak.begin(Client); // Thingspeak initialisieren}void loop () {// Verbinden oder erneut mit WiFi verbinden if (WiFi.status () !=WL_CONNECTED) { Serial.print ( "Versuch, eine Verbindung zu SSID herzustellen:"); Serial.println (GEHEIM_SSID); while(WiFi.status() !=WL_CONNECTED){WiFi.begin(ssid, pass); // Verbindung zum WPA/WPA2-Netzwerk herstellen. Ändern Sie diese Zeile, wenn Sie ein offenes oder WEP-Netzwerk verwenden Serial.print("."); Verzögerung (5000); } Serial.println("\nVerbunden."); } // setze die Felder mit den Werten Thingspeak.setField(1, number1); Thingspeak.setField(2, Zahl2); Thingspeak.setField(3, Zahl3); Thingspeak.setField(4, Zahl4); // die Statusmeldung herausfinden if(number1> number2){ myStatus =String("field1 is größer als field2"); } else if(number1 99){Zahl1 =0; } Zahl2 =zufällig (0,100); Zahl3 =zufällig (0,100); Zahl4 =zufällig (0,100); Verzögerung (20000); // Warte 20 Sekunden, um den Kanal erneut zu aktualisieren}
Code 2Arduino
#include "Thingspeak.h"#include ESP8266WiFi.h>char ssid[] ="IHRE SSID";char pass[] ="SSID PASSWORD";WiFiClient client;unsigned long myChannelNumber =YOUR CHANNEL ID;const char * myWriteAPIKey ="IHR KANAL WRITE API KEY";String Final ="";String Date ="";String Enter ="";String Exit ="";String Name ="";String WT ="";void String_Analyze(String Eingabe) { int Index1, Index2, Index3, Index4; index1 =input.indexOf('*', 0); index2 =input.indexOf('*', index1 + 1); index3 =input.indexOf('*', index2 + 1); index4 =input.lastIndexOf('*'); Name =Eingabe; Datum =Eingabe; Eingabe =Eingabe; Ausgang =Eingang; WT =Eingabe; Name.entfernen(index1); Datum.entfernen(index2); Date.remove(0, index1 + 1); Enter.remove(index3); Enter.remove(0, index2 + 1); Exit.remove(index4); Exit.remove(0, index3 + 1); WT.remove (0, index4 + 1);}void Get_String(){ while (Serial.available()) { Final =Serial.readString(); // die eingehenden Daten als String lesen //Serial.println(Final); }}void setup () { Serial.begin (9600); WiFi.mode(WIFI_STA); Thingspeak.begin(Client); pinMode (LED_BUILTIN, AUSGANG); digitalWrite(LED_BUILTIN, HIGH);}void loop() { if (WiFi.status() !=WL_CONNECTED) {//Serial.print("Versuch, eine Verbindung mit SSID herzustellen:"); // Serial.println (ssid); while (WiFi.status() !=WL_CONNECTED) { WiFi.begin(ssid, pass); // Verbindung zum WPA/WPA2-Netzwerk herstellen. Ändern Sie diese Zeile, wenn Sie ein offenes oder WEP-Netzwerk verwenden Serial.print("0"); Verzögerung (5000); } } digitalWrite (LED_BUILTIN, LOW); //Seriell.println("\nVerbunden."); Get_String(); String_Analyze(Final); if (!Final.equals("")) { Thingspeak.setField(1, Datum); Thingspeak.setField(2, Name); Thingspeak.setField(3, Enter); Thingspeak.setField(4, Beenden); Thingspeak.setField(5, WT); int x =Thingspeak.writeFields(myChannelNumber, myWriteAPIKey); wenn (x ==200) { Verzögerung (100); Serial.print("1"); aufrechtzuerhalten. Sonst { Verzögerung (100); Serial.print("0"); } Verzögerung(17000); Finale =""; }
Kundenspezifische Teile und Gehäuse
uploads2ftmp2fdcd9a041-0d41-433f-b48f-b7fa0a1b7a832felectropeak_attendance_code_q4bsYBzou5.zip uploads2ftmp2f93ae52e3-7f3c-4744-b2db-b69baed578622fattendanceboxlasercut_ryMUOo5d7h.dwgHerstellungsprozess
- 10 Vorteile der Verwendung von Cloud-Speicher
- DVD-Player
- Anwesenheitssystem mit Arduino und RFID mit Python
- Drahtlose magnetische Datenübertragung
- Arduino-Alarmsystem:SERENA
- Temperatur- und Feuchtigkeitsdatenlogger
- Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
- Arduino Cloud Sensor Tower
- Keller-/Kriechraum-Lüftungssystem
- Die Cloud im IoT