Broasca electronica cu card Arduino. Blocare cu combinație neobișnuită pe Arduino. Dezvoltarea în continuare a proiectului Smart Lock

Arduino este cel mai bun sistem pentru copierea oricărui hardware. Majoritatea ideilor nu s-ar putea realiza fără ea. Există de multă vreme această idee: de a crea o încuietoare cu combinație specială pe Arduino. Pentru a-l deschide, trebuie să țineți apăsată o anumită tastă. În acest caz, încuietoarea nu ar trebui să se deschidă, chiar dacă cunoașteți butonul corect. Pentru a-l deschide, trebuie să menții anumite intervale, folosind memoria musculară. Un criminal nu poate face așa ceva. Dar toate acestea sunt doar o teorie.

Pentru a-l asambla, trebuie să utilizați un dispozitiv special cu impulsuri dreptunghiulare, precum și mai multe contoare și o grămadă. Dar dispozitivul finit ar avea dimensiuni mari de gabarit și ar fi incomod de utilizat. De regulă, astfel de gânduri te bântuie. Primul pas în realizarea visului meu a fost crearea unui program pentru Arduino. Va servi ca încuietoare cu combinație. Pentru a-l deschide, va trebui să apăsați nu o tastă, ci mai multe și să faceți acest lucru simultan. Diagrama finală arată astfel:

Calitatea imaginii nu este cea mai bună, dar conexiunea se face la masă, D3, D5, D7, D9 și D11.

Codul este mai jos:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; octet a = 0; octet b = 0; octet c = 0; octet d = 0; timp lung nesemnat = 0; //nu uitați tot ce ia o valoare millis() unsigned long temp = 0; //stocare în cheie de octeți lungi nesemnați = ( 0, 0, 0, 0, 0, 0, 0, 0); //coduri actuale tasta octetb = (1, 1, 1, 1, 0, 1, 0, 0); tasta octetc = ( 1, 0, 1, 0, 1, 1, 1, 0); octet k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 intrări conectate la butoanele pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); // LED încorporat pe data de 13 pinMode(7, OUTPUT); pinMode(11, OUTPUT); digitalWrite(7, LOW); LED digitalWrite(ledPin, HIGH); digitalWrite(ledPin, HIGH); void loop() // solicită introducerea codului ) dacă (k == 8) ( digitalWrite(ledPin, HIGH); delay(3000); k = 0 ; ) a = digitalRead(ina) //nivelurile de semnal sunt citite de la butoane - apăsate /not apăsat b = digitalRead(inb) delay(100) //next if - protecție împotriva falselor pozitive, nu trebuie să utilizați if((digitalRead(ina) == a)&&(digitalRead(inb) =); =b)&&(digitalRead(inc)==c)) ( dacă (a == tastă[k]) ( dacă (b == tastă[k]) ( dacă (c == tastă[k]) ( k++; ) ) ) ) dacă (k==1) ( dacă (d ==0) ( timp = milis (); d++; ) ) temp = milis(); temp = temp - timp; dacă (temp > 10000) ( k= 0; d=0; timp = milis (; ) )

Pentru a evita întrebările inutile cu privire la cod, unele puncte ar trebui clarificate. Funcția de configurare este utilizată pentru a atribui porturi. Următoarea funcție este Input_Pullup, care este necesară pentru a crește tensiunea pinului cu 5 V. Acest lucru se face folosind un rezistor. Datorită acestui fapt, nu vor apărea diferite scurtcircuite. Pentru un confort sporit, se recomandă utilizarea funcției blinktwice. În general, atunci când creați diferite programe, trebuie să încercați și alte funcții.

După atribuirea funcțiilor, semnalul este citit de la porturi. Dacă butonul este apăsat, acesta va fi indicat cu numărul 1, iar dacă nu, cu 2. În continuare, toate valorile sunt analizate. De exemplu, a apărut o combinație precum 0,1,1. Aceasta înseamnă că prima tastă este apăsată, dar celelalte două nu sunt. Dacă toate valorile sunt adevărate, atunci condiția 8 este, de asemenea, adevărată. Acest lucru este indicat de LED-ul aprins de pe panoul frontal. Apoi, trebuie să introduceți un cod specific care va fi folosit pentru a deschide ușa.

Ultimele elemente ale codului sunt folosite pentru a reseta valorile contorului. Această funcție este efectuată dacă au trecut mai mult de 10 secunde de la ultima apăsare a tastei. Fără acest cod, era posibil să parcurgem toate opțiunile posibile, deși există destul de multe. După crearea acestui dispozitiv, trebuie să-l testați. Mai mult

Gazda canalului YouTube „AlexGyver” a fost rugat să facă o încuietoare electronică cu propriile mâini. Bun venit la seria de videoclipuri despre încuietori electronice pe arduino. Maestrul va explica ideea în termeni generali.

Există mai multe opțiuni pentru crearea unui sistem de blocare electronică. Cel mai adesea folosit pentru a încuia uși, sertare și dulapuri. Și, de asemenea, pentru crearea de cache și seifuri secrete. Prin urmare, trebuie să faceți un aspect care să fie convenabil de lucrat și să arate clar și în detaliu structura sistemului din interior și din exterior. Așa că am decis să fac un cadru cu o ușă. Pentru a face acest lucru veți avea nevoie de o grindă pătrată 30 x 30. Placaj 10mm. Balamale pentru uși. Inițial am vrut să fac o cutie de placaj, dar mi-am amintit că camera era plină de piese de schimb. Nu există unde să pui o astfel de cutie. Prin urmare, se va face o machetă. Dacă cineva dorește să instaleze o încuietoare electronică pentru sine, atunci uitându-se la aspect, poate repeta totul cu ușurință.

Veți găsi tot ce aveți nevoie pentru un castel în acest magazin chinezesc.

Scopul este de a dezvolta cele mai eficiente circuite și firmware pentru încuietori electronice. Puteți utiliza aceste rezultate pentru a instala aceste sisteme pe uși, sertare, dulapuri și ascunzători.


Ușa este gata. Acum trebuie să ne dăm seama cum să deschidem și să închidem electronic. Un dispozitiv de blocare puternic cu solenoid de la aliexpress este potrivit pentru aceste scopuri (link către magazinul de mai sus). Dacă aplicați tensiune la bornele, acesta se va deschide. Rezistența bobinei este de aproape 12 ohmi, ceea ce înseamnă că la o tensiune de 12 volți bobina va consuma aproximativ 1 amper. Atât o baterie cu litiu, cât și un modul de amplificare pot face față acestei sarcini. Ajustați la tensiunea corespunzătoare. Deși puțin mai mult este posibil. Încuietoarea este atașată la interiorul ușii la distanță, astfel încât să nu prindă marginea și să se poată trânti. Încuietoarea ar trebui să aibă o contrapartidă sub forma unei cutii de metal. Folosirea acestuia fără acest lucru este incomod și incorectă. Va trebui să instalăm un pas, cel puțin pentru a crea aspectul de funcționare normală.

În modul inactiv, zăvorul se deschide normal, adică dacă există un mâner pe ușă, aplicăm un impuls și deschidem ușa de mâner. Dar dacă folosești un arc, această metodă nu mai este potrivită. Convertorul de amplificare nu poate face față sarcinii. Pentru a deschide ușa cu arc va trebui să utilizați baterii mai mari și un invertor mai puternic. Sau folosiți o sursă de alimentare de rețea și uitați de autonomia sistemului. Magazinele chinezești au încuietori mari. Sunt potrivite pentru sertare. Alimentarea poate fi furnizată folosind un releu sau un tranzistor mosfet sau un comutator de alimentare pe același tranzistor. O opțiune mai interesantă și mai puțin costisitoare este o servomotor conectată la o biela cu orice element de blocare - un zăvor sau un șurub mai serios. Este posibil să aveți nevoie și de o bucată de ac de tricotat din oțel care să acționeze ca o bielă. Un astfel de sistem nu necesită curent mare. Dar ocupă mai mult spațiu și are o logică de control mai vicleană.

Există două tipuri de servo-uri. Cele mici, slabe și cele mari, puternice, care pot fi împinse cu ușurință în găurile din știfturi de metal serioase. Ambele opțiuni prezentate funcționează atât pe uși, cât și pe sertare. Va trebui să mânuiești cutia, făcând o gaură în peretele retractabil.

A doua parte

S-a întâmplat că la locul de muncă am decis să instalăm o încuietoare cu combinație pe ușa noastră, pentru că alergăm constant - ieșim din birou, ușa căruia ar trebui să fie închisă constant în absența ocupanților. Cheile ajung adesea să fie uitate în interior. În general, am decis că un lacăt cu combinație este o soluție excelentă.

După ce am scotocit prin piețele chinezești de vechituri și pe eBay, nu am găsit nimic ieftin și mai mult sau mai puțin serios și am decis să-l fac eu. Voi spune imediat că platforma Arduino a fost aleasă pentru simplitatea ei, deoarece nu aveam deloc experiență cu microcontrolere.

Idee

Pe exteriorul ușii ar trebui să existe o tastatură pe care să fie introdusă parola, iar restul structurii este fixată în interior. Un comutator lamelă este utilizat pentru a controla închiderea completă a ușii. La ieșirea de la birou, o persoană apasă pe „*” pe tastatură și, fără să aștepte ca ușa să se închidă cu închizătorul, își duce treburile, când ușa este complet închisă, întrerupătorul cu lame se va închide și încuietoarea va fi închisă. . Ușa se deschide introducând o parolă din 4 cifre și apăsând „#”.

Accesorii

Arduino UNO = 18 USD
Arduino protoshield + breadboard = 6 USD
L293D = 1 USD
Pachet de sârmă 30 buc pentru Bradboard = 4 USD
2 prize RJ45 = 4 USD
2 mufe RJ45 = 0,5 USD
actuator inchidere centralizata = 250 rub.
Comutator cu lamelă = smuls liber din vechea fereastră.
Zavor metalic gigant = gratuit
Carcasă dintr-un butuc vechi D-LINK din fier de un milimetru și jumătate = gratuit
Alimentare de la același hub D-LINK pentru 12 și 5V = de asemenea gratuit
O grămadă de șuruburi și piulițe pentru atașarea tuturor acestor lucruri pe corp = 100 de ruble.
Panou de control alarma de securitate = gratuit.

Total: 33,5 USD și 350 de ruble.

Nu chiar atât de puțin, vei spune, și cu siguranță vei avea dreptate, dar trebuie să plătești pentru plăcere! Și este întotdeauna plăcut să asamblați ceva cu propriile mâini. În plus, designul poate fi redus foarte mult în cost dacă utilizați un MK fără Arduino.

Pregătirea pentru asamblare

Aș dori să spun câteva cuvinte despre achiziționarea unui element cheie al designului actuatorului. La un magazin auto local mi-au oferit două tipuri de actuatoare: „cu două fire și cu cinci”. Potrivit vânzătorului, acestea erau absolut identice, iar diferența de numărul de fire nu însemna absolut nimic. Cu toate acestea, după cum sa dovedit mai târziu, nu este așa! Am ales un aparat cu doua fire, era alimentat la 12V. Designul cu cinci fire are întrerupătoare de limită pentru a controla mișcarea pârghiei. Mi-am dat seama că am cumpărat-o pe cea greșită doar când am demontat-o ​​și era prea târziu să-l schimb. Cursa pârghiei s-a dovedit a fi prea scurtă pentru a retrage corect zăvorul, prin urmare, a fost necesar să-l modificați puțin, și anume, îndepărtați două șaibe de cauciuc care au scurtat cursa pârghiei actuatorului. Pentru a face acest lucru, corpul a trebuit să fie tăiat pe lungime cu un ferăstrău obișnuit, deoarece a doua șaibă era înăuntru. Banda electrică albastră, ca întotdeauna, ne-a ajutat în viitor când o asamblam înapoi.
Pentru a controla motorul actuatorului, am folosit un driver de motor L293D, care poate rezista la o sarcină de vârf de până la 1200 mA când am oprit motorul de acţionare, sarcina de vârf a crescut la doar 600 mA;
Contactele de la tastatură, difuzor și două LED-uri au fost scoase din panoul de control al alarmei de securitate. Telecomanda și dispozitivul principal trebuiau conectate folosind perechi răsucite și conectori RJ45

Programare.

Deci, nu am avut experiență în programarea Arduino până acum. Am folosit lucrările altora și articolele de pe site-ul arduino.cc. Oricine este interesat poate arunca o privire la acest cod urât :)

Foto și video



Arduino și actuator


unitate de putere


Tastatura


Espagnolette (conectată la actuator cu o spiță metalică și acoperită cu termocontractabil pentru frumusețe)

Video cu procesul de funcționare a dispozitivului:

În această lecție vom învăța cum să facem un sistem simplu care va debloca o încuietoare folosind o cheie electronică (Tag).

În viitor, puteți rafina și extinde funcționalitatea. De exemplu, adăugați funcția „adăugați chei noi și ștergeți-le din memorie”. În cazul de bază, să luăm în considerare un exemplu simplu în care un identificator unic de cheie este prestabilit în codul programului.

În acest tutorial vom avea nevoie de:

Pentru a implementa proiectul trebuie să instalăm bibliotecile:

2) Acum trebuie să conectați un Buzzer, care va emite un semnal dacă cheia funcționează și încuietoarea se deschide și un al doilea semnal când încuietoarea se închide.

Conectam soneria în următoarea secvență:

Arduino Buzzer
5V VCC
GND GND
pinul 5 IO

3) Ca mecanism de deblocare va fi folosit un servomotor. Orice servomotor poate fi selectat, în funcție de dimensiunea de care aveți nevoie și de forța pe care o creează servomotor. Servoiul are 3 contacte:

Puteți vedea mai clar cum am conectat toate modulele în imaginea de mai jos:

Acum, dacă totul este conectat, puteți trece la programare.

Schiţa:

#include #include #include // Bibliotecă „RFID”. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); nesemnat lung uidDec, uidDecTemp; // pentru a stoca numărul etichetei în format zecimal Servo servo; void setup() ( Serial.begin(9600); Serial.println("Se așteaptă cardul..."); SPI.begin(); // Inițializare SPI / Inițializare magistrală SPI. mfrc522.PCD_Init(); // Inițializare MFRC522 / Init card MFRC522 servo.attach(6); servo.write(0); ( return; ) // Selectați o etichetă dacă (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0 // Afișează numărul de serie al etichetei pentru (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); // устанавливаем серву в закрытое сосотояние }

Să ne uităm la schiță mai detaliat:

Pentru a afla UID-ul cardului (eticheta), trebuie să scrieți această schiță în arduino, să asamblați circuitul descris mai sus și să deschideți Consola (Monitorizarea portului serial). Când atingeți eticheta RFID, consola va afișa un număr

UID-ul rezultat trebuie introdus în următorul rând:

Dacă (uidDec == 3763966293) // Comparați Uid-ul etichetei, dacă este egal cu cel dat, atunci servomotor deschide supapa.

Fiecare card are un identificator unic și nu se repetă. Astfel, atunci când prezentați cardul al cărui identificator l-ați setat în program, sistemul va deschide accesul folosind un servomotor.

Video:

Zilele trecute mă uitam la The Amazing Spider-Man și într-o scenă Peter Parker deschide și închide de la distanță o ușă de pe laptop. De îndată ce am văzut asta, mi-am dat seama imediat că am nevoie și de o astfel de încuietoare electronică pentru ușa mea din față.

După ce m-am jucat, am asamblat un model funcțional de încuietoare inteligentă. În acest articol vă voi spune cum l-am asamblat.

Pasul 1: Lista materialelor





Pentru a asambla o încuietoare electronică pe Arduino veți avea nevoie de următoarele materiale:

Electronica:

  • Adaptor de perete de 5V

Componente:

  • 6 șuruburi de blocare
  • carton
  • fire

Instrumente:

  • fier de lipit
  • pistol de lipici
  • burghiu
  • burghiu
  • burghiu pentru gaura pilot
  • cuțit de papetărie
  • computer cu programul Arduino IDE

Pasul 2: Cum funcționează blocarea

Ideea este că pot deschide sau închide ușa fără cheie și fără să mă apropii de ea. Dar aceasta este doar ideea de bază, pentru că puteți adăuga și un senzor de bătaie, astfel încât să reacționeze la o bătaie specială, sau puteți adăuga un sistem de recunoaștere a vocii!

O pârghie servo conectată la șurub îl va închide (0°) și îl va deschide (60°) folosind comenzile primite prin modulul Bluetooth.

Pasul 3: Diagrama de cablare


Să conectăm mai întâi servo-ul la placa Arduino (rețineți că, deși am folosit o placă Arduino Nano, placa Uno are exact același pinout).

  • Firul maro al servo este împământat, îl conectăm la pământ pe Arduino
  • firul roșu este un plus, îl conectăm la conectorul de 5V de pe Arduino
  • firul portocaliu este pinul sursei servo drive-ului, conectați-l la pinul 9 de pe Arduino

Vă sfătuiesc să verificați funcționarea servo înainte de a continua cu montajul. Pentru a face acest lucru, în programul Arduino IDE, selectați Sweep în exemple. După ce ne asigurăm că servo-ul funcționează, putem conecta modulul Bluetooth. Trebuie să conectați pinul rx al modulului Bluetooth la pinul tx al Arduino și pinul tx al modulului la pinul rx al Arduino. Dar nu o face încă! Odată ce aceste conexiuni sunt lipite, nu veți mai putea încărca niciun cod pe Arduino, așa că descărcați mai întâi toate codurile și abia apoi lipiți conexiunile.

Iată schema de conectare dintre modul și microcontroler:

  • Modul Rx – placa Tx Arduino
  • Modul Tx – placa Rx
  • Vcc (terminalul pozitiv) al modulului este de 3,3v al plăcii Arduino
  • Pământul este conectat la pământ (împământare la împământare)

Dacă explicația vi se pare neclară, vă rugăm să urmați diagrama de cablare furnizată.

Pasul 4: Testați

Acum că avem toate piesele de lucru, să ne asigurăm că servo poate mișca zăvorul. Înainte de a monta zăvorul pe ușă, am asamblat o probă de testare pentru a mă asigura că servo-ul este suficient de puternic. La început mi s-a părut că servo-ul meu este slab și am adăugat o picătură de ulei în zăvor, după care a funcționat bine. Este foarte important ca mecanismul să alunece bine, altfel riști să fii blocat în camera ta.

Pasul 5: Carcasă electrică



Am decis să pun în carcasă doar controlerul și modulul Bluetooth și să las servo afară. Pentru a face acest lucru, desenați conturul plăcii Arduino Nano pe o bucată de carton și adăugați 1 cm de spațiu în jurul perimetrului și decupați-l. După aceasta, decupăm și alte cinci părți ale corpului. Va trebui să tăiați o gaură în peretele frontal pentru cablul de alimentare al controlerului.

Dimensiuni laterale carcasei:

  • Partea de jos – 7,5x4 cm
  • Coperta – 7,5x4 cm
  • Perete lateral stâng – 7,5x4 cm
  • Perete lateral drept – 7,5x4 cm
  • Peretele frontal – 4x4 cm (cu fantă pentru cablul de alimentare)
  • Peretele din spate – 4x4 cm

Pasul 6: Aplicare

Pentru a controla controlerul, aveți nevoie de un gadget Android sau Windows cu Bluetooth încorporat. Nu am avut ocazia să testez aplicația pe dispozitive Apple, poate că vor fi necesare niște drivere.

Sunt sigur că unii dintre voi au ocazia să verifice asta. Pentru Android, descărcați aplicația Bluetooth Terminal, pentru Windows, descărcați TeraTerm. Apoi trebuie să conectați modulul la smartphone, numele ar trebui să fie linvor, parola ar trebui să fie 0000 sau 1234. Odată ce asocierea este stabilită, deschideți aplicația instalată, accesați opțiuni și selectați „Stabiliți o conexiune (nesigură).” Acum smartphone-ul tău este un monitor cu interfață serială Arduino, ceea ce înseamnă că poți face schimb de date cu controlerul.

Dacă introduceți 0, ușa se va închide și mesajul „Ușa este închisă” va apărea pe ecranul smartphone-ului.
Dacă introduceți 1, veți vedea ușa deschisă și pe ecran va apărea „Door Open”.
Pe Windows, procesul este același, cu excepția faptului că trebuie să instalați aplicația TeraTerm.

Pasul 7: Instalați zăvorul


Mai întâi trebuie să conectați servo-ul la zăvor. Pentru a face acest lucru, trebuie să tăiați dopurile din orificiile de montare ale carcasei unității. Dacă punem servo jos, orificiile de montare ar trebui să fie la nivel cu șurubul. Apoi trebuie să plasați pârghia servo în fanta de blocare, unde era mânerul de blocare. Verificați cum se mișcă încuietoarea în corp. Dacă totul este în regulă, fixați brațul servo cu lipici.

Acum trebuie să găuriți găuri pilot pentru șuruburile din ușă. Pentru a face acest lucru, atașați zăvorul la ușă și utilizați un creion pentru a marca găurile pentru șuruburile de pe foaia ușii. Găuriți găuri pentru șuruburi de aproximativ 2,5 cm adâncime în locurile marcate. Atașați zăvorul și fixați-l cu șuruburi. Verificați din nou funcționarea servo.

Pasul 8: Putere


Pentru a finaliza dispozitivul, veți avea nevoie de o sursă de alimentare, un cablu și o mufă mini-usb pentru a vă conecta la Arduino.
Conectați pinul de împământare al sursei de alimentare la pinul de împământare al portului mini USB, conectați firul roșu la firul roșu al portului mini USB, apoi treceți firul de la încuietoare la balamaua ușii și de acolo la priză. .

Pasul 9: Cod

#include Servo myservo; int pos = 0; stare int; int flag=0; void setup() ( myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() ( if(Serial.available() > 0) ( stare = Serial.read(); flag=0; // dacă starea este „0”, motorul de curent continuu se va opri dacă (state == „0”) ( myservo.write(8); delay(1000); Serial. println("Ușă blocată"); else if (stare == "1") ( myservo.write(55); delay(1000); Serial.println("Ușă deblocată"); ) )

Pasul 10: Blocare bazată pe Arduino finalizată

Bucurați-vă de blocarea telecomenzii și nu uitați să vă blocați „în mod accidental” prietenii în cameră.

Încărcare...Încărcare...