„Pasidaryk pats“ kombinuotas užraktas „Arduino“. Automatinis išmanusis užraktas ir Arduino

„Pasidaryk pats“ kodinis užraktas „Arduino“.


Fonas

Taip jau susiklostė, kad darbe nusprendėme ant savo durų įsirengti kodinę spyną, nes nuolat įbėgame ir išeiname 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, nieko pigaus ir daugiau ar mažiau rimto neradau ir nusprendžiau pasigaminti pati. Iš karto pasakysiu, kad Arduino platforma buvo pasirinkta dėl jos paprastumo, nes aš neturėjau jokios patirties su mikrovaldikliais.

Ant durų su lauke Durys turi turėti klaviatūrą, kurioje įvedamas slaptažodis, o likusi konstrukcija turi būti apsaugota viduje. Nendrinis jungiklis naudojamas visiškam durų uždarymui valdyti. Išeidamas iš kabineto žmogus paspaudžia klaviatūroje „*“ ir, nelaukdamas, kol durys užsidarys su užraktu, imasi savo reikalų, kai durys bus visiškai uždarytos, nendrinis jungiklis užsidarys ir spyna užsidarys. . Durys atidaromos įvedus 4 skaitmenų slaptažodį ir paspaudus „#“.

Priedai

Arduino UNO = 18 USD
Arduino protoshield + duonos lenta = 6 USD
L293D = 1 USD
„Bradboard“ laidų ryšulėlis 30 vnt. = 4 USD
2 RJ45 lizdai = 4 USD
2 RJ45 kištukai = 0,5 USD
centrinio užrakto pavara = 250 rub.
Nendrinis jungiklis = laisvai nuplėštas nuo seno lango.
Milžiniškas metalinis skląstis = laisvas
Korpusas iš senos D-LINK stebulės, pagamintos iš pusantro milimetro geležies = nemokamas
Maitinimas iš to paties D-LINK šakotuvo 12 ir 5 V = taip pat nemokamas
Krūva varžtų ir veržlių, skirtų visam šiam daiktui pritvirtinti prie korpuso = 100 rublių.
Nuotolinio valdymo pultas iš signalizacija= nemokama.

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

Ne taip jau mažai, sakysite, 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 žymiai sumažintas, jei naudosite pliką MK be „Arduino“.

Pasiruošimas surinkimui

Norėčiau pasakyti keletą žodžių apie pagrindinio pavaros konstrukcijos elemento įsigijimą. Vietinė automobilių parduotuvė man pasiūlė dviejų tipų pavaras: „su dviem laidais ir su penkiais“. Pasak pardavėjos, jie buvo visiškai identiški 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. Penkių laidų konstrukcija turi ribinius jungiklius, skirtus valdyti svirties judėjimą. Kad nusipirkau ne tą, supratau tik išardęs ir jau buvo per vėlu keisti. Svirties eiga pasirodė per trumpa, kad būtų galima tinkamai atitraukti skląstį, todėl teko jį šiek tiek modifikuoti, o būtent nuimti dvi gumines poveržles, kurios sutrumpino pavaros svirties eigą. Norėdami tai padaryti, kėbulą išilgai reikėjo pjauti paprastu pjūklu, nes antroji poveržlė buvo viduje. Mėlyna elektrinė juosta, kaip visada, mums padėjo ateityje ją surenkant atgal.

Pavaros varikliui valdyti panaudojome L293D variklio tvarkyklę, kuri gali atlaikyti iki 1200 mA didžiausią apkrovą, kai sustabdėme pavaros variklį, didžiausia apkrova padidėjo tik iki 600 mA.

Iš apsaugos signalizacijos pulto 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 patirties programuojant Arduino. Naudojau kitų žmonių darbus ir straipsnius iš svetainės arduino.cc. Visi norintys gali pažiūrėti į šį bjaurų kodą :)

Nuotrauka ir video

Taip jau susiklostė, kad darbe nusprendėme savo durims įsirengti kodinę spyną, nes nuolat įbėgame - išbėgame iš biuro, kurio duris reikėtų nuolat uždaryti, 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, nieko pigaus ir daugiau ar mažiau rimto neradau ir nusprendžiau pasigaminti pati. Iš karto pasakysiu, kad Arduino platforma buvo pasirinkta dėl jos paprastumo, nes aš neturėjau jokios patirties su mikrovaldikliais.

Idėja

Durų išorėje turėtų būti klaviatūra, kurioje įvedamas slaptažodis, o likusi konstrukcijos dalis turi būti pritvirtinta viduje. Nendrinis jungiklis naudojamas visiškam durų uždarymui valdyti. Išeidamas iš kabineto žmogus paspaudžia „*“ klaviatūroje ir, nelaukdamas, kol durys užsidarys su užraktu, imasi reikalų, kai durys visiškai uždarytos, nendrinis jungiklis užsidarys ir spyna užsidarys. . Durys atidaromos įvedus 4 skaitmenų slaptažodį ir paspaudus „#“.

Priedai

Arduino UNO = 18 USD
Arduino protoshield + duonos lenta = 6 USD
L293D = 1 USD
„Bradboard“ laidų ryšulėlis 30 vnt. = 4 USD
2 RJ45 lizdai = 4 USD
2 RJ45 kištukai = 0,5 USD
centrinio užrakto pavara = 250 rub.
Nendrinis jungiklis = laisvai nuplėštas nuo seno lango.
Milžiniškas metalinis skląstis = laisvas
Korpusas iš senos D-LINK stebulės, pagamintos iš pusantro milimetro geležies = nemokamas
Maitinimas iš to paties D-LINK šakotuvo 12 ir 5 V = taip pat nemokamas
Krūva varžtų ir veržlių, skirtų visam šiam daiktui pritvirtinti prie korpuso = 100 rublių.
Apsaugos signalizacijos pultas = nemokamas.

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

Ne taip jau mažai, sakysite, 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 žymiai sumažintas, jei naudosite pliką MK be „Arduino“.

Pasiruošimas surinkimui

Norėčiau pasakyti keletą žodžių apie pagrindinio pavaros konstrukcijos elemento įsigijimą. Vietinė automobilių parduotuvė man pasiūlė dviejų tipų pavaras: „su dviem laidais ir su penkiais“. Pasak pardavėjos, jie buvo visiškai identiški 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. Penkių laidų konstrukcija turi ribinius jungiklius, skirtus valdyti svirties judėjimą. Kad nusipirkau ne tą, supratau tik išardęs ir jau buvo per vėlu keisti. Svirties eiga pasirodė per trumpa, kad būtų galima tinkamai atitraukti skląstį, todėl teko jį šiek tiek modifikuoti, o būtent nuimti dvi gumines poveržles, kurios sutrumpino pavaros svirties eigą. Norėdami tai padaryti, kėbulą išilgai reikėjo pjauti paprastu pjūklu, nes antroji poveržlė buvo viduje. Mėlyna elektros juosta, kaip visada, mums padėjo ateityje surenkant ją atgal.
Pavaros varikliui valdyti panaudojome L293D variklio tvarkyklę, kuri gali atlaikyti iki 1200 mA didžiausią apkrovą, kai sustabdėme pavaros variklį, didžiausia apkrova padidėjo tik iki 600 mA.
Iš apsaugos signalizacijos pulto 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 patirties programuojant Arduino. Naudojau kitų žmonių darbus ir straipsnius iš svetainės arduino.cc. Visi norintys gali pažiūrėti į šį bjaurų kodą :)

Nuotrauka ir video



Arduino ir pavara


energijos vienetas


Klaviatūra


Espagnolette (su metaliniu stipinu sujungta su pavara ir dėl grožio padengta termiškai susitraukiančia medžiaga)

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

Šiandienos pamoka yra apie tai, kaip naudojant RFID skaitytuvą su Arduino sukurti paprastą užrakinimo sistemą, paprastais žodžiais- RFID užraktas.

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

Šioje pamokoje bus naudojama RFID žyma su „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 vertei, saugomai Arduino atmintyje, tada ekrane pamatysime pranešimą „Atrakinta“. Jei unikalus ID nėra lygus iš anksto nustatytai reikšmei, pranešimas „Atrakinta“ nepasirodys – žiūrėkite nuotrauką žemiau.

Pilis uždaryta

Užraktas atidarytas

Dalys, reikalingos šiam projektui sukurti:

  • 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

Kiekvienoje RFID žymoje yra mažas lustas (balta kortelė parodyta nuotraukoje). Jei šią RFID kortelę apšviesite žibintuvėliu, 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 taip pat yra RFID raktų pakabos žymose.

Kiekviena RFID žyma turi unikalų numerį, kuris ją identifikuoja. Tai UID, rodomas OLED ekrane. Išskyrus šį UID, kiekviena žyma gali saugoti duomenis. Tokio tipo kortelė gali saugoti iki 1 tūkst. Įspūdinga, ar ne? Ši funkcija šiandien nebus naudojama. Šiandien įdomu tik identifikuoti konkrečią kortelę pagal jos UID. RFID skaitytuvo ir šių dviejų RFID kortelių kaina yra apie 4 USD.

3 veiksmas: OLED ekranas

Pamokoje naudojamas 0,96 colių 128x64 I2C OLED monitorius.

Tai labai geras ekranas, skirtas naudoti su Arduino. Tai yra 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, o dydis yra nedidelis. 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 – tik 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: visų dalių sujungimas

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

Panašus užraktas atsidaro paspaudus išmaniojo telefono mygtuką. Laimei, išmanieji telefonai ir planšetiniai kompiuteriai jau įžengė į mūsų kasdienį gyvenimą. Kai kuriais atvejais „išmanieji užraktai“ yra prijungti prie „debesų paslaugų“, pvz., „Google“ disko, ir atidaromi nuotoliniu būdu. Be to, ši parinktis suteikia galimybę atidaryti duris kitiems žmonėms.

Šiuo projektu bus įdiegta „Arduino“ išmaniojo užrakto „pasidaryk pats“ versija, kurią galima valdyti nuotoliniu būdu iš bet kurios pasaulio vietos.

Be to, projektas papildė galimybę atidaryti užraktą identifikavus piršto atspaudą. Šiuo tikslu 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 supaprastina jutiklio nustatymo procesą. Šiame projekte naudojama Arduino Uno. Prisijungimui prie interneto naudojama Adafruit CC3000 plokštė.

Pradėkime nuo maitinimo prijungimo:

  • Prijunkite 5 V kaištį iš Arduino plokštės prie raudono maitinimo bėgio;
  • GND kaištis iš „Arduino“ jungiasi prie mėlyno bėgelio be litavimo plokštės.

Pereikime prie pirštų atspaudų jutiklio prijungimo:

  • Pirmiausia prijunkite maitinimą. Norėdami tai padaryti, 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 pereikime prie CC3000 modulio:

  • Sujungiame IRQ kaištį iš CC3000 plokštės su 2 kaiščiu Arduino.
  • 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ų.

Na, o pabaigoje reikia tiekti maitinimą: Vin - į Arduino 5V (raudonas bėgis ant jūsų grandinės plokštės) ir GND į GND (mėlynas bėgis ant duonos plokštės).

Pilnai surinkto projekto nuotrauka parodyta žemiau:

Prieš kurdami eskizą, kuris įkels duomenis į Adafruit IO, turite perkelti duomenis apie pirštų atspaudus į 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ą naudodami „Adafruit IO“.

Po to galime pereiti prie kito Arduino „išmaniojo užrakto“ kūrimo etapo: būtent, sukurti eskizą, kuris perduos duomenis į Adafruit IO. Kadangi programa yra gana plati, šiame straipsnyje pabrėšime ir apsvarstysime tik pagrindines jos dalis, o tada pateiksime nuorodą į GitHub, kur galėsite 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ą, įterpdami savo WiFi tinklo parametrus, nurodydami SSID ir slaptažodį:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Be to, norėdami prisijungti prie „Adafruit IO“ paskyros, turite įvesti savo vardą ir AIO 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 "/feeds/fingerprint";

Adafruit_MQTT_Publish piršto atspaudas = Adafruit_MQTT_Publish(&mqtt, PIRKŠTŲ_SAVYBĖS);

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 panaudoto piršto atspaudo ID:

int piršto ID = 0;

Po to inicijuojame skaitiklį ir atidedame savo projektą. Iš esmės norime, kad užraktas automatiškai užsifiksuotų atidarius. Š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;

Funkcijos setup() turinyje inicijuojame pirštų atspaudų jutiklį ir užtikriname, kad CC3000 lustas būtų prijungtas prie jūsų WiFi tinklo.

Funkcijos „loop()“ korpuse prisijungiame prie „Adafruit IO“. Už tai atsakinga ši eilutė:

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

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!"));

lastActivation = millis();

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

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

lockState = klaidinga;

if (! piršto atspaudas.public(state)) (

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ų būtinų Arduino bibliotekų!

Įsitikinkite, kad atlikote visus reikiamus eskizo pakeitimus ir įkelkite jį į savo „Arduino“. Po to atidarykite langą Serial Monitor.

Kai „Arduino“ prisijungs prie „WiFi“ tinklo, pirštų atspaudų jutiklis pradės mirksėti raudonai. Padėkite pirštą ant jutiklio. ID numeris turėtų būti rodomas serijinio monitoriaus lange. Jei jis 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. Norint prisijungti prie belaidžio tinklo ir įjungti/išjungti užraktą, 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, prie kurio vėliau bus prijungtas užraktas. Tai suteiks mums galimybę išbandyti savo kodą nesigilinant į spynos konstrukcijos specifiką.

Schema gana paprasta: pirmiausia įdiekite ESP8266 ant duonos lentos. Po to įdiekite šviesos diodą. Nepamirškite, kad ilgoji (teigiama) LED kojelė yra sujungta per rezistorių. Antroji rezistoriaus kojelė yra prijungta prie ESP8266 modulio 5 kaiščio. Antrąjį (katodą) LED prijungiame prie ESP8266 GND kaiščio.

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


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

Pradedame nuo reikiamų bibliotekų prijungimo:

#įtraukti

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

„WiFi“ nustatymų 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, kaip ir ankstesniame skyriuje:

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

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

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

pinMode(relayPin, OUTPUT);

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

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

Adafruit_MQTT_Prenumeruoti *prenumerata;

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

if (prenumerata == &lock) (

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ą galite atsisiųsti iš „GitHub“.

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

Norėdami užprogramuoti ESP8266 lustą, galite naudoti paprastą USB-FTDI keitiklį.

Įkelkite eskizą į „Arduino“ ir atidarykite „Serial Monitor“ langą. Šiame etape mes tiesiog patikrinome, ar pavyko prisijungti prie Adafruit IO: toliau apžvelgsime galimas funkcijas.

Projekto testavimas

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


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

Dabar turime užtikrinti duomenų mainus tarp pirštų atspaudų ir užrakto kanalų. Užrakinimo kanalas turi turėti reikšmę „1“, kai piršto atspaudo kanalas įgauna reikšmę „1“ ir atvirkščiai.

Tam naudojame labai galingas įrankis Adafruit IO: paleidikliai. 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 „Paleidikliai“. 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 galime iš tikrųjų išbandyti savo projektą! Uždedame pirštą ant jutiklio ir matome, kaip Arduino pradėjo mirksėti su š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 plokštės šviesos diodas taip pat turėtų įsijungti.

Po uždelsimo, kurį nustatėte eskize (numatytasis nustatymas 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

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

Norėdami tiesiogiai prijungti užraktą, jums reikės papildomų komponentų: 12 V maitinimo šaltinio, lizdo maitinimui prijungti, tranzistoriaus (V šiame pavyzdyje 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 schema visų komponentų prijungimas prie ESP8266 modulio:


Atminkite, kad jei naudojate MOSFET tranzistorių, jums nereikės rezistoriaus tarp ESP8266 modulio 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 prijungimui naudojote aukščiau rekomenduojamus kaiščius, jums nereikės nieko keisti eskize.

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

Tolesnė „Smart Lock“ projekto plėtra

Išleistas mūsų projekte nuotolinio valdymo pultas durų užraktas naudojant pirštų atspaudus.

Nedvejodami eksperimentuokite, keiskite eskizą ir įrišimą. Pavyzdžiui, galite pakeisti duris elektroninis užraktas relė, skirta valdyti 3D spausdintuvo, manipuliatoriaus ar keturkoperio galią...

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

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

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

Ateityje galėsite patobulinti ir išplėsti funkcijas. Pavyzdžiui, pridėkite funkciją „naujų raktų pridėjimas ir jų pašalinimas iš atminties“. Baziniu atveju panagrinėkime paprastą pavyzdį, kai unikalus rakto identifikatorius yra iš anksto nustatytas programos kode.

Šioje pamokoje mums reikės:

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

2) Dabar reikia prijungti garsinį signalą, kuris duos signalą, jei raktas veiks ir spyna atsidarys, ir antras signalas, kai spyna užsidarys.

Mes prijungiame garsinį signalą tokia seka:

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

3) Servo pavara bus naudojama kaip atrakinimo mechanizmas. Galima pasirinkti bet kurią servo pavarą, atsižvelgiant į reikalingą dydį ir jėgą, kurią sukuria servo pavara. Servo turi 3 kontaktus:

Aiškiau matote, kaip sujungėme visus modulius toliau 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 žymos numerį dešimtainiu formatu Servo servo; void setup() ( Serial.begin(9600); Serial.println("Laukiama kortelės..."); SPI.begin(); // SPI inicijavimas / Init SPI magistralė. mfrc522.PCD_Init(); // inicijavimas MFRC522 / Init MFRC522 kortelė servo.attach(6); // nustatyti servo į uždarą būseną ( return; ) // Pasirinkite žymą if (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0 // Išveskite žymos serijos numerį (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 į eskizą išsamiau:

Norėdami sužinoti kortelės UID (Tag), turite įrašyti šį eskizą į arduino, surinkti aukščiau aprašytą grandinę ir atidaryti konsolę (Serial Port Monitoring). Kai paliesite RFID žymą, konsolėje bus rodomas skaičius

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

Jei (uidDec == 3763966293) // Palyginkite žymos Uid, jei jis lygus duotam, tada servo pavara atidaro vožtuvą.

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

Vaizdo įrašas: