Kaip padaryti arduino kombinuotą užraktą. Arduino kombinuotas užraktas

„Pasidaryk pats“ Arduino kodinis užraktas


Fonas

Taip jau susiklostė, kad darbe nusprendėme įsirengti kodinę spyną savo durims, nes nuolat įbėgame - išbėgame iš biuro, kurio durys turi būti nuolat uždarytos, nesant gyventojų. Raktai dažnai pamirštami viduje. Apskritai nusprendėme, kad kombinuota spyna yra puikus sprendimas.

Pasiknisęs po Kinijos sendaikčių turgus ir ebay neradau nieko pigaus ir daugiau mažiau rimto ir nusprendžiau pasigaminti pats. Iš karto padarysiu išlygą, kad Arduino platforma pasirinkta dėl jos paprastumo, nes nebuvo jokios patirties bendrauti su mikrovaldikliais.

Ant durų su lauke duryse turi būti klaviatūra, kurioje įvedamas slaptažodis, su viduje likusi konstrukcijos dalis yra fiksuota. Nendrinis jungiklis naudojamas visiškam durų uždarymui valdyti. Išeidamas iš kabineto žmogus paspaudžia "*" klaviatūroje ir nelaukdamas kol duris uždarys užraktas, imasi savo reikalų, kai durys bus visiškai uždarytos, nendrinis jungiklis užsidarys ir spyna užsidarys. . Durelės atidaromos įvedus 4 skaitmenų slaptažodį ir paspaudus „#“.

Komponentai

Arduino UNO = 18 USD
Arduino protoshield + duonos lenta = 6 USD
L293D = 1 USD
30 vnt pynimo vielos pluoštas = 4 USD
2 RJ45 lizdai = 4 USD
2 RJ45 kištukai = 0,5 USD
pavara centrinis užraktas= 250 RUB
Nendrinis jungiklis = išplėštas iš seno lango.
Milžiniško dydžio metalinis skląstis = nemokamas
Sena D-LINK stebulė, pagaminta iš 1,5 mm geležies = nemokama
Maitinimo šaltinis iš to paties D-LINK šakotuvo 12 ir 5v = taip pat nemokamas
Krūva varžtų ir veržlių, skirtų visam šiam daiktui pritvirtinti prie korpuso = 100 rublių.
Valdymo skydelis iš signalizacija= nemokama.

Iš viso: 33,5 USD ir 350 rublių.

Ne taip jau mažai, sakote, ir tikrai būsite teisūs, bet už malonumą reikia mokėti! Ir visada malonu ką nors surinkti savo rankomis. Be to, dizainas gali būti gerokai sumažintas, jei naudosite pliką MC be Arduino.

Pasiruošimas surinkimui

Norėčiau pasakyti keletą žodžių apie pagrindinio pavaros konstrukcijos elemento įsigijimą. Vietinėje automobilių parduotuvėje man buvo pasiūlytos dviejų tipų pavaros: „su dviem laidais ir su penkiais“. Pasak pardavėjos, jie buvo visiškai vienodi ir laidų skaičiaus skirtumas visiškai nieko nereiškė. Tačiau, kaip vėliau paaiškėjo, taip nėra! Išsirinkau įrenginį su dviem laidais, maitino 12V. 5 laidų konstrukcija apima ribinius jungiklius, valdančius rankos judėjimą. Kad nusipirkau ne tą, supratau tik išardęs ir jau buvo per vėlu keisti. Svirties eiga buvo per trumpa normaliai pajudinti skląstį, todėl teko jį šiek tiek modifikuoti, o būtent nuimti dvi gumines poveržles, kurios sutrumpina pavaros svirties eigą. Norėdami tai padaryti, kūną reikėjo perpjauti išilgai paprastas metalinis pjūklas nes antroji skalbyklė buvo viduje. Mėlyna elektros juosta, kaip visada, mums padėjo ateityje, ją surenkant atgal.

Pavaros varikliui valdyti buvo naudojamas L293D variklio vairuotojas, kuris gali atlaikyti iki 1200 mA didžiausią apkrovą, kai sustabdėme pavaros variklį, didžiausia apkrova pakilo tik iki 600 mA.

Iš valdymo pulto nuo įsilaužimo signalizacijos buvo pašalinti klaviatūros, garsiakalbio ir dviejų šviesos diodų kontaktai. Nuotolinio valdymo pultas ir pagrindinis įrenginys turėjo būti sujungti naudojant vytos poros ir RJ45 jungtis.

Programavimas.

Taigi, iki šiol neturėjau jokios patirties su Arduino programavimu. Naudojau kitų žmonių patobulinimus ir straipsnius iš arduino.cc svetainės. Kam rūpi šis bjaurus kodas :)

Nuotrauka ir video

Šioje pamokoje sužinosime, kaip tai padaryti paprasta sistema, kuris atrakins spyną naudojant elektroninį raktą (Tag).

Ateityje galėsite keisti ir išplėsti funkcijas. Pavyzdžiui, pridėkite funkciją „pridėti naujus klavišus ir pašalinti juos iš atminties“. Pagrindiniu atveju apsvarstykite paprastą pavyzdį, kai programos kode yra iš anksto nustatytas unikalus rakto identifikatorius.

Šioje pamokoje mums reikės:

Norėdami įgyvendinti projektą, turime įdiegti bibliotekas:

2) Dabar reikia prijungti garsinį signalą, kuris duos signalą, jei raktas suveikia ir spyna atsidaro, ir antrą signalą, kai spyna uždaroma.

Mes prijungiame garsinį signalą tokia seka:

Arduino Skambutis
5V VCC
GND GND
5 kaištis IO

3) Servo bus naudojamas kaip atrakinimo mechanizmas. Galima pasirinkti bet kokį servovarą, priklausomai nuo jūsų reikalingų matmenų ir jėgų, kurias servo sukuria. Servo turi 3 kaiščius:

Aiškiau galite pamatyti, kaip sujungėme visus modulius žemiau esančiame paveikslėlyje:

Dabar, jei viskas prijungta, galite pereiti prie programavimo.

Eskizas:

#įtraukti #įtraukti #įtraukti // "RFID" biblioteka. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); nepasirašytas ilgas uidDec, uidDecTemp; // įrašyti etiketės numerį dešimtainiu formatu Servo servo; void setup () (Serial.begin (9600); Serial.println ("Laukiama kortelės..."); SPI.begin (); // inicijavimas SPI / Init SPI bus.mfrc522.PCD_Init (); // inicijavimas MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // servo nustatymas į uždarą) void loop () (// Raskite naują etiketę, jei (! Mfrc522.PICC_IsNewCardPresent ()) (grįžti ; ) // Pasirinkite etiketę, jei (! Mfrc522.PICC_ReadCardSerial ()) (grįžti;) uidDec = 0; // Problema serijos numeris etiketės. for (baitas i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Pažvelkime atidžiau į eskizą:

Norint sužinoti kortelės UID (Tags), reikia parašyti šį eskizą į arduino, surinkti aukščiau aprašytą grandinę ir atidaryti konsolę (Serial port monitoring). Kai atnešite žymą prie RFID, konsolėje bus rodomas numeris

Gautas UID turi būti įvestas šioje eilutėje:

If (uidDec == 3763966293) // Palyginkite etiketės Uid, jei jis yra lygus nurodytam, tada servo atidaro vožtuvą.

Kiekviena kortelė turi unikalų identifikatorių ir nesikartoja. Taigi, atsinešus kortelę, kurios identifikatorių nustatėte programoje, sistema atvers prieigą naudodama servo pavarą.

Vaizdo įrašas:

Pažanga nestovi vietoje ir „Išmaniosios spynos“ vis dažniau pasirodo ant butų, garažų ir namų durų.

Panašus užraktas atsidaro paspaudus mygtuką išmaniajame telefone. Laimei, išmanieji telefonai ir planšetiniai kompiuteriai jau įžengė į mūsų kasdienybę. Kai kuriais atvejais „išmanieji užraktai“ prisijungia prie „ debesijos paslaugos"kaip "Google" diską ir atidaryti nuotoliniu būdu. Be to, ši parinktis leidžia suteikti prieigą atidaryti duris kitiems žmonėms.

Šiame projekte bus įdiegta „Arduino“ išmaniojo užrakto „pasidaryk pats“ versija, kurią galima valdyti nuotoliniu būdu iš bet kurios žemės vietos.

Be to, projektas pridėjo galimybę atidaryti užraktą po pirštų atspaudų atpažinimo. Tam bus integruotas pirštų atspaudų jutiklis. Abu durų atidarymo variantai bus aprūpinti Adafruit IO platforma.

Toks užraktas gali būti puikus pirmasis žingsnis jūsų išmaniojo namo projekte.

Pirštų atspaudų jutiklio nustatymas

Norint dirbti su pirštų atspaudų jutikliu, yra puiki „Arduino“ biblioteka, kuri labai palengvina jutiklio nustatymo procesą. Šis projektas naudoja Arduino Uno. Prisijungimui prie interneto naudojama Adafruit CC3000 plokštė.

Pradėkime nuo maitinimo prijungimo:

  • Prijunkite 5 V kištuką iš Arduino plokštės prie raudono maitinimo bėgio;
  • „Arduino“ GND kaištis jungiasi prie mėlyno bėgelio belituojančioje plokštėje.

Pereikime prie pirštų atspaudų jutiklio prijungimo:

  • Pirmiausia prijunkite maitinimą. Tam raudonas laidas prijungiamas prie +5 V bėgio, o juodas - prie GND bėgio;
  • Baltas jutiklio laidas jungiasi prie Arduino 4 kaiščio.
  • Žalias laidas eina į mikrovaldiklio 3 kaištį.

Dabar aptarkime CC3000 modulį:

  • CC3000 plokštės IRQ kaištis yra prijungtas prie Arduino 2 kaiščio.
  • VBAT – prie 5 kaiščio.
  • CS – prie 10 kaiščio.
  • Po to turite prijungti SPI kaiščius prie „Arduino“: MOSI, MISO ir CLK - atitinkamai prie 11, 12 ir 13 kaiščių.

Galiausiai turite tiekti maitinimą: „Vin“ į „Arduino 5V“ (raudonas bėgelis ant jūsų grandinės plokštės) ir „GND“ į „GND“ (mėlynas bėgelis ant plokštės).

Pilnai surinkto projekto nuotrauka parodyta žemiau:

Prieš kurdami eskizą, kuris įkels duomenis į Adafruit IO, turite perkelti pirštų atspaudų duomenis į jutiklį. Priešingu atveju jis tavęs neatpažins ateityje;). Pirštų atspaudų jutiklį rekomenduojame kalibruoti naudojant Arduino atskirai. Jei su šiuo jutikliu dirbate pirmą kartą, rekomenduojame susipažinti su kalibravimo procesu ir išsamiomis darbo su pirštų atspaudų jutikliu instrukcijomis.

Jei to dar nepadarėte, susikurkite paskyrą „Adafruit IO“.

Po to galime eiti į kitas etapas„Išmaniojo užrakto“ kūrimas „Arduino“: būtent eskizo, kuris perduos duomenis į „Adafruit IO“, kūrimas. Kadangi programa yra gana didelė, straipsnyje mes išryškinsime ir apsvarstysime tik pagrindines jos dalis, o tada pateiksime nuorodą į GitHub, kur galite atsisiųsti visą eskizą.

Eskizas prasideda įkeliant visas reikalingas bibliotekas:

#įtraukti

#įtraukti

#įtraukti

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#įtraukti

#įtraukti >

Po to turite šiek tiek pataisyti eskizą, įvesdami savo WiFi tinklo parametrus, nurodydami SSID ir slaptažodį (slaptažodį):

#define WLAN_SECURITY WLAN_SEC_WPA2>

Be to, norėdami prisijungti prie savo Adafruit IO paskyros, turite įvesti savo vardą ir AIO raktą (raktą):

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

Šios eilutės yra atsakingos už sąveiką ir duomenų iš pirštų atspaudų jutiklio apdorojimą. Jei jutiklis buvo suaktyvintas (pirštų atspaudas atitiko), bus „1“:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/ kanalai / piršto atspaudas";

Adafruit_MQTT_Publish piršto atspaudas = Adafruit_MQTT_Publish (& mqtt, FINGERPRINT_FEED);

Be to, turime sukurti mūsų jutiklio SoftwareSerial objekto egzempliorių:

SoftwareSerial mySerial (3, 4);

Po to galime sukurti objektą savo jutikliui:

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Eskizo viduje nurodome, kuris piršto ID turėtų suaktyvinti užraktą ateityje. Šiame pavyzdyje naudojamas 0, kuris atitinka pirmojo jutiklio naudojamo piršto atspaudo ID:

int piršto ID = 0;

Po to inicijuojame skaitiklį ir atidedame savo projektą. Iš esmės norime, kad atidarius užraktas veiktų automatiškai. Šiame pavyzdyje naudojama 10 sekundžių delsa, tačiau šią reikšmę galite koreguoti pagal savo poreikius:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10 * 1000;

Sąrankos () funkcijos korpuse inicijuojame pirštų atspaudų jutiklį ir prijungiame CC3000 lustą prie jūsų WiFi tinklo.

Funkcijos ciklo () turinyje prisijunkite prie Adafruit IO. Už tai atsakinga ši eilutė:

Prisijungę prie Adafruit IO platformos, patikriname paskutinį piršto atspaudą. Jei jis atitinka, o užraktas nesuaktyvintas, siunčiame „1“ apdoroti „Adafruit IO“:

if (piršto atspaudo ID == piršto ID && užrakto būsena == klaidinga) (

Serial.println (F („Prieiga suteikta!“));

lockState = tiesa;

Serial.println (F („Nepavyko“));

Serial.println (F („Gerai!“));

paskutinis aktyvinimas = milis ();

Jei užraktas suaktyvinamas kilpos () funkcijoje ir pasiekėme aukščiau nurodytą delsos reikšmę, siunčiame „0“:

if ((ActivationCounter - lastActivation> activationTime) && lockState == true) (

lockState = klaidinga;

jei (! piršto atspaudas.publikuoti (valstybė)) (

Serial.println (F („Nepavyko“));

Serial.println (F („Gerai!“));

Naujausią kodo versiją galite atsisiųsti „GitHub“.

Atėjo laikas išbandyti mūsų projektą! Nepamirškite atsisiųsti ir įdiegti visų reikiamų Arduino bibliotekų!

Įsitikinkite, kad atlikote visus reikiamus eskizo pakeitimus ir įkelkite jį į savo „Arduino“. Tada atidarykite serijinio monitoriaus langą.

Kai Arduino prisijungia prie WiFi tinklai, pirštų atspaudų jutiklis mirksės raudonai. Padėkite pirštą ant jutiklio. Serijinio monitoriaus lange turėtų būti rodomas ID numeris. Jei sutaps, pasirodys pranešimas „Gerai!“. Tai reiškia, kad duomenys buvo išsiųsti į Adafruit IO serverius.

Diagrama ir eskizas tolesnei spynos konfigūracijai naudojant šviesos diodo pavyzdį

Dabar panagrinėkime tą projekto dalį, kuri yra tiesiogiai atsakinga už valdymą durų užraktas... Norėdami prisijungti prie bevielis tinklas ir suaktyvinus / išjungus užraktą, jums reikės papildomo Adafruit ESP8266 modulio (ESP8266 modulis nebūtinai turi būti iš Adafruit). Naudodami toliau pateiktą pavyzdį galite įvertinti, kaip lengva keistis duomenimis tarp dviejų platformų (Arduino ir ESP8266), naudojant Adafruit IO.

Šiame skyriuje mes nedirbsime tiesiogiai su užraktu. Vietoj to, mes tiesiog prijungsime šviesos diodą prie kaiščio, ant kurio vėliau bus prijungta spyna. Tai leis išbandyti mūsų kodą nesigilinant į užrakto dizainą.

Grandinė gana paprasta: pirmiausia įdiekite ESP8266 ant duonos lentos. Tada įdiekite LED. Nepamirškite, kad ilgoji (teigiama) LED kojelė yra sujungta per rezistorių. Antroji rezistoriaus kojelė jungiasi prie ESP8266 modulio 5 kaiščio. Antrasis (katodas) LED yra prijungtas prie ESP8266 GND kaiščio.

Visiškai surinkta grandinė parodyta žemiau esančioje nuotraukoje.


Dabar pažvelkime į eskizą, kurį naudosime šiam projektui. Vėlgi, kodas yra gana didelis ir sudėtingas, todėl apimsime tik pagrindines jo dalis:

Pradedame nuo reikiamų bibliotekų prijungimo:

#įtraukti

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

„WiFi“ parametrų konfigūravimas:

#define WLAN_SSID „jūsų_wifi_ssid“

#define WLAN_PASS „jūsų_wifi_slaptažodis“

#define WLAN_SECURITY WLAN_SEC_WPA2

Taip pat konfigūruojame Adafruit IO parametrus. Tas pats, kas ankstesniame skyriuje:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

Nurodome, prie kurio kaiščio prijungėme šviesos diodą (ateityje tai bus mūsų užraktas arba relė):

int relayPin = 5;

Sąveika su pirštų atspaudų jutikliu yra tokia pati, kaip ir ankstesniame skyriuje:

const char LOCK_FEED PROGMEM = AIO_USERNAME "/ tiekimai / užraktas";

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Prenumeruoti (& mqtt, LOCK_FEED);

Sąrankos () funkcijos turinyje nurodome, kad kaištis, prie kurio prijungtas šviesos diodas, turėtų veikti IŠVESTIES režimu:

pinMode (relayPin, OUTPUT);

Kilpoje () pirmiausia patikriname, ar esame prisijungę prie Adafruit IO:

Po to patikriname, koks signalas gaunamas. Jei perduodamas „1“, aktyvuojame anksčiau deklaruotą kontaktą, prie kurio prijungtas mūsų šviesos diodas. Jei gauname „0“, perkeliame kontaktą į „žemą“ būseną:

Adafruit_MQTT_Subscribe * prenumerata;

while ((prenumerata = mqtt.readPrenumerata (1000))) (

if (prenumerata == ir užraktas) (

Serial.print (F („Gavau:“));

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

// Išsaugokite komandą duomenų eilutėje

String komanda = String ((char *) lock.lastread);

if (komanda == "0") (

digitalWrite (relayPin, LOW);

if (komanda == "1") (

digitalWrite (relayPin, HIGH);

Rasti Naujausia versija eskizą, kurį galite padaryti „GitHub“.

Atėjo laikas išbandyti mūsų projektą. Nepamirškite atsisiųsti visų reikiamų „Arduino“ bibliotekų ir patikrinkite, ar eskizą atlikote teisingus pakeitimus.

ESP8266 lustui programuoti galima naudoti paprastą USB-FTDI keitiklį.

Įkelkite eskizą į „Arduino“ ir atidarykite serijinio monitoriaus langą. Šiame etape mes tiesiog patikrinome, ar pavyko prisijungti prie „Adafruit IO“: toliau svarstysime galimas funkcijas.

Projekto testavimas

Dabar pradėkime bandymus! Eikite į „Adafruit IO“ naudotojo meniu, esantį meniu „Sklaidos kanalai“. Patikrinkite, ar sukurti piršto atspaudo ir užrakto kanalai (žemiau esančiame spausdinimo ekrane yra pirštų atspaudų ir užrakto linijos):


Jei jų nėra, turėsite jį sukurti rankiniu būdu.

Dabar turime užtikrinti keitimąsi duomenimis tarp pirštų atspaudų ir užrakto kanalų. Užrakinimo kanalas turi būti nustatytas į „1“, kai pirštų atspaudų kanalas nustatytas į „1“ ir atvirkščiai.

Norėdami tai padaryti, naudojame labai galingą Adafruit IO įrankį: trigerius. Trigeriai iš esmės yra sąlygos, kurias galite taikyti sukonfigūruotiems kanalams. Tai yra, jie gali būti naudojami sujungti du kanalus.

Sukurkite naują reaktyvųjį aktyviklį iš Adafruit IO skilties Triggers. Tai suteiks galimybę keistis duomenimis tarp pirštų atspaudų jutiklio ir užrakinimo kanalų:


Taip turėtų atrodyti, kai sukonfigūruoti abu aktyvikliai:

Viskas! Dabar tikrai galime išbandyti savo projektą! Uždedame pirštą ant jutiklio ir matome, kaip Arduino pradėjo mirksėti šviesos diodu, atitinkančiu duomenų perdavimą. Po to ESP8266 modulio šviesos diodas turėtų pradėti mirksėti. Tai reiškia, kad jis pradėjo gauti duomenis per MQTT. Šiuo metu taip pat turėtų įsijungti plokštės šviesos diodas.

Po atidėjimo, kurį nustatėte eskize (numatytasis yra 10 sekundžių), šviesos diodas išsijungs. Sveikiname! Galite valdyti LED savo pirštų atspaudais iš bet kurios pasaulio vietos!

Elektroninio užrakto nustatymas

Priėjome paskutinę projekto dalį: tiesioginis ryšys ir valdymas elektroninis užraktas su Arduino ir pirštų atspaudų jutikliu. Projektas nėra lengvas, galite naudoti visus šaltinius tokia forma, kokia jie pateikti aukščiau, tačiau vietoj šviesos diodo prijunkite relę.

Norėdami tiesiogiai prijungti užraktą, jums reikės papildomų komponentų: 12 V maitinimo šaltinio, maitinimo lizdo, tranzistoriaus (į šis pavyzdys Naudojamas IRLB8721PbF MOSFET, bet galima naudoti kitą, pavyzdžiui, bipolinį tranzistorių TIP102. Jei naudojate bipolinį tranzistorių, turėsite pridėti rezistorių.

Nurodyta apačioje elektros grandinė visų komponentų prijungimas prie ESP8266 modulio:


Atminkite, kad jei naudojate MOSFET tranzistorių, jums nereikia rezistoriaus tarp ESP8266 5 kaiščio ir tranzistoriaus.

Pilnai surinktas projektas parodytas žemiau esančioje nuotraukoje:


Įjunkite ESP8266 modulį naudodami FTDI modulį ir prijunkite 12 V maitinimo šaltinį prie lizdo. Jei naudojote aukščiau rekomenduojamus jungties kaiščius, jums nereikės nieko keisti eskize.

Dabar galite uždėti pirštą ant jutiklio: užraktas turėtų veikti ir reaguoti į jūsų piršto atspaudą. Toliau pateiktame vaizdo įraše parodytas veikiantis automatinio „išmaniojo“ užrakto projektas:

Tolimesnė „Smart Lock“ projekto plėtra

Savo projekte išleidome nuotolinio valdymo pultas durų užraktas naudojant pirštų atspaudus.

Nesivaržykite eksperimentuoti, modifikuoti eskizą ir pakinktus. Pavyzdžiui, galite pakeisti duris elektroninis užraktas ant relės, kad valdytumėte 3D spausdintuvo, manipuliatoriaus ar keturkoperio galią ...

Jūs galite plėtoti savo " protingas namas Pavyzdžiui, nuotoliniu būdu suaktyvinkite Arduino drėkinimo sistemą arba įjunkite šviesą kambaryje... Ir nepamirškite, kad vienu metu galite suaktyvinti beveik neribotą skaičių įrenginių naudodami Adafruit IO.

Palikite savo komentarus, klausimus ir dalinkitės Asmeninė patirtisžemiau. Diskusijoje dažnai gimsta naujos idėjos ir projektai!

Šiandienos pamoka, kaip naudoti RFID skaitytuvą su Arduino kuriant paprastą blokavimo sistemą. paprastais žodžiais- RFID užraktas.

RFID (angl. Radio Frequency IDentification) – tai automatinio objektų identifikavimo būdas, kai radijo signalais nuskaitomi arba įrašomi vadinamuosiuose atsakikliuose, arba RFID žymėse, saugomi duomenys. Bet kurią RFID sistemą sudaro skaitytuvas (skaitytojas, skaitytuvas arba užklausiklis) ir atsakiklis (dar žinomas kaip RFID žyma, kartais taip pat vartojamas terminas RFID žyma).

Šioje pamokoje bus naudojama RFID žyma iš „Arduino“. Įrenginys nuskaito kiekvienos RFID žymos, kurią dedame šalia skaitytuvo, unikalų identifikatorių (UID) ir parodo jį OLED ekrane. Jei žymos UID yra lygus iš anksto nustatytai reikšmei, saugomai Arduino atmintyje, tada ekrane pamatysime pranešimą „Atrakinta“. Jei unikalus identifikatorius nėra lygus iš anksto nustatytai reikšmei, pranešimas „Atrakinta“ nepasirodys – žiūrėkite nuotrauką žemiau.

Užraktas uždarytas

Užraktas atidarytas

Išsami informacija, reikalinga kuriant šį projektą:

  • RFID skaitytuvas RC522
  • OLED ekranas
  • Bandomoji Lenta
  • Laidai

Papildoma informacija:

  • Baterija (powerbank)

Bendra projekto komponentų kaina buvo apie 15 USD.

2 veiksmas: RFID skaitytuvas RC522

Kiekviena RFID žyma turi mažą lustą (balta kortelė nuotraukoje). Jei nukreipsite žibintuvėlį į šią RFID kortelę, pamatysite mažą lustą ir ją supančią ritę. Šis lustas neturi baterijos, kuri generuotų energiją. Jis gauna energiją iš skaitytuvo belaidžiu būdu, naudodamas šią didelę ritę. Tokią RFID kortelę galima nuskaityti iki 20 mm atstumu.

Ta pati mikroschema yra RFID rakto pakabuko žymose.

Kiekviena RFID žyma turi unikalų numerį, kuris ją identifikuoja. Tai UID, rodomas OLED ekrane. Išskyrus šį UID, kiekviena žyma gali saugoti duomenis. Šio tipo kortelė gali saugoti iki 1000 duomenų. Įspūdinga, ar ne? Ši funkcija šiandien nebus naudojama. Šiandien viskas, kas domina, yra konkrečios kortelės identifikavimas pagal UID. RFID skaitytuvo ir šių dviejų RFID kortelių kaina yra apie 4 USD.

3 veiksmas: OLED ekranas

Šioje pamokoje naudojamas 0,96 colio 128x64 I2C OLED monitorius.

Tai labai geras ekranas, skirtas naudoti su Arduino. Tai OLED ekranas, o tai reiškia, kad jis sunaudoja mažai energijos. Šio ekrano energijos suvartojimas yra apie 10-20 mA ir priklauso nuo pikselių skaičiaus.

Ekrano skiriamoji geba yra 128 x 64 pikseliai ir jis yra mažas. Yra dvi rodymo parinktys. Vienas iš jų yra vienspalvis, o kitas, kaip ir naudojamas pamokoje, gali rodyti dvi spalvas: geltoną ir mėlyną. Ekrano viršus gali būti tik geltonas, o apačia – mėlyna.

Šis OLED ekranas yra labai ryškus ir turi puikią ir labai gražią biblioteką, kurią „Adafruit“ sukūrė šiam ekranui. Be to, ekrane naudojama I2C sąsaja, todėl prisijungti prie „Arduino“ yra neįtikėtinai lengva.

Jums reikia prijungti tik du laidus, išskyrus Vcc ir GND. Jei nesate naujokas Arduino ir norite savo projekte naudoti nebrangų ir paprastą ekraną, pradėkite čia.

4 veiksmas: prijunkite visas detales

Taip jau susiklostė, kad darbe nusprendėme įsirengti kodinę spyną savo durims, nes nuolat įbėgame - išbėgame iš biuro, kurio durys turi būti nuolat uždarytos, nesant gyventojų. Raktai dažnai pamirštami viduje. Apskritai nusprendėme, kad kombinuota spyna yra puikus sprendimas.

Pasiknisęs po Kinijos sendaikčių turgus ir ebay neradau nieko pigaus ir daugiau mažiau rimto ir nusprendžiau pasigaminti pats. Iš karto padarysiu išlygą, kad Arduino platforma pasirinkta dėl jos paprastumo, nes nebuvo jokios patirties bendrauti su mikrovaldikliais.

Idėja

Ant durų, durų išorėje, turėtų būti klaviatūra, kurioje įvedamas slaptažodis, o viduje – fiksuota likusi konstrukcija. Nendrinis jungiklis naudojamas visiškam durų uždarymui valdyti. Išeidamas iš kabineto žmogus paspaudžia "*" klaviatūroje ir nelaukdamas kol duris uždarys užraktas, imasi savo reikalų, kai durys bus visiškai uždarytos, nendrinis jungiklis užsidarys ir spyna užsidarys. . Durelės atidaromos įvedus 4 skaitmenų slaptažodį ir paspaudus „#“.

Komponentai

Arduino UNO = 18 USD
Arduino protoshield + duonos lenta = 6 USD
L293D = 1 USD
30 vnt pynimo vielos pluoštas = 4 USD
2 RJ45 lizdai = 4 USD
2 RJ45 kištukai = 0,5 USD
centrinio užrakto pavara = 250 rublių.
Nendrinis jungiklis = išplėštas iš seno lango.
Milžiniško dydžio metalinis skląstis = nemokamas
Sena D-LINK stebulė, pagaminta iš 1,5 mm geležies = nemokama
Maitinimo šaltinis iš to paties D-LINK šakotuvo 12 ir 5v = taip pat nemokamas
Krūva varžtų ir veržlių, skirtų visam šiam daiktui pritvirtinti prie korpuso = 100 rublių.
Signalizacijos valdymo pultas = nemokamas.

Iš viso: 33,5 USD ir 350 rublių.

Ne taip jau mažai, sakote, ir tikrai būsite teisūs, bet už malonumą reikia mokėti! Ir visada malonu ką nors surinkti savo rankomis. Be to, dizainas gali būti gerokai sumažintas, jei naudosite pliką MC be Arduino.

Pasiruošimas surinkimui

Norėčiau pasakyti keletą žodžių apie pagrindinio pavaros konstrukcijos elemento įsigijimą. Vietinėje automobilių parduotuvėje man buvo pasiūlytos dviejų tipų pavaros: „su dviem laidais ir su penkiais“. Pasak pardavėjos, jie buvo visiškai vienodi ir laidų skaičiaus skirtumas visiškai nieko nereiškė. Tačiau, kaip vėliau paaiškėjo, taip nėra! Išsirinkau įrenginį su dviem laidais, maitino 12V. 5 laidų konstrukcija apima ribinius jungiklius, valdančius rankos judėjimą. Kad nusipirkau ne tą, supratau tik išardęs ir jau buvo per vėlu keisti. Svirties eiga buvo per trumpa normaliai pajudinti skląstį, todėl teko jį šiek tiek modifikuoti, o būtent nuimti dvi gumines poveržles, kurios sutrumpina pavaros svirties eigą. Norėdami tai padaryti, korpusą reikėjo pjauti kartu su paprastu pjūklu, nes antroji poveržlė buvo viduje. Mėlyna elektros juosta, kaip visada, mums padėjo ateityje, ją surenkant atgal.
Pavaros varikliui valdyti buvo naudojamas L293D variklio vairuotojas, kuris gali atlaikyti iki 1200 mA didžiausią apkrovą, kai sustabdėme pavaros variklį, didžiausia apkrova pakilo tik iki 600 mA.
Iš valdymo pulto nuo įsilaužimo signalizacijos buvo pašalinti klaviatūros, garsiakalbio ir dviejų šviesos diodų kontaktai. Nuotolinio valdymo pultas ir pagrindinis įrenginys turėjo būti sujungti naudojant vytos poros ir RJ45 jungtis.

Programavimas.

Taigi, iki šiol neturėjau jokios patirties su Arduino programavimu. Naudojau kitų žmonių patobulinimus ir straipsnius iš arduino.cc svetainės. Kam rūpi šis bjaurus kodas :)

Nuotrauka ir video



Arduino ir pavara


Maitinimo šaltinis


Klaviatūra


Espagnolette (sujungta su pavara metaline adata ir ant kurios dėl grožio uždedamas šilumos susitraukimas)

Vaizdo įrašas apie įrenginio veikimo procesą: