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
Kjo eshte e gjitha. Shijoni kyçjen e kodit!
Lista e elementeve të radios
Emërtimi | Lloji | Emërtimi | sasi | shënim | Dyqan | blloku 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 LCD | Me ndërfaqe I2C | 1 | Drita e pasme e gjelbër | Në bllokun e shënimeve | |
E5 | Servo | SG90 | 1 | 180 gradë | Në bllokun e shënimeve | |
E2 | Buzzer | 5 V | 1 | Bu | Në bllokun e shënimeve | |
E4 | Tastierë | 4x4 | 1 | matricë | Në bllokun e shënimeve | |
Nr | Breadboard | 640 pikë | 1 | pa saldim |
Arduino është sistemi më i mirë për kopjimin e çdo lloj pajisjeje. Shumica e ideve nuk do të ishin të mundura pa të. Ka kohë që ekziston një ide e tillë: krijimi i një bllokimi të veçantë kombinimi në arduino. Për ta hapur atë, duhet të mbani të shtypur një çelës të caktuar. Në këtë rast, bllokimi nuk duhet të hapet, edhe nëse e dini butonin e duhur. Për ta hapur atë, duhet të ruani intervale të caktuara duke përdorur kujtesën e muskujve. Një kriminel nuk mund ta bëjë një gjë të tillë. Por e gjithë kjo është vetëm një teori.
Për ta mbledhur atë, duhet të përdorni një pajisje të veçantë pulsesh drejtkëndëshe, si dhe disa numërues dhe një grumbull. Por pajisja e përfunduar do të kishte dimensione të mëdha të përgjithshme dhe do të ishte e papërshtatshme për t'u përdorur. Si rregull, mendime të tilla nuk japin pushim. Hapi i parë për realizimin e ëndrrës ishte krijimi i një programi për Arduino. Do të shërbejë si një bravë kombinimi. Për ta hapur atë, do t'ju duhet të shtypni jo një buton, por disa, dhe ta bëni atë në të njëjtën kohë. Qarku i përfunduar duket si ky:
Cilësia e figurës nuk është më e mira, por lidhja është bërë me tokëzimin, D3, D5, D7, D9 dhe D11.
Kodi është paraqitur më poshtë:
Const intina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; bajt a = 0; bajt b = 0; bajt c = 0; bajt d = 0; kohë e gjatë e panënshkruar = 0; //mos harroni asgjë që merr vlerën millis() të panënshkruar gjatë temp = 0; //ruaj në bajt të gjatë të panënshkruar keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //kodet në të vërtetë tasti bajt = ( 1, 1, 1, 1, 0, 1, 0, 0); byte keyc = ( 1, 0, 1, 0, 1, 1, 1, 0); bajt k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 hyrje të lidhura me butonat pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //LED e integruar në pin 13 pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); //zëvendësoni dixhitalin në tokë (11, LOW); koha = millis (); //e nevojshme për kohën ) void blinktwice () ( // pulsim i dyfishtë i LED-së DigitalWrite (ledPin, LARTË); vonesë (100); digitalWrite (ledPin, LOW); vonesë (100); dixhitalWrite (ledPin, LARTË); vonesë (100); dixhitalWrite (ledPin, LOW); vonesë ( 200)); 0 ;) a = leximi dixhital(ina); //lexoni nivelet e sinjalit nga butonat - të shtypura/nuk shtypen b = leximi dixhital(inb); c = leximi dixhital(inc); vonesa (100); //tjetër nëse - mbrojtje kundër false pozitive, if((DixhitalLeximi(ina) == a)&&(DixhitalLeximi(inb) ==b)&&(DixhitalLeximi(inc)==c)) ( if (a == keya[k]) ( if (b == tasti[k]) (nëse (c == tast[k]) (k++; ) ) ) ) nëse (k==1) (nëse (d ==0) (koha = millis (); d++; ) ) temp = millis(); temp = temp - kohë; nëse (temperatura > 10000) (k= 0; d=0; koha = milis (); ) )
Për të shmangur pyetjet e panevojshme në lidhje me kodin, duhet të sqarohen disa pika. Funksioni i konfigurimit përdoret për të caktuar portat. Funksioni tjetër është Input_Pullup, i cili nevojitet për të rritur tensionin e pinit me 5 V. Kjo bëhet duke përdorur një rezistencë. Për shkak të kësaj, qarqe të ndryshme të shkurtra nuk do të ndodhin. Për lehtësi më të madhe, rekomandohet përdorimi i funksionit blinktwice. Në përgjithësi, kur krijoni programe të ndryshme, duhet të provoni funksione të tjera.
Pas caktimit të funksioneve, sinjali lexohet nga portet. Nëse shtypet butoni, atëherë kjo do të tregohet me numrin 1, dhe nëse jo - 2. Më pas, analizohen të gjitha vlerat. Për shembull, ekziston një kombinim i tillë si 0,1,1. Kjo do të thotë që tasti i parë shtypet dhe dy të tjerët jo. Nëse të gjitha vlerat janë të vërteta, atëherë kushti 8 është gjithashtu i vërtetë. Kjo tregohet nga LED i ndriçuar në panelin e përparmë. Më pas, duhet të vendosni një kod specifik që do të shërbejë për të hapur derën.
Elementet e fundit të kodit përdoren për të rivendosur vlerat e numëruesit. Ky funksion ekzekutohet nëse kanë kaluar më shumë se 10 sekonda nga shtypja e fundit e tastit. Pa këtë kod, ishte e mundur të zgjidheshin të gjitha opsionet e mundshme, megjithëse ka mjaft prej tyre. Pas krijimit të kësaj pajisjeje, duhet ta provoni. Më shumë
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, "kyçet inteligjente" lidhen me "shërbimet cloud" si Google Drive dhe hapen nga distanca. Përveç kësaj, ky opsion bën të mundur dhënien e aksesit në hapjen e derës për njerëzit e 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 një 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 ID e gishtit = 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 kontrollin e bllokimit të derës. Për t'u lidhur me një rrjet me valë dhe për të aktivizuar/çaktivizuar kyçin, do t'ju duhet një 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.
Qarku i montuar plotësisht është paraqitur 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Ë);
Versionin më të fundit të skicës 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ë.
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. Në këtë fazë, ne thjesht 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: lidhjen dhe kontrollin e drejtpërdrejtë të një bllokimi elektronik duke përdorur një 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ë.
Diagrami i lidhjes për lidhjen e të gjithë komponentëve me modulin ESP8266 është paraqitur më poshtë:
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ë, lëshohet telekomanda e bllokimit të derës duke përdorur një gjurmë gishti.
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 "shtëpinë tuaj të zgjuar". Për shembull, aktivizoni nga distanca një sistem vaditjeje në një Arduino ose ndizni një dritë në një dhomë... Mbani në mend se mund të aktivizoni njëkohësisht një numër pothuajse të pakufizuar pajisjesh duke përdorur Adafruit IO.
Lini komentet, pyetjet tuaja dhe ndani përvojën tuaj personale më poshtë. Në diskutim lindin shpesh ide dhe projekte të reja!
COTTAGE për mua, si shumica e atyre që e kanë, lidhet me fjalët: pushim, barbekju, rehati dhe lëvizje të tjera të këndshme për shpirtin dhe trupin, por ka edhe një anë negative: një kopsht, gërmim, riparim, ndërtim. , etj.
Prej 10 vitesh, unë dhe familja ime jemi përpjekur të fisnikërojmë dhe krijojmë rehati maksimale në shtëpinë tonë të vendit. Ne ndërtojmë, riparojmë etj. Një shtëpi, një hambar, një banjë ... .. dhe më në fund erdhi në një gardh rruge, një portë dhe një portë. Bëni këtë me ndërgjegjen, buxhetin dhe komoditetin.
Pas diskutimit të disa detajeve, u vendos që porta të ishte automatike dhe porta të kishte disa veti ACS. Me portën, çështja u zgjidh duke blerë një çantë automatizimi (drive, hekurudhë, telekomandë, etj.), dhe me portën u desh të zgjidheshin disa probleme, rreth tyre më poshtë.
Detyrat ishin si më poshtë:
- Kyçja duhej të punonte së bashku me një video intercom të instaluar më parë (hapni portën pa dalë nga shtëpia)
- Mund të hapni derën me një çelës të zakonshëm dhe pa çelës nga rruga dhe oborri.
- Mbani brenda buxhetit të mbetur deri në 5000 r.
Kërkimet në Runet paraqitën gamën e çmimeve të mëposhtme nga 7000 në pafundësi. Blerja e një zgjidhjeje të gatshme u zhduk dhe u konceptua një alternativë me mundësi të gjera, domethënë, të prisni vetë derën!
Pas disa llogaritjeve dhe llogaritjeve, u vendos që të blihet një bravë elektromekanike për rreth 2000 rubla, një tastierë e papërshkueshme nga uji për 350 rubla dhe një MK që do të drejtojë këtu. Meqenëse kishte disa nano borde Arduino, stafetë dhe pjesë të lirshme dhe disa tela, diferenca midis kostos së kompletit të përfunduar ishte më shumë se 4000 tr. Për mua, një bonus i madh për portofolin dhe vetë-zhvillimin.
Epo, tani nga fjalët në veprim:
Pasi bleva të gjithë përbërësit e nevojshëm, fillova të pashë.
Diagrami i lidhjes së tastierës
Tregim shtesë i LED-ve (e bardhë, jeshile, e kuqe) e panelit me sinjale të tastierës (hyrja, fjalëkalimi i saktë për të hapur derën, i refuzuar).
- kunja 9 e verdhë
- kunja 10 jeshile
- kunja 11 e kuqe
Panel pleksiglas (grilë), i prerë në një kuti me çokollata dhe buzëqeshni fqinjët e zyrës. Por prerësja më e vogël doli të ishte pak më e trashë, më duhej të punoja me një skedar gjilpërash.
Epo, kjo është fundjavë, u transferova në vend.
Për të hapur bllokimin elektromekanik, ju nevojiten 12 volt. Furnizimi me energji elektrike që furnizonte MK ishte 5 volt, vendimi ishte të vendosej një konvertues përforcues dc-dc nga parajsa për bllokimin. Lidha gjithçka dhe fillova të kontrolloja, funksionon, por kur u aplikua tension në solenoidin e bravës, Dunya u rindez, në lidhje me furnizimin me energji elektrike. Për më tepër, pas lidhjes së panelit të thirrjeve nga video intercom me kyçin, kur shtypni butonin për të hapur derën, nuk ndodhi asgjë, një rrymë e vogël në bllokues. Tërheqja e telave të rinj nuk është një opsion, ato ishin betonuar tashmë në dalje nga shtëpia. Vendosa të shtoj një stafetë tjetër për panelin dhe të vendos një furnizim shtesë me energji 12v. për kalanë. Pas analizimit / mbledhjes, gjithçka funksionoi, MK ndaloi rindezjen. E fsheha të gjithë në një kuti kryqëzimi të papërshkueshëm nga uji, fsheha telat, ngjitësin, silikonin dhe mbarove!
Mësimi 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 - një bllokues 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 e ekranit mund të jetë vetëm e verdhë dhe 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: 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 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.Hapi 6: Rezultati përfundimtar