Veilig Arduino Vingerafdruk Aanwezigheidssysteem met Cloud Opslag
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino Mega 2560 R3 | 1 |
| ElectroPeak R301T Vingerafdruksensor | 1 |
| ElectroPeak Micro SD TF Kaart Adapter Module | 1 |
| ElectroPeak DS3231 I2C RTC Module | 1 |
| ElectroPeak 3.5" TFT Kleur Display Shield | 1 |
| ElectroPeak NodeMCU ESP8266 ESP-12E Bord | 1 |
| ElectroPeak Male-Female Dupont-draden | 1 set |
Benodigde Tools
- Lasersnijder
- Solderbout
Apps & Online Services
- Arduino IDE
Over dit Project
Lees deze en andere geweldige tutorials op ElectroPeak's officiële website.
Overzicht
Tegenwoordig is leren over IoT-apparaten essentieel door het toenemende gebruik. In deze tutorial bouwen we een vingerafdruk aanwezigheidssysteem met Arduino. Naast lokaal opslaan op SD-kaart (inloggegevens, werktijden), uploadt het data naar ThingSpeak zodra er internetverbinding is. Je kunt de data downloaden in diverse formaten (CSV, etc.).
Wat Je Leert
- Werken met vingerafdruksensoren
- Data uploaden naar ThingSpeak met NodeMCU
- Een aanwezigheidssysteem bouwen met vingerafdruksensor en Arduino
Wat is ThingSpeak?
IoT (Internet of Things) verbindt dingen met internet voor data-uitwisseling en cloud-analyse. ThingSpeak is een IoT-platform voor live data-weergave en -verzameling in de cloud.

Koppelen met ThingSpeak & Data Uploaden
- Account aanmaken: Ga naar ThingSpeak.com en registreer.
- Nieuw Kanaal: Login → My Channels → New Channel.
- Kanaal configureren: Naam, beschrijving, aantal velden (bijv. Datum, Naam, Incheck, Uitcheck, Werkuren). Opslaan.
- API Keys: Noteer Channel ID en Write API Key.
- Bibliotheek: Installeer
ThingSpeakbibliotheek via Library Manager. - Voorbeeldcode: File → Examples → ThingSpeak → WriteMultipleFields. Vul SSID, Password, Channel ID, Write API Key in.





Let op: Wacht minstens 15 seconden tussen elke upload naar ThingSpeak.

Aanwezigheidssysteem Bouwen met Vingerafdruksensor & Arduino
Na registratie in/uitchecken via vingerafdruk worden: datum, naam, aankomsttijd, vertrektijd, gewerkte uren opgeslagen op SD-kaart. Data gaat naar ThingSpeak op ingestelde tijden. Zonder internet wordt data gebufferd (EEPROM → geen dataverlies bij stroomuitval) en later verzonden.
Schema

Na het aansluiten van alle modules, plaats de LCD-shield op de Arduino.
Tip: De LCD-shield bedekt sommige Arduino-pinnen. Gebruik draadjes aan de onderkant van het bord als je die pinnen nodig hebt.
Code
Benodigde bibliotheken:
- Adafruit-Fingerprint-Sensor-Library
- Adafruit-GFX-Library
- MCUFRIEND_kbv (voor TFT LCD)
- RTClib (voor DS3231)
Download de complete code uit de bijlagen. De code is geschreven voor 11 personen met standaardnamen, maar aanpasbaar. Nieuwe namen registreren: apparaat aan PC → toets voor registratiemodus → Serial Monitor openen → stappen volgen.
Meer over SD-kaart, klokmodule, LCD:
- SD Card Module met Arduino: Lezen/Schrijven Data
- DS1307 RTC Module met Arduino & Herinnering Maken
- Beginner's Guide TFT LCD Displays met Arduino
NodeMCU verzorgt de upload naar ThingSpeak. Haalt data op van Arduino via seriële poort, stuurt status (1=succes, 0=fout) terug.
#include "ThingSpeak.h"
#include
char ssid[] = "JOUW_SSID";
char pass[] = "JOUW_WACHTWOORD";
WiFiClient client;
unsigned long myChannelNumber = JOUW_CHANNEL_ID;
const char * myWriteAPIKey = "JOUW_WRITE_API_KEY";
String Final = "", Date = "", Enter = "", Exit = "", Name = "", WT = "";
void String_Analyze(String input) {
int index1 = input.indexOf('*', 0);
int index2 = input.indexOf('*', index1 + 1);
int index3 = input.indexOf('*', index2 + 1);
int index4 = input.lastIndexOf('*');
Name = input; Date = input; Enter = input; Exit = input; WT = input;
Name.remove(index1);
Date.remove(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();
}
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 = "";
}
}
Wijzig Channel ID en Write API Key naar jouw ThingSpeak-paneel. De functie String_Analyze() splitst de invoerstring (gescheiden door *) in datum, naam, in/uit-tijd, werktijd en stuurt dit naar ThingSpeak.
Apparaat Monteren
Gebruik de meegeleverde DXF/DWG-bestanden voor lasersnijden (plexiglas of ander materiaal).

Download lasersnij-tekening uit bijlagen. Na montage: 12V adapter aansteken → systeem start direct.
Wat Komt Er Nu?
- Meer iconen op LCD toevoegen
- RFID-optie toevoegen aan het systeem
- Data uploaden naar Google Spreadsheets ipv ThingSpeak
Vind je deze tutorial nuttig? Like ons op Facebook!
Code
Code 1: ThingSpeak Interfacing & Upload
/* WriteMultipleFields - ThingSpeak voorbeeldcode */
#include "ThingSpeak.h"
#include "secrets.h"
#include
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
int keyIndex = 0;
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;
int number1 = 0, number2 = 0, number3 = 0, number4 = 0;
String myStatus = "";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); ThingSpeak.begin(client);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: "); Serial.println(SECRET_SSID);
while (WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.print("."); delay(5000); }
Serial.println("\nConnected.");
}
ThingSpeak.setField(1, number1); ThingSpeak.setField(2, number2);
ThingSpeak.setField(3, number3); ThingSpeak.setField(4, number4);
if (number1 > number2) myStatus = "field1 is greater than field2";
else if (number1 < number2) myStatus = "field1 is less than field2";
else myStatus = "field1 equals field2";
ThingSpeak.setStatus(myStatus);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) Serial.println("Channel update successful.");
else Serial.println("Problem updating channel. HTTP error code " + String(x));
number1++; if (number1 > 99) number1 = 0;
number2 = random(0,100); number3 = random(0,100); number4 = random(0,100);
delay(20000);
}
Code 2: NodeMCU Upload Code voor Aanwezigheidssysteem
#include "ThingSpeak.h"
#include
char ssid[] = "JOUW_SSID";
char pass[] = "JOUW_WACHTWOORD";
WiFiClient client;
unsigned long myChannelNumber = JOUW_CHANNEL_ID;
const char * myWriteAPIKey = "JOUW_WRITE_API_KEY";
String Final = "", Date = "", Enter = "", Exit = "", Name = "", WT = "";
void String_Analyze(String input) { /* ... */ }
void Get_String() { /* ... */ }
void setup() { /* ... */ }
void loop() { /* ... */ }
Aangepaste Onderdelen & Behuizingen
electropeak_attendance_code_q4bsYBzou5.zip- Complete Arduino codeattendanceboxlasercut_ryMUOo5d7h.dwg- Lasersnijtekening behuizing
Productieproces
- De kracht van de cloud voor IoT: naadloze connectiviteit en datainzichten ontgrendelen
- DVD-spelers: Geschiedenis, Technologie en Toekomstige Innovaties
- Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
- Arduino Draadloze Magnetische Dataoverdracht met Infineon 3D-Sensor
- SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
- Arduino temperatuur- en vochtigheidslogger met DHT11 en Ethernet Shield
- Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
- Bouw een Sensor Toren met Arduino Cloud: Temperatuur, Beweging & Gas Monitoring
- Slimme Kelder Ventilatiesysteem: Arduino-gestuurde Vochtcontrole
- Real-time RFID aanwezigheidssysteem met Arduino en Google Sheets
- 10 Belangrijkste Voordelen Van Cloudopslag Voor Moderne Bedrijven