V této lekci se naučíme vyrobit jednoduchý systém, který odemkne zámek pomocí elektronického klíče (Label).
V budoucnu můžete funkce upřesnit a rozšířit. Přidejte například funkci „přidání nových klíčů a jejich odstranění z paměti“. V základním případě zvažte jednoduchý příklad, kdy je v kódu programu předem specifikován jedinečný identifikátor klíče.
V tomto tutoriálu budeme potřebovat:
K realizaci projektu potřebujeme nainstalovat knihovny:
2) Nyní je potřeba připojit Bzučák, který vydá signál, pokud klíč funguje a zámek se otevře, a druhý signál, když se zámek zavře.
Bzučák připojujeme v následujícím pořadí:
Arduino | Bzučák |
---|---|
5V | VCC |
GND | GND |
špendlík 5 | IO |
3) Jako odblokovací mechanismus bude použito servo. Lze zvolit libovolné servo v závislosti na požadovaných rozměrech a silách, které servo vytváří. Servo má 3 piny:
Jasněji můžete vidět, jak jsme propojili všechny moduly na obrázku níže:
Nyní, pokud je vše připojeno, můžete přistoupit k programování.
Skica:
#zahrnout
Pojďme náčrt analyzovat podrobněji:
Abyste zjistili UID karty (štítky), musíte tento náčrt napsat do arduina, sestavit obvod popsaný výše a otevřít konzolu (Monitorování sériového portu). Když štítek přinesete do RFID, na konzole se zobrazí číslo
Výsledné UID je třeba zadat do následujícího řádku:
If (uidDec == 3763966293) // Porovnejte Uid štítku, pokud se rovná zadanému, pak servo otevře ventil.
Pro každou kartu je tento identifikátor jedinečný a neopakuje se. Když tedy předložíte kartu, jejíž ID máte nastavené v programu, systém otevře přístup pomocí serva.
Video:
Arduino je nejlepší systém pro kopírování jakéhokoli zařízení. Většina nápadů by bez ní nebyla možná. Takový nápad existuje již dlouho: vytvořit speciální kombinační zámek na arduinu. Chcete-li jej otevřít, musíte podržet určitou klávesu. V takovém případě by se zámek neměl otevřít, i když znáte správné tlačítko. Chcete-li jej otevřít, musíte udržovat určité intervaly pomocí svalové paměti. Něco takového zločinec udělat nemůže. Ale to vše je jen teorie.
Chcete-li jej sestavit, musíte použít speciální zařízení obdélníkových impulsů, stejně jako několik čítačů a hromadu. Ale hotové zařízení by mělo velké celkové rozměry a bylo by nepohodlné používat. Takové myšlenky zpravidla nedávají odpočinek. Prvním krokem ke splnění snu bylo vytvoření programu pro Arduino. Poslouží jako kombinační zámek. Chcete-li jej otevřít, budete muset stisknout ne jednu klávesu, ale několik a udělat to současně. Hotový obvod vypadá takto:
Kvalita obrazu není nejlepší, ale spojení je provedeno se zemí, D3, D5, D7, D9 a D11.
Kód je uveden níže:
Const intina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; byte a = 0; byte b = 0; byte c = 0; byte d = 0; dlouhý čas bez znaménka = 0; //nezapomeňte na nic, co má hodnotu millis() unsigned long temp = 0; //ulož do dlouhého bytu bez znaménka keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //kóduje skutečně byte keyb = ( 1, 1, 1, 1, 0, 1, 0, 0); byte keyc = ( 1, 0, 1, 0, 1, 1, 1, 0); byte k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 vstupy připojené k tlačítkům pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //vestavěná LED na pinu 13 pinMode (7, OUTPUT); pinMode(11, OUTPUT); digitalWrite(7, LOW); //nahraďte zem digitalWrite(11, LOW); time = millis(); //potřebné pro časování ) void blinktwice() ( // dvojité bliknutí LED digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay( 200); ) void loop() ( if(k==0) ( blinktwice(); // výzva k zadání kódu ) if (k == 8) ( digitalWrite(ledPin, HIGH); delay(3000); k = 0 ; ) a = digitalRead(ina); //přečíst úrovně signálu z tlačítek - stisknuto/nestisknuto b = digitalRead(inb); c = digitalRead(inc); delay(100); //next if - ochrana proti falešně pozitivní, if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b == keyb[k]) ( if (c == keyc[k]) ( k++; ) ) ) ) if (k==1) ( if (d ==0) (čas = milis (); d++; ) ) teplota = millis(); temp = temp - čas; if (teplota > 10000) ( k= 0; d=0; čas = milis (); ) )
Aby se předešlo zbytečným otázkám ohledně kódu, měly by být vyjasněny některé body. Funkce nastavení se používá k přiřazení portů. Další funkcí je Input_Pullup, která je potřebná pro zvýšení napětí na pinu o 5 V. To se provádí pomocí rezistoru. Díky tomu nedojde k různým zkratům. Pro větší pohodlí se doporučuje použít funkci blinktwice. Obecně platí, že při vytváření různých programů je potřeba vyzkoušet jiné funkce.
Po přiřazení funkcí se signál načte z portů. Pokud je tlačítko stisknuto, bude to označeno číslem 1, a pokud ne - 2. Dále jsou analyzovány všechny hodnoty. Například existuje taková kombinace jako 0,1,1. To znamená, že první klávesa je stisknuta a další dvě nikoli. Pokud jsou všechny hodnoty pravdivé, platí i podmínka 8. To je indikováno rozsvícenou LED na předním panelu. Dále musíte zadat specifický kód, který bude sloužit k otevření dveří.
Poslední prvky kódu slouží k vynulování hodnot čítače. Tato funkce se provede, pokud od posledního stisknutí tlačítka uplynulo více než 10 sekund. Bez tohoto kódu bylo možné utřídit všechny možné možnosti, i když jich je poměrně hodně. Po vytvoření tohoto zařízení je třeba jej otestovat. Více
Onehdy jsem se znovu díval na The Amazing Spider-Man a v jedné scéně Peter Parker na dálku otevírá a zavírá dveře od svého notebooku. Jakmile jsem to viděl, okamžitě jsem si uvědomil, že potřebuji takový elektronický zámek na vstupní dveře.
Po malém piplání jsem sestavil funkční model chytrého zámku. V tomto článku vám řeknu, jak jsem to sbíral.
Krok 1: Seznam materiálů
K sestavení elektronického zámku na Arduinu budete potřebovat následující materiály:
Elektronika:
- 5V nástěnný adaptér
Komponenty:
- 6 šroubů pro západku
- lepenka
- dráty
nástroje:
- páječka
- tavná pistole
- vrtat
- vrtat
- vrták pilotního otvoru
- papírnický nůž
- počítač s Arduino IDE
Krok 2: Jak zámek funguje
Myšlenka je taková, že mohu otevřít nebo zavřít dveře bez klíče a aniž bych k nim šel. Ale to je jen základní myšlenka, protože můžete přidat senzor klepání, který reaguje na speciální klepání, nebo můžete přidat systém rozpoznávání hlasu!
Páka serva připojená k závorě zavírá (0°) a otevírá (60°) závoru pomocí příkazů přijatých přes modul Bluetooth.
Krok 3: Schéma zapojení
Nejprve připojíme servo k desce Arduino (chci poznamenat, že ačkoli používám desku Arduino Nano, pinout je na desce Uno úplně stejný).
- hnědý vodič serva je uzemněn, připojíme jej k zemi na Arduinu
- červený vodič je kladný, připojíme ho k 5V konektoru na Arduinu
- oranžový vodič - výstup zdroje serva, připojte jej na pin 9 na Arduinu
Před pokračováním v montáži doporučuji servo vyzkoušet. Chcete-li to provést, v programu Arduino IDE vyberte v příkladech Sweep. Poté, co se ujistíme, že servo funguje, můžeme připojit modul Bluetooth. Musíte připojit rx pin modulu Bluetooth k tx pinu Arduina a tx pin modulu k rx pinu Arduina. Ale zatím to nedělejte! Jakmile jsou tato připojení připájena, nebudete moci nahrát žádné kódy do Arduina, takže nejprve nahrajte všechny své kódy a teprve poté spoje připájejte.
Zde je schéma zapojení modulu a mikrokontroléru:
- Rx modul - Tx Arduino deska
- Tx modul - Rx deska
- Vcc (kladná svorka) modulu - 3,3V desky Arduino
- Zem připojte k zemi (země k zemi)
Pokud vám vysvětlení není jasné, postupujte podle dodaného schématu zapojení.
Krok 4: Test
Nyní, když máme všechny pracovní části, ujistíme se, že servo může pohnout západkou. Před montáží západky na dveře jsem dal dohromady zkušební vzorek, abych se ujistil, že servo je dostatečně pevné. Nejdřív se mi zdálo, že mám slabé servo a přidal jsem kapku oleje na západku, pak už vše fungovalo. Je velmi důležité, aby se mechanismus dobře posouval, jinak riskujete uzamčení ve svém pokoji.
Krok 5: Kryt pro elektrické součásti
Rozhodl jsem se dát do pouzdra pouze ovladač a Bluetooth modul a servo nechat venku. Chcete-li to provést, nakreslete na kus lepenky obrys desky Arduino Nano a přidejte 1 cm místa po obvodu a vyřízněte jej. Poté také vyřízneme dalších pět stran korpusu. V přední stěně budete muset vyříznout otvor pro napájecí kabel ovladače.
Rozměry bočních stran pouzdra:
- Spodní - 7,5x4 cm
- Víko - 7,5x4 cm
- Levá boční stěna - 7,5x4 cm
- Pravá boční stěna - 7,5x4 cm
- Přední stěna - 4x4 cm (s otvorem pro napájecí kabel)
- Zadní stěna - 4x4 cm
Krok 6: Aplikace
K ovládání ovladače potřebujete gadget pro Android nebo Windows s vestavěným Bluetooth. Aplikaci jsem neměl možnost otestovat na jablečných zařízeních, možná budou potřeba nějaké ovladače.
Jsem si jistý, že někteří z vás mají možnost se o tom přesvědčit. Pro Android si stáhněte aplikaci Bluetooth Terminal, pro Windows si stáhněte TeraTerm. Poté je třeba připojit modul k vašemu smartphonu, název by měl být linvor, heslo by mělo být 0000 nebo 1234. Jakmile je spárování navázáno, otevřete nainstalovanou aplikaci, zadejte možnosti a vyberte „Navázat připojení (nezabezpečené)“. Váš smartphone je nyní sériový monitor Arduino, což znamená, že můžete komunikovat s ovladačem.
Pokud zadáte 0, dveře se zavřou a na obrazovce smartphonu se zobrazí zpráva „Dveře zavřené“.
Pokud zadáte 1, uvidíte dveře otevřené a na obrazovce se objeví zpráva „Dveře otevřeny“.
V systému Windows je postup stejný, až na to, že je třeba nainstalovat aplikaci TeraTerm.
Krok 7: Namontujte šroub
Nejprve musíte připojit servo k západce. Chcete-li to provést, odřízněte zátky z montážních otvorů krytu pohonu. Pokud dáme servo, měly by montážní otvory lícovat se západkou. Poté musíte umístit páku serva do štěrbiny západky, kde byla rukojeť západky. Zkontrolujte, jak se zámek v pouzdře pohybuje. Pokud je vše v pořádku, zafixujte páku serva lepidlem.
Nyní musíte do dveří vyvrtat vodicí otvory pro šrouby. K tomu připevněte západku ke dveřím a tužkou označte otvory pro šrouby na dveřním křídle. Na vyznačených místech vyvrtejte otvory pro šrouby asi 2,5 cm hluboké.Připevněte západku a zajistěte ji šrouby. Znovu zkontrolujte servo.
Krok 8: Výživa
K dokončení zařízení budete potřebovat napájecí zdroj, kabel a mini usb zástrčku pro připojení k Arduinu.
Připojte zemnící svorku napájecího zdroje k zemnící svorce mini usb portu, připojte červený vodič k červenému vodiči mini usb portu, poté veďte vodič od zámku k pantu dveří a odtud do zásuvky .
Krok 9: Kód
#include Servo myservo; int pos = 0; int stav; příznak int=0; void setup() ( myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() ( if(Serial.available() > 0) ( stav = Serial.read(); flag=0; ) // pokud je stav "0", stejnosměrný motor se vypne, pokud (stav == "0") ( myservo.write(8); delay(1000); Serial. println("Dveře uzamčeny"); ) else if (stav == "1") ( myservo.write(55); delay(1000); Serial.println("Dveře odemčeny"); ) )
Krok 10: Dokončený zámek Arduino
Užijte si svůj zámek dálkového ovládání a nezapomeňte "omylem" zamknout své přátele v místnosti.
Dnešní lekce je o tom, jak pomocí RFID čtečky s Arduinem vytvořit jednoduchý zamykací systém, jednoduše řečeno – RFID zámek.
RFID (anglicky Radio Frequency IDentification, radiofrekvenční identifikace) je metoda automatické identifikace objektů, ve které jsou pomocí rádiových signálů čtena nebo zapisována data uložená v tzv. transpondérech neboli RFID štítcích. Jakýkoli RFID systém se skládá ze čtečky (čtečky, čtečky nebo dotazovače) a transpondéru (neboli RFID tag, někdy se také používá termín RFID tag).
Výukový program bude používat RFID tag s Arduinem. Zařízení načte jedinečný identifikátor (UID) každého RFID štítku, který umístíme vedle čtečky, a zobrazí jej na OLED displeji. Pokud se UID tagu rovná předdefinované hodnotě, která je uložena v paměti Arduina, na displeji se zobrazí zpráva „Unlocked“. Pokud se jedinečný identifikátor nebude rovnat předdefinované hodnotě, hláška "Odemčeno" se nezobrazí - viz foto níže.
Hrad je uzavřen
Hrad je otevřen
Podrobnosti potřebné k vytvoření tohoto projektu:
- RFID čtečka RC522
- OLED displej
- Prkénko na chleba
- dráty
Další detaily:
- Baterie (powerbanka)
Celkové náklady na součásti projektu byly přibližně 15 USD.
Krok 2: RFID čtečka RC522
Každý RFID štítek má malý čip (bílá karta na fotografii). Pokud na tuto kartu RFID namíříte baterkou, uvidíte malý čip a cívku, která ji obklopuje. Tento čip nemá baterii pro výrobu energie. Přijímá energii ze čtečky bezdrátově pomocí této velké cívky. RFID kartu je možné takto číst až na vzdálenost 20 mm.
Stejný čip existuje v přívěšcích na klíče RFID.
Každý RFID štítek má jedinečné číslo, které ho identifikuje. Toto je UID, které se zobrazuje na OLED displeji. S výjimkou tohoto UID může každá značka ukládat data. Tento typ karty pojme až 1000 dat. Působivé, že? Tato funkce se dnes nevyužije. Dnes je zajímavá pouze identifikace konkrétní karty jejím UID. Čtečka RFID a tyto dvě karty RFID stojí asi 4 $.
Krok 3 OLED displej
Výukový program používá 0,96" 128x64 I2C OLED monitor.
Toto je velmi dobrý displej pro použití s Arduinem. Je to OLED displej a to znamená, že má nízkou spotřebu energie. Spotřeba tohoto displeje je cca 10-20mA a záleží na počtu pixelů.
Displej má rozlišení 128 x 64 pixelů a je malý. Jsou dvě možnosti zobrazení. Jedna z nich je monochromatická a druhá, stejně jako ta použitá v tutoriálu, může zobrazovat dvě barvy: žlutou a modrou. Horní část obrazovky může být pouze žlutá a spodní modrá.
Tento OLED displej je velmi jasný a má skvělou a velmi pěknou knihovnu, kterou Adafruit pro tento displej vyvinul. Displej navíc využívá rozhraní I2C, takže připojení k Arduinu je neuvěřitelně snadné.
Potřebujete pouze připojit dva vodiče kromě Vcc a GND. Pokud jste v Arduinu noví a chcete ve svém projektu použít levný a jednoduchý displej, začněte zde.
Krok 4: Spojte všechny díly dohromady
Komunikace s deskou Arduino Uno je velmi jednoduchá. Nejprve připojte napájení čtečky i displeje.
Pozor, čtečka RFID musí být připojena k 3,3V výstupu z Arduino Uno, jinak dojde k jejímu poškození.
Vzhledem k tomu, že displej může běžet i na 3,3 V, připojíme VCC z obou modulů na kladnou lištu prkénka. Tato lišta je pak připojena k 3,3V výstupu z Arduino Uno. Poté připojíme obě uzemnění (GND) k zemnicí sběrnici. Poté připojíme GND sběrnici prkénka k Arduino GND.
OLED displej → Arduino
SCL → Analogový pin 5
SDA → Analogový pin 4
RFID čtečka → Arduino
RST → Digitální pin 9
IRQ → Nepřipojeno
MISO → Digitální pin 12
MOSI → Digitální pin 11
SCK → Digitální pin 13
SDA → Digitální pin 10
Čtecí modul RFID využívá pro komunikaci s Arduinem rozhraní SPI. Takže použijeme hardwarové SPI piny Arduino UNO.
Pin RST přejde na digitální pin 9. Pin IRQ zůstane odpojen. Pin MISO jde na digitální pin 12. Pin MOSI jde na digitální pin 11. Pin SCK jde na digitální pin 13 a nakonec pin SDA jde na digitální pin 10. To je vše.
RFID čtečka připojena. Nyní musíme připojit OLED displej k Arduinu pomocí rozhraní I2C. Takže SCL pin na displeji jde na analogový pin 5 a SDA na displeji na analogový pin 4. Pokud nyní zapneme projekt a přiložíme RFID kartu ke čtečce, vidíme, že projekt funguje dobře.
Krok 5: Kód projektu
Aby mohl být kód projektu zkompilován, musíme zahrnout nějaké knihovny. Nejprve potřebujeme knihovnu MFRC522 Rfid.
Chcete-li jej nainstalovat, přejděte na Skica -> Zahrnout knihovny -> Spravovat knihovny(Správa knihoven). Najděte MFRC522 a nainstalujte jej.
K zobrazení potřebujeme také knihovnu Adafruit SSD1306 a knihovnu Adafruit GFX.
Nainstalujte obě knihovny. Knihovna Adafruit SSD1306 potřebuje malou úpravu. Přejděte do složky Arduino -> Knihovny, otevřete složku Adafruit SSD1306 a upravte knihovnu Adafruit_SSD1306.h. Zakomentujte řádek 70 a odkomentujte řádek 69, protože Displej má rozlišení 128x64.
Nejprve deklarujeme hodnotu RFID tagu, kterou by mělo Arduino rozpoznat. Toto je pole celých čísel:
int kód = (69,141,8,136); // UID
Poté inicializujeme čtečku RFID a zobrazíme:
Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Poté ve funkci loop kontrolujeme tag na čtečce každých 100 ms.
Pokud má čtečka štítek, načteme jeho UID a vytiskneme jej na displej. Poté porovnáme UID značky, kterou jsme právě přečetli, s hodnotou uloženou v proměnné kódu. Pokud jsou hodnoty stejné, zobrazíme zprávu UNLOCK, jinak tuto zprávu nezobrazíme.
If(match) ( Serial.println("\nTuto kartu znám!"); printUnlockMessage(); )else ( Serial.println("\nNeznámá karta"); )
Samozřejmě můžete tento kód změnit tak, aby uložil více než 1 hodnotu UID, aby projekt rozpoznal více RFID tagů. Toto je jen příklad.
Kód projektu:
#zahrnout Jak je vidět z lekce – za málo peněz můžete do svých projektů přidat RFID čtečku. S touto čtečkou snadno vytvoříte bezpečnostní systém nebo vytvoříte zajímavější projekty, například tak, že data z USB disku budou načtena až po odemčení.
Tento projekt je modulární, tzn. můžete připojit / odpojit různé prvky a získat různé funkce. Výše uvedené obrázky ukazují variantu s plnou funkčností, konkrétně: V nastavení firmwaru si můžete vybrat kterýkoli ze tří typů (nastavení typ_zámku) Kterýkoli z těchto prvků lze ze systému vyloučit: Zámek je navržen tak, aby fungoval na baterii v úsporném režimu (Enable Disable: nastavení sleep_enable), jmenovitě: Když je systém vzhůru, stiskněte tlačítko pro změnu hesla (skryté tlačítko). Spadneme do režim změny hesla: Když systém nespí (probudí se tlačítkem nebo je režim spánku deaktivován), stisknutím * přejděte do režimu zadávání hesla Krok 6: Konečný výsledek
Zadejte heslo z čísel ( MAXIMÁLNĚ 10 ČÍSEL!!!)
Pokud se systém uspí a pravidelně se probouzí, aby zkontroloval UDÁLOST, stiskněte a podržte tlačítko *, dokud se nerozsvítí červená LED
Režim zadávání hesla: