Sicheres Arduino-Fingerabdruck-Anwesenheitssystem mit Cloud-Speicher (ThingSpeak)
Bauteile und Zubehör
| Arduino Mega 2560 R3 | 1 |
| ElectroPeak R301T Fingerabdrucksensor | 1 |
| ElectroPeak Micro-SD-TF-Kartenmodul | 1 |
| ElectroPeak DS3231 I2C RTC-Modul | 1 |
| ElectroPeak 3,5″ TFT-Farbdisplay | 1 |
| ElectroPeak NodeMCU ESP8266 ESP-12E | 1 |
| Jumper-Kabel (männlich/weiblich) | 1 |
Benötigte Werkzeuge
- Lasercutter (für Gehäuse)
- Lötkolben
Apps und Online-Dienste
- Arduino IDE
- ThingSpeak IoT-Plattform
Über das Projekt
Dieses und weitere Tutorials finden Sie auf der offiziellen ElectroPeak-Website.
Überblick
IoT-Geräte werden immer wichtiger. Dieses Tutorial baut ein Fingerabdruck-Anwesenheitssystem: Nach Registrierung von Kommen/Gehen per Fingerabdruck werden Datum, Name, Ein-/Auscheckzeit und Arbeitsstunden auf SD-Karte gespeichert. Bei Internetverbindung werden die Daten an ThingSpeak hochgeladen (CSV-Export möglich). Offline-Daten bleiben im EEPROM erhalten und werden nach Wiederverbindung nachgesendet.
Lernziele
- Arbeit mit Fingerabdrucksensoren
- Datenupload zu ThingSpeak per NodeMCU
- Bau eines Anwesenheitssystems mit Arduino
Was ist ThingSpeak?
IoT-Plattform für Live-Datenvisualisierung & -sammlung in der Cloud.

ThingSpeak einrichten & Daten hochladen
- Account auf ThingSpeak.com erstellen.
- Einloggen → „My Channels“ → „New Channel“.
- Namen, Beschreibung, Felder definieren (z. B. Datum, Name, Ein, Aus, Stunden). Speichern.
- „API Keys“ → Channel ID & Write API Key notieren.
- ThingSpeak-Bibliothek in Arduino IDE installieren (Bibliotheksverwalter).
- Beispiel „WriteMultipleFields“ öffnen, SSID, Passwort, Channel ID, Write API Key eintragen, auf NodeMCU hochladen.





Hinweis: Mindestens 15 s Wartezeit zwischen Uploads einhalten.

Anwesenheitssystem mit Fingerabdrucksensor & Arduino
Nach Fingerabdruck-Erkennung werden Daten auf SD-Karte gespeichert. NodeMCU übernimmt Upload zu ThingSpeak (serielle Kommunikation mit Arduino). Fehlende Internetverbindung → Datenpuffer im EEPROM → Nachsendung bei Reconnect.
Schaltung

Alle Module anschließen, danach LCD-Shield auf Arduino aufstecken. Tipp: Falls Shield Pins verdeckt, Drähte von der Platinenunterseite an die gewünschten Pins löten.
Code (Arduino Mega)
Benötigte Bibliotheken:
- Adafruit-Fingerprint-Sensor-Library
- Adafruit-GFX-Library
- MCUFRIEND_kbv (TFT)
- RTClib (DS3231)
Hauptcode (für 11 Standardnutzer, erweiterbar) als ZIP im Originalprojekt zum Download. Registrierung neuer Nutzer: Gerät per USB an PC, Registrierungsmodus aktivieren, Serial Monitor folgen.
Weiterführende Tutorials: SD-Karte, DS3231 RTC, TFT-LCD mit Arduino.
NodeMCU-Code (ThingSpeak Upload)
#include "ThingSpeak.h"
#include
char ssid[] = "YOUR SSID";
char pass[] = "SSID PASSWORD";
WiFiClient client;
unsigned long myChannelNumber = YOUR CHANNEL ID;
const char * myWriteAPIKey = "YOUR CHANNEL WRITE API KEY";
String Final = "", Date = "", Enter = "", Exit = "", Name = "", WT = "";
void String_Analyze(String input) {
int i1 = input.indexOf('*', 0);
int i2 = input.indexOf('*', i1+1);
int i3 = input.indexOf('*', i2+1);
int i4 = input.lastIndexOf('*');
Name = input; Date = input; Enter = input; Exit = input; WT = input;
Name.remove(i1);
Date.remove(i2); Date.remove(0, i1+1);
Enter.remove(i3); Enter.remove(0, i2+1);
Exit.remove(i4); Exit.remove(0, i3+1);
WT.remove(0, i4+1);
}
void Get_String() {
while (Serial.available()) Final = Serial.readString();
}
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA); ThingSpeak.begin(client);
pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
while (WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.print("0"); delay(5000); }
}
digitalWrite(LED_BUILTIN, LOW);
Get_String(); String_Analyze(Final);
if (!Final.equals("")) {
ThingSpeak.setField(1, Date); ThingSpeak.setField(2, Name);
ThingSpeak.setField(3, Enter); ThingSpeak.setField(4, Exit); ThingSpeak.setField(5, WT);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) { delay(100); Serial.print("1"); }
else { delay(100); Serial.print("0"); }
delay(17000); Final = "";
}
}
Channel ID & Write API Key anpassen. Funktion String_Analyze() trennt den empfangenen String (Format: Name*Datum*Ein*Aus*Stunden) und sendet an ThingSpeak. Erfolg → „1“, Fehler → „0“ an Arduino zurück.
Gehäuse zusammenbauen
Lasercutter-Vorlagen (DXF/DWG) im Anhang. Plexiglas oder anderes Material nutzen. Nach Montage 12-V-Netzteil anschließen – System läuft.

Ausblick
- Mehr Icons auf TFT-Display.
- RFID-Option ergänzen.
- Daten statt ThingSpeak in Google Sheets hochladen.
Gefällt Ihnen das Tutorial? Liken Sie uns auf Facebook!
Code (Zusammenfassung)
Code 1: ThingSpeak-Beispiel (WriteMultipleFields).
Code 2: NodeMCU-Upload-Sketch (siehe oben).
Benutzerdefinierte Teile & Gehäuse
electropeak_attendance_code_q4bsYBzou5.zip(Arduino-Code)attendanceboxlasercut_ryMUOo5d7h.dwg(Lasercutter-Plan)
Herstellungsprozess
- 10 Schlüsselvorteile von Cloud Storage für moderne Unternehmen
- DVD-Player: Geschichte, Technologie und zukünftige Innovationen
- RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
- Kabellose Datenübertragung per Magnetfeld: Arduino & Infineon 3D-Sensor (TLE493D)
- SERENA: Eigenes Arduino Mega 2560 Alarmsystem mit TFT-LCD-Touchscreen
- Arduino Temperatur- & Feuchtelogger mit DHT11 & Ethernet Shield
- DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
- Sensorturm mit Arduino Cloud: Temperatur, Bewegung & Gase überwachen
- Intelligente Kellerbelüftung: Arduino-gesteuerte Feuchteregelung
- Cloud-Power für IoT nutzen: Nahtlose Konnektivität & Dateneinblicke freischalten