Serratura elettronica su Arduino. Serratura "intelligente" automatica e serratura elettronica Arduino su arduino nano

La lezione di oggi riguarda come utilizzare un lettore RFID con Arduino per creare un semplice sistema di chiusura, in parole semplici- Blocco RFID.

L'RFID (inglese Radio Frequency IDentification, identificazione a radiofrequenza) è un metodo di identificazione automatica di oggetti in cui i dati memorizzati nei cosiddetti transponder, o tag RFID, vengono letti o scritti utilizzando segnali radio. Qualsiasi sistema RFID è costituito da un dispositivo di lettura (lettore, lettore o interrogatore) e da un transponder (noto anche come tag RFID, a volte viene utilizzato anche il termine tag RFID).

Questo tutorial utilizzerà un tag RFID con Arduino. Il dispositivo legge l'identificatore univoco (UID) di ciascun tag RFID che posizioniamo accanto al lettore e lo visualizza sul display OLED. Se l'UID del tag è uguale al valore predefinito archiviato nella memoria di Arduino, sul display verrà visualizzato il messaggio "Unlocked". Se l'ID univoco non è uguale ad un valore predefinito, il messaggio "Sbloccato" non apparirà - vedi foto sotto.

Il castello è chiuso

La serratura è aperta

Parti necessarie per creare questo progetto:

  • Lettore RFID RC522
  • Display OLED
  • Tagliere per il pane
  • Fili

Dettagli aggiuntivi:

  • Batteria (powerbank)

Il costo totale dei componenti del progetto è stato di circa $ 15.

Passaggio 2: Lettore RFID RC522

Ogni tag RFID contiene un piccolo chip (carta bianca mostrata nella foto). Se accendi una torcia su questa carta RFID, puoi vedere il piccolo chip e la bobina che lo circonda. Questo chip non ha una batteria per generare energia. Riceve alimentazione dal lettore in modalità wireless utilizzando questa bobina di grandi dimensioni. È possibile leggere una tessera RFID come questa fino a 20 mm di distanza.

Lo stesso chip esiste anche nei tag portachiavi RFID.

Ogni tag RFID ha un numero univoco che lo identifica. Questo è l'UID visualizzato sul display OLED. Ad eccezione di questo UID, ogni tag può memorizzare dati. Questo tipo di scheda può memorizzare fino a 1 mila dati. Impressionante, non è vero? Questa funzione non verrà utilizzata oggi. Oggi tutto ciò che interessa è identificare una carta specifica tramite il suo UID. Il costo del lettore RFID e di queste due carte RFID è di circa $ 4.

Passaggio 3: display OLED

La lezione utilizza un monitor OLED I2C 128x64 da 0,96".

Questo è un ottimo display da utilizzare con Arduino. Questo è un display OLED e ciò significa che ha un basso consumo energetico. Il consumo energetico di questo display è di circa 10-20 mA e dipende dal numero di pixel.

Il display ha una risoluzione di 128 x 64 pixel ed è di dimensioni ridotte. Sono disponibili due opzioni di visualizzazione. Uno di questi è monocromatico e l'altro, come quello utilizzato nella lezione, può visualizzare due colori: giallo e blu. La parte superiore dello schermo può essere solo gialla e la parte inferiore può essere solo blu.

Questo display OLED è molto luminoso e ha una libreria fantastica e molto carina che Adafruit ha sviluppato per questo display. Oltre a ciò, il display utilizza un'interfaccia I2C, quindi la connessione ad Arduino è incredibilmente semplice.

Devi solo collegare due fili tranne Vcc e GND. Se non conosci Arduino e desideri utilizzare un display semplice ed economico nel tuo progetto, inizia da qui.

Passaggio 4: collegamento di tutte le parti

La comunicazione con la scheda Arduino Uno è molto semplice. Per prima cosa colleghiamo l'alimentazione sia al lettore che al display.

Attenzione, il lettore RFID deve essere collegato all'uscita 3,3V di Arduino Uno altrimenti verrà danneggiato.

Poiché il display può funzionare anche a 3,3 V, colleghiamo il VCC di entrambi i moduli al binario positivo della breadboard. Questo bus viene quindi collegato all'uscita 3,3 V di Arduino Uno. Quindi colleghiamo entrambi i terreni (GND) al bus di messa a terra della breadboard. Quindi colleghiamo il bus GND della breadboard al GND di Arduino.

Display OLED → Arduino

SCL → Pin analogico 5

SDA → Pin analogico 4

Lettore RFID → Arduino

RST → Pin digitale 9

IRQ → Non connesso

MISO → Pin digitale 12

MOSI → Pin digitale 11

SCK → Pin digitale 13

SDA → Pin digitale 10

Il modulo lettore RFID utilizza l'interfaccia SPI per comunicare con Arduino. Quindi utilizzeremo i pin SPI hardware di Arduino UNO.

Il pin RST va al pin digitale 9. Il pin IRQ rimane disconnesso. Il pin MISO va al pin digitale 12. Il pin MOSI va al pin digitale 11. Il pin SCK va al pin digitale 13 e infine il pin SDA va al pin digitale 10. Questo è tutto.

Il lettore RFID è collegato. Ora dobbiamo collegare il display OLED ad Arduino utilizzando l'interfaccia I2C. Quindi il pin SCL del display va al pin analogico del Pin 5 e il pin SDA del display al Pin analogico 4. Se ora accendiamo il progetto e avviciniamo la tessera RFID al lettore, possiamo vedere che il progetto funziona bene.

Passaggio 5: codice del progetto

Affinché il codice del progetto possa essere compilato, dobbiamo includere alcune librerie. Innanzitutto abbiamo bisogno della libreria Rfid MFRC522.

Per installarlo, vai a Schizzo -> Includi librerie -> Gestisci librerie(Gestione della Biblioteca). Trova MFRC522 e installalo.

Abbiamo anche bisogno della libreria Adafruit SSD1306 e della libreria Adafruit GFX per la visualizzazione.

Installa entrambe le librerie. La libreria Adafruit SSD1306 necessita di una piccola modifica. Vai alla cartella Arduino -> Librerie, apri la cartella Adafruit SSD1306 e modifica la libreria Adafruit_SSD1306.h. Commenta la riga 70 e decommenta la riga 69 perché Il display ha una risoluzione di 128x64.

Per prima cosa dichiariamo il valore del tag RFID che Arduino deve riconoscere. Questo è un array di numeri interi:

Codice int = (69,141,8,136); //UID

Quindi inizializziamo il lettore RFID e visualizziamo:

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

Successivamente, nella funzione loop controlliamo il tag sul lettore ogni 100 ms.

Se sul lettore è presente un tag, leggiamo il suo UID e lo stampiamo sul display. Confrontiamo quindi l'UID del tag che abbiamo appena letto con il valore memorizzato nella variabile code. Se i valori sono uguali visualizzeremo il messaggio UNLOCK, altrimenti non visualizzeremo questo messaggio.

If(match) ( Serial.println("\nConosco questa carta!"); printUnlockMessage(); )else ( Serial.println("\nCarta sconosciuta"); )

Naturalmente, puoi modificare questo codice per memorizzare più di 1 valore UID in modo che il progetto riconosca più tag RFID. Questo è solo un esempio.

Codice del progetto:

#includere #includere #includere #includere #define OLED_RESET 4 display Adafruit_SSD1306 (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Istanza della classe MFRC522::MIFARE_Key chiave; codice int = (69,141,8,136); //Questo è l'UID memorizzato int codeRead = 0; String uidString; void setup() ( Serial.begin(9600); SPI.begin(); // Init bus SPI rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inizializza con l'add I2C 0x3D (per 128x64) // Cancella il buffer display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(10,0); display.print("Blocco RFID"); display.display(); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) ritardo(100); ) void readRFID() ( rfid.PICC_ReadCardSerial(); Serial.print(F("\nTipo PICC: ") MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); .println(F("Il tuo tag non è di tipo MIFARE Classic.")); return ) clearUID(); UID PICC scansionato:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte()); ; corrispondenza booleana = vero;

Passaggio 6: risultato finale

Come puoi vedere dalla lezione, con pochi soldi puoi aggiungere un lettore RFID ai tuoi progetti. Puoi creare facilmente un sistema di sicurezza utilizzando questo lettore o creare progetti più interessanti, ad esempio, in modo che i dati da un'unità USB vengano letti solo dopo lo sblocco.

Io, come la maggior parte delle persone che ne hanno uno, associo Cottage alle parole: relax, barbecue, conforto e altri movimenti piacevoli per lo spirito e il corpo, ma c'è anche un rovescio della medaglia: giardinaggio, scavo, riparazioni, costruzione, ecc.

Da 10 anni io e la mia famiglia cerchiamo di migliorare e creare il massimo comfort nella nostra dacia. Costruiamo, ripariamo, ecc. Casa, fienile, stabilimento balneare…..e infine arrivò al recinto della strada, cancello e cancello. Fallo secondo coscienza, budget e convenienza.

Dopo aver discusso alcuni dettagli, si è deciso che il cancello dovesse essere automatico e che avesse alcune delle proprietà di un sistema di controllo degli accessi. Con il cancello il problema è stato risolto acquistando un kit di automazione (azionamento, cremagliera, telecomando, ecc.), ma con il cancello è stato necessario risolvere alcuni problemi, di cui parleremo più avanti.

I compiti erano i seguenti:

  1. La serratura doveva funzionare in abbinamento ad un videocitofono precedentemente installato (apre il cancello senza uscire di casa)
  2. Essere in grado di aprire la porta con una chiave normale e senza chiave dalla strada e dal cortile.
  3. Rientrerà nel budget rimanente fino a 5000 rubli.

Le ricerche in RuNet hanno presentato la seguente fascia di prezzo da 7000 a infinito. Non era più necessario acquistare una soluzione già pronta ed è stata concepita un'alternativa con ampie possibilità, ovvero abbattere da soli la porta!

Dopo alcuni calcoli e calcoli, si è deciso di acquistare una serratura elettromeccanica per circa 2000 rubli, una tastiera impermeabile per 350 rubli e un microcontrollore che guiderà qui. Poiché c'erano diverse schede Arduino nano, relè, parti sciolte e alcuni cavi, la differenza tra il costo del kit finito era di oltre 4.000 rubli. Per me è un grande vantaggio per il tuo portafoglio e per lo sviluppo personale.

Bene, ora dalle parole ai fatti:

Dopo aver acquistato tutti i componenti necessari, ho iniziato a segare.

Schema di collegamento della tastiera

Indicazione LED aggiuntiva (bianco, verde, rosso) delle segnalazioni della tastiera (inserimento, password corretta, porta aperta, rifiutata).

  • perno 9 giallo
  • perno 10 verde
  • perno 11 rosso

Un pannello (griglia) di plexiglass, tagliato per una scatola di cioccolatini e un sorriso dei vicini d'ufficio. Ma la taglierina più piccola si è rivelata un po' più grossa, quindi ho dovuto lavorare con una lima ad ago.

Bene, è il fine settimana, sono andato alla dacia.

Per aprire una serratura elettromeccanica sono necessari 12 V. L'alimentatore che alimentava l'MK era di 5 V, la decisione fu di installare per il castello un convertitore DC-DC boost proveniente dal Regno di Mezzo. Ho collegato tutto e ho iniziato a controllarlo, funziona, ma quando è stata applicata la tensione al solenoide della serratura, il Dunya si è riavviato, provocando un cortocircuito nell'alimentatore. Inoltre, dopo aver collegato il pannello di chiamata dal videocitofono alla serratura, quando si premeva il pulsante per aprire la porta, non succedeva nulla, c'era una piccola corrente nella serratura. L'esecuzione di nuovi cavi non è un'opzione; erano già cementati all'uscita dalla casa. Ho deciso di aggiungere un altro relè per il pannello e di installare un ulteriore alimentatore da 12 V. per il castello. Dopo l'analisi/assemblaggio, tutto ha funzionato, l'MK ha smesso di riavviarsi. Ho nascosto il tutto in una scatola di giunzione a prova di umidità, ho nascosto i cavi, la colla, il silicone e pronto!

Il progresso non si ferma e le “serrature intelligenti” compaiono sempre più spesso sulle porte di appartamenti, garage e case.

Un lucchetto simile si apre quando si preme un pulsante sullo smartphone. Per fortuna smartphone e tablet sono già entrati nella nostra vita quotidiana. In alcuni casi, le “serrature intelligenti” sono collegate a “servizi cloud” come Google Drive e aperte da remoto. Inoltre, questa opzione consente di dare accesso all'apertura della porta ad altre persone.

Questo progetto implementerà una versione fai-da-te di una serratura intelligente su Arduino, che può essere controllata da remoto da qualsiasi parte del mondo.

Inoltre, il progetto ha aggiunto la possibilità di aprire la serratura dopo aver identificato un'impronta digitale. A tale scopo verrà integrato un sensore di impronte digitali. Entrambe le opzioni di apertura delle porte saranno supportate dalla piattaforma Adafruit IO.

Una serratura come questa può essere un ottimo primo passo nel tuo progetto Smart Home.

Configurazione del sensore di impronte digitali

Per lavorare con un sensore di impronte digitali, esiste un'eccellente libreria per Arduino, che semplifica notevolmente il processo di configurazione del sensore. Questo progetto utilizza Arduino Uno. Per connettersi a Internet viene utilizzata una scheda Adafruit CC3000.

Iniziamo collegando l'alimentazione:

  • Collega il pin da 5 V della scheda Arduino alla barra di alimentazione rossa;
  • Il pin GND di Arduino si collega alla guida blu sul circuito stampato senza saldatura.

Passiamo al collegamento del sensore impronte digitali:

  • Per prima cosa collega l'alimentazione. Per fare ciò, il filo rosso è collegato alla guida +5 V e il filo nero alla guida GND;
  • Il filo bianco del sensore si collega al pin 4 di Arduino.
  • Il filo verde va al pin 3 del microcontrollore.

Passiamo ora al modulo CC3000:

  • Colleghiamo il pin IRQ della scheda CC3000 al pin 2 di Arduino.
  • VBAT - al pin 5.
  • CS - al pin 10.
  • Successivamente, è necessario collegare i pin SPI ad Arduino: MOSI, MISO e CLK - rispettivamente ai pin 11, 12 e 13.

Bene, alla fine devi fornire energia: Vin - all'Arduino 5V (binario rosso sul circuito stampato) e GND a GND (binario blu sulla breadboard).

Di seguito è mostrata una foto del progetto completamente assemblato:

Prima di sviluppare uno schizzo che caricherà i dati su Adafruit IO, devi trasferire i dati relativi alla tua impronta digitale al sensore. Altrimenti non ti riconoscerà in futuro;). Si consiglia di calibrare separatamente il sensore di impronte digitali utilizzando Arduino. Se è la prima volta che lavori con questo sensore, ti consigliamo di familiarizzare con il processo di calibrazione e le istruzioni dettagliate per lavorare con il sensore di impronte digitali.

Se non l'hai già fatto, crea un account con Adafruit IO.

Dopodiché possiamo passare alla fase successiva dello sviluppo di una “serratura intelligente” su Arduino: ovvero sviluppare uno sketch che trasmetterà i dati ad Adafruit IO. Poiché il programma è piuttosto voluminoso, in questo articolo evidenzieremo e considereremo solo le sue parti principali, quindi forniremo un collegamento a GitHub, dove sarà possibile scaricare lo schizzo completo.

Lo sketch inizia caricando tutte le librerie necessarie:

#includere

#includere

#includere

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#includere

#includere >

Fatto questo, devi correggere leggermente lo sketch inserendo i parametri della tua rete WiFi, specificando SSID e password:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Inoltre, devi inserire il tuo nome e la chiave AIO per accedere al tuo account Adafruit IO:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

Le seguenti righe sono responsabili dell'interazione e dell'elaborazione dei dati dal sensore di impronte digitali. Se il sensore era attivato (l'impronta digitale corrispondeva), ci sarà "1":

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/impronta digitale";

Adafruit_MQTT_Publish impronta digitale = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Inoltre, dobbiamo creare un'istanza dell'oggetto SoftwareSerial per il nostro sensore:

SoftwareSerial mySerial(3, 4);

Successivamente possiamo creare un oggetto per il nostro sensore:

Dito Adafruit_Fingerprint = Adafruit_Fingerprint(&mySerial);

All'interno dello sketch indichiamo quale fingerID dovrà attivare la serratura in futuro. Questo esempio utilizza 0, che corrisponde all'ID della prima impronta digitale utilizzata dal sensore:

int fingerID = 0;

Successivamente, inizializziamo il contatore e ritardiamo il nostro progetto. In sostanza vogliamo che la serratura si attivi automaticamente una volta aperta. Questo esempio utilizza un ritardo di 10 secondi, ma puoi modificare questo valore in base alle tue esigenze:

int attivazioneContatore = 0;

int ultimaattivazione = 0;

int tempo di attivazione = 10 * 1000;

Nel corpo della funzione setup() inizializziamo il sensore di impronte digitali e ci assicuriamo che il chip CC3000 sia connesso alla tua rete WiFi.

Nel corpo della funzione loop() ci colleghiamo ad Adafruit IO. La seguente riga è responsabile di ciò:

Dopo esserci collegati alla piattaforma Adafruit IO, controlliamo l'ultima impronta digitale. Se corrisponde e il blocco non è attivato, inviamo "1" ad Adafruit IO per l'elaborazione:

if (IDimpronta digitale == IDimpronta && lockState == false) (

Serial.println(F("Accesso concesso!"));

lockState = vero;

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

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

ultimaattivazione = millis();

Se all'interno della funzione loop() il blocco è attivato e abbiamo raggiunto il valore di ritardo sopra indicato, inviamo “0”:

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

lockState = falso;

if (! impronta digitale.pubblica(stato)) (

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

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

Puoi scaricare l'ultima versione del codice su GitHub.

È il momento di testare il nostro progetto! Non dimenticare di scaricare e installare tutte le librerie necessarie per Arduino!

Assicurati di aver apportato tutte le modifiche necessarie allo schizzo e caricalo sul tuo Arduino. Successivamente, apri la finestra Monitor seriale.

Quando Arduino si connette a Reti Wi-Fi, il sensore delle impronte digitali lampeggerà in rosso. Posiziona il dito sul sensore. Il numero ID dovrebbe essere visualizzato nella finestra del monitor seriale. Se corrisponde, verrà visualizzato il messaggio "OK!". Ciò significa che i dati sono stati inviati ai server IO di Adafruit.

Diagramma e schizzo per un'ulteriore configurazione della serratura utilizzando l'esempio di un LED

Passiamo ora alla parte del progetto che è direttamente responsabile del controllo della serratura. A cui connettersi rete senza fili e attivando/disattivando il blocco, avrai bisogno di un modulo Adafruit ESP8266 aggiuntivo (il modulo ESP8266 non deve necessariamente provenire da Adafruit). Utilizzando l'esempio seguente, puoi valutare quanto sia facile scambiare dati tra due piattaforme (Arduino ed ESP8266) utilizzando Adafruit IO.

In questa sezione non lavoreremo direttamente con la serratura. Collegheremo invece semplicemente il LED al pin a cui successivamente verrà collegata la serratura. Questo ci darà l'opportunità di testare il nostro codice senza approfondire i dettagli del design della serratura.

Lo schema è abbastanza semplice: installa prima l'ESP8266 sulla breadboard. Successivamente, installare il LED. Non dimenticare che il ramo lungo (positivo) del LED è collegato tramite un resistore. La seconda gamba del resistore è collegata al pin 5 sul modulo ESP8266. Colleghiamo il secondo (catodo) del LED al pin GND sull'ESP8266.

Il circuito completamente assemblato è mostrato nella foto sotto.


Ora diamo un'occhiata allo schizzo che stiamo utilizzando per questo progetto. Ancora una volta, il codice è piuttosto grande e complesso, quindi ne esamineremo solo le parti principali:

Iniziamo collegando le librerie necessarie:

#includere

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

Configurazione delle impostazioni Wi-Fi:

#define WLAN_SSID "tuo_wifi_ssid"

#define WLAN_PASS "tua_password_wifi"

#define WLAN_SECURITY WLAN_SEC_WPA2

Configuriamo anche i parametri IO di Adafruit. Come nella sezione precedente:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_nomeutente"

#define AIO_KEY "adafruit_io_key"

Indichiamo a quale pin abbiamo collegato il LED (in futuro questo sarà il nostro lucchetto o relè):

int relèPin = 5;

Interazione con il sensore di impronte digitali, come nella sezione precedente:

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

Adafruit_MQTT_Subscribe blocco = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

Nel corpo della funzione setup() indichiamo che il pin a cui è collegato il LED deve funzionare in modalità OUTPUT:

pinMode(pinrelè, USCITA);

All'interno del ciclo loop(), controlliamo prima se siamo connessi ad Adafruit IO:

Successivamente, controlliamo quale segnale viene ricevuto. Se viene trasmesso "1", attiviamo il pin che abbiamo dichiarato in precedenza, a cui è collegato il nostro LED. Se riceviamo "0", trasferiamo il contatto nello stato "basso":

Adafruit_MQTT_Subscribe *abbonamento;

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

if (abbonamento == &blocco) (

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

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

// Salva il comando nella stringa dati

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

if (comando == "0") (

digitalWrite(Pinrelè, BASSO);

if (comando == "1") (

digitalWrite(Pinrelè, ALTO);

Trovare ultima versione Puoi trovare lo schizzo su GitHub.

È tempo di testare il nostro progetto. Non dimenticare di scaricare tutte le librerie richieste per il tuo Arduino e verificare se hai apportato le modifiche corrette allo sketch.

Per programmare il chip ESP8266 è possibile utilizzare un semplice convertitore USB-FTDI.

Carica lo schizzo su Arduino e apri la finestra Monitor seriale. In questa fase abbiamo semplicemente verificato se siamo riusciti a connetterci ad Adafruit IO: esamineremo più approfonditamente le funzionalità disponibili.

Testare il progetto

Ora iniziamo i test! Vai al menu utente di Adafruit IO, nel menu Feed. Controlla se i canali dell'impronta digitale e del blocco sono stati creati o meno (nella schermata di stampa sottostante ci sono le linee dell'impronta digitale e del blocco):


Se non esistono, dovrai crearli manualmente.

Ora dobbiamo garantire lo scambio di dati tra l'impronta digitale e i canali di blocco. Il canale di blocco deve assumere il valore "1" quando il canale dell'impronta digitale assume il valore "1" e viceversa.

Per fare ciò, utilizziamo uno strumento Adafruit IO molto potente: i trigger. I trigger sono essenzialmente condizioni che è possibile applicare ai canali configurati. Cioè, possono essere utilizzati per interconnettere due canali.

Crea un nuovo trigger reattivo dalla sezione Trigger in Adafruit IO. Ciò fornirà la possibilità di scambiare dati tra il sensore di impronte digitali e i canali di blocco:


Questo è come dovrebbe apparire quando entrambi i trigger sono configurati:

Tutto! Ora possiamo effettivamente testare il nostro progetto! Mettiamo il dito sul sensore e vediamo come l'Arduino inizia a lampeggiare con un LED che corrisponde alla trasmissione dei dati. Successivamente, il LED sul modulo ESP8266 dovrebbe iniziare a lampeggiare. Ciò significa che ha iniziato a ricevere dati tramite MQTT. In questo momento dovrebbe accendersi anche il LED sulla scheda.

Dopo il ritardo impostato nello schizzo (il valore predefinito è 10 secondi), il LED si spegnerà. Congratulazioni! Puoi controllare il LED con la tua impronta digitale da qualsiasi parte del mondo!

Configurazione di una serratura elettronica

Siamo arrivati ​​all'ultima parte del progetto: collegare e controllare direttamente la serratura elettronica utilizzando Arduino e un sensore di impronte digitali. Il progetto non è semplice, puoi utilizzare tutte le sorgenti nella forma in cui sono presentate sopra, ma collegando un relè anziché un LED.

Per collegare direttamente la serratura avrete bisogno di componenti aggiuntivi: un alimentatore da 12 V, un jack per il collegamento dell'alimentazione, un transistor (V in questo esempio Viene utilizzato il MOSFET IRLB8721PbF, ma è possibile utilizzarne un altro, ad esempio un transistor bipolare TIP102. Se utilizzi un transistor bipolare, dovrai aggiungere un resistore.

Mostrato di seguito schema elettrico collegando tutti i componenti al modulo ESP8266:


Tieni presente che se utilizzi un transistor MOSFET, non avrai bisogno di un resistore tra il pin 5 del modulo ESP8266 e il transistor.

Il progetto completamente assemblato è mostrato nella foto qui sotto:


Alimenta il modulo ESP8266 utilizzando il modulo FTDI e collega l'alimentatore da 12 V al jack. Se hai utilizzato i pin consigliati sopra per la connessione, non dovrai modificare nulla nello schizzo.

Ora puoi mettere il dito sul sensore: il blocco dovrebbe funzionare in risposta alla tua impronta digitale. Il video qui sotto mostra il progetto di serratura intelligente automatica in azione:

Ulteriore sviluppo del progetto Smart Lock

Rilasciato nel nostro progetto telecomando serratura della porta utilizzando l'impronta digitale.

Sentiti libero di sperimentare, modificare lo schizzo e la rilegatura. Ad esempio, puoi sostituire una serratura elettronica con un relè per controllare la potenza della tua stampante 3D, braccio robotico o quadricottero...

Puoi sviluppare il tuo casa intelligente". Ad esempio, attivare da remoto un sistema di irrigazione su Arduino o accendere le luci in una stanza... Non dimenticare che puoi attivare contemporaneamente un numero quasi illimitato di dispositivi utilizzando Adafruit IO.

Lascia i tuoi commenti, domande e condividi esperienza personale sotto. Spesso dalle discussioni nascono nuove idee e progetti!

In questa lezione impareremo come fare sistema semplice, che sbloccherà la serratura tramite una chiave elettronica (Tag).

In futuro, puoi perfezionare ed espandere la funzionalità. Ad esempio, aggiungi la funzione "aggiunta di nuove chiavi e rimozione dalla memoria". Nel caso base, consideriamo un semplice esempio in cui un identificatore di chiave univoco è preimpostato nel codice del programma.

In questo tutorial avremo bisogno di:

Per realizzare il progetto dobbiamo installare le librerie:

2) Ora è necessario collegare un Buzzer, che emetterà un segnale se la chiave funziona e la serratura si apre, e un secondo segnale quando la serratura si chiude.

Colleghiamo il cicalino nella seguente sequenza:

Arduino Cicalino
5 V VCC
GND GND
perno 5 IO

3) Come meccanismo di sblocco verrà utilizzato un servoazionamento. È possibile selezionare qualsiasi servoazionamento, a seconda delle dimensioni richieste e della forza creata dal servoazionamento. Il servo ha 3 contatti:

Puoi vedere più chiaramente come abbiamo collegato tutti i moduli nell'immagine qui sotto:

Ora, se tutto è collegato, puoi procedere alla programmazione.

Schizzo:

#includere #includere #includere // Libreria "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned lungo uidDec, uidDecTemp; // per memorizzare il numero del tag in formato decimale Servo servo; void setup() ( Serial.begin(9600); Serial.println("In attesa della scheda..."); SPI.begin(); // Inizializzazione SPI / Init bus SPI. mfrc522.PCD_Init(); // Inizializzazione MFRC522 / Init MFRC522 card. servo.attach(6); servo.write(0); // imposta il servo sullo stato chiuso) void loop() ( // Cerca una nuova etichetta if (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // Seleziona un'etichetta se (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; numero di serie tag. for (byte i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Diamo un'occhiata allo schizzo più in dettaglio:

Per scoprire l'UID della scheda (Tag), è necessario scrivere questo schizzo in arduino, assemblare il circuito sopra delineato e aprire la Console (Serial Port Monitoring). Quando tocchi il tag RFID, la console visualizzerà un numero

L'UID risultante deve essere inserito nella riga seguente:

Se (uidDec == 3763966293) // Confronta l'Uid del tag, se è uguale a quello indicato, il servoazionamento apre la valvola.

Ogni carta ha un identificatore univoco e non viene ripetuta. Pertanto, quando presenti la carta di cui hai impostato l'identificatore nel programma, il sistema aprirà l'accesso utilizzando un servoazionamento.

Video:

Presentatore canale Youtube Ad "AlexGyver" è stato chiesto di realizzare una serratura elettronica con le proprie mani. Benvenuti nella serie di video sulle serrature elettroniche su arduino. Il maestro spiegherà l'idea in termini generali.

Esistono diverse opzioni per creare un sistema di chiusura elettronica. Molto spesso utilizzato per chiudere porte, cassetti e armadi. E anche per creare nascondigli e casseforti segrete. Pertanto, è necessario creare un layout con cui sia comodo lavorare e che possa mostrare chiaramente e in dettaglio la struttura del sistema dall'interno e dall'esterno. Quindi ho deciso di realizzare una cornice con una porta. Per fare questo avrai bisogno di una trave quadrata 30 x 30. Compensato 10mm. Cardini della porta. Inizialmente volevo realizzare una scatola di compensato, ma mi sono ricordato che la stanza era piena di pezzi di ricambio. Non c'è nessun posto dove mettere una scatola del genere. Verrà quindi realizzato un mock-up. Se qualcuno vuole installare una serratura elettronica per se stesso, guardando il layout può facilmente ripetere tutto.

Troverai tutto il necessario per un castello in questo negozio cinese.

L'obiettivo è sviluppare i circuiti e il firmware più efficienti per le serrature elettroniche. Puoi utilizzare questi risultati per installare questi sistemi su porte, cassetti, armadi e nascondigli.

La porta è pronta. Ora dobbiamo capire come aprire e chiudere elettronicamente. A questi scopi è adatto un potente solenoide di aliexpress (link al negozio sopra). Se applichi tensione ai terminali, si aprirà. La resistenza della bobina è di quasi 12 ohm, il che significa che con una tensione di 12 volt la bobina consumerà circa 1 ampere. Sia una batteria al litio che un modulo boost possono far fronte a questo compito. Regolare la tensione appropriata. Anche se qualcosa in più è possibile. La serratura è fissata a distanza all'interno della porta in modo che non si incastri nel bordo e possa chiudersi di colpo. Il fermo dovrebbe avere una controparte sotto forma di una scatola di metallo. Usarlo senza questo è scomodo e scorretto. Dovremo installare un passaggio, almeno per creare l'apparenza di un normale funzionamento.

In modalità inattiva, la serratura si apre normalmente, ovvero se c'è una maniglia sulla porta, diamo un impulso e apriamo la porta tramite la maniglia. Ma se usi una molla, questo metodo non è più adatto. Il convertitore boost non può far fronte al carico. Per aprire la porta a molla dovrai utilizzare batterie più grandi e un inverter più potente. Oppure utilizza un alimentatore di rete e dimentica l'autonomia del sistema. I negozi cinesi hanno grandi chiusure. Sono adatti per cassetti. L'alimentazione può essere fornita utilizzando un relè o un transistor mosfet oppure un interruttore di alimentazione sullo stesso transistor. Un'opzione più interessante e meno costosa è un servoazionamento collegato a una biella con qualsiasi elemento di bloccaggio: uno scrocco o un bullone più serio. Potrebbe anche essere necessario un pezzo di ferro da calza in acciaio che funga da biella. Un tale sistema non richiede corrente elevata. Ma occupa più spazio e ha una logica di controllo più astuta.

Esistono due tipi di servi. Quelli piccoli e deboli e quelli grandi e potenti che possono essere facilmente spinti nei fori di perni metallici seri. Entrambe le opzioni mostrate funzionano sia su ante che su cassetti. Dovrai armeggiare con la scatola, facendo un buco nella parete retrattile.

Seconda parte

Pubblicazioni sull'argomento