Kyçje elektronike inteligjente në Arduino, duke punuar me Bluetooth - dera e përparme si Spiderman. Kyçja automatike "e zgjuar" dhe kyçja e kombinimit elektronik Arduino në Arduino

Ky projekt është modular, d.m.th. mund të aktivizohet/çaktivizohet elemente të ndryshme dhe merrni funksionalitete të ndryshme. Fotografitë e mësipërme tregojnë një variant me funksionalitet të plotë, përkatësisht:

  • mekanizmi mbyllës. Përdoret për HAPJE dhe MBYLLJE të derës. Ky projekt konsideron përdorimin e tre mekanizmave të ndryshëm:
    • Servo. Ka të mëdha, ka të vogla. Shumë kompakt dhe i shoqëruar me një shufër të rëndë - një opsion i shkëlqyeshëm
    • Bllokues elektrik i dyerve te makinave. Një gjë e madhe dhe e fuqishme, por thjesht ha rryma të çmendura
    • Shul solenoid. Një opsion i mirë, pasi mbyllet vetë

    Në cilësimet e firmuerit, mund të zgjidhni cilindo tre lloje(vendosja lloji i bllokimit)

  • Butoni brenda. Përdoret për HAPJE dhe MBYLLJE të derës nga brenda. Mund të vendoset në dorezën e derës (në anën e pëllëmbës ose në anën e gishtit), në vetë derën ose në kapakun
  • Butoni jashtë. Sherben per MBYLLEN e deres, si dhe per zgjimin nga kursimi i energjise. Mund të vendoset në dorezën e derës (në anën e pëllëmbës ose në anën e gishtit), në vetë derën ose në kapakun
  • rimorkio për mbylljen e derës. Shërben për mbylljen automatike të bravës kur dera është e mbyllur. Ato mund të jenë:
    • Butoni i taktit
    • Sensori i sallës + magnet në vetë derën
    • Ndërprerës kallami + magnet në vetë derën
  • sekret butoni i rivendosjes së hyrjes. Përdoret për të rivendosur fjalëkalimin / futur një fjalëkalim të ri / memorizuar një çelës / kombinim të ri, etj. Mund të jetë i fshehur diku në trup
  • Diodë që lëshon dritë për të treguar funksionimin. RGB LED, e kuqe dhe ngjyrat e gjelbra(kur përzihen japin të verdhë):
    • Jeshile ndezur - kyçi është i HAPUR. Ndizet për të kujtuar mbylljen e derës
    • E verdhë e fortë - sistemi është i zgjuar dhe pret një fjalëkalim
    • Ndezje e kuqe - bateri e ulët

Secili prej këtyre elementeve mund të përjashtohet nga sistemi:

  • Ne heqim rimorkio. Në firmware në cilësimet, ne gjithashtu e fikim atë (cilësimi bisht_buton). Tani për të mbyllur bllokimin, duhet të shtypni butonin
  • Hiqni butonin e jashtëm. Në firmware në cilësimet, ne gjithashtu e fikim atë (cilësimi butoni i zgjimit). Tani sistemi nuk ka nevojë të zgjohet, ai zgjohet vetë (konsumi i energjisë është pak më i lartë). Dhe gjithashtu nuk kemi më një buton mbylljeje në pjesën e përparme të derës dhe na duhet një çelës kufiri. Ose kështjella është një dreq
  • Ne heqim butonin e brendshëm. Ky opsion është i përshtatshëm për kabinete dhe kasaforta. Nuk keni nevojë të ndryshoni asgjë në cilësimet.
  • Ne heqim LED. Nuk keni nevojë të ndryshoni asgjë në cilësimet.
  • Butoni i rivendosjes së hyrjes mund të mos ngjitet pas përdorimit të parë, ose mund ta rishkruani kodin për veten tuaj
  • Dera e mbyllur, e shtypur JASHTË - zgjohu, prit për futjen e fjalëkalimit / etiketën RFID / çelësin elektronik / gjurmën e gishtit
  • Dera është e mbyllur, sistemi është zgjuar, duke pritur që të futet fjalëkalimi. Ora mund të caktohet (vendosja Koha per te fjetur)
  • Dera e mbyllur, fjalëkalimi/etiketa/çelësi i futur, etj. - hapur
  • Dera e mbyllur, e shtypur BRENDA - e hapur
  • Dera e hapur, e shtypur JASHTË - mbyll
  • Dera e hapur, e shtypur BRENDA - mbyll
  • Dera është e hapur, çelësi LIMIT shtypet - mbyll

Kyçja është projektuar për të funksionuar me fuqinë e baterisë në modalitetin e kursimit të ulët të energjisë (aktivizo çaktivizimin: cilësimin fle_aktivizo), domethënë:

  • Zgjohuni çdo disa sekonda, ndiqni EVENT (opsionale, nëse nuk ka buton jashtë. Mund ta aktivizoni te cilësimet butoni i zgjimit)
  • Monitoroni tensionin e baterisë çdo disa minuta (cilësimi i ndezjes/fikjes bateri_monitor)
  • Nëse bateria është e shkarkuar (voltazhi është vendosur në cilësim bat_i ulët):
    • hapni derën (opsionale, mund të konfigurohet në firmware hapur_bat_i ulët)
    • ndaloni hapjen dhe mbylljen e mëtejshme
    • ndezje LED e kuqe kur shtypni butonin
    • ndaloni ndjekjen e një NGJARJE (p.sh. futjen/etiketën e fjalëkalimit, etj.)

Kur sistemi është i zgjuar, shtypni butonin e ndryshimit të fjalëkalimit (butoni i fshehur). Ne biem në modaliteti i ndryshimit të fjalëkalimit:
Futni një fjalëkalim nga numrat ( MAKSIMUM 10 NUMRA!!!)

  • Kur shtypni *, fjalëkalimi shkruhet në memorie dhe sistemi del nga ndryshimi i fjalëkalimit
  • Kur shtypni #, fjalëkalimi rivendoset (mund ta futni përsëri)
  • Nëse nuk shtypni asgjë për 10 sekonda, ne do të dalim automatikisht nga modaliteti i ndryshimit të fjalëkalimit, fjalëkalimi do të mbetet i vjetër

Kur sistemi nuk është në gjumë (zgjohet nga butoni ose gjumi është i çaktivizuar), shtypni * për të hyrë në modalitetin e futjes së fjalëkalimit
Nëse sistemi fle dhe zgjohet periodikisht për të kontrolluar EVENT, atëherë shtypni * dhe mbani shtypur derisa të ndizet LED e kuqe
Mënyra e futjes së fjalëkalimit:

  • Trajtimi i fjalëkalimit bëhet në atë mënyrë që fjalëkalimi i saktë të llogaritet vetëm kur shkruani sekuencë e saktë shifra, domethënë nëse fjalëkalimi është 345, atëherë mund të futni çdo numër derisa të shfaqet sekuenca 345, d.m.th. 30984570345 do të hapë bllokimin pasi përfundon në 345.
  • Nëse fjalëkalimi është i saktë, dera do të hapet
  • Nëse nuk shtypni asgjë, pas 10 sekondash sistemi do të kthehet në modalitetin normal (të gatishmërisë).
  • Nëse shtypni #, ne do të dalim menjëherë nga modaliteti i futjes së fjalëkalimit
  • Nëse shtypni butonin sekret për të ndryshuar fjalëkalimin në modalitetin e futjes së fjalëkalimit, atëherë do të dalim edhe prej tij

Progresi nuk qëndron ende dhe “Smart bravë” po shfaqen gjithnjë e më shumë në dyert e banesave, garazheve dhe shtëpive.

Një bllokim i ngjashëm hapet kur shtypni një buton në smartphone tuaj. Për fat të mirë, telefonat inteligjentë dhe tabletët tashmë kanë hyrë në jetën tonë të përditshme. Në disa raste, "bravat inteligjente" janë të lidhura me " shërbimet cloud"si një disk Google dhe hapet nga distanca. Përveç kësaj, ky opsion bën të mundur që t'u jepet akses për hapjen e derës njerëzve të tjerë.

Në këtë projekt, do të zbatohet një version DIY i një bllokuesi inteligjent në Arduino, i cili mund të kontrollohet nga distanca nga kudo në botë.

Përveç kësaj, projekti ka shtuar mundësinë për të hapur bllokimin pas njohjes së gjurmëve të gishtave. Për këtë, do të integrohet një sensor gjurmë gishtash. Të dy opsionet për hapjen e dyerve do të funksionojnë bazuar në platformën Adafruit IO.

Një bravë si kjo mund të jetë një hap i parë i shkëlqyeshëm në projektin tuaj Smart Home.

Konfigurimi i sensorit të gjurmëve të gishtërinjve

Për të punuar me sensorin e gjurmëve të gishtërinjve, ekziston një bibliotekë e shkëlqyer për Arduino, e cila thjeshton shumë procesin e konfigurimit të sensorit. Ky projekt përdor Arduino Uno. Pllaka Adafruit CC3000 përdoret për t'u lidhur me internetin.

Le të fillojmë duke lidhur energjinë:

  • Lidhni kunjin 5V nga bordi Arduino në hekurudhën e kuqe të energjisë;
  • Kunja GND nga Arduino lidhet me hekurudhën blu në bordin e qarkut pa saldim.

Le të kalojmë në lidhjen e sensorit të gjurmës së gishtit:

  • Lidheni fillimisht rrymën. Për ta bërë këtë, teli i kuq është i lidhur me hekurudhën +5 V, dhe teli i zi me hekurudhën GND;
  • Teli i bardhë i sensorit lidhet me pinin 4 në Arduino.
  • Teli jeshil shkon në pin 3 në mikrokontrollues.

Tani le të hedhim një vështrim në modulin CC3000:

  • Lidhni pinin IRQ nga bordi CC3000 me pinin 2 në Arduino.
  • VBAT - në pin 5.
  • CS - në pin 10.
  • Pas kësaj, duhet të lidhni kunjat SPI me Arduino: MOSI, MISO dhe CLK - përkatësisht me kunjat 11, 12 dhe 13.

Dhe së fundi, ju duhet të siguroni energji: Vin - në Arduino 5V (shinë e kuqe në tabelën tuaj të qarkut) dhe GND në GND (hekurudhë blu në tabelën e bukës).

Një foto e projektit të montuar plotësisht është paraqitur më poshtë:

Përpara se të zhvilloni një skicë që do të ngarkojë të dhëna në Adafruit IO, ju duhet t'i kaloni të dhënat e gjurmëve të gishtave te sensori. Përndryshe, ai nuk do t'ju njohë në të ardhmen;). Ne rekomandojmë kalibrimin e sensorit të gjurmëve të gishtërinjve duke përdorur Arduino veçmas. Nëse jeni duke punuar me këtë sensor për herë të parë, ju rekomandojmë të lexoni procesin e kalibrimit dhe udhëzimet e hollësishme për të punuar me sensorin e gjurmëve të gishtërinjve.

Nëse nuk e keni bërë këtë tashmë, atëherë regjistrohuni për një llogari Adafruit IO.

Pas kësaj, ne mund të kalojmë në fazën tjetër të zhvillimit të një "bllokimi inteligjent" në Arduino: domethënë, zhvillimi i një skice që do të transmetojë të dhëna në Adafruit IO. Meqenëse programi është mjaft voluminoz, në artikull do të theksojmë dhe shqyrtojmë vetëm pjesët kryesore të tij, dhe më pas do të japim një lidhje me GitHub, ku mund të shkarkoni skicën e plotë.

Skica fillon duke ngarkuar të gjitha bibliotekat e nevojshme:

#përfshi

#përfshi

#përfshi

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#përfshi

#përfshi >

Pas kësaj, duhet të korrigjoni pak skicën duke futur parametrat e rrjetit tuaj WiFi, duke specifikuar SSID dhe fjalëkalimin (fjalëkalimin):

#define WLAN_SECURITY WLAN_SEC_WPA2>

Përveç kësaj, duhet të futni një emër dhe çelësin AIO (çelësin) për të hyrë në llogarinë tuaj Adafruit IO:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

Linjat e mëposhtme janë përgjegjëse për ndërveprimin dhe përpunimin e të dhënave nga sensori i gjurmëve të gishtërinjve. Nëse sensori është aktivizuar (gjurma e gishtit përputhet), do të jetë "1":

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

Adafruit_MQTT_Publish gjurmë gishtash = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Përveç kësaj, ne duhet të krijojmë një shembull të objektit SoftwareSerial për sensorin tonë:

SoftwareSerial mySerial(3, 4);

Pas kësaj, ne mund të krijojmë një objekt për sensorin tonë:

Adafruit_Fingerprint Gisht = Adafruit_Fingerprint(&mySerial);

Brenda skicës, ne specifikojmë se cili ID i gishtit duhet të aktivizojë bllokimin në të ardhmen. Në këtë shembull, përdoret 0, që korrespondon me ID-në e gjurmës së parë të gishtit të përdorur nga sensori:

int gisht ID = 0;

Pas kësaj, ne inicializojmë numëruesin dhe vonesën (vonesën) në projektin tonë. Në thelb, ne duam që bllokimi të funksionojë automatikisht pas hapjes. Ky shembull përdor një vonesë prej 10 sekondash, por ju mund ta rregulloni këtë vlerë për t'iu përshtatur nevojave tuaja:

int activationCounter = 0;

int lastAktivizimi = 0;

Koha e aktivizimit int = 10 * 1000;

Në trupin e funksionit setup(), ne inicializojmë sensorin e gjurmës së gishtit dhe sigurojmë që çipi CC3000 të jetë i lidhur me rrjetin tuaj WiFi.

Në trupin e funksionit loop(), ne lidhemi me Adafruit IO. Linja e mëposhtme është përgjegjëse për këtë:

Pas lidhjes me platformën Adafruit IO, kontrollojmë gjurmën e fundit të gishtit. Nëse përputhet dhe kyçja nuk është e aktivizuar, ne dërgojmë një "1" në Adafruit IO për përpunim:

nëse (ID-ja e gjurmës së gishtit == ID e gishtit && lockState == e rreme) (

Serial.println(F("Qasja u dha!"));

lockState=e vërtetë;

Serial.println(F("Dështoi"));

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

Aktivizimi i fundit = millis();

Nëse, brenda funksionit loop(), kyçja aktivizohet dhe kemi arritur vlerën e vonesës së treguar më sipër, dërgojmë "0":

nëse ((activationCounter - lastActivation > activationTime) && lockState == e vërtetë) (

lockState=false;

nëse (! gjurma e gishtit.publikoni(shtet)) (

Serial.println(F("Dështoi"));

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

Mund të shkarkoni versionin më të fundit të kodit në GitHub.

Është koha për të testuar projektin tonë! Mos harroni të shkarkoni dhe instaloni të gjitha bibliotekat e kërkuara Arduino!

Sigurohuni që keni bërë të gjitha ndryshimet e nevojshme në skicë dhe ngarkoni atë në Arduino-n tuaj. Pastaj hapni dritaren e monitorit serial.

Kur Arduino lidhet me rrjetin WiFi, sensori i gjurmës së gishtit do të pulsojë me ngjyrë të kuqe. Vendosni gishtin në sensor. Dritarja e monitorit serial duhet të shfaqë numrin ID. Nëse përputhet, do të shfaqet një mesazh, "OK!". Kjo do të thotë që të dhënat janë dërguar në serverët Adafruit IO.

Skema dhe skica për vendosjen e mëtejshme të bllokimit duke përdorur shembullin e një LED

Tani le të merremi me pjesën e projektit që është drejtpërdrejt përgjegjëse për menaxhimin mbyllja e derës. Për t'u lidhur me një rrjet me valë dhe për të aktivizuar/çaktivizuar kyçin, do t'ju duhet modul shtesë Adafruit ESP8266 (Moduli ESP8266 nuk duhet të jetë nga Adafruit). Shembulli i mëposhtëm do t'ju tregojë se sa e lehtë është të komunikoni midis dy platformave (Arduino dhe ESP8266) duke përdorur Adafruit IO.

Në këtë seksion, ne nuk do të punojmë drejtpërdrejt me bllokimin. Në vend të kësaj, ne thjesht do të lidhim LED-in me pinin ku kyçi do të lidhet më vonë. Kjo do të bëjë të mundur testimin e kodit tonë pa u thelluar në specifikat e dizajnit të bllokimit.

Qarku është mjaft i thjeshtë: së pari instaloni ESP8266 në tabelën e bukës. Pastaj instaloni LED. Mos harroni se këmba e gjatë (pozitive) e LED është e lidhur përmes një rezistence. Këmba e dytë e rezistencës është e lidhur me pinin 5 në modulin ESP8266. LED i dytë (katodë) është i lidhur me pinin GND në ESP8266.

Plotësisht qark i montuar treguar në foton më poshtë.


Tani le t'i hedhim një sy skicës që po përdorim për këtë projekt. Përsëri, kodi është mjaft i madh dhe kompleks, kështu që ne do të mbulojmë vetëm pjesët kryesore të tij:

Ne fillojmë duke përfshirë bibliotekat e nevojshme:

#përfshi

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

Konfiguro cilësimet e WiFi:

#define WLAN_SSID "your_wifi_ssid"

#define WLAN_PASS "your_wifi_password"

#define WLAN_SECURITY WLAN_SEC_WPA2

Ne gjithashtu konfigurojmë parametrat Adafruit IO. Njësoj si në seksionin e mëparshëm:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

Ne tregojmë në cilën pin kemi lidhur LED (në të ardhmen do të jetë kyçi ose stafeta jonë):

int relayPin = 5;

Ndërveprimi me sensorin e gjurmëve të gishtërinjve, si në seksionin e mëparshëm:

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

Adafruit_MQTT_Bllokimi i abonimit = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

Në trupin e funksionit setup(), tregojmë se kunja me të cilën është lidhur LED duhet të funksionojë në modalitetin OUTPUT:

pinMode (relayPin, OUTPUT);

Brenda ciklit loop(), së pari kontrollojmë nëse jemi lidhur me Adafruit IO:

Pas kësaj, ne kontrollojmë se çfarë sinjali po vjen. Nëse transmetohet "1", ne aktivizojmë pinin që kemi deklaruar më parë, me të cilin është lidhur LED ynë. Nëse kemi marrë "0", ne e vendosim kontaktin në gjendjen "të ulët":

Adafruit_MQTT_Subscribe *abonim;

ndërsa ((abonim = mqtt.readAbonim(1000))) (

nëse (abonim == &kyç) (

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

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

// Ruaje komandën si të dhëna vargu

Komanda e vargut = String((char *)lock.lastread);

nëse (komandë == "0") (

digitalWrite (relayPin, LOW);

nëse (komandë == "1") (

digitalWrite (relayPin, LARTË);

Gjej Versioni i fundit Ju mund të shikoni skicën në GitHub.

Është koha për të testuar projektin tonë. Mos harroni të shkarkoni të gjitha bibliotekat e nevojshme për Arduino-n tuaj dhe të kontrolloni nëse keni bërë ndryshimet e sakta në skicë.

Një konvertues i thjeshtë USB-FTDI mund të përdoret për të programuar çipin ESP8266.

Ngarkoni skicën në Arduino dhe hapni dritaren e monitorit serial. Aktiv këtë fazë sapo kontrolluam nëse ishim në gjendje të lidheshim me Adafruit IO: do të shikojmë më tej funksionalitetin e disponueshëm.

Testimi i projektit

Tani le të fillojmë testimin! Shkoni te menyja e përdoruesit të Adafruit IO tuaj, në menynë Feeds. Kontrolloni nëse kanalet për gjurmën e gishtit dhe kyçjen janë krijuar apo jo (në ekranin e printimit më poshtë, këto janë linjat e gjurmës së gishtit dhe të kyçjes):


Nëse ato nuk ekzistojnë, do t'ju duhet t'i krijoni ato me dorë.

Tani duhet të sigurojmë shkëmbimin e të dhënave midis gjurmëve të gishtave dhe kanaleve të kyçjes. Kanali i kyçjes duhet të vendoset në "1" kur kanali i gjurmës së gishtit është vendosur në "1" dhe anasjelltas.

Për ta bërë këtë, ne përdorim një mjet shumë të fuqishëm Adafruit IO: nxitësit. Shkaktarët janë në thelb kushte që mund t'i zbatoni për kanalet e konfiguruara. Kjo do të thotë, ato mund të përdoren për të ndërlidhur dy kanale.

Krijoni një shkas të ri reaktiv nga seksioni Triggers në Adafruit IO. Kjo do të sigurojë mundësinë për të shkëmbyer të dhëna midis kanaleve të sensorit të gjurmës së gishtit dhe bllokimit:


Ja se si duhet të duket kur të dy nxitësit janë konfiguruar:

Të gjitha! Tani ne mund ta testojmë vërtet projektin tonë! Vendosëm gishtin në sensor dhe shohim se si Arduino filloi të shkelë syrin me LED, që korrespondon me transferimin e të dhënave. Pas kësaj, LED në modulin ESP8266 duhet të fillojë të pulsojë. Kjo do të thotë se ai filloi të merrte të dhëna përmes MQTT. LED në bordin e qarkut gjithashtu duhet të ndizet në këtë pikë.

Pas vonesës që keni vendosur në skicë (parazgjedhja është 10 sekonda), LED do të fiket. urime! Mund ta kontrolloni LED-in me gjurmën tuaj të gishtit nga kudo në botë!

Vendosja e një bllokimi elektronik

Kemi arritur në pjesën e fundit të projektit: lidhje dhe kontroll direkt mbyllje elektronike Me Arduino dhe një sensor gjurmë gishtash. Projekti nuk është i lehtë, ju mund të përdorni të gjitha burimet në formën në të cilën ato janë paraqitur më lart, por në vend të një LED, lidhni një stafetë.

Për të lidhur bllokimin direkt, do t'ju nevojiten komponentë shtesë: një furnizim me energji 12V, një fole rryme, një transistor (në këtë shembull përdoret një MOSFET IRLB8721PbF, por mund të përdoret një tjetër, si tranzistor bipolar TIP102. Nëse po përdorni një tranzistor bipolar, do t'ju duhet të shtoni një rezistencë.

Treguar me poshte diagrami i qarkut duke lidhur të gjithë komponentët me modulin ESP8266:


Vini re se nëse jeni duke përdorur një MOSFET, nuk do t'ju duhet një rezistencë midis pinit 5 ESP8266 dhe transistorit.

Projekti i montuar plotësisht është paraqitur në foton më poshtë:


Ndizni modulin ESP8266 duke përdorur modulin FTDI dhe lidhni furnizimin me energji 12V me folenë. Nëse keni përdorur kunjat e rekomanduara më sipër për lidhje, nuk do t'ju duhet të ndryshoni asgjë në skicë.

Tani mund të vendosni gishtin në sensor: kyçja duhet të funksionojë në përgjigje të gjurmës suaj të gishtit. Videoja më poshtë tregon projektin e kyçjes automatike inteligjente në veprim:

Zhvillimi i mëtejshëm i projektit Smart Lock

Në projektin tonë të publikuar telekomandë bllokimi i derës me gjurmë gishtash.

Mos ngurroni të eksperimentoni, modifikoni skicën dhe parzmoren. Për shembull, mund të zëvendësoni një bllokues elektronik të derës me një stafetë për të kontrolluar fuqinë e printerit tuaj 3D, krahut robotik ose kuadratit...

Ju mund të zhvilloni tuajin Shtëpi e zgjuar". Për shembull, aktivizoni nga distanca sistemin e ujitjes në Arduino ose ndizni dritën në dhomë ... Mos harroni se mund të aktivizoni njëkohësisht një numër pothuajse të pakufizuar pajisjesh duke përdorur Adafruit IO.

Lini komentet, pyetjet dhe ndani përvojë personale më poshtë. Në diskutim lindin shpesh ide dhe projekte të reja!

Kështu ndodhi që vendosëm të instalonim në punë bllokimi i kodit në derën tonë, sepse, ndërsa vrapojmë vazhdimisht, dalim me vrap nga zyra, dera e së cilës duhet të mbyllet vazhdimisht në mungesë të banorëve. Çelësat shpesh harrohen brenda. Në përgjithësi, ne vendosëm që një bllokim i kombinuar është një rrugëdalje e shkëlqyer.

Pasi gërmova tregjet kineze të pleshtave dhe ebay, nuk gjeta asgjë të lirë dhe pak a shumë serioze dhe vendosa ta bëj vetë. Do të bëj një rezervim menjëherë që platforma Arduino u zgjodh për thjeshtësinë e saj, pasi nuk kishte fare përvojë me mikrokontrolluesit.

Ideja

Në derë me jashtë dera duhet të ketë një tastierë në të cilën futet fjalëkalimi, me brenda fiksoi pjesën tjetër të strukturës. Një çelës kallami përdoret për të kontrolluar mbylljen e plotë të derës. Duke u larguar nga zyra, një person shtyp "*" në tastierë dhe, pa pritur që dera të mbyllet, dera më afër shkon në punë, kur dera mbyllet plotësisht, çelësi i kallamit do të mbyllet dhe bllokimi do të mbyllet. Dera hapet duke futur një fjalëkalim 4-shifror dhe duke shtypur "#".

Aksesorë

Arduino UNO = 18 dollarë
Arduino protoshield + breadboard = 6 dollarë
L293D = 1 dollarë
Pakoja e telave 30 copë për bredboard = 4 dollarë
2 priza RJ45 = 4 dollarë
2 priza RJ45 = 0,5 dollarë
aktivizues mbyllje qendrore= 250 rubla.
Ndërprerës kallami = griset pa pagesë nga dritarja e vjetër.
Espagnolet metalike përmasa gjigante = falas
Këllëf nga një shpërndarës i vjetër D-LINK prej hekuri 1,5 mm = i lirë
Furnizimi me energji elektrike nga i njëjti shpërndarës D-LINK për 12 dhe 5v = gjithashtu falas
Një tufë vida dhe arra për bashkimin e të gjitha këtyre gjërave në kasë = 100 rubla.
Paneli i kontrollit nga alarm hajduti= falas.

Total: 33,5 dollarë dhe 350 rubla.

Jo aq pak, thoni ju, dhe patjetër do të keni të drejtë, por duhet të paguani për kënaqësinë! Dhe është gjithmonë mirë të mbledhësh diçka me duart e tua. Për më tepër, dizajni mund të ulet shumë në çmim nëse përdorni një MK të zhveshur pa një Arduino.

Përgatitja e montimit

Do të doja të them disa fjalë për blerjen element kyç dizajni i aktivizuesit. Në një dyqan automobilistik lokal, më ofruan dy lloje aktivizuesish: "me dy tela dhe me pesë". Sipas shitëses, ato ishin saktësisht të njëjta dhe ndryshimi në numrin e telave nuk do të thoshte absolutisht asgjë. Sidoqoftë, siç doli më vonë, kjo nuk është kështu! Zgjodha një pajisje me dy tela, ajo mundësohej nga 12v. Dizajni me pesë tela përmban çelësa kufizues për të kontrolluar lëvizjen e levës. E kuptova që e bleva të gabuarin vetëm kur e shkëputa dhe ishte tepër vonë për ta ndryshuar. Goditja e levës doli të ishte shumë e shkurtër për të shtyrë siç duhet shulën, prandaj, ishte e nevojshme ta modifikoni pak, domethënë të hiqnin dy rondele gome që shkurtojnë goditjen e levës së aktivizuesit. Për ta bërë këtë, trupi duhej të sharrohej së bashku me një sharrë hekuri të zakonshme, sepse rondele e dytë ishte brenda. Shiriti blu për ne, si gjithmonë, na ndihmoi më vonë kur e montonim përsëri.
Për të kontrolluar motorin e aktivizuesit, u përdor drejtuesi i motorit L293D, i cili mund të përballojë një ngarkesë maksimale deri në 1200 mA, në rastin tonë, kur motori i aktivizuesit u ndal, ngarkesa e pikut u rrit në vetëm 600 mA.
Kontaktet nga tastiera, altoparlanti dhe dy LED u hoqën nga paneli i kontrollit nga alarmi i sigurisë. Telekomanda dhe pajisja kryesore supozohej të lidheshin duke përdorur një çift të përdredhur dhe lidhës RJ45

Programimi.

Pra, pasi nuk kam pasur ndonjë përvojë me programimin Arduino deri më tani. Përfitova nga zhvillimet dhe artikujt e njerëzve të tjerë nga faqja e internetit arduino.cc. Kush kujdeset, mund ta shikojë këtë kod të shëmtuar :)

Foto dhe video



Arduino dhe aktivizues


njësia e fuqisë


Tastierë


Espagnolette (e lidhur me aktivizuesin me një gjilpërë metalike dhe mbi të cilën vendoset tkurrja e nxehtësisë për bukuri)

Video e procesit të funksionimit të pajisjes:

Tutoriali i sotëm ka të bëjë me atë se si të përdorni një lexues RFID me Arduino për të krijuar një sistem të thjeshtë mbylljeje, me fjalë të thjeshta- Kyçja RFID.

RFID (English Radio Frequency IDentification, radiofrequency identification) është një metodë e identifikimit automatik të objekteve në të cilën të dhënat e ruajtura në të ashtuquajturit transponderë, ose etiketa RFID, lexohen ose shkruhen duke përdorur sinjale radio. Çdo sistem RFID përbëhet nga një lexues (lexues, lexues ose pyetës) dhe një transponder (aka etiketë RFID, ndonjëherë përdoret edhe termi etiketë RFID).

Tutoriali do të përdorë një etiketë RFID me një Arduino. Pajisja lexon identifikuesin unik (UID) të çdo etikete RFID që vendosim pranë lexuesit dhe e shfaq atë në ekranin OLED. Nëse UID e etiketës është e barabartë me vlerën e paracaktuar që ruhet në memorien Arduino, atëherë do të shohim mesazhin "Unlocked" në ekran. Nëse identifikuesi unik nuk është i barabartë me vlerën e paracaktuar, mesazhi "E zhbllokuar" nuk do të shfaqet - shihni foton më poshtë.

Kalaja është e mbyllur

Kalaja është e hapur

Detajet e nevojshme për të krijuar këtë projekt:

  • Lexuesi RFID RC522
  • Ekran OLED
  • Tabela e bukës
  • telat

Detaje shtese:

  • Bateria (powerbank)

Kostoja totale e komponentëve të projektit ishte afërsisht 15 dollarë.

Hapi 2: Lexuesi RFID RC522

Çdo etiketë RFID ka një çip të vogël (kartën e bardhë në foto). Nëse drejtoni një elektrik dore në këtë kartë RFID, mund të shihni një çip të vogël dhe një spirale që e rrethon atë. Ky çip nuk ka një bateri për të gjeneruar energji. Ai merr energji nga lexuesi me valë duke përdorur këtë spirale të madhe. Është e mundur të lexoni një kartë RFID si kjo deri në 20 mm larg.

I njëjti çip ekziston në etiketat e çelësave RFID.

Çdo etiketë RFID ka një numër unik që e identifikon atë. Ky është UID që shfaqet në ekranin OLED. Me përjashtim të këtij UID, çdo etiketë mund të ruajë të dhëna. Kjo lloj karte mund të ruajë deri në 1000 të dhëna. Impresionuese, apo jo? Kjo veçori nuk do të përdoret sot. Sot, gjithçka që është me interes është identifikimi i një karte të veçantë nga UID e saj. Lexuesi RFID dhe këto dy karta RFID kushtojnë rreth 4 dollarë.

Hapi 3 Ekrani OLED

Tutoriali përdor një monitor OLED 0,96" 128x64 I2C.

Ky është një ekran shumë i mirë për t'u përdorur me Arduino. Është një ekran OLED dhe kjo do të thotë se ka konsum të ulët të energjisë. Konsumi i energjisë i këtij ekrani është rreth 10-20 mA dhe varet nga numri i pikselëve.

Ekrani ka një rezolucion prej 128 me 64 piksele dhe ka përmasa të vogla. Ekzistojnë dy opsione të shfaqjes. Njëra prej tyre është pikturë njëngjyrëshe, dhe tjetra, si ajo e përdorur në tutorial, mund të shfaqë dy ngjyra: të verdhë dhe blu. Pjesa e sipërme ekrani mund të jetë vetëm i verdhë, dhe Pjesa e poshtme- blu.

Ky ekran OLED është shumë i ndritshëm dhe ka një bibliotekë të shkëlqyer dhe shumë të bukur që Adafruit ka zhvilluar për këtë ekran. Përveç kësaj, ekrani përdor një ndërfaqe I2C, kështu që lidhja me Arduino është tepër e lehtë.

Ju duhet të lidhni vetëm dy tela përveç Vcc dhe GND. Nëse jeni i ri në Arduino dhe dëshironi të përdorni një ekran të lirë dhe të thjeshtë në projektin tuaj, ky është vendi për të filluar.

Hapi 4: Vendosja e të gjitha pjesëve së bashku

Komunikimi me bordin Arduino Uno është shumë i thjeshtë. Së pari, lidhni energjinë me lexuesin dhe ekranin.

Kini kujdes, lexuesi RFID duhet të lidhet me daljen 3.3V nga Arduino Uno ose do të dëmtohet.

Meqenëse ekrani mund të funksionojë edhe në 3,3 V, ne e lidhim VCC-në nga të dy modulet me hekurudhën pozitive të tabelës së bukës. Ky hekurudhë më pas lidhet me daljen 3.3 V nga Arduino Uno. Më pas i lidhim të dy bazat (GND) me autobusin e tokëzimit të tabelës së bukës. Më pas lidhim autobusin GND të tabelës së bukës me Arduino GND.

Ekrani OLED → Arduino

SCL → Pin analog 5

SDA → Pin analog 4

Lexuesi RFID → Arduino

RST → Pin dixhital 9

IRQ → Nuk është i lidhur

MISO → Pin dixhital 12

MOSI → Pin dixhital 11

SCK → Pin dixhital 13

SDA → Pin dixhital 10

Moduli i lexuesit RFID përdor ndërfaqen SPI për të komunikuar me Arduino. Pra, ne do të përdorim kunjat SPI të harduerit Arduino UNO.

Pini RST shkon në pinin dixhital 9. Pini IRQ mbetet i shkëputur. Pini MISO shkon te kunja dixhitale 12. Pini MOSI shkon te kunja dixhitale 11. Pini SCK shkon te kunja dixhitale 13 dhe më në fund kunja SDA shkon te kunja dixhitale 10. Kjo është ajo.

Lidhur lexues RFID. Tani duhet të lidhim ekranin OLED me Arduino duke përdorur ndërfaqen I2C. Pra, kunja SCL në ekran shkon në pinin analog 5 dhe SDA në ekran në pinin analog 4. Nëse tani e ndezim projektin dhe vendosim kartën RFID pranë lexuesit, mund të shohim se projekti po funksionon mirë.

Hapi 5: Kodi i projektit

Në mënyrë që kodi i projektit të kompilohet, duhet të përfshijmë disa biblioteka. Para së gjithash, na duhet biblioteka MFRC522 Rfid.

Për ta instaluar, shkoni te Skica -> Përfshi bibliotekat -> Menaxho bibliotekat(Menaxhimi i bibliotekave). Gjeni MFRC522 dhe instaloni atë.

Ne gjithashtu kemi nevojë për bibliotekën Adafruit SSD1306 dhe bibliotekën Adafruit GFX për shfaqje.

Instaloni të dy bibliotekat. Biblioteka Adafruit SSD1306 ka nevojë për një modifikim të vogël. Shkoni te dosja Arduino -> Bibliotekat, hapni dosjen Adafruit SSD1306 dhe modifikoni bibliotekën Adafruit_SSD1306.h. Komentoni rreshtin 70 dhe hiqni komentin 69 sepse Ekrani ka një rezolucion prej 128x64.

Së pari, ne deklarojmë vlerën e etiketës RFID që Arduino duhet të njohë. Ky është një grup numrash të plotë:

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

Më pas inicializojmë lexuesin RFID dhe shfaqim:

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

Pas kësaj, në funksionin e ciklit, ne kontrollojmë etiketën në lexues çdo 100 ms.

Nëse lexuesi ka një etiketë, ne lexojmë UID-in e tij dhe e printojmë atë në ekran. Më pas krahasojmë UID-në e etiketës që sapo lexuam me vlerën e ruajtur në variablin e kodit. Nëse vlerat janë të njëjta, ne shfaqim mesazhin UNLOCK, përndryshe nuk do ta shfaqim këtë mesazh.

If(match) ( Serial.println ("\nE njoh këtë kartë!"); printUnlockMessage(); )else ( Serial.println ("\nKartë e panjohur"); )

Sigurisht, ju mund ta ndryshoni këtë kod për të ruajtur më shumë se 1 vlerë UID në mënyrë që projekti të njohë më shumë etiketa RFID. Ky është vetëm një shembull.

Kodi i projektit:

#përfshi #përfshi #përfshi #përfshi #define OLED_RESET 4 Ekran Adafruit_SSD1306(OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instancë e klasës MFRC522:: MIFARE_Key kyç; kodi int = (69,141,8,136); //Ky është kodi int i UID-it të ruajturRead = 0; String uidString; void setup() ( Serial.begin(9600); SPI.begin(); // Nis autobusin SPI rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializoj me shtuesin I2C 0x3D (për 128x64) // Pastro buffer.display.clearDisplay(); display.display(); display.setTextColor(BARDH); // ose BLACK); display.setTextSize(2); display.setCursor(10,0); display.print ("RFID Lock"); shfaq.shfaq (); ) void loop() ( if(rfid.PICC_IsNewCardPresent()) ( readRFID(); ) vonesë(100); ) void readRFID() (rfid.PICC_ReadCardSerial(); Serial.print(F("\nLloji PICC: ") ); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Kontrollo nëse është PICC e tipit MIFARE klasike nëse (piccType:MIN_PEIFPy!2=MIFARE) && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) ( Serial.println(F("Etiketa juaj nuk është e tipit MIFARE Classic.")); kthe; ) ) clearUIDn(); UID i skanuar i PICC:"); printDec(rfid.uid.uidByte, rfid.uid.size); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte); printUID(); int i = 0; përputhje boolean = e vërtetë; ndërsa (i

Hapi 6: Rezultati përfundimtar

Siç mund ta shihni nga mësimi - për pak para mund të shtoni një lexues RFID në projektet tuaja. Mund të krijoni lehtësisht një sistem sigurie me këtë lexues ose të krijoni projekte më interesante, për shembull, në mënyrë që të dhënat nga një disk USB të lexohen vetëm pas shkyçjes.

Në këtë artikull do t'ju tregoj se si të bëni një bllokim kombinimi nga arduino. Për ta bërë këtë, na duhen LED të kuqe dhe jeshile, një sinjalizues, një arduino nano, një ekran LCD me një konvertues I2C, një servo drive dhe një tastierë matricë 4x4. Kur aktivizohet, ekrani do të shkruajë "Fut kodin".

LED i kuq do të ndizet,

dhe jeshilja fiket, servo do të vendoset në 0°. Kur futen numrat, * do të ndizet në ekran.

Nëse kodi është futur gabimisht, në ekran do të shfaqet "Fut kodin". Nëse kodi është i saktë, do të dëgjohet një bip, servo do të kthehet 180°, ekrani do të lexojë "Open".

LED jeshil do të ndizet,

dhe e kuqja do të fiket. Pas 3 sekondash, servo do të kthehet në pozicionin e tij fillestar, LED i kuq do të ndizet dhe LED i gjelbër do të fiket, ekrani do të shkruajë "Mbyll".

atëherë ekrani do të shkruajë "Fut kodin". Tani për skemën. Së pari, ne lidhim arduino me tela në tabelën e bukës (kontaktet e fuqisë).

Pastaj lidhim një tastierë matricë me kontaktet D9 - D2.

Pastaj servo. E lidhim me pinin 10.

LED i kuq në pinin 11.

E gjelbër - në pin 12.

Buzzer - në pin 13.

Tani ngarkoni skicën.

#përfshi #përfshi #përfshi #përfshi iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C LCD (0x27, 16, 2); Servo servo kalimi int = (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, LARTË ); servo.attach (10); servo.write (0); lcd.setCursor (0, 0); ) void loop () ( lcd.clear (); lcd.print ("Fut kodin."); ndërsa ( !KB.check(KEY_DOWN)) ( vonesë (1); ) në = KB.getNum; lcd.clear(); lcd.setCursor(0, 0); lcd.print("*"); ndërsa (!KB. kontrolloni (KEY_DOWN)) ( vonesë (1); ) në = KB.getNum; lcd.print ("*"); ndërsa (!KB.kontroll(KEY_DOWN)) ( vonesë (1); ) në = KB.getNum; lcd.print ("*"); ndërsa (!KB.check(KEY_DOWN)) ( vonesë (1); ) në = KB.getNum; lcd.print ("*"); nëse (në == kalojë) (nëse (në == kaloj) ( if (në == kaloj) ( nëse (në == kaloj) ( lcd.clear(); lcd.setCursor(0, 0); lcd.print("Open"); ton( 13, 400, 750); servo.write (180); dixhitalWrite(r, LOW); DigitalWrite(g, LARTË); vonesë (3000); lcd.clear (); lcd.setCursor(0, 0); LCD. print ("Mbyll"); ton (13, 300, 700); servo.write (0); dixhital Shkrimi (g, LOW); dixhital Shkrimi (r, LARTË); vonesë (1000); ))))))

Kjo eshte e gjitha. Shijo bllokimin e kodit!

Lista e elementeve të radios

Emërtimi Lloji Emërtimi sasi shënimDyqanblloku im i shënimeve
E1 Pllaka Arduino

Arduino Nano 3.0

1 5 V Në bllokun e shënimeve
E8, E9 Rezistencë

220 ohm

2 smd Në bllokun e shënimeve
E6 Diodë që lëshon dritë

AL102G

1 E kuqe Në bllokun e shënimeve
E7 Diodë që lëshon dritë

AL307G

1 E gjelbër Në bllokun e shënimeve
E3 Ekran LCDMe ndërfaqe I2C1 Drita e pasme e gjelbër Në bllokun e shënimeve
E5 ServoSG901 180 gradë Në bllokun e shënimeve
E2 Buzzer5 V1 Bu Në bllokun e shënimeve
E4 Tastierë4X41 matricë Në bllokun e shënimeve
Nr Breadboard640 pikë1 pa saldim