Nyissa ki az arduino mágneses zárat. RFID zár készítése Arduino segítségével

Ebben a leckében megtanuljuk, hogyan készítsünk egy egyszerű rendszert, amely egy elektronikus kulccsal (Tag) nyitja a zárat.

A jövőben módosíthatja és bővítheti a funkcionalitást. Például adja hozzá az "új kulcsok hozzáadása és eltávolítása a memóriából" funkciót. Alapesetben vegyünk egy egyszerű példát, amikor egy egyedi kulcsazonosító előre be van állítva a programkódban.

Ebben az oktatóanyagban szükségünk lesz:

A projekt megvalósításához telepítenünk kell a könyvtárakat:

2) Most csatlakoztatnia kell egy hangjelzőt, amely jelet ad, ha a kulcs kiold és a zár kinyílik, és egy második jelet, amikor a zár be van zárva.

A hangjelzőt a következő sorrendben csatlakoztatjuk:

Arduino Berregő
5V VCC
GND GND
5. tű IO

3) A szervót kioldó mechanizmusként fogják használni. Bármely szervo választható, attól függően, hogy milyen méreteket és erőket igényel, amelyeket a szervó hoz létre. A szervónak 3 tűje van:

Az alábbi képen tisztábban láthatja, hogyan csatlakoztattuk az összes modult:

Most, ha minden csatlakoztatva van, akkor folytathatja a programozást.

Vázlat:

#beleértve #beleértve #beleértve // "RFID" könyvtár. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // a címke számának decimális formátumban való tárolása Szervo szervo; void setup () (Serial.begin (9600); Serial.println ("Várakozás a kártyára..."); SPI.begin (); // SPI inicializálás / Init SPI bus.mfrc522.PCD_Init (); // inicializálás MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // állítsa a szervót zártra) void loop () (// Keressen új címkét, ha (! Mfrc522.PICC_IsNewCardPresent ()) ; ) // Válasszon ki egy címkét if (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Adja ki a címke sorozatszámát.for (byte 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); // устанавливаем серву в закрытое сосотояние }

Elemezzük részletesebben a vázlatot:

A kártya UID-jének (Tags) megtudásához meg kell írni ezt a vázlatot az arduino-ba, össze kell szerelni a fent leírt áramkört, és meg kell nyitni a konzolt (Serial Port Monitoring). Amikor a címkét az RFID-hez viszi, egy szám jelenik meg a konzolon

Az eredményül kapott UID-t a következő sorba kell beírni:

Ha (uidDec == 3763966293) // Hasonlítsd össze a címke Uid-jét, ha megegyezik a megadottal, akkor a szervo nyitja a szelepet.

Minden kártya rendelkezik ezzel az egyedi azonosítóval, és nem ismétlődik. Így amikor elhozod a kártyát, aminek az azonosítóját a programban beállítottad, a rendszer a szervo segítségével nyitja meg a hozzáférést.

Videó:

Történt ugyanis, hogy úgy döntöttünk, hogy a munkahelyünkön kombizárat szerelünk az ajtónkra, mert folyamatosan berohanunk - kirohanunk az irodából, aminek az ajtaját lakosok hiányában folyamatosan zárni kell. A kulcsokat gyakran bent felejtik. Általában úgy döntöttünk, hogy a kombinációs zár nagyszerű megoldás.

Miután a kínai bolhapiacokon és az ebay-en turkáltam, nem találtam semmi olcsót és többé-kevésbé komolyat, és úgy döntöttem, hogy magam készítem el. Azonnal leszögezem, hogy az Arduino platformot az egyszerűsége miatt választották, mivel a mikrokontrollerekkel való kommunikációról egyáltalán nem volt tapasztalat.

Ötlet

Az ajtón, az ajtó külső oldalán legyen egy billentyűzet, amelyen a jelszót beírják, a belső oldalon a szerkezet többi része rögzített. Az ajtó teljes zárásának szabályozására reed kapcsoló szolgál. Az irodából kilépve az ember megnyomja a „*”-t a billentyűzeten, és anélkül, hogy megvárná, hogy a zár becsukja az ajtót, folytatja a dolgát, amikor az ajtó teljesen becsukódik, a reed kapcsoló záródik és a zár záródik. Az ajtó egy 4 számjegyű jelszó megadásával és a "#" gomb megnyomásával nyitható ki.

Alkatrészek

Arduino UNO = 18 dollár
Arduino protoshield + kenyértábla = 6 dollár
L293D = 1 USD
30 db Bradboard huzalcsomag = 4 dollár
2 RJ45 aljzat = 4 dollár
2 RJ45 csatlakozó = 0,5 USD
központi zár működtető = 250 rubel.
Reed kapcsoló = szabad a régi ablaktól.
Óriási méretű fém retesz = szabad
Régi D-LINK agy 1,5 mm-es vasból = ingyenes
Ugyanabból a D-LINK hubból származó tápegység 12 és 5 V = esetén szintén ingyenes
Egy csomó csavar és anya, hogy mindezt a testhez rögzítse = 100 rubel.
Riasztó központ = szabad.

Teljes: 33,5 dollár és 350 rubel.

Nem is olyan kevés, mondod, és biztosan igazad lesz, de az élvezetért fizetni kell! És mindig jó dolog saját kezűleg gyűjteni valamit. Ráadásul a dizájn jelentősen lecsökkenthető, ha csupasz MC-t használunk Arduino nélkül.

Felkészülés az összeszerelésre

Szeretnék néhány szót ejteni a működtető szerkezet egyik kulcselemének megvásárlásáról. Egy helyi autóboltban kétféle hajtóművet kínáltak: "két vezetékes és öt vezetékes". Az eladónő szerint teljesen egyformák voltak és a vezetékek számbeli különbsége egyáltalán nem jelentett semmit. Ez azonban, mint később kiderült, nem így van! Két vezetékes készüléket választottam, 12V-ról volt táplálva. Az 5 vezetékes kialakítás végálláskapcsolókat tartalmaz a kar mozgásának szabályozására. Csak akkor jöttem rá, hogy rosszat vettem, amikor szétszedtem, és már késő volt cserélni. A kar mozgása túl rövid volt a retesz normál mozgatásához, ezért egy kis módosításra volt szükség, nevezetesen a működtetőkar útját lerövidítő két gumi alátét eltávolítása. Ehhez a testet egy közönséges fémfűrésszel együtt kellett vágni, mert a második alátét benne volt. A kék elektromos szalag, mint mindig, segített a jövőben a visszaszerelésben.
Az állítómotor vezérlésére az L293D motormeghajtót alkalmazták, amely akár 1200 mA-es csúcsterhelést is elbír, amikor az aktuátormotort leállítottuk, a csúcsterhelés csak 600 mA-re emelkedett.
A riasztó vezérlőpultjáról eltávolították a billentyűzet érintkezőit, a hangszórót és a két LED-et. A távirányítót és a fő eszközt csavart érpárral és RJ45 csatlakozókkal kellett volna összekötni.

Programozás.

Tehát eddig nem volt tapasztalatom az Arduino programozással kapcsolatban. Mások fejlesztéseit és cikkeit használtam az arduino.cc webhelyről. Kit érdekel ez a csúnya kód :)

Fotó és videó



Arduino és aktuátor


Tápegység


Billentyűzet


Espagnolette (fém küllővel csatlakozik az aktuátorhoz, és a szépség kedvéért hőzsugorodást viselnek)

Videó a készülék működési folyamatáról:

Ebben a cikkben megmutatom, hogyan készítsünk arduino kombinációs zárat. Ehhez piros és zöld LED-ekre, berregőre, arduino nanora, I2C konverteres LCD kijelzőre, szervo meghajtóra és 4x4-es mátrix billentyűzetre van szükségünk. Bekapcsoláskor a kijelzőn az "Enter code" felirat jelenik meg.

a piros LED kigyullad,

és a zöld kikapcsol, a szervo 0°-ra van állítva. Számok beírása közben a * világít a kijelzőn.

Ha a kódot hibásan adta meg, a kijelzőn az "Enter cod." felirat jelenik meg. Ha a kód helyes, hangjelzés hallható, a szervo 180 ° -kal elfordul, a kijelzőn az "Open" felirat jelenik meg.

a zöld LED világít,

és a piros kikapcsol. 3 másodperc múlva a szervo visszatér alaphelyzetbe, a piros LED kigyullad és a zöld LED kialszik, a kijelzőn a "Close" felirat jelenik meg.

akkor a kijelzőn megjelenik az "Enter code" felirat. Most a sémáról. Először az arduinót vezetékekkel csatlakoztatjuk a kenyérsütőtáblához (tápérintkezők).

Ezután csatlakoztatjuk a mátrix billentyűzetet a D9 - D2 érintkezőkhöz.

Aztán a szervo. Csatlakoztatjuk a 10-es érintkezőhöz.

Piros LED a 11. érintkezőhöz.

Zöld – a 12-es tűhöz.

Csengő – a 13. tűhöz.

Most töltse fel a vázlatot.

#beleértve #beleértve #beleértve #beleértve iarduino_KB KB (9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd (0x27, 16, 2); Szervo szervo; int pass = (3, 6, 1, 8); int in; int r = 11; int g = 12; void setup () (KB.begin (KB1); pinMode (r, OUTPUT); pinMode (g, OUTPUT); lcd.init (); lcd.backlight (); digitalWrite (g, LOW); digitalWrite (r, HIGH ); servo.attach (10); servo.write (0); lcd.setCursor (0, 0);) void loop () (lcd.clear (); lcd.print ("Írja be a kódot."); while ( ! KB.check (KEY_DOWN)) (késleltetés (1);) in = KB.getNum; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("*"); while (! KB. check (KEY_DOWN)) (késleltetés (1);) in = KB.getNum; lcd.print ("*"); while (! KB.check (KEY_DOWN)) (késleltetés (1);) in = KB.getNum; lcd.print ("*"); while (! KB.check (KEY_DOWN)) (késleltetés (1);) in = KB.getNum; lcd.print ("*"); if (in == pass) (if (in == pass) (if (in == pass) (if (in == pass) (lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Open."); hang ( 13, 400, 750); servo.write (180); digitalWrite (r, LOW); digitalWrite (g, HIGH); késleltetés (3000); lcd.clear (); lcd.setCursor (0, 0); lcd. print ("Bezárás."); hang (13, 300, 700); szervo.write (0); digitalWrite (g, LOW); digitalWrite (r, HIGH); dela y (1000); ))))))

Ez minden. Élvezze a kombinációs zárat!

Radioelemek listája

Kijelölés Típusú Megnevezés Mennyiség jegyzetÜzletA jegyzetfüzetem
E1 Arduino tábla

Arduino Nano 3.0

1 5B Jegyzettömbbe
E8, E9 Ellenállás

220 ohm

2 SMD Jegyzettömbbe
E6 Fénykibocsátó dióda

AL102G

1 Piros Jegyzettömbbe
E7 Fénykibocsátó dióda

AL307G

1 Zöld Jegyzettömbbe
E3 LCD kijelzöI2C interfésszel1 Zöld háttérvilágítás Jegyzettömbbe
E5 SzervoSG901 180 fok Jegyzettömbbe
E2 Berregő5B1 Bu Jegyzettömbbe
E4 Billentyűzet4X41 Mátrix Jegyzettömbbe
Nem Breadboard640 pont1 Nincs forrasztás

Ez a projekt moduláris, pl. különböző elemeket csatlakoztathat / leválaszthat, és különböző funkciókat kaphat. A fenti képeken a teljes funkcionalitású opció látható, nevezetesen:

  • Záró mechanizmus... Az ajtó NYITÁSÁRA és ZÁRÁSÁRA szolgál. Ez a projekt három különböző mechanizmus alkalmazását fedi le:
    • Szervo. Vannak nagyok, vannak kicsik. Nagyon kompakt és nehéz csavarral egy nagyszerű lehetőség
    • Az autóajtózár elektromos meghajtása. Nagy és erős dolog, de csak őrült áramlatokat eszik
    • Mágneses retesz. Jó lehetőség, mert összecsapja magát

    A firmware-beállításokban három típus közül választhat (beállítás zár_típus)

  • Belül gomb... Az ajtó belülről történő NYITÁSÁRA, ZÁRÁSÁRA szolgál. Felhelyezhető az ajtókilincsre (tenyér vagy ujj oldalra), magára az ajtóra, vagy az ajtófélfára
  • Gomb kívül... Az ajtó zárására, valamint az energiatakarékosságból való felébresztésre szolgál. Felhelyezhető az ajtókilincsre (tenyér vagy ujj oldalra), magára az ajtóra, vagy az ajtófélfára
  • Végállomás hogy becsukja az ajtót. A zár automatikus bezárására szolgál, amikor az ajtó becsukódik. Lehetnek:
    • Tapintat gomb
    • Hall szenzor + mágnes magán az ajtón
    • Reed kapcsoló + mágnes magán az ajtón
  • Titok elérheti a reset gombot... A jelszó visszaállítására / új jelszó megadására / új kulcs / kombináció memorizálására szolgál, stb. Valahol a tokban lehet elrejtve
  • Fénykibocsátó dióda munka jelzésére. RGB LED-et, pirosat és zöldet használnak (keverve sárgát adnak):
    • Zölden világít - a zár NYITVA van. Megég, hogy ne felejtse el becsukni az ajtót
    • Folyamatos sárga – a rendszer felébredt, és jelszó megadására vár
    • Pirosan villog - az akkumulátor lemerült

Ezen elemek bármelyike ​​kizárható a rendszerből:

  • Eltávolítjuk a végálláskapcsolót. A beállításokban lévő firmware-ben azt is letiltjuk (beállítás tail_button). Most a zár bezárásához meg kell nyomnia a gombot
  • Eltávolítjuk a külső gombot. A beállításokban lévő firmware-ben azt is letiltjuk (beállítás wake_button). Most már nem kell felébreszteni a rendszert, magától felébred (az energiafogyasztás valamivel magasabb). És már nincs záró gomb az ajtó elején, és szükségünk van egy végálláskapcsolóra. Vagy a zár a fene
  • Eltávolítjuk a belső gombot. Ez az opció szekrényekhez és széfekhez alkalmas. A beállításokban semmit nem kell módosítani
  • Eltávolítjuk a LED-et. A beállításokban semmit nem kell módosítani
  • A hozzáférés visszaállító gomb az első használat után kiforrasztható, vagy átírhatja a kódot saját magának
  • Ajtó zárva, KÍVÜL nyomva - ébredjen fel, várja meg a jelszót / RFID címke / elektronikus kulcs / ujjlenyomat
  • Az ajtó zárva, a rendszer felébredt, várja a jelszó megadását. Az idő állítható (beállítás alvási idő)
  • Az ajtó be van zárva, jelszó / címke / kulcs be van írva stb. - nyisd ki
  • Ajtó zárva, BELÜL nyomva - nyitva
  • Az ajtó nyitva, kinyomva - bezárva
  • Ajtó nyitva, BELÜL nyomva - zárva
  • Az ajtó nyitva van, a VÉGE lenyomva - bezárva

A zár biztosítja az akkumulátoros működést alacsony energiatakarékos üzemmódban (bekapcsolás kikapcsolás: beállítás sleep_enable), nevezetesen:

  • Ébredjen fel néhány másodpercenként, figyelje az ESEMÉNYT (opcionális, ha nincs kívül gomb. A beállításban engedélyezheti wake_button)
  • Néhány percenként ellenőrizze az Akum feszültségét (be / ki beállítás akkumulátor_monitor)
  • Ha az Akum lemerült (a feszültség a beállításban van beállítva bat_low):
    • nyissa ki az ajtót (opcionális, a firmware-ben konfigurálható open_bat_low)
    • megtiltja a további nyitást és zárást
    • a gombok megnyomásakor a piros LED villog
    • hagyja abba az ESEMÉNY figyelését (azaz adja meg a jelszót / címkét stb.)

Amikor a rendszer ébren van, nyomja meg a jelszómódosítás gombot (rejtett gomb). beleesünk jelszóváltási mód:
Írja be a jelszót a számokból ( MAXIMUM 10 SZÁMJEGY!!!)

  • Ha megnyomja a * gombot, a jelszó a memóriába kerül, és a rendszer kilép a jelszó módosításából
  • Ha megnyomja a # gombot, a jelszó visszaáll (újra beírhatja)
  • Ha 10 másodpercig nem nyom meg semmit, automatikusan kilépünk a jelszómódosítási módból, a jelszó régi marad

Amikor a rendszer ébren van (gombokkal ébredt fel, vagy az alvás le van tiltva), nyomja meg a * gombot a jelszóbeviteli módba való belépéshez
Ha a rendszer alszik, és időnként felébred az ESEMÉNY ellenőrzésére, nyomja meg a * gombot és tartsa lenyomva, amíg a piros LED ki nem gyullad
Jelszó beviteli mód:

  • A jelszó feldolgozása úgy történik, hogy a helyes jelszót csak a helyes számsor begépelésekor számolja a rendszer, vagyis ha a jelszó 345, akkor a 345-ös sorozat megjelenéséig tetszőleges számokat lehet bevinni, azaz. 30984570345 nyitja a zárat, amint az 345-ben ér véget.
  • Ha a jelszót helyesen adta meg, az ajtó kinyílik
  • Ha nem nyom meg semmit, 10 másodperc elteltével a rendszer visszatér normál (készenléti) üzemmódba
  • Ha megnyomja a # gombot, azonnal kilépünk a jelszóbeviteli módból
  • Ha a jelszó beviteli módban megnyomja a jelszó megváltoztatására szolgáló titkos gombot, akkor abból is kilépünk

A haladás nem áll meg, és az "okos zárak" egyre gyakrabban jelennek meg a lakások, garázsok és házak ajtaján.

Hasonló zár nyílik ki, amikor megnyom egy gombot az okostelefonon. Szerencsére az okostelefonok és táblagépek már bekerültek a mindennapjainkba. Egyes esetekben az „intelligens zárak” a „felhőszolgáltatásokhoz”, például a Google Drive-hoz kapcsolódnak, és távolról nyithatók meg. Ezenkívül ez az opció lehetővé teszi, hogy más emberek is hozzáférjenek az ajtónyíláshoz.

Ebben a projektben az Arduino intelligens zárjának barkácsolt változata valósul meg, amely a Föld bármely pontjáról távolról vezérelhető.

Ezenkívül a projekt hozzáadta a zár kinyitásának lehetőségét az ujjlenyomat-felismerés után. Ehhez ujjlenyomat-érzékelőt építenek be. Mindkét ajtónyitási opciót az Adafruit IO platform hajtja majd.

Egy ilyen zár nagyszerű első lépés lehet a Smart Home projektben.

Az ujjlenyomat-érzékelő beállítása

Az ujjlenyomat-érzékelővel való munkavégzéshez kiváló Arduino-könyvtár található, amely jelentősen megkönnyíti az érzékelő beállítását. Ez a projekt Arduino Uno-t használ. Az internethez való csatlakozáshoz egy Adafruit CC3000 kártya szolgál.

Kezdjük a tápellátás csatlakoztatásával:

  • Csatlakoztassa az Arduino kártya 5 V-os érintkezőjét a piros tápsínhez;
  • Az Arduino GND érintkezője a forrasztás nélküli áramköri lap kék sínjéhez csatlakozik.

Térjünk át az ujjlenyomat-érzékelő csatlakoztatására:

  • Először csatlakoztassa a tápfeszültséget. Ehhez a piros vezetéket a +5 V-os sínre, a fekete vezetéket a GND sínre kell kötni;
  • Az érzékelő fehér vezetéke az Arduino 4-es érintkezőjéhez csatlakozik.
  • A zöld vezeték a mikrokontroller 3-as érintkezőjéhez megy.

Most foglalkozzunk a CC3000 modullal:

  • A CC3000 kártya IRQ tűje az Arduino 2-es érintkezőjéhez csatlakozik.
  • VBAT – az 5-ös érintkezőhöz.
  • CS – a 10. tűhöz.
  • Ezt követően csatlakoztatnia kell az SPI érintkezőket az Arduinohoz: MOSI, MISO és CLK - a 11, 12 és 13 érintkezőkhöz.

Végül áramellátást kell biztosítanod: Vin az Arduino 5V-hoz (piros sín az áramköri lapon), és GND a GND-hez (kék sín a kenyérlapon).

A teljesen összeállított projekt fotója alább látható:

Mielőtt olyan vázlatot készítene, amely adatokat tölt fel az Adafruit IO-ba, át kell vinnie ujjlenyomat-adatait az érzékelőre. Ellenkező esetben a jövőben nem ismer fel;). Javasoljuk, hogy az ujjlenyomat-érzékelőt külön kalibrálja az Arduino segítségével. Ha először dolgozik ezzel az érzékelővel, javasoljuk, hogy ismerkedjen meg a kalibrálási folyamattal és az ujjlenyomat-érzékelővel végzett munka részletes utasításaival.

Ha még nem tette meg, hozzon létre egy fiókot az Adafruit IO-nál.

Ezt követően áttérhetünk az Arduino "intelligens zár" fejlesztésének következő szakaszára: nevezetesen egy olyan vázlat fejlesztésére, amely adatokat továbbít az Adafruit IO-ra. Mivel a program meglehetősen terjedelmes, a cikkben csak a fő részeit emeljük ki és vesszük figyelembe, majd adunk egy linket a GitHubhoz, ahonnan letöltheti a teljes vázlatot.

A vázlat az összes szükséges könyvtár betöltésével kezdődik:

#beleértve

#beleértve

#beleértve

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#beleértve

#beleértve >

Ezt követően kissé javítania kell a vázlatot a WiFi hálózat paramétereinek beillesztésével, megadva az SSID-t és a jelszót (jelszót):

#define WLAN_SECURITY WLAN_SEC_WPA2>

Ezenkívül meg kell adnia nevét és AIO-kulcsát (kulcsát), hogy bejelentkezzen az Adafruit IO-fiókjába:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

A következő sorok felelősek az ujjlenyomat-érzékelőtől származó adatok interakciójáért és feldolgozásáért. Ha az érzékelő aktiválva volt (az ujjlenyomat megegyezett), akkor "1" lesz:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/ feedek / ujjlenyomat";

Adafruit_MQTT_Publish ujjlenyomat = Adafruit_MQTT_Publish (& mqtt, FINGERPRINT_FEED);

Ezenkívül létre kell hoznunk egy példányt a SoftwareSerial objektumból az érzékelőnk számára:

SoftwareSerial mySerial (3, 4);

Ezután létrehozhatunk egy objektumot a szenzorunk számára:

Adafruit_Ujjlenyomat ujj = Adafruit_Ujjlenyomat (& mySerial);

A vázlaton belül jelezzük, hogy melyik ujjazonosító aktiválja a zárat a jövőben. Ez a példa 0-t használ, amely megfelel az érzékelő által használt első ujjlenyomat azonosítójának:

int ujjazonosító = 0;

Ezt követően inicializáljuk a számlálót és késleltetést a projektünkben. Alapvetően azt szeretnénk, hogy a zár automatikusan működjön a nyitás után. Ez a példa 10 másodperces késleltetést használ, de ezt az értéket az igényeinek megfelelően módosíthatja:

int activationCounter = 0;

int lastActivation = 0;

int aktiválási idő = 10 * 1000;

A beállítás () funkció törzsében inicializáljuk az ujjlenyomat-érzékelőt, és csatlakoztatjuk a CC3000 chipet a WiFi hálózathoz.

A hurok () függvény törzsében csatlakozzon az Adafruit IO-hoz. A következő sor felelős ezért:

Az Adafruit IO platformhoz való csatlakozás után ellenőrizzük az utolsó ujjlenyomatot. Ha megegyezik, és a zár nincs aktiválva, "1"-et küldünk feldolgozásra az Adafruit IO-ban:

if (ujjlenyomatazonosító == ujjazonosító && lockState == hamis) (

Serial.println (F ("Hozzáférés megadva!"));

lockState = igaz;

Serial.println (F ("sikertelen"));

Serial.println (F ("OK!"));

lastActivation = millis ();

Ha a hurok () funkción belül a zár aktiválva van, és elértük a fent jelzett késleltetési értéket, akkor "0"-t küldünk:

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

lockState = false;

if (! ujjlenyomat.közzététel (állam)) (

Serial.println (F ("sikertelen"));

Serial.println (F ("OK!"));

A kód legújabb verzióját letöltheti a GitHubon.

Itt az ideje, hogy teszteljük projektünket! Ne felejtse el letölteni és telepíteni az összes szükséges Arduino könyvtárat!

Győződjön meg róla, hogy minden szükséges módosítást végrehajtott a vázlaton, és töltse fel Arduino-jába. Ezután nyissa meg a soros monitor ablakát.

Amikor az Arduino csatlakozik a WiFi hálózathoz, az ujjlenyomat-érzékelő pirosan villog. Helyezze az ujját az érzékelőre. A soros monitor ablakának meg kell jelennie az azonosító számnak. Ha egyezik, megjelenik az „OK!” üzenet. Ez azt jelenti, hogy az adatok el lettek küldve az Adafruit IO szerverekre.

Diagram és vázlat a zár további konfigurálásához LED példáján

Most térjünk rá a projekt azon részére, amely közvetlenül az ajtózár vezérléséért felelős. A vezeték nélküli hálózathoz való csatlakozáshoz és a zár aktiválásához/deaktiválásához további Adafruit ESP8266 modulra lesz szüksége (az ESP8266 modulnak nem kell az Adafruittól származnia). Az alábbi példa segítségével megláthatja, milyen egyszerű az adatcsere két platform (Arduino és ESP8266) között az Adafruit IO használatával.

Ebben a részben nem fogunk közvetlenül a zárral dolgozni. Ehelyett egyszerűen csatlakoztatjuk a LED-et ahhoz a tűhöz, amelyre később a zárat csatlakoztatjuk. Ez lehetővé teszi kódunk tesztelését anélkül, hogy mélyen belemennénk a zár kialakításába.

Az áramkör meglehetősen egyszerű: először telepítse az ESP8266-ot a kenyérsütőtáblára. Ezután telepítse a LED-et. Ne felejtse el, hogy a LED hosszú (pozitív) szára egy ellenálláson keresztül csatlakozik. Az ellenállás második lába az ESP8266 modul 5-ös érintkezőjéhez csatlakozik. A LED második (katódja) az ESP8266 GND érintkezőjéhez csatlakozik.

A teljesen összeszerelt áramkör az alábbi képen látható.


Most pedig vessünk egy pillantást a vázlatra, amelyet ehhez a projekthez fogunk használni. A kód ismét elég terjedelmes és összetett, ezért csak a főbb részeit fogjuk ismertetni:

Kezdjük a szükséges könyvtárak összekapcsolásával:

#beleértve

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

WiFi paraméterek konfigurálása:

#define WLAN_SSID "your_wifi_ssid"

#define WLAN_PASS "a_wifi_jelszava"

#define WLAN_SECURITY WLAN_SEC_WPA2

Az Adafruit IO paramétereit is konfiguráljuk. Ugyanaz, mint az előző részben:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

Jelezzük, hogy melyik érintkezőhöz csatlakoztattuk a LED-et (a jövőben ez lesz a zárunk vagy relénk):

int relayPin = 5;

Az ujjlenyomat-érzékelővel való interakció ugyanaz, mint az előző részben:

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

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe (& mqtt, LOCK_FEED);

A setup () függvény törzsében jelezzük, hogy a lábnak, amelyhez a LED csatlakozik, OUTPUT módban kell működnie:

pinMode (relayPin, OUTPUT);

A hurkon belül () először ellenőrizzük, hogy csatlakozunk-e az Adafruit IO-hoz:

Ezt követően ellenőrizzük, milyen jel érkezik. Ha "1" kerül átvitelre, aktiváljuk azt az érintkezőt, amelyet korábban deklaráltunk, amelyre a LED-ünk csatlakozik. Ha „0”-t kaptunk, a kapcsolattartót „alacsony” állapotba helyezzük:

Adafruit_MQTT_Feliratkozás * előfizetés;

while ((előfizetés = mqtt.readSubscription (1000))) (

if (előfizetés == & zár) (

Serial.print (F ("Megvan:"));

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

// Mentse el a parancsot a string data közé

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

if (parancs == "0") (

digitalWrite (relayPin, LOW);

if (parancs == "1") (

digitalWrite (relayPin, HIGH);

A vázlat legújabb verziója a GitHubon található.

Itt az ideje, hogy teszteljük projektünket. Ne felejtse el letölteni az összes szükséges könyvtárat az Arduino-hoz, és ellenőrizze, hogy helyesen módosította-e a vázlatot.

Egy egyszerű USB-FTDI konverterrel programozható az ESP8266 chip.

Töltse fel a vázlatot az Arduino-ba, és nyissa meg a soros monitor ablakát. Ebben a szakaszban csak azt ellenőriztük, hogy sikerült-e csatlakozni az Adafruit IO-hoz: tovább fogjuk vizsgálni az elérhető funkciókat.

A projekt tesztelése

Most pedig kezdjük el a tesztelést! Lépjen az Adafruit IO felhasználói menüjébe a Feeds menü alatt. Ellenőrizze, hogy létrejött-e az ujjlenyomat és a zár csatornái (a nyomtatási képernyőn lent láthatók az ujjlenyomat és a zár vonalai):


Ha nincsenek ott, akkor manuálisan kell létrehoznia.

Most biztosítanunk kell az adatcserét az ujjlenyomat- és a zárcsatorna között. A zárolási csatornát "1"-re kell állítani, ha az ujjlenyomat-csatorna beállítása "1", és fordítva.

Ehhez egy nagyon erős Adafruit IO eszközt használunk: triggereket. A triggerek alapvetően olyan feltételek, amelyeket a konfigurált csatornákra alkalmazhat. Vagyis két csatorna összekapcsolására használhatók.

Hozzon létre egy új reaktív triggert az Adafruit IO Triggerek szakaszában. Ez lehetővé teszi az adatcserét az ujjlenyomat-érzékelő és a zárcsatornák között:


Így kell kinéznie, ha mindkét trigger be van állítva:

Minden! Most már igazán tesztelhetjük projektünket! Az érzékelőre tesszük az ujjunkat, és megnézzük, hogyan kezdett el kacsintgatni az Arduino az adatátvitelnek megfelelő LED-del. Ezt követően az ESP8266 modulon lévő LED-nek villogni kell. Ez azt jelenti, hogy megkezdte az adatok fogadását az MQTT-n keresztül. Ezen a ponton az áramköri lapon lévő LED-nek is fel kell kapcsolnia.

A vázlatban beállított késleltetés után (az alapértelmezett 10 másodperc) a LED kialszik. Gratulálunk! A LED-et ujjlenyomatával a világ bármely pontjáról vezérelheti!

Elektronikus zár felállítása

Elérkeztünk a projekt utolsó részéhez: az elektronikus zár közvetlen csatlakoztatásához és vezérléséhez egy Arduino és egy ujjlenyomat-érzékelő segítségével. A projekt nem egyszerű, az összes forrást felhasználhatja a fent bemutatott formában, de a LED helyett csatlakoztasson egy relét.

A zár közvetlen csatlakoztatásához további alkatrészekre lesz szüksége: 12 V-os tápegységre, tápegység csatlakozójára, tranzisztorra (ebben a példában az IRLB8721PbF MOSFET-et használjuk, de használhat egy másikat is, például egy bipoláris tranzisztort TIP102). Ha bipoláris tranzisztort használ, akkor ellenállást kell hozzáadnia.

Az alábbiakban látható az összes komponens ESP8266 modulhoz való csatlakoztatásának kapcsolási rajza:


Vegye figyelembe, hogy ha MOSFET tranzisztort használ, nincs szüksége ellenállásra az ESP8266 5. érintkezője és a tranzisztor között.

A teljesen összeállított projekt az alábbi képen látható:


Kapcsolja be az ESP8266 modult az FTDI modul segítségével, és csatlakoztassa a 12 V-os tápegységet az aljzathoz. Ha a fent javasolt csatlakozótüskéket használta, nem kell semmit módosítania a vázlaton.

Most már ráhelyezheti az ujját az érzékelőre: a zárnak működnie kell, reagálva az ujjlenyomatára. Az alábbi videó egy automatikus "okos" zár működését mutatja be:

A "Smart Lock" projekt továbbfejlesztése

Projektünkben megjelent egy ajtózár távirányítója ujjlenyomat segítségével.

Nyugodtan kísérletezzen, módosítsa a vázlatot és a hevedereket. Például egy elektronikus ajtózárat lecserélhet egy relére, amellyel 3D nyomtatója, manipulátora vagy kvadrokopterének teljesítményét szabályozhatja...

Fejlesztheti "okos otthonát". Például távolról aktiválja az öntözőrendszert az Arduino-n, vagy kapcsolja be a világítást a szobában ... De ne felejtse el, hogy az Adafruit IO segítségével egyidejűleg szinte korlátlan számú eszközt aktiválhat.

Hagyja meg észrevételeit, kérdéseit és ossza meg személyes tapasztalatait alább. A beszélgetés során gyakran születnek új ötletek, projektek!

Hasonló cikkek

2021 rsrub.ru. A modern tetőfedési technológiákról. Építőipari portál.