Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren

Bauteile und Zubehör

HC-05 Bluetooth-Serial-Modul1
Arduino Nano R31
R301T Halbleiter-Fingerabdruckmodul1
5 mm RGB-LED (4 Pins, Common Anode)1

Apps und Online-Dienste

Über das Projekt

Wir bauen ein Gadget, das eine „Safe Zone“ für Ihre Geräte schafft. Nach Abschluss können Sie:

Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren

Geräte sperren & entsperren

Smartphones speichern private Daten (Chats, Fotos, Notizen). Sperrbildschirme schützen, sind aber lästig, wenn man allein in einem sicheren Raum arbeitet. Die Idee: Ein kleines Gadget, das per Fingerabdruck aktiviert wird, via Bluetooth mit den Geräten koppelt und diese solange entsperrt hält, wie das Gadget in Reichweite ist.

R301T-Fingerabdruckmodul

Das Modul kommuniziert seriell mit dem Arduino. Zuerst wird ein Fingerabdruck als Benutzer gespeichert, dann mit Arduino TX/RX verbunden. Ein HC-05-Bluetoothmodul wird einmalig mit den Geräten gekoppelt. Der Arduino-Code aktiviert Bluetooth bei erkanntem Fingerabdruck.

Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren

Schaltung

Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren

Code

Benötigte Bibliothek: Adafruit_Fingerprint. Installation über Bibliotheksverwalter. Dann folgenden Sketch hochladen:

#include "Adafruit_Fingerprint.h"
#include "SoftwareSerial.h"
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int cc = 0;

void setup() {
  Serial.begin(9600);
  while (!Serial); delay(100);
  Serial.println("\n\nAdafruit finger detect test");
  finger.begin(57600);
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { pinMode(13, OUTPUT); digitalWrite(13, LOW); pinMode(9, OUTPUT); digitalWrite(9, HIGH); }
  }
  finger.getTemplateCount();
  Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  Serial.println("Waiting for valid finger...");
}

void loop() { getFingerprintIDez(); delay(50); }

uint8_t getFingerprintID() {
  uint8_t p = finger.getImage();
  switch (p) {
    case FINGERPRINT_OK: Serial.println("Image taken"); break;
    case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p;
    case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p;
    case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p;
    default: Serial.println("Unknown error"); return p;
  }
  p = finger.image2Tz();
  switch (p) {
    case FINGERPRINT_OK: Serial.println("Image converted"); break;
    case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p;
    case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p;
    case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p;
    case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p;
    default: Serial.println("Unknown error"); return p;
  }
  p = finger.fingerFastSearch();
  if (p == FINGERPRINT_OK) Serial.println("Found a print match!");
  else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; }
  else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; }
  else { Serial.println("Unknown error"); return p; }
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  for (int i = 255; i > 1; i--) { analogWrite(9, i); delay(10); }
  if (cc % 2 == 0) digitalWrite(13, HIGH); else digitalWrite(13, LOW);
  cc++;
  return finger.fingerID;
}

int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK) return -1;
  p = finger.image2Tz();
  if (p != FINGERPRINT_OK) return -1;
  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK) return -1;
  Serial.print("Found ID #"); Serial.print(finger.fingerID);
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID;
}

Zusammenbau

Arduino-Sicherheitszone: Geräte (Android, iOS, Windows 10) per Fingerprint entsperren

Kopplung:

Falls die automatische Kopplung fehlschlägt: Beim ersten Kopplungsversuch ein Zeichen an das Gerät senden.

Weiterentwicklung

Code (Bibliothek)

Fingerprint Library (C/C++) – Download erforderlich.

Herstellungsprozess

  1. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  2. Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
  3. Smartes Temperatur-Monitoring für Schulen – Arduino, Raspberry Pi, Sigfox & ThingSpeak
  4. Effiziente 8-Bit-I/O-Port-Bibliothek für Arduino – Digitale Steuerung erweitern
  5. Arduino LED per iOS/Android App steuern – WiFi/Ethernet mit Evothings Studio
  6. Arduino 64-Tasten-Prototyp-Keyboard-Matrix – Eigenes Keyboard mit Schieberegistern bauen
  7. Musikalische Töne mit Arduino erzeugen: Schritt-für-Schritt-Anleitung
  8. Isolierter Analogeingang für Arduino: Spannung/Strom galvanisch trennen
  9. Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte
  10. Wie Direct-Wasserpumpen die Wasserförder-Effizienz steigern