Codeschloss-Matrixtastatur für Arduino. Automatisches Smart Lock und Arduino

Arduino ist das beste System um beliebige Geräte zu kopieren. Ohne sie könnten die meisten Ideen nicht verwirklicht werden. Diese Idee gibt es schon lange: etwas Besonderes zu schaffen Kombinationsschloss auf Arduino. Um es zu öffnen, müssen Sie eine bestimmte Taste gedrückt halten. In diesem Fall sollte sich das Schloss nicht öffnen, auch wenn Sie den richtigen Knopf kennen. Um es zu öffnen, müssen Sie mithilfe des Muskelgedächtnisses bestimmte Intervalle einhalten. Ein Krimineller kann so etwas nicht tun. Aber das ist alles nur eine Theorie.

Für den Zusammenbau benötigen Sie ein spezielles Rechteckimpulsgerät sowie mehrere Zähler und einen Haufen. Aber das fertige Gerät wäre toll Maße und die Verwendung wäre unpraktisch. Solche Gedanken verfolgen einen in der Regel. Der erste Schritt zur Verwirklichung meines Traums war die Erstellung eines Programms für Arduino. Es dient als Zahlenschloss. Um es zu öffnen, müssen Sie nicht eine, sondern mehrere Tasten gleichzeitig drücken. Das fertige Diagramm sieht so aus:

Die Bildqualität ist nicht die beste, aber der Anschluss erfolgt an Masse, D3, D5, D7, D9 und D11.

Der Code ist unten:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; Byte a = 0; Byte b = 0; Byte c = 0; Byte d = 0; vorzeichenlose lange Zeit = 0; //vergiss nicht alles, was einen Wert annimmt millis() unsigned long temp = 0; //in vorzeichenlosem Langbyte speichern keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //tatsächliche Codes Byte keyb = (1, 1, 1, 1, 0, 1, 0, 0); Byteschlüsselc = ( 1, 0, 1, 0, 1, 1, 1, 0); Byte k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 mit den Tasten verbundene Eingänge pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); // eingebaute LED am 13 pin pinMode(7, OUTPUT); digitalWrite(7, LOW); //wird für das Timing benötigt void blinktwice() ( // doppeltes Blinken des LED digitalWrite(ledPin, HIGH); digitalWrite(ledPin, HIGH); void loop() ( if(k==0) ( blinktwice); // Aufforderung zur Eingabe des Codes) if (k == 8) ( digitalWrite(ledPin, HIGH); delay(3000); k = 0 ; ) a = digitalRead(ina); //Signalpegel werden von den Tasten gelesen - gedrückt /nicht gedrückt b = digitalRead(inb); c = digitalRead(inc); //next if - Schutz vor Fehlalarmen, Sie müssen nicht if((digitalRead(ina) == a)&&(digitalRead(inb) verwenden ) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b == keyb[k]) ( if (c == keyc[k]) ( k++; ) ) ) ) if (k==1) ( if (d ==0) ( time = millis (); d++; ) ) temp = millis(); temp = temp - Zeit; if (temp > 10000) ( k= 0; d=0; time = millis (; ) )

Um unnötige Fragen zum Code zu vermeiden, sollten einige Punkte geklärt werden. Die Setup-Funktion dient der Zuweisung von Ports. Die nächste Funktion ist Input_Pullup, die notwendig ist, um die Pin-Spannung um 5 V zu erhöhen. Dies geschieht über einen Widerstand. Dadurch kommt es nicht zu diversen Kurzschlüssen. Für mehr Komfort wird empfohlen, die Blinktwice-Funktion zu verwenden. Im Allgemeinen müssen Sie beim Erstellen verschiedener Programme andere Funktionen ausprobieren.

Nach der Funktionszuweisung wird das Signal von den Ports ausgelesen. Wird die Taste gedrückt, wird dies durch die Zahl 1 angezeigt, andernfalls durch die Zahl 2. Als nächstes werden alle Werte analysiert. Beispielsweise erschien eine Kombination wie 0,1,1. Dies bedeutet, dass die erste Taste gedrückt wird, die anderen beiden jedoch nicht. Wenn alle Werte wahr sind, dann ist auch Bedingung 8 wahr. Dies wird durch die leuchtende LED auf der Frontplatte angezeigt. Als nächstes müssen Sie einen bestimmten Code eingeben, der zum Öffnen der Tür verwendet wird.

Die letzten Elemente des Codes werden zum Zurücksetzen der Zählerwerte verwendet. Diese Funktion wird ausgeführt, wenn seit dem letzten Tastendruck mehr als 10 Sekunden vergangen sind. Ohne diesen Code war es möglich, alles zu durchlaufen Möglichkeiten, obwohl es davon ziemlich viele gibt. Nachdem Sie dieses Gerät erstellt haben, müssen Sie es testen. Noch

In diesem Artikel erkläre ich Ihnen, wie Sie aus Arduino ein Zahlenschloss herstellen. Dazu benötigen wir rote und grüne LEDs, einen Summer, einen Arduino Nano, ein LCD-Display mit I2C-Konverter, einen Servoantrieb und eine 4x4-Matrixtastatur. Beim Einschalten erscheint auf dem Display „Code eingeben“.

die rote LED wird aufleuchten,

und das grüne Licht erlischt, das Servo wird auf 0° gestellt. Während Sie Zahlen eingeben, leuchtet * auf dem Display auf.

Wenn der Code falsch eingegeben wurde, erscheint auf dem Display „Code eingeben“. Wenn der Code korrekt ist, ertönt ein Piepton, das Servo dreht sich um 180° und auf dem Display erscheint „Offen“.

die grüne LED leuchtet auf,

und das rote erlischt. Nach 3 Sekunden kehrt das Servo in seine Ausgangsposition zurück, die rote LED geht an und die grüne LED erlischt, auf dem Display erscheint „Close“.

dann erscheint auf dem Display „Code eingeben.“ Nun zum Schema. Zuerst verbinden wir den Arduino mit Drähten Entwicklungs-Board(Leistungskontakte).

Anschließend schließen wir die Matrixtastatur an die Kontakte D9 - D2 an.

Dann das Servo. Wir verbinden es mit Pin 10.

Rote LED an Pin 11.

Grün - an Pin 12.

Summer – an Pin 13.

Laden Sie nun die Skizze hoch.

#enthalten #enthalten #enthalten #enthalten iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd(0x27, 16, 2); Servo-Servo; int pass = (3, 6, 1, 8); int in; int r = 11; int g = 12; void setup() ( KB.begin(KB1); pinMode(r, OUTPUT); pinMode(g, OUTPUT); lcd.init(); lcd.backlight(); digitalWrite(g, LOW); digitalWrite(r, HIGH ); servo.attach(10); lcd.setCursor(0, 0); void loop() (lcd.clear(); lcd.print("Code eingeben."); while ( !KB.check(KEY_DOWN)) ( Verzögerung(1); ) in = KB.getNum; lcd.setCursor(0, 0); check(KEY_DOWN)) ( Verzögerung(1); ) in = KB.getNum("*"); (!KB.check(KEY_DOWN)) ( Verzögerung(1); ) in = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( Verzögerung(1); ) in = KB.getNum("*"); if (in == pass) ( if (in == pass) ( if (in == pass) ( if (in == pass) ( lcd.clear(); lcd.setCursor (0, 0); lcd.print("Open."); digitalWrite(r, LOW); print("Close". ."); Tone(13, 300, 700); digitalWrite(g, LOW); Verzögerung(1000); ) ) ) ) )

Das ist alles. Viel Spaß mit dem Zahlenschloss!

Liste der Radioelemente

Bezeichnung Typ Konfession Menge NotizGeschäftMein Notizblock
E1 Arduino-Board

Arduino Nano 3.0

1 5V Zum Notizblock
E8, E9 Widerstand

220 Ohm

2 SMD Zum Notizblock
E6 Leuchtdiode

AL102G

1 Rot Zum Notizblock
E7 Leuchtdiode

AL307G

1 Grün Zum Notizblock
E3 LCD BildschirmMit I2C-Schnittstelle1 Grüne Hintergrundbeleuchtung Zum Notizblock
E5 ServoSG901 180 Grad Zum Notizblock
E2 Summer5V1 Bu Zum Notizblock
E4 Tastatur4X41 Matrix Zum Notizblock
Nein Steckbrett640 Punkte1 Kein Löten

Der Fortschritt steht nicht still und immer häufiger tauchen „intelligente Schlösser“ an den Türen von Wohnungen, Garagen und Häusern auf.

Ein ähnliches Schloss öffnet sich, wenn Sie eine Taste auf Ihrem Smartphone drücken. Glücklicherweise haben Smartphones und Tablets bereits Einzug in unseren Alltag gehalten. In einigen Fällen werden „intelligente Schlösser“ mit „Cloud-Diensten“ wie Google Drive verbunden und aus der Ferne geöffnet. Darüber hinaus ist es mit dieser Option möglich, anderen Personen den Zugang zum Öffnen der Tür zu ermöglichen.

Dieses Projekt wird eine DIY-Version eines intelligenten Schlosses auf Arduino implementieren, das von überall auf der Welt ferngesteuert werden kann.

Darüber hinaus wurde im Projekt die Möglichkeit hinzugefügt, das Schloss nach der Identifizierung eines Fingerabdrucks zu öffnen. Zu diesem Zweck wird ein Fingerabdrucksensor integriert. Beide Türöffnungsoptionen werden von der Adafruit IO-Plattform unterstützt.

Ein Schloss wie dieses kann ein toller erster Schritt in Ihrem Smart Home-Projekt sein.

Einrichten des Fingerabdrucksensors

Für die Arbeit mit einem Fingerabdrucksensor gibt es eine hervorragende Bibliothek für Arduino, die die Einrichtung des Sensors erheblich vereinfacht. Dieses Projekt verwendet Arduino Uno. Zur Verbindung mit dem Internet wird ein Adafruit CC3000-Board verwendet.

Beginnen wir mit dem Anschließen der Stromversorgung:

  • Verbinden Sie den 5-V-Pin der Arduino-Platine mit der roten Stromschiene.
  • Der GND-Pin des Arduino wird mit der blauen Schiene auf der lötfreien Platine verbunden.

Kommen wir zum Anschluss des Fingerabdrucksensors:

  • Schließen Sie zuerst den Strom an. Dazu wird das rote Kabel an die +5-V-Schiene und das schwarze Kabel an die GND-Schiene angeschlossen;
  • Weißer Draht Der Sensor wird an Pin 4 des Arduino angeschlossen.
  • Grüner Draht geht an Pin 3 des Mikrocontrollers.

Kommen wir nun zum CC3000-Modul:

  • Wir verbinden den IRQ-Pin der CC3000-Platine mit Pin 2 des Arduino.
  • VBAT – an Pin 5.
  • CS – an Pin 10.
  • Danach müssen Sie die SPI-Pins mit dem Arduino verbinden: MOSI, MISO und CLK – jeweils mit den Pins 11, 12 und 13.

Nun, am Ende müssen Sie Strom bereitstellen: Vin – an den Arduino 5V (rote Schiene auf Ihrer Platine) und GND an GND (blaue Schiene auf dem Steckbrett).

Unten sehen Sie ein Foto des vollständig zusammengebauten Projekts:

Bevor Sie einen Sketch entwickeln, der Daten auf Adafruit IO lädt, müssen Sie Daten über Ihren Fingerabdruck an den Sensor übertragen. Sonst wird er dich in Zukunft nicht wiedererkennen;). Wir empfehlen, den Fingerabdrucksensor separat mit dem Arduino zu kalibrieren. Wenn Sie zum ersten Mal mit diesem Sensor arbeiten, empfehlen wir Ihnen, sich mit dem Kalibrierungsprozess und den detaillierten Anweisungen für die Arbeit mit dem Fingerabdrucksensor vertraut zu machen.

Wenn Sie dies noch nicht getan haben, erstellen Sie bitte ein Konto bei Adafruit IO.

Danach können wir mit der nächsten Phase der Entwicklung eines „intelligenten Schlosses“ auf Arduino fortfahren: nämlich der Entwicklung einer Skizze, die Daten an Adafruit IO überträgt. Da das Programm recht umfangreich ist, werden wir in diesem Artikel nur seine Hauptteile hervorheben und betrachten und dann einen Link zu GitHub bereitstellen, wo Sie die vollständige Skizze herunterladen können.

Der Sketch beginnt mit dem Laden aller notwendigen Bibliotheken:

#enthalten

#enthalten

#enthalten

#include „Adafruit_MQTT.h“

#include „Adafruit_MQTT_CC3000.h“

#enthalten

#enthalten >

Danach müssen Sie die Skizze leicht korrigieren, indem Sie die Parameter Ihres WLAN-Netzwerks einfügen und die SSID und das Passwort angeben:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Darüber hinaus müssen Sie Ihren Namen und AIO-Schlüssel eingeben, um sich bei Ihrem Adafruit IO-Konto anzumelden:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME „adafruit_io_name“

#define AIO_KEY "adafruit_io_key">

Die folgenden Zeilen sind für die Interaktion und Verarbeitung der Daten des Fingerabdrucksensors verantwortlich. Wenn der Sensor aktiviert wurde (der Fingerabdruck stimmte überein), steht dort „1“:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_Publish fingerabdruck = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Darüber hinaus müssen wir eine Instanz des SoftwareSerial-Objekts für unseren Sensor erstellen:

SoftwareSerial mySerial(3, 4);

Danach können wir ein Objekt für unseren Sensor erstellen:

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Innerhalb der Skizze geben wir an, welche FingerID die Sperre in Zukunft aktivieren soll. In diesem Beispiel wird 0 verwendet, was der ID des ersten vom Sensor verwendeten Fingerabdrucks entspricht:

int fingerID = 0;

Danach initialisieren wir den Zähler und die Verzögerung in unserem Projekt. Im Wesentlichen möchten wir, dass das Schloss nach dem Öffnen automatisch einrastet. In diesem Beispiel wird eine Verzögerung von 10 Sekunden verwendet, Sie können diesen Wert jedoch an Ihre Bedürfnisse anpassen:

int Aktivierungszähler = 0;

int lastActivation = 0;

int Aktivierungszeit = 10 * 1000;

Im Hauptteil der setup()-Funktion initialisieren wir den Fingerabdrucksensor und stellen sicher, dass der CC3000-Chip mit Ihrem WLAN-Netzwerk verbunden ist.

Im Hauptteil der Funktion loop() stellen wir eine Verbindung zu Adafruit IO her. Dafür ist folgende Zeile verantwortlich:

Nach der Verbindung mit der Adafruit IO-Plattform überprüfen wir den letzten Fingerabdruck. Wenn es übereinstimmt und die Sperre nicht aktiviert ist, senden wir „1“ zur Verarbeitung an Adafruit IO:

if (fingerprintID == fingerID && lockState == false) (

Serial.println(F("Zugriff gewährt!"));

lockState = true;

Serial.println(F("Fehlgeschlagen"));

Serial.println(F("OK!"));

lastActivation = millis();

Wenn innerhalb der Funktion loop() die Sperre aktiviert ist und wir den oben angegebenen Verzögerungswert erreicht haben, senden wir „0“:

if ((activationCounter - lastActivation > activateTime) && lockState == true) (

lockState = false;

if (! fingerabdruck.publish(state)) (

Serial.println(F("Fehlgeschlagen"));

Serial.println(F("OK!"));

Sie können die neueste Version des Codes auf GitHub herunterladen.

Es ist Zeit, unser Projekt zu testen! Vergessen Sie nicht, alle notwendigen Bibliotheken für Arduino herunterzuladen und zu installieren!

Stellen Sie sicher, dass Sie alle notwendigen Änderungen an der Skizze vorgenommen haben, und laden Sie sie auf Ihr Arduino hoch. Öffnen Sie anschließend das Fenster „Serial Monitor“.

Wenn der Arduino eine Verbindung zum WLAN-Netzwerk herstellt, beginnt der Fingerabdrucksensor rot zu blinken. Legen Sie Ihren Finger auf den Sensor. Die ID-Nummer sollte im seriellen Monitorfenster angezeigt werden. Bei Übereinstimmung erscheint die Meldung „OK!“ Dies bedeutet, dass die Daten an die Adafruit IO-Server gesendet wurden.

Schema und Skizze zur weiteren Konfiguration des Schlosses am Beispiel einer LED

Befassen wir uns nun mit dem Teil des Projekts, der direkt für das Management verantwortlich ist Türschloss. Um eine Verbindung zu einem drahtlosen Netzwerk herzustellen und die Sperre zu aktivieren/deaktivieren, benötigen Sie ein zusätzliches Adafruit ESP8266-Modul (das ESP8266-Modul muss nicht von Adafruit sein). Anhand des folgenden Beispiels können Sie bewerten, wie einfach der Datenaustausch zwischen zwei Plattformen (Arduino und ESP8266) mit Adafruit IO ist.

In diesem Abschnitt werden wir nicht direkt mit dem Schloss arbeiten. Stattdessen verbinden wir die LED einfach mit dem Pin, an dem später das Schloss angeschlossen wird. Dies gibt uns die Möglichkeit, unseren Code zu testen, ohne uns mit den Details des Schlossdesigns zu befassen.

Das Schema ist ganz einfach: Zuerst den ESP8266 auf dem Steckbrett installieren. Anschließend installieren Sie die LED. Vergessen Sie nicht, dass der lange (positive) Zweig der LED über einen Widerstand angeschlossen ist. Der zweite Zweig des Widerstands ist mit Pin 5 des ESP8266-Moduls verbunden. Wir verbinden die zweite (Kathode) der LED mit dem GND-Pin des ESP8266.

Völlig zusammengebaute Schaltung auf dem Foto unten dargestellt.


Schauen wir uns nun die Skizze an, die wir für dieses Projekt verwenden. Auch hier ist der Code ziemlich umfangreich und komplex, daher werden wir uns nur auf seine Hauptteile konzentrieren:

Wir beginnen mit der Anbindung der notwendigen Bibliotheken:

#enthalten

#include „Adafruit_MQTT.h“

#include „Adafruit_MQTT_Client.h“

WLAN-Einstellungen konfigurieren:

#define WLAN_SSID „your_wifi_ssid“

#define WLAN_PASS „your_wifi_password“

#define WLAN_SECURITY WLAN_SEC_WPA2

Wir konfigurieren auch Adafruit IO-Parameter. Das Gleiche wie im vorherigen Abschnitt:

#define AIO_SERVER „io.adafruit.com“

#define AIO_SERVERPORT 1883

#define AIO_USERNAME „adafruit_io_username“

#define AIO_KEY „adafruit_io_key“

Wir geben an, an welchen Pin wir die LED angeschlossen haben (in Zukunft wird dies unser Schloss oder Relais sein):

int RelayPin = 5;

Interaktion mit dem Fingerabdrucksensor, wie im vorherigen Abschnitt:

const char LOCK_FEED PROGMEM = AIO_USERNAME "/feeds/lock";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

Im Hauptteil der Funktion setup() geben wir an, dass der Pin, an den die LED angeschlossen ist, im OUTPUT-Modus arbeiten soll:

pinMode(relayPin, OUTPUT);

Innerhalb der loop()-Schleife prüfen wir zunächst, ob wir mit Adafruit IO verbunden sind:

Anschließend prüfen wir, welches Signal empfangen wird. Wird „1“ übermittelt, aktivieren wir den zuvor deklarierten Pin, an dem unsere LED angeschlossen ist. Erhalten wir „0“, überführen wir den Kontakt in den Zustand „low“:

Adafruit_MQTT_Subscribe *Abonnement;

while ((subscription = mqtt.readSubscription(1000))) (

if (Abonnement == &lock) (

Serial.print(F("Got: "));

Serial.println((char *)lock.lastread);

// Befehl in String-Daten speichern

String command = String((char *)lock.lastread);

if (Befehl == "0") (

digitalWrite(relayPin, LOW);

if (Befehl == "1") (

digitalWrite(relayPin, HIGH);

Finden letzte Version Die Skizze finden Sie auf GitHub.

Es ist Zeit, unser Projekt zu testen. Vergessen Sie nicht, alle erforderlichen Bibliotheken für Ihr Arduino herunterzuladen und zu überprüfen, ob Sie die richtigen Änderungen an der Skizze vorgenommen haben.

Um den ESP8266-Chip zu programmieren, können Sie einen einfachen USB-FTDI-Konverter verwenden.

Laden Sie die Skizze auf den Arduino hoch und öffnen Sie das Fenster „Serial Monitor“. Zu diesem Zeitpunkt haben wir lediglich überprüft, ob wir eine Verbindung zu Adafruit IO herstellen konnten: Wir werden uns die verfügbaren Funktionen weiter ansehen.

Testen des Projekts

Jetzt fangen wir mit dem Testen an! Gehen Sie zum Benutzermenü Ihres Adafruit IO im Menü „Feeds“. Überprüfen Sie, ob die Fingerabdruck- und Sperrkanäle erstellt wurden oder nicht (im Druckbildschirm unten sind dies die Fingerabdruck- und Sperrleitungen):


Wenn sie nicht vorhanden sind, müssen Sie sie manuell erstellen.

Jetzt müssen wir den Datenaustausch zwischen den Fingerabdruck- und Sperrkanälen sicherstellen. Der Lock-Kanal muss den Wert „1“ annehmen, wenn der Fingerprint-Kanal den Wert „1“ annimmt und umgekehrt.

Dazu verwenden wir ein sehr leistungsfähiges Adafruit IO-Tool: Trigger. Trigger sind im Wesentlichen Bedingungen, die Sie auf konfigurierte Kanäle anwenden können. Das heißt, sie können zur Verbindung zweier Kanäle verwendet werden.

Erstellen Sie einen neuen reaktiven Trigger aus dem Abschnitt „Trigger“ in Adafruit IO. Dadurch besteht die Möglichkeit, Daten zwischen dem Fingerabdrucksensor und den Sperrkanälen auszutauschen:


So sollte es aussehen, wenn beide Trigger konfiguriert sind:

Alle! Jetzt können wir unser Projekt tatsächlich testen! Wir legen unseren Finger auf den Sensor und sehen, wie der Arduino mit einer LED zu blinken beginnt, die der Datenübertragung entspricht. Danach sollte die LED am ESP8266-Modul zu blinken beginnen. Das bedeutet, dass es begonnen hat, Daten über MQTT zu empfangen. In diesem Moment sollte auch die LED auf der Platine aufleuchten.

Nach der Verzögerung, die Sie in der Skizze festgelegt haben (der Standardwert beträgt 10 Sekunden), erlischt die LED. Glückwunsch! Sie können die LED mit Ihrem Fingerabdruck von überall auf der Welt steuern!

Einrichten eines elektronischen Schlosses

Wir haben den letzten Teil des Projekts erreicht: direkte Verbindung und Steuerung. elektronisches Schloss Mit mit Arduino und einen Fingerabdrucksensor. Das Projekt ist nicht einfach, Sie können alle Quellen in der oben dargestellten Form verwenden, aber anstelle einer LED ein Relais anschließen.

Um das Schloss direkt anzuschließen, benötigen Sie zusätzliche Komponenten: ein 12-V-Netzteil, eine Buchse zum Anschluss der Stromversorgung, einen Transistor (V in diesem Beispiel Es wird ein IRLB8721PbF-MOSFET verwendet, es kann jedoch auch ein anderer verwendet werden, beispielsweise ein TIP102-Bipolartransistor. Wenn Sie einen Bipolartransistor verwenden, müssen Sie einen Widerstand hinzufügen.

Unten dargestellt Elektrischer Schaltplan Anschließen aller Komponenten an das ESP8266-Modul:


Beachten Sie, dass Sie bei Verwendung eines MOSFET-Transistors keinen Widerstand zwischen Pin 5 des ESP8266-Moduls und dem Transistor benötigen.

Das vollständig zusammengebaute Projekt ist auf dem Foto unten dargestellt:


Versorgen Sie das ESP8266-Modul mit dem FTDI-Modul mit Strom und schließen Sie das 12-V-Netzteil an die Buchse an. Wenn Sie für den Anschluss die oben empfohlenen Pins verwendet haben, müssen Sie an der Skizze nichts ändern.

Jetzt können Sie Ihren Finger auf den Sensor legen: Das Schloss sollte auf Ihren Fingerabdruck reagieren. Das folgende Video zeigt das automatische Smart-Lock-Projekt in Aktion:

Weiterentwicklung des Smart Lock-Projekts

In unserem Projekt veröffentlicht Fernbedienung Türschloss mit Ihrem Fingerabdruck.

Fühlen Sie sich frei, zu experimentieren, die Skizze und den Einband zu modifizieren. Sie können beispielsweise ein elektronisches Türschloss durch ein Relais ersetzen, um die Leistung Ihres 3D-Druckers, Roboterarms oder Quadcopters zu steuern ...

Sie können Ihre entwickeln Intelligentes Haus". Aktivieren Sie beispielsweise aus der Ferne ein Bewässerungssystem auf Arduino oder schalten Sie das Licht in einem Raum ein ... Vergessen Sie nicht, dass Sie mit Adafruit IO eine nahezu unbegrenzte Anzahl von Geräten gleichzeitig aktivieren können.

Hinterlassen Sie Ihre Kommentare, Fragen und teilen Sie sie persönliche Erfahrung unten. In Diskussionen entstehen oft neue Ideen und Projekte!

Dieses Projekt ist modular aufgebaut, d.h. Sie können verschiedene Elemente verbinden/deaktivieren und unterschiedliche Funktionen erhalten. Die Bilder oben zeigen eine Option mit vollem Funktionsumfang, nämlich:

  • Verschlussmechanismus. Dient zum ÖFFNEN und SCHLIESSEN der Tür. Dieses Projekt untersucht die Verwendung von drei verschiedenen Mechanismen:
    • Servo. Es gibt große, es gibt kleine. Sehr kompakt und gepaart mit einem schweren Riegel – eine hervorragende Option
    • Türschloss für Elektroautos. Es ist ein großes und mächtiges Ding, aber es verbraucht verrückte Ströme.
    • Magnetverriegelung. Eine gute Option, weil es sich selbst schließt

    In den Firmware-Einstellungen können Sie eine davon auswählen drei Typen(Einstellung Schloss Typ)

  • Knopf innen. Dient zum ÖFFNEN und SCHLIESSEN der Tür von innen. Kann am Türgriff (Handflächenseite oder Fingerseite), an der Tür selbst oder am Türpfosten angebracht werden
  • Knopf außen. Dient zum SCHLIESSEN der Tür, sowie zum Aufwachen um Energie zu sparen. Kann am Türgriff (Handflächenseite oder Fingerseite), an der Tür selbst oder am Türpfosten angebracht werden
  • Endkappe um die Tür zu schließen. Dient zum automatischen Schließen des Schlosses beim Schließen der Tür. Es könnte sein:
    • Takttaste
    • Hallsensor + Magnet an der Tür selbst
    • Reedschalter + Magnet an der Tür selbst
  • Geheimnis Zugriff auf die Reset-Taste. Wird verwendet, um das Passwort zurückzusetzen, ein neues Passwort einzugeben, sich einen neuen Schlüssel/eine neue Kombination zu merken usw. Kann irgendwo im Koffer versteckt sein
  • Leuchtdiode um den Betrieb anzuzeigen. RGB-LED, rot und grüne Farben(Beim Mischen ergeben sie Gelb):
    • Das grüne Licht leuchtet – das Schloss ist OFFEN. Leuchtet, damit Sie nicht vergessen, die Tür zu schließen
    • Gelb leuchtet – das System ist aufgewacht und wartet auf die Eingabe eines Passworts
    • Rot blinkend – Batterie schwach

Jedes dieser Elemente kann aus dem System ausgeschlossen werden:

  • Wir entfernen den Endschalter. In der Firmware in den Einstellungen deaktivieren wir es auch (Einstellung tail_button). Jetzt müssen Sie einen Knopf drücken, um das Schloss zu schließen.
  • Entfernen Sie den externen Knopf. In der Firmware in den Einstellungen deaktivieren wir es auch (Einstellung wake_button). Jetzt muss das System nicht mehr geweckt werden, es wacht von selbst auf (der Energieverbrauch ist etwas höher). Und jetzt haben wir vorne an der Tür keinen Schließtaster und brauchen einen Endschalter. Oder das Schloss ist ein Riegel
  • Entfernen Sie den internen Knopf. Diese Option eignet sich für Schränke und Tresore. An den Einstellungen müssen Sie nichts ändern
  • Wir entfernen die LED. An den Einstellungen müssen Sie nichts ändern
  • Die Zugangs-Reset-Taste kann nach der ersten Verwendung abgelötet werden, oder der Code kann je nach Bedarf neu geschrieben werden
  • Tür geschlossen, AUSSEN drücken – aufwachen, auf die Eingabe von Passwort/RFID-Tag/elektronischem Schlüssel/Fingerabdruck warten
  • Die Tür ist geschlossen, das System ist wach und wartet auf die Eingabe des Passwortes. Die Zeit kann angepasst werden (Einstellung). Schlafenszeit)
  • Die Tür ist geschlossen, ein Passwort/Tag/Schlüssel usw. wurde eingegeben. - offen
  • Die Tür ist geschlossen, INNEN drücken – öffnen
  • Die Tür ist offen, AUSSEN drücken – schließen
  • Die Tür ist geöffnet, INNEN drücken – schließen
  • Die Tür ist offen, der LIMIT ist gedrückt – schließen

Das Schloss ist für den batteriebetriebenen Betrieb im Energiesparmodus ausgelegt (Aktivieren, Deaktivieren: Einstellung). sleep_enable), nämlich:

  • Wachen Sie alle paar Sekunden auf und überwachen Sie das EREIGNIS (optional, wenn draußen keine Taste vorhanden ist. Sie können es in den Einstellungen aktivieren wake_button)
  • Überwachen Sie die Batteriespannung alle paar Minuten (Ein-/Aus-Einstellung). batterie_monitor)
  • Wenn der Akku entladen ist (die Spannung wird in der Einstellung eingestellt). bat_low):
    • Öffnen Sie die Tür (optional, kann in der Firmware konfiguriert werden open_bat_low)
    • weiteres Öffnen und Schließen verbieten
    • Wenn Sie eine Taste drücken, blinkt die rote LED
    • Stoppen Sie die Überwachung des EREIGNISSes (d. h. Passworteingabe/Kennzeichnung usw.)

Wenn das System nicht im Ruhezustand ist, drücken Sie die Taste zum Ändern des Passworts (versteckte Taste). Wir befinden uns darin Passwortänderungsmodus:
Geben Sie ein Passwort bestehend aus Zahlen ein ( MAXIMAL 10 STELLEN!!!)

  • Wenn Sie * drücken, wird das Passwort in den Speicher geschrieben und das System bricht die Passwortänderung ab
  • Wenn Sie # drücken, wird das Passwort zurückgesetzt (Sie können es erneut eingeben)
  • Wenn Sie 10 Sekunden lang nichts drücken, verlassen wir automatisch den Passwortänderungsmodus, das alte Passwort bleibt bestehen

Wenn sich das System nicht im Ruhezustand befindet (durch die Taste aktiviert wird oder der Ruhezustand deaktiviert ist), drücken Sie *, um in den Passworteingabemodus zu gelangen
Wenn das System in den Ruhezustand wechselt und regelmäßig aufwacht, um EREIGNIS zu überprüfen, drücken Sie * und halten Sie es gedrückt, bis die rote LED aufleuchtet
Passwortmodus:

  • Die Passwortverarbeitung erfolgt so, dass das richtige Passwort nur dann gezählt wird, wenn Sie es eingeben richtige Reihenfolge Zahlen, d.h. wenn das Passwort 345 ist, dann können Sie beliebige Zahlen eingeben, bis die Sequenz 345 erscheint, d.h. 30984570345 öffnet die Sperre, da sie in 345 endet.
  • Bei korrekter Eingabe des Passwortes öffnet sich die Tür
  • Wenn Sie nichts drücken, kehrt das System nach 10 Sekunden in den normalen (Standby-)Modus zurück
  • Wenn Sie # drücken, verlassen wir den Passworteingabemodus sofort
  • Wenn Sie im Passworteingabemodus die Taste zum Ändern des geheimen Passworts drücken, verlassen Sie diesen ebenfalls

In der heutigen Lektion geht es um die Verwendung eines RFID-Lesegeräts mit Arduino, um ein einfaches Schließsystem zu erstellen. in einfachen Worten- RFID-Schloss.

RFID (engl. Radio Frequency IDentification, Radiofrequenzidentifikation) ist ein Verfahren zur automatischen Identifizierung von Objekten, bei dem in sogenannten Transpondern, sogenannten RFID-Tags, gespeicherte Daten mithilfe von Funksignalen gelesen oder geschrieben werden. Jedes RFID-System besteht aus einem Lesegerät (Lesegerät, Reader oder Interrogator) und einem Transponder (auch RFID-Tag genannt, manchmal wird auch die Bezeichnung RFID-Tag verwendet).

In diesem Tutorial wird ein RFID-Tag mit Arduino verwendet. Das Gerät liest die eindeutige Kennung (UID) jedes RFID-Tags, das wir neben dem Lesegerät platzieren, und zeigt sie auf dem OLED-Display an. Wenn die UID des Tags mit dem vordefinierten Wert übereinstimmt, der im Arduino-Speicher gespeichert ist, wird auf dem Display die Meldung „Unlocked“ angezeigt. Wenn die eindeutige ID nicht einem vordefinierten Wert entspricht, wird die Meldung „Entsperrt“ nicht angezeigt – siehe Foto unten.

Das Schloss ist geschlossen

Das Schloss ist geöffnet

Zur Erstellung dieses Projekts benötigte Teile:

  • RFID-Leser RC522
  • OLED-Display
  • Brotbrett
  • Drähte

Weitere Details:

  • Batterie (Powerbank)

Die Gesamtkosten der Projektkomponenten beliefen sich auf etwa 15 US-Dollar.

Schritt 2: RFID-Leser RC522

Jeder RFID-Tag enthält einen kleinen Chip (weiße Karte auf dem Foto). Wenn man diese RFID-Karte mit einer Taschenlampe beleuchtet, erkennt man den kleinen Chip und die Spule, die ihn umgibt. Dieser Chip verfügt nicht über eine Batterie zur Stromerzeugung. Über diesen wird das Lesegerät drahtlos mit Strom versorgt große Rolle. Es ist möglich, eine solche RFID-Karte aus einer Entfernung von bis zu 20 mm zu lesen.

Den gleichen Chip gibt es auch in RFID-Schlüsselanhängern.

Jedes RFID-Tag verfügt über eine eindeutige Nummer, die es identifiziert. Dies ist die UID, die auf dem OLED-Display angezeigt wird. Mit Ausnahme dieser UID kann jedes Tag Daten speichern. Dieser Kartentyp kann bis zu 1.000 Daten speichern. Beeindruckend, nicht wahr? Diese Funktion wird heute nicht verwendet. Heutzutage geht es nur noch darum, eine bestimmte Karte anhand ihrer UID zu identifizieren. Die Kosten für den RFID-Leser und diese beiden RFID-Karten betragen etwa 4 US-Dollar.

Schritt 3: OLED-Display

In der Lektion wird ein 0,96-Zoll-128x64-I2C-OLED-Monitor verwendet.

Dies ist ein sehr gutes Display für die Verwendung mit Arduino. Da es sich um ein OLED-Display handelt, ist der Stromverbrauch gering. Der Stromverbrauch dieses Displays liegt bei etwa 10–20 mA und hängt von der Anzahl der Pixel ab.

Das Display hat eine Auflösung von 128 x 64 Pixel und ist winzig klein. Es gibt zwei Anzeigeoptionen. Einer davon ist monochrom und der andere kann, wie der in der Lektion verwendete, zwei Farben anzeigen: Gelb und Blau. Oberer Teil Der Bildschirm kann nur gelb sein, und Unterteil- Blau.

Dieses OLED-Display ist sehr hell und verfügt über eine tolle und sehr schöne Bibliothek, die Adafruit für dieses Display entwickelt hat. Darüber hinaus verfügt das Display über eine I2C-Schnittstelle, sodass der Anschluss an den Arduino denkbar einfach ist.

Sie müssen nur zwei Drähte außer Vcc und GND anschließen. Wenn Sie neu bei Arduino sind und in Ihrem Projekt ein kostengünstiges und einfaches Display verwenden möchten, beginnen Sie hier.

Schritt 4: Alle Teile verbinden

Die Kommunikation mit dem Arduino Uno-Board ist sehr einfach. Schließen wir zunächst das Lesegerät und das Display an die Stromversorgung an.

Seien Sie vorsichtig, der RFID-Leser muss an den 3,3-V-Ausgang des Arduino Uno angeschlossen werden, sonst wird er beschädigt.

Da das Display auch mit 3,3 V betrieben werden kann, verbinden wir den VCC von beiden Modulen mit der Plusschiene des Steckbretts. Dieser Bus wird dann mit dem 3,3-V-Ausgang des Arduino Uno verbunden. Dann verbinden wir beide Erdungen (GND) mit dem Erdungsbus des Steckbretts. Dann verbinden wir den GND-Bus des Steckbretts mit dem Arduino GND.

OLED-Display → Arduino

SCL → Analog Pin 5

SDA → Analog Pin 4

RFID-Leser → Arduino

RST → Digitaler Pin 9

IRQ → Nicht verbunden

MISO → Digitaler Pin 12

MOSI → Digitaler Pin 11

SCK → Digitaler Pin 13

SDA → Digitaler Pin 10

Das RFID-Lesemodul nutzt die SPI-Schnittstelle zur Kommunikation mit Arduino. Wir werden also Hardware-SPI-Pins von Arduino UNO verwenden.

Der RST-Pin geht an den digitalen Pin 9. Der IRQ-Pin bleibt getrennt. Der MISO-Pin geht an den digitalen Pin 12. Der MOSI-Pin geht an den digitalen Pin 11. Der SCK-Pin geht an den digitalen Pin 13 und schließlich geht der SDA-Pin an den digitalen Pin 10. Das war’s.

Der RFID-Leser ist angeschlossen. Jetzt müssen wir das OLED-Display über die I2C-Schnittstelle mit dem Arduino verbinden. Der SCL-Pin am Display geht also an den analogen Pin von Pin 5 und der SDA-Pin am Display an den analogen Pin 4. Wenn wir nun das Projekt einschalten und die RFID-Karte in die Nähe des Lesegeräts legen, können wir das Projekt sehen funktioniert gut.

Schritt 5: Projektcode

Damit der Projektcode kompiliert werden kann, müssen wir einige Bibliotheken einbinden. Zunächst benötigen wir die Rfid-Bibliothek MFRC522.

Um es zu installieren, gehen Sie zu Sketch -> Bibliotheken einschließen -> Bibliotheken verwalten(Bibliotheksverwaltung). Suchen Sie MFRC522 und installieren Sie es.

Zur Anzeige benötigen wir außerdem die Adafruit SSD1306-Bibliothek und die Adafruit GFX-Bibliothek.

Installieren Sie beide Bibliotheken. Die Adafruit SSD1306-Bibliothek benötigt eine kleine Modifikation. Gehe zum Ordner Arduino -> Bibliotheken, öffnen Sie den Ordner Adafruit SSD1306 und bearbeiten Sie die Bibliothek Adafruit_SSD1306.h. Kommentieren Sie Zeile 70 aus und kommentieren Sie Zeile 69 aus, weil Das Display hat eine Auflösung von 128x64.

Zuerst deklarieren wir den Wert des RFID-Tags, den der Arduino erkennen muss. Dies ist ein Array von ganzen Zahlen:

Int-Code = (69.141,8.136); // UID

Anschließend initialisieren wir den RFID-Leser und zeigen an:

Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Danach überprüfen wir in der Schleifenfunktion alle 100 ms den Tag auf dem Lesegerät.

Befindet sich ein Tag auf dem Lesegerät, lesen wir dessen UID aus und drucken sie auf dem Display aus. Anschließend vergleichen wir die UID des gerade gelesenen Tags mit dem Wert, der in der Codevariablen gespeichert ist. Wenn die Werte gleich sind, zeigen wir die UNLOCK-Meldung an, andernfalls zeigen wir diese Meldung nicht an.

If(match) ( Serial.println("\nIch kenne diese Karte!"); printUnlockMessage(); )else ( Serial.println("\nUnknown Card"); )

Natürlich können Sie diesen Code ändern, um mehr als einen UID-Wert zu speichern, sodass das Projekt mehr RFID-Tags erkennt. Dies ist nur ein Beispiel.

Projektnummer:

#enthalten #enthalten #enthalten #enthalten #define OLED_RESET 4 Adafruit_SSD1306-Anzeige (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instanz der Klasse MFRC522::MIFARE_Key key; int-Code = (69,141,8,136); //Dies ist die gespeicherte UID int codeRead = 0; String uidString; void setup() ( Serial.begin(9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialisieren mit der I2C-Adresse 0x3D ( für die 128x64) // Puffer löschen. display.clearDisplay(); display.display(); display.setTextColor(WHITE); // oder SCHWARZ); display.setTextSize(2); display.setCursor(10,0); display.print("RFID-Sperre"); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) delay(100); ) void readRFID() ( rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC type: ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); .println(F("Ihr Tag ist nicht vom Typ MIFARE Classic.")); return; uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" ; boolean match = true;

Schritt 6: Endergebnis

Wie Sie der Lektion entnehmen können, können Sie Ihre Projekte für wenig Geld mit einem RFID-Lesegerät ausstatten. Mit diesem Lesegerät können Sie ganz einfach ein Sicherheitssystem erstellen oder interessantere Projekte erstellen, sodass beispielsweise Daten von einem USB-Laufwerk nach dem Entsperren nur gelesen werden können.