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, ha 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
Nézzük meg közelebbről 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 egyedi azonosítóval rendelkezik, és nem ismétli önmagát. Így amikor elhozza azt a kártyát, aminek az azonosítóját a programban beállította, a rendszer szervo meghajtó segítségével nyitja meg a hozzáférést.
Videó:
Az Arduino a legjobb rendszer bármilyen hardver másolására. A legtöbb ötlet nem jöhetett volna létre nélküle. Régóta létezik egy ilyen gondolat: létrehozni egy speciális kombinációs zárat az arduinón. A megnyitáshoz le kell nyomni egy bizonyos billentyűt. Ebben az esetben a zárnak nem szabad kinyílnia, még akkor sem, ha ismeri a kívánt gombot. Megnyitásához bizonyos intervallumokat kell fenntartani az izommemória segítségével. Egy ilyen bűnöző nem tehet róla. De ez mind csak elmélet.
Összegyűjtéséhez egy speciális téglalap alakú impulzuseszközt, valamint több számlálót és egy kupacot kell használni. A kész eszköz azonban nagy méretű lenne, és kényelmetlen lenne a használata. Az ilyen gondolatok általában nem adnak nyugalmat. Ennek az álomnak az első lépése egy program létrehozása volt az Arduino számára. Ő lesz az, aki kombinációs zárként fog szolgálni. A megnyitáshoz nem egy, hanem több gombot kell megnyomnia, és ezt egyszerre kell megtennie. A kész áramkör így néz ki:
A képminőség nem a legjobb, de a földelés, D3, D5, D7, D9 és D11 csatlakozások vannak.
A kód alább látható:
Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; bájt a = 0; bájt = 0; bájt c = 0; bájt d = 0; előjel nélküli hosszú idő = 0; // ne felejts el mindent, amit a millis () előjel nélküli long temp = 0-t vesz fel; // tárolás előjel nélküli hosszú bájtos kulcsban = (0, 0, 0, 0, 0, 0, 0, 0); // megfelelő kódok byte keyb = (1, 1, 1, 1, 0, 1, 0, 0); byte keyc = (1, 0, 1, 0, 1, 1, 1, 0); bájt k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // 3 bemenet csatlakozik a gombokhoz pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // beépített LED a 13. pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // cserélje ki a földelt digitalWrite (11, LOW); idő = millis (); // az időzítéshez szükséges) void villog kétszer () ( // a LED dupla villogása digitalWrite (ledPin, HIGH); késleltetés (100); digitalWrite (ledPin, LOW); késleltetés (100); digitalWrite (ledPin, HIGH); késleltetés (100); digitalWrite (ledPin, LOW) késleltetés ( 200);) void loop () (if (k == 0) (kétszer villog (); // kód kérése) if (k == 8) (digitalWrite (ledPin, HIGH); késleltetés (3000); k = 0 ;) a = digitalRead (ina); // a jelszintek a gombokról olvashatók - lenyomva / nem nyomva b = digitalRead (inb); c = digitalRead (inc); késleltetés (100); // következő, ha - védelem hamis pozitív ellen, akkor nem kell használnia if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (if (a == keya [k]) (ha (b == billentyû [k]) (if (c == billentyûc [k]) (k ++; )))) if (k == 1) (if (d == 0) (idő = millis (); d ++;)) hőmérséklet = millis (); temp = hőmérséklet - idő; if (hőmérséklet> 10000) (k = 0; d = 0; idő = millis ();))
A kóddal kapcsolatos felesleges kérdések elkerülése érdekében néhány pontot tisztázni kell. A beállítási funkció a portok hozzárendelésére szolgál. A következő funkció az Input_Pullup, amely a tűfeszültség 5 V-tal történő növeléséhez szükséges. Ez egy ellenállással történik. Emiatt különféle rövidzárlatok nem lépnek fel. A nagyobb kényelem érdekében ajánlatos a kétszer villogó funkciót használni. Általában a különféle programok létrehozásakor más funkciókat is ki kell próbálnia.
A funkciók hozzárendelése után a jel kiolvasásra kerül a portokról. Ha megnyomja a gombot, azt az 1-es szám jelzi, ha nem - a 2. Továbbá az összes értéket elemzi. Például megjelent egy olyan kombináció, mint a 0,1,1. Ez azt jelenti, hogy az első gomb meg van nyomva, a másik kettő pedig nem. Ha minden érték igaz, akkor a 8-as feltétel is igaz. Ezt bizonyítja az előlapon világító LED. Ezután meg kell adnia egy konkrét kódot, amely az ajtó kinyitására szolgál.
A kód utolsó elemei a számlálóértékek visszaállítására szolgálnak. Ez a funkció akkor működik, ha az utolsó gombnyomás óta több mint 10 másodperc telt el. E kód nélkül minden lehetséges opciót fel lehetett sorolni, bár van belőlük jó néhány. Az eszköz létrehozása után tesztelnie kell. Több
A minap néztem a Csodálatos Pókembert, és az egyik jelenetben Peter Parker távolról kinyitja és becsukja a laptop ajtaját. Amint ezt megláttam, rögtön rájöttem, hogy nekem is kell egy ilyen elektronikus zár a bejárati ajtóra.
Kis trükközéssel összeállítottam egy működőképes okoszár modellt. Ebben a cikkben elmondom, hogyan állítottam össze.
1. lépés: Anyagok listája
Az Arduino elektronikus zárának összeszereléséhez a következő anyagokra lesz szüksége:
Elektronika:
- 5V fali adapter
Alkatrészek:
- 6 csavar a reteszhez
- karton
- vezetékek
Eszközök:
- forrasztópáka
- ragasztópisztoly
- fúró
- fúró
- kísérleti lyukfúró
- írószer kés
- számítógép Arduino IDE programmal
2. lépés: hogyan működik a zár
Az ötlet az, hogy kulcs nélkül ki tudom nyitni vagy becsukni az ajtót, anélkül, hogy odamennék hozzá. De ez csak az alapötlet, mert tehetünk hozzá egy kopogásérzékelőt is, hogy egy speciális kopogásra reagáljon, vagy hangfelismerő rendszert!
A reteszhez csatlakoztatott szervokar a Bluetooth modulon keresztül kapott parancsokkal zár (0 °) és nyit (60 °).
3. lépés: Bekötési rajz
Először csatlakoztassuk a szervót az Arduino táblához (megjegyzendő, hogy bár van Arduino Nano kártyám, a tűelrendezés pontosan ugyanaz az Uno táblán).
- a szervó barna vezetéke földelve van, az Arduinón földeljük
- a piros vezeték plusz, az Arduino 5V-os csatlakozójára kötjük
- narancssárga vezeték - a szervo forrásának kimenete, csatlakoztatjuk az Arduino 9. érintkezőjéhez
Azt tanácsolom, hogy tesztelje a szervót, mielőtt folytatná az összeszerelést. Ehhez a példákban szereplő Arduino IDE programban válassza a Sweep lehetőséget. Miután meggyőződtünk a szervó működéséről, csatlakoztathatjuk a Bluetooth modult. A Bluetooth modul rx érintkezőjét az Arduino tx tűjéhez, a modul tx tűjét pedig az Arduino rx tűjéhez kell csatlakoztatnia. De még ne tedd! Ha ezek a csatlakozások meg vannak forrasztva, többé nem tudsz kódokat feltölteni az Arduino-ra, ezért először töltsd le az összes kódot, és csak utána forraszd a csatlakozásokat.
Íme a modul és a mikrokontroller kapcsolási rajza:
- Rx modul - Tx Arduino tábla
- Tx modul - Rx kártyák
- A modul Vcc (pozitív) - 3,3 V Arduino kártya
- A föld csatlakozik a földhöz (föld a földhöz)
Ha a magyarázat zavarónak tűnik, kövesse a mellékelt kapcsolási rajzot.
4. lépés: Teszt
Most, hogy minden alkatrész működésben van, győződjünk meg arról, hogy a szervo képes mozgatni a csavart. Mielőtt felszerelném a reteszt az ajtóra, összeraktam egy próbadarabot, hogy megbizonyosodjak a szervó elég erősségéről. Eleinte úgy tűnt, hogy gyenge a szervóm, és egy csepp olajat tettem a csavarba, utána jól működött. Nagyon fontos, hogy a mechanizmus jól csússzon, különben fennáll a veszélye, hogy beszorul a szobájába.
5. lépés: az elektromos alkatrészek háza
Úgy döntöttem, hogy csak a kontrollert és a Bluetooth modult teszem a tokba, a szervót pedig kint hagyom. Ehhez egy kartonlapon karikázzuk be az Arduino Nano tábla körvonalát, és adjunk hozzá 1 cm helyet a kerülete körül, és vágjuk ki. Ezt követően a tok további öt oldalát is kivágtuk. Az elülső falon egy lyukat kell vágnia a vezérlő tápkábeléhez.
A tok oldalainak méretei:
- Alsó - 7,5x4 cm
- Borító - 7,5x4 cm
- Bal oldalfal - 7,5x4 cm
- Jobb oldalfal - 7,5x4 cm
- Elülső fal - 4x4 cm (rés a tápkábel számára)
- Hátsó fal - 4x4 cm
6. lépés: Alkalmazás
A vezérlő vezérléséhez Android vagy Windows kütyü szükséges beépített Bluetooth-al. Almás eszközökön még nem volt lehetőségem tesztelni az alkalmazás működését, talán szükség lesz néhány illesztőprogramra.
Biztos vagyok benne, hogy néhányuknak van lehetősége kipróbálni ezt. Android esetén töltse le a Bluetooth Terminal alkalmazást, Windows esetén pedig a TeraTerm alkalmazást. Ezután csatlakoztatnia kell a modult az okostelefonhoz, a név legyen linvor, a jelszó legyen 0000 vagy 1234. Amint a párosítás létrejött, nyissa meg a telepített alkalmazást, adja meg az opciókat, és válassza a "Kapcsolat létrehozása (nem biztonságos)" lehetőséget. . Az okostelefon mostantól egy Arduino soros monitor, vagyis kommunikálhat a vezérlővel.
Ha 0-t ír be, az ajtó bezárul, és az „Ajtó zárva” üzenet jelenik meg az okostelefon képernyőjén.
Ha beírja az 1-et, az ajtó nyitva lesz, és az "Ajtó nyitva" üzenet jelenik meg a képernyőn.
Windows rendszeren a folyamat ugyanaz, kivéve, hogy telepítenie kell a TeraTerm alkalmazást.
7. lépés: szerelje fel a csavart
Először csatlakoztatnia kell a szervót a reteszhez. Ehhez vágja le a dugókat a meghajtó házának rögzítőfuratairól. Ha feltesszük a szervót, akkor a rögzítő lyukak egy szintben legyenek a retesszel. Ezután a szervokart a retesznyílásba kell helyezni, ahol a retesz fogantyúja volt. Ellenőrizze, hogyan mozog a zár a tokban. Ha minden rendben van, rögzítse a szervokart ragasztóval.
Most lyukakat kell fúrnia az ajtóban lévő csavarokhoz. Ehhez rögzítse a reteszt az ajtóhoz, és ceruzával jelölje meg a csavarlyukakat az ajtólapon. A megjelölt helyeken kb. 2,5 cm mély csavarlyukakat kell fúrni, majd rögzíteni kell a csavarokkal. Ellenőrizze újra a szervót.
8. lépés: Teljesítmény
Az eszköz befejezéséhez tápegységre, kábelre és mini usb csatlakozóra lesz szüksége az Arduino csatlakoztatásához.
Csatlakoztassa a tápegység földelő érintkezőjét a mini usb port földelő érintkezőjéhez, csatlakoztassa a piros vezetéket a mini usb port piros vezetékéhez, majd vezesse a vezetéket a zártól az ajtópántig és onnan a konnektorig.
9. lépés: Kód
#include Servo myservo; int poz = 0; int állapot; int zászló = 0; void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); késleltetés (1000);) void loop () (if (Serial.available ()> 0) (állapot = Serial.read (); flag = 0;) // ha az állapot "0", az egyenáramú motor kikapcsol, ha (állapot == "0") (myservo.write (8); késleltetés (1000); soros. println ("Ajtó zárva");) else if (állapot == "1") (myservo.write (55); késleltetés (1000); Serial.println ("Ajtó zárolva");))
10. lépés: Az Arduino Lock befejezése
Élvezze a távirányítós zárat, és ne felejtse el "véletlenül" bezárni barátait a szobába.
A mai lecke arról, hogyan használjunk RFID-olvasót Arduino-val egy egyszerű zárrendszer létrehozásához, egyszerű szavakkal - egy RFID-zárat.
Az RFID (English Radio Frequency IDentification, rádiófrekvenciás azonosítás) az objektumok automatikus azonosításának módszere, amelynek során az úgynevezett transzponderekben vagy RFID címkékben tárolt adatokat rádiójelek segítségével olvassák vagy írják. Bármely RFID rendszer egy olvasóból (olvasóból, olvasóból vagy lekérdezőből) és egy transzponderből (más néven RFID címke, néha az RFID címke kifejezés is használatos) áll.
Ez az oktatóanyag egy Arduino-ból származó RFID-címkét fog használni. A készülék beolvassa minden egyes RFID tag egyedi azonosítóját (UID), amelyet az olvasó mellé helyezünk, és megjeleníti az OLED kijelzőn. Ha a címke UID-je megegyezik az Arduino memóriájában tárolt előre meghatározott értékkel, akkor a „Unlocked” üzenetet fogjuk látni a kijelzőn. Ha az egyedi azonosító nem egyezik meg az előre meghatározott értékkel, akkor a "Feloldva" üzenet nem jelenik meg - lásd az alábbi fotót.
A zár zárva van
A zár nyitva van
A projekt létrehozásához szükséges részletek:
- RFID olvasó RC522
- OLED kijelző
- Kenyér deszka
- Vezetékek
További részletek:
- Akkumulátor (powerbank)
A projektelemek összköltsége körülbelül 15 dollár volt.
2. lépés: RFID olvasó RC522
Minden RFID-címkéhez tartozik egy kis chip (fehér kártya a képen). Ha a zseblámpát erre az RFID-kártyára irányítja, egy kis chipet és egy tekercset láthat, amely körülveszi. Ez a chip nem rendelkezik akkumulátorral, amely áramot termel. Ennek a nagy tekercsnek a segítségével vezeték nélkül kap áramot az olvasótól. Egy ilyen RFID-kártya akár 20 mm-es távolságból is olvasható.
Ugyanez a chip található az RFID-kulcstartó címkéiben is.
Minden RFID-címke egyedi számmal rendelkezik, amely azonosítja azt. Ez az OLED-kijelzőn megjelenő UID. Ezen UID kivételével minden címke tárolhat adatokat. Ez a kártyatípus akár 1000 adat tárolására is képes. Lenyűgöző, nem? Ezt a funkciót ma nem fogják használni. Ma már csak egy adott kártya UID alapján történő azonosítása érdekel. Az RFID-olvasó és a két RFID-kártya ára körülbelül 4 USD.
3. lépés: OLED kijelző
Ez az oktatóanyag 0,96 hüvelykes 128x64 I2C OLED monitort használ.
Ez egy nagyon jó kijelző az Arduino-val való használatra. Ez egy OLED kijelző, ami azt jelenti, hogy alacsony az energiafogyasztása. Ennek a kijelzőnek az áramfelvétele kb. 10-20mA, és ez a pixelek számától függ.
A kijelző felbontása 128 x 64 pixel, és apró. Két megjelenítési lehetőség van. Az egyik monokróm, a másik pedig az oktatóanyagban használthoz hasonlóan két színt tud megjeleníteni: sárga és kék. A képernyő teteje csak sárga, az alsó pedig kék lehet.
Ez az OLED kijelző nagyon fényes, és nagyszerű és nagyon szép könyvtárral rendelkezik, amelyet az Adafruit fejlesztett ki ehhez a kijelzőhöz. Ezen kívül a kijelző I2C interfészt használ, így az Arduinohoz való csatlakozás hihetetlenül egyszerű.
Csak két vezetéket kell csatlakoztatnia, a Vcc és a GND kivételével. Ha még nem ismeri az Arduino-t, és olcsó és egyszerű kijelzőt szeretne használni projektjében, kezdje el itt.
4. lépés: csatlakoztassa az összes részletet
Az Arduino Uno táblával való kommunikáció nagyon egyszerű. Először is csatlakoztassa a tápfeszültséget az olvasóhoz és a kijelzőhöz.
Legyen óvatos, az RFID olvasót az Arduino Uno 3,3 V-os kimenetére kell csatlakoztatni, különben megsérül.
Mivel a kijelző 3,3 V-on is tud működni, mindkét modul VCC-jét a kenyérsütőtábla pozitív sínjére kötjük. Ez a busz ezután csatlakozik az Arduino Uno 3,3 V-os kimenetéhez. Ezután mindkét földet (GND) csatlakoztatjuk a kenyérlap földelő buszához. Ezután csatlakoztatjuk a kenyérlap GND buszát az Arduino GND-hez.
OLED kijelző → Arduino
SCL → Analóg Pin 5
SDA → Analóg Pin 4
RFID olvasó → Arduino
RST → Digitális Pin 9
IRQ → Nincs csatlakoztatva
MISO → Digitális tű 12
MOSI → Digitális tű 11
SCK → Digitális tű 13
SDA → Digitális Pin 10
Az RFID olvasó modul az SPI interfészt használja az Arduinóval való kommunikációhoz. Ezért az Arduino UNO hardveres SPI-csapjait fogjuk használni.
Az RST érintkező a 9-es digitális érintkezőhöz kerül. Az IRQ érintkező leválasztva marad. A MISO tű a 12-es digitális tűhöz megy. A MOSI érintkező a 11-es digitális tűhöz. Az SCK érintkező a 13-as digitális tűhöz, végül az SDA érintkező a 10-es digitális tűhöz.
RFID olvasó csatlakoztatva. Most az OLED kijelzőt az Arduino-hoz kell csatlakoztatnunk az I2C interfész segítségével. Tehát a kijelzőn lévő SCL érintkező az 5-ös érintkező analóg érintkezőjéhez, a kijelzőn lévő SDA pedig az analóg 4-es érintkezőhöz kerül. Ha most bekapcsoljuk a projektet és az RFID-kártyát az olvasó mellé helyezzük, láthatjuk, hogy a projekt jól működik.
5. lépés: Projekt kód
Ahhoz, hogy a projektkódot lefordíthassuk, bele kell foglalnunk néhány könyvtárat. Először is szükségünk van az MFRC522 Rfid könyvtárra.
A telepítéshez lépjen a következőre: Vázlat -> Könyvtárak hozzáadása -> Könyvtárak kezelése(Könyvtárvezetés). Keresse meg az MFRC522-t és telepítse.
Szükségünk van még az Adafruit SSD1306 könyvtárra és az Adafruit GFX könyvtárra a leképezéshez.
Telepítse mindkét könyvtárat. Az Adafruit SSD1306 könyvtár némi módosításra szorul. Menjen a mappába Arduino -> Könyvtárak, nyissa meg az Adafruit SSD1306 mappát, és szerkessze a könyvtárat Adafruit_SSD1306.h... Írja megjegyzésbe a 70. sort és törölje a 69. sort, mert a kijelző felbontása 128x64.
Először deklaráljuk az RFID-címke értékét, amelyet az Arduino-nak fel kell ismernie. Ez egy egész számok tömbje:
Int kód = (69,141,8,136); // UID
Ezután inicializáljuk az RFID olvasót és megjelenítjük:
Rfid.PCD_Init (); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);
Ezt követően a loop funkcióban 100 ms-onként ellenőrizzük a címkét az olvasón.
Ha van címke az olvasón, leolvassuk az UID-jét és kinyomtatjuk a kijelzőre. Ezután összehasonlítjuk az éppen beolvasott címke UID-jét a kódváltozóban tárolt értékkel. Ha az értékek megegyeznek, kinyomtatjuk az UNLOCK üzenetet, ellenkező esetben ezt az üzenetet nem jelenítjük meg.
If (egyezik) (Serial.println ("\ nIsmerem ezt a kártyát!"); PrintUnlockMessage ();) else (Serial.println ("\ nIsmeretlen kártya");)
Természetesen ezt a kódot módosíthatja úgy, hogy 1-nél több UID értéket tároljon, így a projekt több RFID-címkét ismer fel. Ez csak egy példa.
Projekt kód:
#beleértve Amint az a leckéből látható - egy kis pénzért RFID-olvasót is hozzáadhat projektjeihez. Ezzel az olvasóval egyszerűen létrehozhat biztonsági rendszert, vagy például érdekesebb projekteket hozhat létre, így az USB-lemezről csak a feloldás után olvashatók az adatok.
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: A firmware-beállításokban három típus közül választhat (beállítás zár_típus) Ezen elemek bármelyike kizárható a rendszerből: 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: Amikor a rendszer ébren van, nyomja meg a jelszómódosítás gombot (rejtett gomb). beleesünk jelszóváltási mód: 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 6. lépés: a végeredmény
Írja be a jelszót a számokból ( MAXIMUM 10 SZÁMJEGY!!!)
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: