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

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

  • Mekanizmi i mbylljes. Shërben për HAPJE dhe MBYLLJE të derës. Ky projekt eksploron 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ëlqyer
    • Bllokues elektrik i dyerve te makinave. Është një gjë e madhe dhe e fuqishme, por konsumon rryma të çmendura.
    • Shul solenoid. Një opsion i mirë, sepse mbyllet vetvetiu

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

  • Butoni brenda. Shërben 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ë. Shërben për MBYLLJE të derës, si dhe për ZGJIM për të kursyer energji. 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ë kallëp
  • Kapaku i fundit për të mbyllur derën. Shërben për të mbyllur automatikisht bllokimin kur dera është e mbyllur. Mund te jete:
    • 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 / për të futur një fjalëkalim të ri / për të kujtuar një çelës / kombinim të ri, etj. Mund të fshihet diku në rast
  • Diodë që lëshon dritë për të treguar funksionimin. RGB LED, e kuqe dhe ngjyrat e gjelbra(kur përzihen japin të verdhë):
    • Drita jeshile është ndezur - bllokimi është HAPUR. Ndizet që të mos harroni të mbyllni derën
    • E verdha është ndezur - sistemi është zgjuar dhe pret që të futet një fjalëkalim
    • Ndezje e kuqe - bateri e ulët

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

  • Ne heqim çelësin e kufirit. Në firmware në cilësimet, ne gjithashtu e çaktivizojmë atë (cilësimin bisht_buton). Tani duhet të shtypni një buton për të mbyllur bllokimin.
  • Hiqni butonin e jashtëm. Në firmware në cilësimet, ne gjithashtu e çaktivizojmë atë (cilësimin butoni i zgjimit). Tani sistemi nuk ka nevojë të zgjohet, ai zgjohet vetë (konsumi i energjisë është pak më i lartë). Dhe tani nuk kemi një buton mbylljeje në pjesën e përparme të derës dhe na duhet një çelës kufiri. Ose bllokimi është një shul
  • Hiqni 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 kodi mund të rishkruhet për t'iu përshtatur nevojave tuaja
  • Dera e mbyllur, shtyp OUTSIDE - zgjohu, prit për fjalëkalimin / etiketën RFID / çelësin elektronik / hyrjen e gjurmës së gishtit
  • Dera është e mbyllur, sistemi është zgjuar, duke pritur që të futet fjalëkalimi. Koha mund të rregullohet (cilësimi Koha per te fjetur)
  • Dera është e mbyllur, është futur një fjalëkalim/etiketë/çelës etj. - hapur
  • Dera është e mbyllur, shtypni BRENDA - hapur
  • Dera është e hapur, shtypni JASHTË - mbyllni
  • Dera është e hapur, shtypni BRENDA - mbyllni
  • Dera është e hapur, LIMIT shtypet - mbyll

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

  • Zgjohuni çdo disa sekonda, monitoroni 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 (tensioni ë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
    • Kur shtypni një buton, LED i kuq pulson
    • ndaloni monitorimin e EVENT (p.sh. futja/etiketa e fjalëkalimit, etj.)

Kur sistemi nuk është në gjumë, shtypni butonin e ndryshimit të fjalëkalimit (butoni i fshehur). Ne e gjejmë veten në modaliteti i ndryshimit të fjalëkalimit:
Futni një fjalëkalim të përbërë nga numra ( MAKSIMUM 10 SHIFRA!!!)

  • 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 i vjetër do të mbetet

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 mbajeni derisa të ndizet LED e kuqe
Mënyra e fjalëkalimit:

  • Përpunimi i fjalëkalimit bëhet në atë mënyrë që fjalëkalimi i saktë të llogaritet vetëm kur shkruani sekuencë e saktë numrat, 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 sepse përfundon në 345.
  • Nëse fjalëkalimi është futur 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 mënyra e futjes së fjalëkalimit
  • Nëse shtypni butonin e ndryshimit të fjalëkalimit sekret në modalitetin e futjes së fjalëkalimit, do të dilni gjithashtu prej tij

Progresi nuk qëndron ende dhe “brava inteligjente” po shfaqen gjithnjë e më shumë në dyert e apartamenteve, 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"Pëlqeni Google Drive dhe hapeni atë nga distanca. Përveç kësaj, ky opsion bën të mundur dhënien e aksesit për hapjen e derës për njerëzit e tjerë.

Ky projekt do të zbatojë një version DIY të një bllokimi 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 identifikimit të një gjurmë gishti. Për këtë qëllim, do të integrohet një sensor gjurmë gishtash. Të dy opsionet e hapjes së dyerve do të mundësohen nga platforma 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 një sensor gjurmë gishtash, ekziston një bibliotekë e shkëlqyer për Arduino, e cila thjeshton shumë procesin e konfigurimit të sensorit. Ky projekt përdor Arduino Uno. Një tabelë Adafruit CC3000 përdoret për t'u lidhur me internetin.

Le të fillojmë me lidhjen e energjisë:

  • 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ëve të gishtërinjve:

  • Së pari lidhni 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ë kalojmë te moduli CC3000:

  • Ne lidhim 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.

Epo, në fund ju duhet të siguroni energji: Vin - në Arduino 5V (shinë e kuqe në bordin 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ënat në Adafruit IO, duhet të transferoni të dhënat në lidhje me gjurmën e gishtit në sensor. 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 kjo është hera e parë që punoni me këtë sensor, ju rekomandojmë të njiheni me 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ë tashmë këtë, ju lutemi krijoni një llogari me 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ë këtë artikull do të theksojmë dhe do të shqyrtojmë vetëm pjesët kryesore të tij, dhe më pas do të ofrojmë 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:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Për më tepër, duhet të futni emrin tuaj dhe çelësin AIO për t'u identifikuar 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 Gishti = Adafruit_Fingerprint(&mySerial);

Brenda skicës tregojmë se cili ID i gishtit duhet të aktivizojë bllokimin në të ardhmen. Ky shembull përdor 0, që korrespondon me ID-në e gjurmës së parë të gishtit të përdorur nga sensori:

int ID e gishtit = 0;

Pas kësaj, ne inicializojmë numëruesin dhe vonojmë në projektin tonë. Në thelb ne duam që bllokimi të përfshihet automatikisht pasi të hapet. 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() 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 bllokimi nuk aktivizohet, ne dërgojmë "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 nevojshme për Arduino!

Sigurohuni që keni bërë të gjitha ndryshimet e nevojshme në skicë dhe ngarkoni atë në Arduino-n tuaj. Pas kësaj, hapni dritaren e Monitorit Serial.

Kur Arduino lidhet me rrjetin WiFi, sensori i gjurmës së gishtit do të fillojë të pulsojë me ngjyrë të kuqe. Vendoseni gishtin në sensor. Numri i ID-së duhet të shfaqet në dritaren e monitorit serial. Nëse përputhet, do të shfaqet mesazhi "OK!" Kjo do të thotë që të dhënat janë dërguar në serverët Adafruit IO.

Diagrami dhe skica për konfigurimin e mëtejshëm të bllokimit duke përdorur shembullin e një LED

Tani le të merremi me atë pjesë të 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çjen që ju nevojitet modul shtesë Adafruit ESP8266 (moduli ESP8266 nuk duhet të jetë nga Adafruit). Duke përdorur shembullin më poshtë, mund të vlerësoni se sa e lehtë është shkëmbimi i të dhënave midis dy platformave (Arduino dhe ESP8266) duke përdorur Adafruit IO.

Në këtë seksion nuk do të punojmë drejtpërdrejt me bllokimin. Në vend të kësaj, ne thjesht do të lidhim LED-in me pinin ku do të lidhet kyçi më vonë. Kjo do të na japë mundësinë të testojmë kodin tonë pa u thelluar në detajet e dizajnit të bravës.

Skema është mjaft e thjeshtë: së pari instaloni ESP8266 në tabelën e bukës. Pas kësaj, 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. Ne e lidhim të dytën (katodën) e LED me pinin GND në ESP8266.

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


Tani le të shohim skicën 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ë shikojmë vetëm pjesët kryesore të tij:

Ne fillojmë duke lidhur bibliotekat e nevojshme:

#përfshi

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

Konfigurimi i cilësimeve 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ë se me cilin pin kemi lidhur LED (në të ardhmen kjo 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 të lidhur me Adafruit IO:

Pas kësaj, ne kontrollojmë se çfarë sinjali po merret. Nëse transmetohet "1", ne aktivizojmë pinin që kemi deklaruar më herët, me të cilin është lidhur LED ynë. Nëse marrim "0", ne e transferojmë kontaktin në gjendjen "e 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 në të dhënat e vargut

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 Skicën mund ta gjeni 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ë.

Për të programuar çipin ESP8266, mund të përdorni një konvertues të thjeshtë USB-FTDI.

Ngarkoni skicën në Arduino dhe hapni dritaren e Monitorit Serial. Aktiv në 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, nën menunë Feeds. Kontrolloni nëse gjurmët e gishtërinjve dhe kanalet e kyçjes 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ë marrë vlerën "1" kur kanali i gjurmës së gishtit merr vlerë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 sensorit të gjurmës së gishtit dhe kanaleve të kyçjes:


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

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

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 direkte dhe kontroll. mbyllje elektronike Me duke përdorur 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 lidhni një stafetë në vend të një LED.

Për të lidhur drejtpërdrejt bllokimin, do t'ju nevojiten përbërës shtesë: një furnizim me energji 12 V, një fole për lidhjen e energjisë, një transistor (në këtë shembull përdoret një MOSFET IRLB8721PbF, por mund të përdorni një tjetër, për shembull, një tranzistor bipolar TIP102 Nëse jeni duke përdorur një transistor bipolar, do t'ju duhet të shtoni një rezistencë.

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


Vini re se nëse përdorni një transistor MOSFET, nuk do t'ju duhet një rezistencë midis pinit 5 të modulit ESP8266 dhe tranzitorit.

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


Fuqni 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

Lëshuar në projektin tonë telekomandë bllokimi i derës duke përdorur gjurmën tuaj të gishtit.

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

Ju mund të zhvilloni tuajin Shtëpi e zgjuar". Për shembull, aktivizoni nga distanca një sistem ujitjeje në Arduino ose ndizni dritat në një 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ë. Idetë dhe projektet e reja lindin shpesh në diskutime!

Kështu ndodhi që vendosëm të instalonim në punë bllokimi i kombinimit në derën tonë, sepse ne vazhdimisht vrapojmë - dalim nga zyra, dera e së cilës duhet të mbyllet vazhdimisht në mungesë të banorëve. Çelësat shpesh përfundojnë të harruar brenda. Në përgjithësi, ne vendosëm që një bllokim i kombinuar ishte një zgjidhje e shkëlqyeshme.

Duke gërmuar nëpër tregjet kineze të pleshtave dhe ebay, nuk gjeta asgjë të lirë dhe pak a shumë serioze dhe vendosa ta bëj vetë. Unë do të them menjëherë se platforma Arduino u zgjodh për thjeshtësinë e saj, pasi nuk kisha 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 pjesa tjetër e strukturës është e fiksuar. Një çelës kallami përdoret për të kontrolluar mbylljen e plotë të derës. Kur del nga zyra, një person shtyp "*" në tastierë dhe, pa pritur që dera të mbyllet me mbyllësin, shkon në punë, kur dera mbyllet plotësisht, çelësi i kallamit do të mbyllet dhe do të mbyllet kyçi. . 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ë
Pako me tela 30 copë për Bradboard = 4 dollarë
2 priza RJ45 = 4 dollarë
2 priza RJ45 = 0,5 dollarë
aktivizues mbyllje qendrore= 250 fshij.
Ndërprerës kallami = i shqyer lirisht nga dritarja e vjetër.
Shul gjigant metalik = i lirë
Strehimi nga një shpërndarës i vjetër D-LINK prej hekuri një milimetër e gjysmë = falas
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 ngjitjen e të gjitha këtyre gjërave në trup = 100 rubla.
Telekomanda nga alarm hajduti= falas.

Total: 33,5 dollarë dhe 350 rubla.

Jo aq pak, do të thoni, 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ë kosto nëse përdorni një MK të zhveshur pa Arduino.

Përgatitja për montim

Do të doja të them disa fjalë për blerjen element kyç dizenjot e aktivizuesit. Një dyqan lokal makinash më ofroi dy lloje aktivizuesish: "me dy tela dhe me pesë". Sipas shitëses, ato ishin absolutisht identike 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 12 V. 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ë tërhequr siç duhet shulën, prandaj, ishte e nevojshme ta modifikoni pak, përkatësisht, të hiqni dy rondele gome që shkurtuan goditjen e levës së aktivizuesit. Për ta bërë këtë, trupi duhej sharruar për së gjati me një sharrë hekuri të zakonshme, sepse rondele e dytë ishte brenda. Shiriti elektrik blu, si gjithmonë, na ndihmoi në të ardhmen gjatë montimit të tij.
Për të kontrolluar motorin e aktivizuesit, ne përdorëm një drejtues motori L293D, i cili mund të përballojë një ngarkesë maksimale deri në 1200 mA kur ndaluam motorin e aktivizuesit, ngarkesa e pikut u rrit në vetëm 600 mA.
Kontaktet nga tastiera, altoparlanti dhe dy LED u hoqën nga paneli i kontrollit të alarmit të sigurisë. Telekomanda dhe pajisja kryesore supozohej të lidheshin duke përdorur lidhje të çiftit të përdredhur dhe RJ45

Programimi.

Pra, nuk kisha përvojë në programimin e Arduino deri më tani. Kam përdorur punimet dhe artikujt e të tjerëve nga faqja arduino.cc. Të gjithë të interesuarit mund t'i hedhin një sy këtij kodi të shëmtuar :)

Foto dhe video



Arduino dhe aktivizues


njësia e fuqisë


Tastierë


Espagnolette (e lidhur me aktivizuesin me një fole metalike dhe e mbuluar me tkurrje nxehtësie për bukuri)

Video e procesit të funksionimit të pajisjes:

Mësimi i sotëm është 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ë pajisje leximi (lexues, lexues ose pyetës) dhe një transponder (i njohur gjithashtu si etiketë RFID, ndonjëherë përdoret edhe termi etiketë RFID).

Ky tutorial do të përdorë një etiketë RFID me 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 ID unike nuk është e barabartë me një vlerë të paracaktuar, mesazhi "E zhbllokuar" nuk do të shfaqet - shihni foton më poshtë.

Kalaja është e mbyllur

Kyçja është e hapur

Pjesët 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 përmban një çip të vogël (kartë e bardhë e treguar në foto). Nëse ndriçoni një elektrik dore në këtë kartë RFID, mund të shihni çipin e vogël dhe spiralen 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 edhe 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. Përveç këtij UID, çdo etiketë mund të ruajë të dhëna. Kjo lloj karte mund të ruajë deri në 1 mijë 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 specifike nga UID e saj. Kostoja e lexuesit RFID dhe këtyre dy kartave RFID është rreth 4 dollarë.

Hapi 3: Ekrani OLED

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

Ky është një ekran shumë i mirë për t'u përdorur me Arduino. Ky ë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ë mësim, 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, filloni këtu.

Hapi 4: Lidhja e të gjitha pjesëve

Komunikimi me bordin Arduino Uno është shumë i thjeshtë. Së pari, le të lidhim 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 shiritin pozitiv të tabelës së bukës. Ky autobus më pas lidhet me daljen 3.3V 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 → Pini 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 nga 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.

Lexuesi RFID është i lidhur. Tani duhet të lidhim ekranin OLED me Arduino duke përdorur ndërfaqen I2C. Pra, kunja SCL në ekran shkon te kunja analoge e pinit 5 dhe kunja SDA në ekran te kunja analoge 4. Nëse tani e ndezim projektin dhe e vendosim kartën RFID pranë lexuesit, mund të shohim se projekti punon 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 Bibliotekës). 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 anuloni rreshtin 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

Pastaj ne inicializojmë lexuesin RFID dhe shfaqim:

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

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

Nëse ka një etiketë në lexues, 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 që ruhet në variablin e kodit. Nëse vlerat janë të njëjta, ne do të 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) // Pastrojeni ekranin.clearDisplay(); 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) ::PICC_TYPE_MIFARE_4K) (Serial .println("Etiketa juaj nuk është e tipit MIFARE Classic.") clearUID(Scanned PICC"s UID:"); uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+ String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte() përputhje logjike = e vërtetë;

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 duke përdorur 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 këtë na duhen LED të kuqe dhe jeshile, një sinjalizues, një nano Arduino, 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 drita jeshile do të fiket, servo do të vendoset në 0°. Ndërsa futni numra, * do të ndizet në ekran.

Nëse kodi është futur gabimisht, ekrani do të shkruajë "Fut kodin". Nëse kodi është i saktë, do të bjerë një bip, servo do të rrotullohet 180° dhe 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 tastierën e matricës 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), lcd.setCursor (0, 0), void loop(); (vonesa (1); ) në = KB.setNum (0, 0) (Key_DOWN); ) në = KB.getNum ("*"); (!KB.kontroll(KEY_DOWN)) ( vonesë (1); ) në = KB.getNum ("*"), ndërsa (!KB.kontroll(KEY_DOWN)) (vonesë(1); ) në = KB.getNum("*"); (0, 0), lcd.print ("Open"); ."); ton (13, 300, 700); shkruaj dixhital (g, LOW); vonesë (1000); ))))))

Kjo eshte e gjitha. Shijoni bllokimin e kombinimit!

Lista e radioelementeve

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 Nuk ka saldim