Selles õppetükis õpime tegema lihtsat süsteemi, mis avab luku elektroonilise võtme abil (Label).
Tulevikus saate funktsioone täpsustada ja laiendada. Näiteks lisage funktsioon "uute võtmete lisamine ja mälust eemaldamine". Põhijuhul vaatleme lihtsat näidet, kui unikaalne võtmeidentifikaator on programmi koodis eelnevalt määratud.
Selles õpetuses vajame:
Projekti elluviimiseks peame installima raamatukogud:
2) Nüüd on vaja ühendada Summer, mis annab signaali, kui võti töötas ja lukk avaneb, ja teise signaali kui lukk sulgub.
Ühendame helisignaali järgmises järjestuses:
Arduino | Sumiseja |
---|---|
5V | VCC |
GND | GND |
pin 5 | IO |
3) Avamismehhanismina kasutatakse servot. Valida saab mis tahes servo, olenevalt vajalikest mõõtmetest ja jõududest, mida servo tekitab. Servol on 3 kontakti:
Selgemalt näete alloleval pildil, kuidas me kõik moodulid ühendasime:
Nüüd, kui kõik on ühendatud, võite jätkata programmeerimist.
Sketš:
#kaasa
Analüüsime visandit üksikasjalikumalt:
Kaardi UID (Labels) väljaselgitamiseks tuleb see sketš arduinosse kirjutada, eelpool kirjeldatud vooluring kokku panna ja avada konsool (Serial porti jälgimine). Kui viite sildi RFID-i, kuvatakse konsoolis number
Saadud UID tuleb sisestada järgmisele reale:
Kui (uidDec == 3763966293) // Võrrelge sildi Uid-d, kui see on võrdne määratud, siis avab servo klapi.
Iga kaardi puhul on see identifikaator kordumatu ja ei kordu. Seega, kui esitate kaardi, mille ID olete programmis määranud, avab süsteem juurdepääsu servo abil.
Video:
Arduino on parim süsteem igasuguste seadmete kopeerimiseks. Enamik ideid poleks ilma temata võimalikud olnud. Selline idee on olnud juba ammu: luua arduinole spetsiaalne kombinatsioonlukk. Selle avamiseks peate teatud klahvi all hoidma. Sel juhul ei tohiks lukk avaneda, isegi kui tead õiget nuppu. Selle avamiseks peate lihasmälu abil hoidma teatud intervalle. Kurjategija ei saa midagi sellist teha. Kuid see kõik on vaid teooria.
Selle kokkupanemiseks peate kasutama spetsiaalset ristkülikukujuliste impulsside seadet, samuti mitut loendurit ja hunnikut. Kuid valmis seade oleks suurte mõõtmetega ja seda oleks ebamugav kasutada. Sellised mõtted reeglina puhkust ei anna. Esimene samm unistuse elluviimisel oli programmi loomine Arduino jaoks. See toimib kombinatsioonlukuna. Selle avamiseks peate vajutama mitte ühte klahvi, vaid mitut klahvi ja tegema seda korraga. Valmis ahel näeb välja selline:
Pildikvaliteet pole just kõige parem, aga ühendus toimub maandusega, D3, D5, D7, D9 ja D11.
Kood on esitatud allpool:
Const intina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; bait a = 0; bait b = 0; bait c = 0; bait d = 0; märgita pikk aeg = 0; //ära unusta midagi, mis võtab väärtuse millis() unsigned long temp = 0; //salvestada märgita pika baidi võtmes = ( 0, 0, 0, 0, 0, 0, 0, 0); //koodid tegelikult baitklahv = ( 1, 1, 1, 1, 0, 1, 0, 0); baitklahvc = ( 1, 0, 1, 0, 1, 1, 1, 0); bait k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 nuppudega ühendatud sisendit pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //sisseehitatud LED viigul 13 pinMode (7, OUTPUT); pinMode(11, OUTPUT); digitalWrite (7, LOW); //asendada maandus digitalWrite(11, LOW); aeg = millis(); //vajalik ajastus ) void blinktwice() ( // LED-i topeltvilkumine digitalWrite (ledPin, HIGH); viivitus (100); digitalWrite (ledPin, LOW); viivitus (100); digitalWrite (ledPin, HIGH); viivitus (100); digitalWrite (ledPin, LOW); viivitus ( 200); ) void loop() ( if(k==0) ( vilgub kaks korda(); // küsib koodi sisestamist ) if (k == 8) ( digitalWrite(ledPin, HIGH); viivitus(3000); k = 0 ; ) a = digitalRead(ina); //loe nuppudelt signaalitasemeid - vajutatud/ei vajutatud b = digitalRead(inb); c = digitalRead(inc); viivitus(100); //next if - kaitse valepositiivsed, if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b) == klahv[k]) ( kui (c == klahv[k]) ( k++; ) ) ) ) if (k==1) ( if (d ==0) ( aeg = millis (); d++; ) ) temp = millis(); temp = temp - aeg; if (temp > 10000) ( k= 0; d=0; aeg = millides (); ) )
Selleks, et vältida tarbetuid küsimusi koodi kohta, tuleks mõnda punkti selgitada. Portide määramiseks kasutatakse häälestusfunktsiooni. Järgmine funktsioon on Input_Pullup, mis on vajalik kontakti pinge suurendamiseks 5 V võrra. Seda tehakse takisti abil. Tänu sellele ei teki erinevaid lühiseid. Suurema mugavuse huvides on soovitatav kasutada kaks korda vilkuma funktsiooni. Üldiselt tuleb erinevate programmide loomisel proovida muid funktsioone.
Pärast funktsioonide määramist loetakse signaali portidest. Kui nuppu vajutatakse, tähistatakse seda numbriga 1 ja kui mitte - 2. Järgmisena analüüsitakse kõiki väärtusi. Näiteks on selline kombinatsioon nagu 0,1,1. See tähendab, et esimest klahvi vajutatakse ja ülejäänud kahte mitte. Kui kõik väärtused on tõesed, on ka tingimus 8 tõene. Sellest annab märku esipaneelil valgustatud LED. Järgmisena peate sisestama konkreetse koodi, mida kasutatakse ukse avamiseks.
Koodi viimaseid elemente kasutatakse loenduri väärtuste lähtestamiseks. See funktsioon käivitatakse, kui viimasest klahvivajutusest on möödunud rohkem kui 10 sekundit. Ilma selle koodita oli võimalik kõik võimalikud variandid välja sorteerida, kuigi neid on päris palju. Pärast selle seadme loomist peate seda testima. Rohkem
Vaatasin eile uuesti filmi The Amazing Spider-Man ja ühes stseenis avab ja sulgeb Peter Parker kaugjuhtimisega sülearvuti ukse. Seda nähes sain kohe aru, et sellist elektroonilist lukku on välisuksele vaja.
Peale väikest askeldamist panin kokku toimiva nutika luku mudeli. Selles artiklis räägin teile, kuidas ma selle kogusin.
1. samm: materjalide loend
Arduino elektroonilise luku kokkupanemiseks vajate järgmisi materjale:
Elektroonika:
- 5V seinaadapter
Komponendid:
- 6 kruvi riivi jaoks
- papp
- juhtmed
Tööriistad:
- jootekolb
- liimipüstol
- puurida
- puurida
- pilootaugu puur
- kirjatarvete nuga
- Arduino IDE-ga arvuti
2. samm: kuidas lukk töötab
Idee on selles, et ma saan ukse avada või sulgeda ilma võtmeta ja isegi selle juurde minemata. Kuid see on ainult põhiidee, sest saate lisada koputusanduri, mis reageerib spetsiaalsele koputamisele, või saate lisada hääletuvastussüsteemi!
Poldiga ühendatud servohoob sulgeb (0°) ja avab (60°) poldi, kasutades Bluetooth-mooduli kaudu saadud käske.
3. samm: juhtmestiku skeem
Kõigepealt ühendame servo Arduino plaadiga (tahan märkida, et kuigi ma kasutan Arduino Nano plaati, on pinout täpselt sama Uno plaadil).
- servo pruun juhe on maandatud, ühendame selle Arduinol maandusega
- punane juhe on positiivne, ühendame selle Arduino 5 V pistikuga
- oranž juhe - servoallika väljund, ühendage see Arduino viiguga 9
Soovitan teil enne kokkupanekuga jätkamist servot testida. Selleks vali Arduino IDE programmis näidetes valik Sweep. Olles veendunud, et servo töötab, saame Bluetooth-mooduli ühendada. Peate ühendama Bluetooth-mooduli rx-pistiku Arduino tx-pistikuga ja mooduli tx-pistiku Arduino rx-pistikuga. Aga ära tee seda veel! Kui need ühendused on joodetud, ei saa te Arduinosse ühtegi koodi üles laadida, seega laadige kõigepealt kõik koodid üles ja alles seejärel jootke ühendused.
Siin on mooduli ja mikrokontrolleri ühendusskeem:
- Rx moodul - Tx Arduino plaat
- Tx-moodul - Rx-plaat
- Mooduli Vcc (positiivne klemm) - Arduino plaadi 3,3 V
- Maaühendus maaga (maa-maa)
Kui selgitus pole teile selge, järgige kaasasolevat ühendusskeemi.
4. samm: testige
Nüüd, kui meil on kõik töötavad osad, veendume, et servo suudab riivi liigutada. Enne riivi uksele paigaldamist panin kokku prooviproovi, et veenduda, kas servo on piisavalt tugev. Alguses tundus mulle, et mu servo on nõrk ja lisasin riivile tilga õli, pärast töötas kõik hästi. On väga oluline, et mehhanism hästi libiseb, vastasel juhul võite end oma tuppa lukustada.
5. samm: elektrikomponentide korpus
Otsustasin korpusesse panna ainult kontrolleri ja Bluetoothi mooduli ning servo välja jätta. Selleks tõmmake papitükile Arduino Nano plaadi piirjooned ja lisage perimeetri ümber 1 cm ruumi ja lõigake see välja. Peale seda lõikasime välja ka veel viis keha külge. Esiseinas peate lõikama kontrolleri toitejuhtme jaoks augu.
Korpuse külgede mõõdud:
- Alumine - 7,5x4 cm
- Kaas - 7,5x4 cm
- Vasak külgsein - 7,5x4 cm
- Parem külgsein - 7,5x4 cm
- Esisein - 4x4 cm (koos pesaga toitejuhtme jaoks)
- Tagasein - 4x4 cm
6. samm: rakendamine
Kontrolleri juhtimiseks vajate sisseehitatud Bluetoothiga Androidi või Windowsi vidinat. Mul ei olnud võimalust rakendust Apple'i seadmetes testida, võib-olla läheb vaja mõnda draiverit.
Olen kindel, et mõnel teist on võimalus seda kontrollida. Androidi jaoks laadige alla rakendus Bluetooth Terminal, Windowsi jaoks laadige alla TeraTerm. Seejärel tuleb moodul ühendada nutitelefoniga, nimi peaks olema linvor, parool 0000 või 1234. Kui sidumine on loodud, ava installitud rakendus, sisesta valikud ja vali "Loo ühendus (ebaturvaline)". Teie nutitelefon on nüüd Arduino jadamonitor, mis tähendab, et saate kontrolleriga suhelda.
Kui sisestate 0, sulgub uks ja nutitelefoni ekraanile kuvatakse teade "Uks suletud".
Kui sisestate 1, näete, et uks avaneb ja ekraanile ilmub teade "Uks avatud".
Windowsis on protsess sama, välja arvatud see, et peate installima rakenduse TeraTerm.
7. samm: kinnitage polt
Kõigepealt peate ühendama servo riiviga. Selleks lõigake ajami korpuse kinnitusavade pistikud ära. Kui paneme servo, peaksid kinnitusavad olema riiviga samal tasapinnal. Seejärel peate asetama servo hoova riivi pessa, kus oli riivi käepide. Kontrollige, kuidas lukk korpuses liigub. Kui kõik on korras, kinnita servohoob liimiga.
Nüüd peate kruvide jaoks puurima ukse sisse pilootaugud. Selleks kinnita riiv ukse külge ja märgi pliiatsiga ukselehele kruvide augud. Märgitud kohtadesse puurige kruvide jaoks umbes 2,5 cm sügavused augud Kinnitage riiv ja kinnitage see kruvidega. Kontrollige servot uuesti.
8. samm: toitumine
Seadme lõpuleviimiseks vajate Arduinoga ühendamiseks toiteallikat, juhet ja mini-usb-pistikut.
Ühendage toiteallika maandusklemm mini-usb-pordi maandusklemmiga, ühendage punane juhe mini-usb-pordi punase juhtmega, seejärel viige juhe lukust uksehingeni ja sealt edasi pistikupessa. .
9. samm: kood
#include Servo myservo; int pos = 0; int state; int lipp=0; void setup() ( myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() ( if(Serial.available() > 0) ( olek = Serial.read(); lipp=0; ) // kui olek on "0", lülitub alalisvoolumootor välja if (olek == "0") ( myservo.write(8); delay(1000); Serial. println("Uks lukus"); ) else if (olek == "1") ( myservo.write(55); delay(1000); Serial.println("Uks lukustamata"); ) )
10. samm: Arduino lukk on lõpetatud
Nautige kaugjuhtimispuldi lukku ja ärge unustage oma sõpru tuppa "kogemata" lukustada.
Tänane õppetund räägib sellest, kuidas RFID-lugeja abil koos Arduinoga luua lihtne lukustussüsteem ehk lihtsate sõnadega – RFID lukk.
RFID (Eng. Radio Frequency IDentification, raadiosagedustuvastus) on objektide automaatse tuvastamise meetod, mille käigus loetakse või kirjutatakse raadiosignaalide abil nn transpondritesse salvestatud andmed ehk RFID-märgised. Iga RFID-süsteem koosneb lugejast (lugeja, lugeja või päringuseade) ja transponderist (teise nimega RFID-märgis, mõnikord kasutatakse ka terminit RFID-märgis).
Õpetus kasutab RFID-märgendit koos Arduinoga. Seade loeb iga RFID-sildi unikaalset identifikaatorit (UID), mille me lugeja kõrvale asetame, ja kuvab selle OLED-ekraanil. Kui sildi UID on võrdne Arduino mällu salvestatud eelmääratletud väärtusega, näeme ekraanil teadet “Unlocked”. Kui unikaalne identifikaator ei ole võrdne eelmääratletud väärtusega, siis teadet "Unlocked" ei kuvata – vt allolevat fotot.
Loss on suletud
Loss on avatud
Selle projekti loomiseks vajalikud üksikasjad:
- RFID-lugeja RC522
- OLED ekraan
- Leivalaud
- juhtmed
Täiendavad üksikasjad:
- Aku (toitepank)
Projekti komponentide kogumaksumus oli ligikaudu 15 dollarit.
2. samm: RFID-lugeja RC522
Igal RFID-sildil on väike kiip (fotol valge kaart). Kui suunate taskulambi sellele RFID-kaardile, näete väikest kiipi ja seda ümbritsevat mähist. Sellel kiibil pole voolu genereerimiseks akut. See saab lugejalt toidet juhtmevabalt, kasutades seda suurt mähist. Sellist RFID-kaarti on võimalik lugeda kuni 20 mm kauguselt.
Sama kiip on ka RFID-võtmehoidja siltides.
Igal RFID-sildil on unikaalne number, mis seda identifitseerib. See on UID, mis kuvatakse OLED-ekraanil. Iga silt, välja arvatud see UID, saab andmeid salvestada. Seda tüüpi kaart suudab salvestada kuni 1000 andmeid. Muljetavaldav, kas pole? Seda funktsiooni täna ei kasutata. Tänapäeval pakub huvi ainult konkreetse kaardi tuvastamine selle UID järgi. RFID-lugeja ja need kaks RFID-kaarti maksavad umbes 4 dollarit.
3. samm OLED-ekraan
Õpetus kasutab 0,96" 128x64 I2C OLED monitori.
See on Arduinoga kasutamiseks väga hea ekraan. See on OLED-ekraan ja see tähendab, et selle energiatarve on madal. Selle ekraani voolutarve on umbes 10-20mA ja see sõltub pikslite arvust.
Ekraani eraldusvõime on 128 x 64 pikslit ja see on väikese suurusega. Kuvamisvalikuid on kaks. Üks neist on ühevärviline ja teine, nagu õpetuses kasutatud, suudab kuvada kahte värvi: kollast ja sinist. Ekraani ülaosa saab olla ainult kollane ja alumine sinine.
See OLED-ekraan on väga hele ning sellel on suurepärane ja väga kena raamatukogu, mille Adafruit on selle ekraani jaoks välja töötanud. Lisaks sellele kasutab ekraan I2C liidest, nii et Arduinoga ühendamine on uskumatult lihtne.
Peate ühendama ainult kaks juhet, välja arvatud Vcc ja GND. Kui olete Arduino uus kasutaja ja soovite oma projektis kasutada odavat ja lihtsat kuvarit, alustage siit.
4. samm: ühendage kõik osad kokku
Arduino Uno tahvliga suhtlemine on väga lihtne. Esiteks ühendage toide nii lugeja kui ka kuvariga.
Olge ettevaatlik, RFID-lugeja peab olema ühendatud Arduino Uno 3,3 V väljundiga, muidu saab see kahjustada.
Kuna ekraan võib töötada ka 3,3 V pingega, siis ühendame mõlema mooduli VCC positiivse leivaplaadi siiniga. Seejärel ühendatakse see siin Arduino Uno 3,3 V väljundiga. Seejärel ühendame mõlemad maandused (GND) leivaplaadi maandussiiniga. Seejärel ühendame leivaplaadi GND siini Arduino GND-ga.
OLED-ekraan → Arduino
SCL → Analoogpin 5
SDA → Analoogpin 4
RFID-lugeja → Arduino
RST → digitaalne pin 9
IRQ → Pole ühendatud
MISO → digitaalne pin 12
MOSI → digitaalne pin 11
SCK → digitaalne kontakt 13
SDA → digitaalne pin 10
RFID-lugeja moodul kasutab Arduinoga suhtlemiseks SPI-liidest. Nii et me kasutame Arduino UNO riistvara SPI-tihvte.
RST-viik läheb digitaalviigule 9. IRQ-viik jääb lahti ühendatuks. MISO viik läheb digitaalviigule 12. MOSI viik läheb digitaalse viigu 11 juurde. SCK viik läheb digitaalse viigu 13 juurde ja lõpuks SDA viik digitaalse viigu 10 juurde. See on kõik.
RFID-lugeja on ühendatud. Nüüd peame ühendama OLED-ekraani I2C-liidese abil Arduinoga. Nii et ekraanil olev SCL-viik läheb analoogviigule 5 ja SDA ekraanil analoogviigule 4. Kui nüüd projekt sisse lülitada ja RFID-kaart lugeja kõrvale asetada, siis näeme, et projekt töötab hästi.
5. samm: projekti kood
Projekti koodi koostamiseks peame kaasama mõned teegid. Esiteks vajame MFRC522 Rfid teeki.
Selle installimiseks minge aadressile Sketch -> Include Libraries -> Halla raamatukogusid(Raamatukogude haldamine). Leidke MFRC522 ja installige see.
Samuti vajame kuvamiseks Adafruit SSD1306 teeki ja Adafruit GFX teeki.
Installige mõlemad teegid. Adafruit SSD1306 teek vajab veidi muutmist. Mine kausta Arduino -> raamatukogud, avage kaust Adafruit SSD1306 ja muutke teeki Adafruit_SSD1306.h. Kommenteerige rida 70 ja tühjendage rida 69, sest Ekraani eraldusvõime on 128x64.
Esiteks deklareerime RFID-märgise väärtuse, mille Arduino peaks ära tundma. See on täisarvude massiiv:
int kood = (69 141 8 136); // UID
Seejärel lähtestame RFID-lugeja ja kuvame:
Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Pärast seda kontrollime silmusfunktsioonis lugeja silti iga 100 ms järel.
Kui lugejal on silt, loeme selle UID-i ja trükime selle ekraanile. Seejärel võrdleme äsja loetud sildi UID-d koodimuutujasse salvestatud väärtusega. Kui väärtused on samad, kuvame sõnumi UNLOCK, vastasel juhul me seda teadet ei kuva.
If(match) ( Serial.println("\nMa tean seda kaarti!"); printUnlockMessage(); )else ( Serial.println("\nTundmatu kaart"); )
Muidugi saate seda koodi muuta, et salvestada rohkem kui 1 UID väärtus, et projekt tuvastaks rohkem RFID-silte. See on vaid näide.
Projekti kood:
#kaasa Nagu õppetunnist näha - väikese raha eest saab oma projektidesse lisada RFID-lugeja. Selle lugejaga saab hõlpsasti luua turvasüsteemi või luua näiteks huvitavamaid projekte, et USB-mälupulgalt andmeid loetaks alles peale luku avamist.
See projekt on modulaarne, st. saate ühendada / lahti ühendada erinevaid elemente ja saada erinevaid funktsioone. Ülaltoodud piltidel on kujutatud täieliku funktsionaalsusega varianti, nimelt: Püsivara seadetes saate valida mis tahes kolmest tüübist (seade luku_tüüp) Kõik need elemendid saab süsteemist välja jätta: Lukk on mõeldud töötama akutoitel vähese energiasäästurežiimis (Luba keelamine: seadistus sleep_enable), nimelt: Kui süsteem on ärkvel, vajutage parooli muutmise nuppu (peidetud nupp). Me langeme sisse parooli muutmise režiim: Kui süsteem ei maga (ärkas nupuga või uni on keelatud), vajutage parooli sisestamise režiimi sisenemiseks * 6. samm: lõpptulemus
Sisestage numbritest parool ( MAXIMUM 10 NUMBRIT!!!)
Kui süsteem magab ja ärkab perioodiliselt üles, et SÜNDMUST kontrollida, siis vajutage * ja hoidke all, kuni süttib punane LED
Parooli sisestusrežiim: