Chytrý elektronický zámek na Arduinu, fungující přes Bluetooth - přední dveře jsou jako Spiderman. Automatický inteligentní zámek a elektronický kombinační zámek Arduino na Arduinu

Tento projekt je modulární, tzn. lze připojit/odpojit různé prvky a získat různé funkce. Výše uvedené obrázky ukazují možnost s plnou funkčností, konkrétně:

  • Uzamykací mechanismus. Slouží k OTEVŘENÍ a ZAVŘENÍ dveří. Tento projekt zkoumá použití tří různých mechanismů:
    • Servo. Jsou velké, jsou malé. Velmi kompaktní a ve spojení s těžkou závorou ​​- vynikající volba
    • Elektrický zámek dveří auta. Je to velká a výkonná věc, ale žere šílené proudy.
    • Solenoidová západka. Dobrá volba, protože se sám zavírá

    V nastavení firmwaru si můžete vybrat kteroukoli z nich tři typy(nastavení typ_zámku)

  • Tlačítko uvnitř. Slouží k OTEVŘENÍ a ZAVŘENÍ dveří zevnitř. Lze umístit na kliku dveří (na dlaň nebo na prsty), na samotné dveře nebo na zárubeň
  • Tlačítko venku. Slouží jak k ZAVŘENÍ dveří, tak i k PROBUZENÍ pro úsporu energie. Lze umístit na kliku dveří (na dlaň nebo na prsty), na samotné dveře nebo na zárubeň
  • Koncový uzávěr zavřít dveře. Slouží k automatickému uzavření zámku při zavření dveří. Může to být:
    • Tlačítko taktu
    • Hallovo čidlo + magnet na samotné dveře
    • Jazýčkový spínač + magnet na samotných dveřích
  • Tajný přístupové resetovací tlačítko. Používá se k resetování hesla/zadání nového hesla/zapamatování nového klíče/kombinace atd. Může být schovaný někde v pouzdře
  • LED k označení operace. RGB LED, červená a zelené barvy(při smíchání dávají žlutou):
    • Svítí zelené světlo - zámek je OTEVŘENÝ. Svítí, abyste nezapomněli zavřít dveře
    • Žlutá svítí - systém se probudil a čeká na zadání hesla
    • Bliká červeně - vybitá baterie

Kterýkoli z těchto prvků lze ze systému vyloučit:

  • Odstraňujeme koncový spínač. Ve firmwaru v nastavení to také zakážeme (nastavení tail_button). Nyní musíte stisknout tlačítko pro uzavření zámku.
  • Odstraňte externí tlačítko. Ve firmwaru v nastavení to také zakážeme (nastavení tlačítko probuzení). Nyní systém není potřeba budit, probouzí se sám (spotřeba energie je o něco vyšší). A teď nemáme tlačítko pro zavření na přední straně dveří a potřebujeme koncový spínač. Nebo zámek je západka
  • Vyjměte vnitřní tlačítko. Tato možnost je vhodná pro skříně a trezory. V nastavení nemusíte nic měnit
  • Odstraníme LED. V nastavení nemusíte nic měnit
  • Tlačítko pro resetování přístupu lze po prvním použití odpájet nebo lze kód přepsat tak, aby vyhovoval vašim potřebám
  • Dveře zavřené, stiskněte VENKU - probuďte se, počkejte na heslo/značku RFID/elektronický klíč/zadání otisku prstu
  • Dveře jsou zavřené, systém je vzhůru a čeká na zadání hesla. Čas lze upravit (nast doba spánku)
  • Dveře jsou zavřené, bylo zadáno heslo/štítek/klíč atd. - OTEVŘENO
  • Dveře jsou zavřené, stiskněte UVNITŘ - otevřete
  • Dveře jsou otevřené, stiskněte VENKU - zavřete
  • Dveře jsou otevřené, stiskněte UVNITŘ - zavřete
  • Dveře jsou otevřené, LIMIT stisknutý - zavřete

Zámek je navržen tak, aby fungoval na baterie v režimu nízké úspory energie (povolit zakázání: nastavení sleep_enable), jmenovitě:

  • Probuďte se každých pár sekund, sledujte UDÁLOST (volitelné, pokud venku není žádné tlačítko. Můžete to povolit v nastavení tlačítko probuzení)
  • Každých několik minut sledujte napětí baterie (nastavení zapnuto/vypnuto baterie_monitor)
  • Pokud je baterie vybitá (napětí je nastaveno v nastavení bat_low):
    • otevřete dvířka (volitelné, lze nakonfigurovat ve firmwaru open_bat_low)
    • zakázat další otevírání a zavírání
    • Když stisknete tlačítko, začne blikat červená LED
    • přestat sledovat UDÁLOST (tj. zadání hesla/štítku atd.)

Když systém nespí, stiskněte tlačítko pro změnu hesla (skryté tlačítko). Ocitáme se v režim změny hesla:
Zadejte heslo složené z čísel ( MAXIMÁLNĚ 10 ČÍSEL!!!)

  • Když stisknete *, heslo se zapíše do paměti a systém ukončí změnu hesla
  • Když stisknete #, heslo se resetuje (můžete ho zadat znovu)
  • Pokud po dobu 10 sekund nic nestisknete, automaticky opustíme režim změny hesla, staré heslo zůstane

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
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 hesla:

  • Zpracování hesla se provádí tak, že správné heslo se započítá pouze při psaní správné pořadíčísla, to znamená, pokud je heslo 345, tak můžete zadávat libovolná čísla, dokud se neobjeví sekvence 345, tzn. 30984570345 otevře zámek, protože končí na 345.
  • Pokud je heslo zadáno správně, dveře se otevřou
  • Pokud nic nestisknete, po 10 sekundách se systém vrátí do normálního (pohotovostního) režimu
  • Pokud stisknete #, okamžitě opustíme režim zadávání hesla
  • Pokud v režimu zadávání hesla stisknete tlačítko tajné změny hesla, režim také opustíte

Pokrok se nezastavuje a na dveřích bytů, garáží a domů se stále častěji objevují „chytré zámky“.

Podobný zámek se otevře, když stisknete tlačítko na smartphonu. Chytré telefony a tablety už naštěstí vstoupily do našeho každodenního života. V některých případech jsou „chytré zámky“ připojeny k „ cloudové služby„jako Disk Google a otevřít jej na dálku. Tato možnost navíc umožňuje poskytnout přístup k otevírání dveří dalším lidem.

Tento projekt bude implementovat DIY verzi chytrého zámku na Arduinu, který lze ovládat na dálku odkudkoli na světě.

Projekt navíc přidal možnost otevřít zámek po identifikaci otisku prstu. Za tímto účelem bude integrován snímač otisků prstů. Obě možnosti otevírání dveří budou poháněny platformou Adafruit IO.

Takový zámek může být skvělým prvním krokem ve vašem projektu Smart Home.

Nastavení snímače otisků prstů

Pro práci se snímačem otisků prstů existuje vynikající knihovna pro Arduino, která značně zjednodušuje proces nastavení snímače. Tento projekt využívá Arduino Uno. Pro připojení k internetu slouží deska Adafruit CC3000.

Začněme připojením napájení:

  • Připojte 5V pin z desky Arduino k červené napájecí liště;
  • GND pin z Arduina se připojuje k modré liště na nepájené desce.

Pojďme k připojení snímače otisků prstů:

  • Nejprve připojte napájení. Za tímto účelem je červený vodič připojen ke kolejnici +5 V a černý vodič ke kolejnici GND;
  • Bílý vodič senzoru se připojuje k pinu 4 na Arduinu.
  • Zelený vodič jde na kolík 3 na mikrokontroléru.

Nyní přejděme k modulu CC3000:

  • Pin IRQ z desky CC3000 propojíme s pinem 2 na Arduinu.
  • VBAT - na pin 5.
  • CS - na pin 10.
  • Poté musíte k Arduinu připojit piny SPI: MOSI, MISO a CLK - k pinům 11, 12 a 13.

Nakonec musíte zajistit napájení: Vin - do Arduina 5V (červená kolejnice na desce s obvody) a GND do GND (modrá kolejnice na prkénku).

Fotografie plně sestaveného projektu je uvedena níže:

Před vytvořením náčrtu, který načte data do Adafruit IO, musíte přenést data o vašem otisku prstu do snímače. Jinak vás v budoucnu nepozná;). Doporučujeme kalibrovat snímač otisků prstů pomocí Arduina samostatně. Pokud s tímto snímačem pracujete poprvé, doporučujeme vám seznámit se s procesem kalibrace a podrobnými pokyny pro práci se snímačem otisků prstů.

Pokud jste tak ještě neučinili, vytvořte si účet u Adafruit IO.

Poté můžeme přejít k další fázi vývoje „chytrého zámku“ na Arduinu: jmenovitě vytvoření náčrtu, který bude přenášet data do Adafruit IO. Protože je program poměrně rozsáhlý, v tomto článku zdůrazníme a zvážíme pouze jeho hlavní části a poté poskytneme odkaz na GitHub, kde si můžete stáhnout celý náčrt.

Náčrt začíná načtením všech potřebných knihoven:

#zahrnout

#zahrnout

#zahrnout

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_CC3000.h"

#zahrnout

#zahrnout >

Poté musíte náčrt mírně opravit vložením parametrů vaší sítě WiFi, zadáním SSID a hesla:

#define WLAN_SECURITY WLAN_SEC_WPA2>

Kromě toho musíte zadat své jméno a klíč AIO, abyste se mohli přihlásit ke svému účtu Adafruit IO:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_name"

#define AIO_KEY "adafruit_io_key">

Následující řádky jsou zodpovědné za interakci a zpracování dat ze snímače otisků prstů. Pokud byl senzor aktivován (shodoval se otisk prstu), bude „1“:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/fingerprint";

Adafruit_MQTT_Publish fingerprint = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Kromě toho musíme vytvořit instanci objektu SoftwareSerial pro náš senzor:

SoftwareSerial mySerial(3, 4);

Poté můžeme vytvořit objekt pro náš senzor:

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Uvnitř náčrtu uvádíme, které fingerID by mělo v budoucnu aktivovat zámek. Tento příklad používá 0, což odpovídá ID prvního otisku prstu použitého snímačem:

int fingerID = 0;

Poté inicializujeme čítač a zpozdíme náš projekt. V podstatě chceme, aby se zámek po otevření automaticky zablokoval. Tento příklad používá zpoždění 10 sekund, ale tuto hodnotu můžete upravit tak, aby vyhovovala vašim potřebám:

int počitadlo aktivace = 0;

int lastActivation = 0;

int aktivační čas = 10 * 1000;

V těle funkce setup() inicializujeme snímač otisků prstů a zajistíme připojení čipu CC3000 k vaší WiFi síti.

V těle funkce loop() se připojíme k Adafruit IO. Za to může následující řádek:

Po připojení k platformě Adafruit IO zkontrolujeme poslední otisk prstu. Pokud se shoduje a zámek není aktivován, odešleme „1“ do Adafruit IO ke zpracování:

if (fingerprintID == fingerID && lockState == false) (

Serial.println(F("Přístup povolen!"));

lockState = true;

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

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

lastActivation = millis();

Pokud je v rámci funkce loop() zámek aktivován a my jsme dosáhli výše uvedené hodnoty zpoždění, pošleme „0“:

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

lockState = false;

if (! fingerprint.publish(state)) (

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

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

Nejnovější verzi kódu si můžete stáhnout na GitHubu.

Je čas otestovat náš projekt! Nezapomeňte si stáhnout a nainstalovat všechny potřebné knihovny pro Arduino!

Ujistěte se, že jste ve skice provedli všechny potřebné změny a nahrajte ji do svého Arduina. Poté otevřete okno Serial Monitor.

Když se Arduino připojí k WiFi síti, snímač otisků prstů začne blikat červeně. Položte prst na senzor. ID číslo by mělo být zobrazeno v okně sériového monitoru. Pokud se shoduje, zobrazí se zpráva "OK!" To znamená, že data byla odeslána na servery Adafruit IO.

Schéma a náčrt pro další konfiguraci zámku na příkladu LED

Nyní se pojďme zabývat tou částí projektu, která je přímo zodpovědná za řízení zámek dveří. Pro připojení k bezdrátové síti a aktivaci/deaktivaci zámku budete potřebovat přídavný modul Adafruit ESP8266 (modul ESP8266 nemusí být od Adafruitu). Pomocí níže uvedeného příkladu můžete vyhodnotit, jak snadné je vyměňovat data mezi dvěma platformami (Arduino a ESP8266) pomocí Adafruit IO.

V této sekci nebudeme pracovat přímo se zámkem. Místo toho jednoduše připojíme LED na pin, kam se později připojí zámek. To nám dá příležitost otestovat náš kód, aniž bychom se ponořili do detailů návrhu zámku.

Schéma je docela jednoduché: nejprve nainstalujte ESP8266 na prkénko. Poté nainstalujte LED. Nezapomeňte, že dlouhá (kladná) noha LED je připojena přes odpor. Druhá větev rezistoru je připojena k pinu 5 na modulu ESP8266. Druhou (katodu) LED připojíme na pin GND na ESP8266.

Plně sestavený obvod zobrazeno na fotografii níže.


Nyní se podívejme na skicu, kterou používáme pro tento projekt. Kód je opět poměrně velký a složitý, takže se podíváme pouze na jeho hlavní části:

Začneme připojením potřebných knihoven:

#zahrnout

#include "Adafruit_MQTT.h"

#include "Adafruit_MQTT_Client.h"

Konfigurace nastavení WiFi:

#define WLAN_SSID "vaše_wifi_ssid"

#define WLAN_PASS "vaše_wifi_heslo"

#define WLAN_SECURITY WLAN_SEC_WPA2

Konfigurujeme také parametry Adafruit IO. Stejné jako v předchozí části:

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883

#define AIO_USERNAME "adafruit_io_username"

#define AIO_KEY "adafruit_io_key"

Označíme, ke kterému kolíku jsme připojili LED (v budoucnu to bude náš zámek nebo relé):

int relayPin = 5;

Interakce se snímačem otisků prstů, jako v předchozí části:

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

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

V těle funkce setup() označujeme, že pin, ke kterému je LED připojena, by měl fungovat v režimu OUTPUT:

pinMode(relayPin, OUTPUT);

V rámci smyčky loop() nejprve zkontrolujeme, zda jsme připojeni k Adafruit IO:

Poté zkontrolujeme, jaký signál je přijímán. Pokud je přenášena "1", aktivujeme pin, který jsme deklarovali dříve, ke kterému je připojena naše LED. Pokud obdržíme „0“, převedeme kontakt do stavu „nízký“:

Adafruit_MQTT_Subscribe *předplatné;

while ((předplatné = mqtt.readSubscription(1000))) (

if (předplatné == &zamknout) (

Serial.print(F("Mám: "));

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

// Uložení příkazu do dat řetězce

Příkaz String = String((char *)lock.lastream);

if (příkaz == "0") (

digitalWrite(relayPin, LOW);

if (příkaz == "1") (

digitalWrite(relayPin, HIGH);

Nalézt nejnovější verzi Skicu najdete na GitHubu.

Je čas otestovat náš projekt. Nezapomeňte si stáhnout všechny potřebné knihovny pro vaše Arduino a zkontrolujte, zda jste provedli správné změny v náčrtu.

K naprogramování čipu ESP8266 můžete použít jednoduchý převodník USB-FTDI.

Nahrajte skicu do Arduina a otevřete okno Serial Monitor. Na v této fázi právě jsme zkontrolovali, zda jsme se mohli připojit k Adafruit IO: na dostupné funkce se podíváme dále.

Testování projektu

Nyní začneme testovat! Přejděte do uživatelské nabídky svého Adafruit IO v nabídce Feeds. Zkontrolujte, zda jsou vytvořeny kanály otisku prstu a uzamčení (na obrazovce tisku pod nimi jsou čáry otisku prstu a zámku):


Pokud neexistují, budete je muset vytvořit ručně.

Nyní musíme zajistit výměnu dat mezi kanály otisku prstu a zámkem. Zamykací kanál musí mít hodnotu "1", když kanál otisků prstů nabývá hodnotu "1" a naopak.

K tomu používáme velmi výkonný nástroj Adafruit IO: triggery. Spouštěče jsou v podstatě podmínky, které můžete použít na nakonfigurované kanály. To znamená, že je lze použít k propojení dvou kanálů.

Vytvořte nový reaktivní trigger ze sekce Triggers v Adafruit IO. To poskytne možnost výměny dat mezi snímačem otisků prstů a zamykacími kanály:


Takto by to mělo vypadat, když jsou nakonfigurovány oba triggery:

Vše! Nyní můžeme náš projekt skutečně otestovat! Přiložíme prst na senzor a uvidíme, jak Arduino začalo blikat LED diodou, která odpovídá přenosu dat. Poté by měla LED na modulu ESP8266 začít blikat. To znamená, že začal přijímat data přes MQTT. V tuto chvíli by se měla rozsvítit i LED na desce plošných spojů.

Po prodlevě, kterou nastavíte ve skice (výchozí nastavení je 10 sekund), LED zhasne. Gratuluji! LED diodu můžete ovládat otiskem prstu odkudkoli na světě!

Nastavení elektronického zámku

Dosáhli jsme poslední části projektu: přímé připojení a ovládání. elektronický zámek S pomocí Arduina a snímač otisků prstů. Projekt není jednoduchý, můžete použít všechny zdroje ve formě, ve které jsou uvedeny výše, ale místo LED připojte relé.

Pro přímé připojení zámku budete potřebovat další komponenty: 12V zdroj, jack pro připojení napájení, tranzistor (v tomto příkladu je použit MOSFET IRLB8721PbF, ale můžete použít jiný, např. bipolární tranzistor TIP102 Pokud používáte bipolární tranzistor, budete muset přidat odpor.

Zobrazeno níže elektrické schéma připojení všech komponent k modulu ESP8266:


Všimněte si, že pokud používáte MOSFET tranzistor, nebudete potřebovat rezistor mezi pinem 5 modulu ESP8266 a tranzistorem.

Plně sestavený projekt je zobrazen na fotografii níže:


Napájejte modul ESP8266 pomocí modulu FTDI a připojte 12V napájecí zdroj do jacku. Pokud jste pro připojení použili výše doporučené kolíky, nebudete muset v náčrtu nic měnit.

Nyní můžete položit prst na snímač: zámek by měl fungovat v reakci na váš otisk prstu. Video níže ukazuje projekt automatického chytrého zámku v akci:

Další rozvoj projektu Smart Lock

Vydáno v našem projektu dálkové ovládání zámek dveří pomocí otisku prstu.

Nebojte se experimentovat, upravovat skicu a vazbu. Můžete například vyměnit elektronický dveřní zámek za relé pro ovládání výkonu vaší 3D tiskárny, robotické ruky nebo kvadrokoptéry...

Můžete rozvíjet své chytrá domácnost". Například na dálku aktivujte zavlažovací systém na Arduinu nebo rozsviťte světla v místnosti... Nezapomeňte, že pomocí Adafruit IO můžete současně aktivovat téměř neomezený počet zařízení.

Zanechte své komentáře, dotazy a sdílejte osobní zkušenost níže. V diskuzích se často rodí nové nápady a projekty!

Náhodou jsme se rozhodli pro instalaci v práci kombinační zámek k našim dveřím, protože neustále zabíháme - utíkáme z kanceláře, jejíž dveře by měly být v nepřítomnosti obyvatel neustále zavřené. Klíče často končí zapomenuté uvnitř. Obecně jsme se rozhodli, že kombinační zámek je skvělé řešení.

Když jsem se prohrabal čínskými blešími trhy a ebay, nenašel jsem nic levného a více či méně vážného a rozhodl jsem se to vyrobit sám. Hned řeknu, že platforma Arduino byla vybrána pro svou jednoduchost, protože jsem s mikrokontroléry neměl vůbec žádné zkušenosti.

Nápad

Na dveře s mimo dveří by měla být klávesnice, na které se zadává heslo, s uvnitř zbytek konstrukce je pevný. Pro ovládání úplného zavření dveří se používá jazýčkový spínač. Při odchodu z kanceláře osoba stiskne „*“ na klávesnici a aniž by čekala, až se dveře zavřou zavíračem, věnuje se své práci, když jsou dveře úplně zavřené, jazýčkový spínač se zavře a zámek se zavře . Dveře se otevřou zadáním 4místného hesla a stisknutím „#“.

Příslušenství

Arduino UNO = 18 $
Arduino protoshield + prkénko = 6 $
L293D = 1 $
Balíček drátů 30ks pro Bradboard = 4 $
2 zásuvky RJ45 = 4 $
2 zástrčky RJ45 = 0,5 $
akční člen centrální zámek= 250 rublů.
Jazýčkový spínač = volně vytržený ze starého okna.
Obří kovová západka = zdarma
Pouzdro ze starého náboje D-LINK z jeden a půl milimetrového železa = zdarma
Napájení ze stejného rozbočovače D-LINK pro 12 a 5V = také zdarma
Hromada šroubů a matic pro připevnění všech těchto věcí k tělu = 100 rublů.
Dálkové ovládání z alarm proti vloupání= zdarma.

Celkový: 33,5 $ a 350 rublů.

Ne tak málo, řeknete si, a rozhodně budete mít pravdu, ale za potěšení se musí platit! A vždy je hezké něco sestavit vlastníma rukama. Kromě toho lze návrh výrazně snížit v nákladech, pokud použijete holý MK bez Arduina.

Příprava na montáž

Rád bych řekl pár slov k nákupu klíčový prvek návrhy pohonů. V místním autosalonu mi nabídli dva typy pohonů: „se dvěma dráty a s pěti“. Podle prodavačky byly naprosto totožné a rozdíl v počtu drátů neznamenal absolutně nic. Jak se však později ukázalo, není tomu tak! Vybral jsem zařízení se dvěma vodiči, bylo napájeno 12V. Pětivodičové provedení obsahuje koncové spínače pro ovládání pohybu páky. Že jsem koupil špatný, jsem si uvědomil, až když jsem ho rozebral a na výměnu už bylo pozdě. Zdvih páky se ukázal být příliš krátký na to, aby západku správně zasunul, proto bylo nutné ji trochu upravit, a to odstranit dvě gumové podložky, které zkracovaly zdvih páky akčního členu. K tomu bylo třeba karoserii podélně rozřezat obyčejnou pilkou na železo, protože druhá podložka byla uvnitř. Modrá elektropáska nám jako vždy pomohla do budoucna při zpětné montáži.
K ovládání motoru akčního členu jsme použili budič motoru L293D, který vydrží špičkové zatížení až 1200 mA, když jsme zastavili motor akčního členu, špičkové zatížení se zvýšilo na pouhých 600 mA.
Z ústředny zabezpečovací signalizace byly odstraněny kontakty z klávesnice, reproduktor a dvě LED diody. Dálkové ovládání a hlavní zařízení měly být spojeny pomocí kroucené dvoulinky a konektorů RJ45

Programování.

Dosud jsem tedy neměl žádné zkušenosti s programováním Arduina. Použil jsem práci a články jiných lidí ze stránky arduino.cc. Kdo má zájem, může se podívat na tento ošklivý kód :)

Foto a video



Arduino a akční člen


pohonná jednotka


Klávesnice


Espagnolette (připojený k pohonu kovovým paprskem a pokrytý teplem smrštitelným pro krásu)

Video z provozu zařízení:

Dnešní lekce je o tom, jak pomocí čtečky RFID s Arduinem vytvořit jednoduchý uzamykací systém, jednoduchými slovy- 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 tagech. Jakýkoli RFID systém se skládá ze čtecího zařízení (čtečka, čtečka nebo dotazovač) a transpondéru (známého také jako RFID tag, někdy se také používá termín RFID tag).

Tento tutoriál bude používat RFID tag s Arduino. 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é ID nebude rovnat předdefinované hodnotě, zpráva "Odemčeno" se nezobrazí - viz foto níže.

Hrad je uzavřen

Zámek je otevřený

Části potřebné k vytvoření tohoto projektu:

  • RFID čtečka RC522
  • OLED displej
  • Vývojová deska
  • Dráty

Další podrobnosti:

  • 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 obsahuje malý čip (bílá karta zobrazená na fotografii). Pokud na tuto RFID kartu posvítíte baterkou, uvidíte malý čip a cívku, která jej 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 přečíst až na vzdálenost 20 mm.

Stejný čip existuje také v RFID přívěscích na klíče.

Každý RFID štítek má jedinečné číslo, které ho identifikuje. Toto je UID, které se zobrazuje na OLED displeji. Kromě tohoto UID může každá značka ukládat data. Na tento typ karty lze uložit až 1 tisíc dat. Působivé, že? Tato funkce se dnes nevyužije. Dnes je zajímavá pouze identifikace konkrétní karty podle jejího UID. Cena čtečky RFID a těchto dvou karet RFID je asi 4 $.

Krok 3: Displej OLED

Lekce využívá 0,96" 128x64 I2C OLED monitor.

Toto je velmi dobrý displej pro použití s ​​Arduinem. Jedná se o OLED displej a to znamená, že má nízkou spotřebu energie. Spotřeba tohoto displeje se pohybuje kolem 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 je monochromatická a druhá, stejně jako ta použitá v tutoriálu, může zobrazovat dvě barvy: žlutou a modrou. Horní část obrazovka může být pouze žlutá a spodní část- 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: Připojení všech dílů

Komunikace s deskou Arduino Uno je velmi jednoduchá. Nejprve zapojme 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 pracovat i při 3,3V, připojíme VCC z obou modulů na kladnou kolejnici prkénka. Tato sběrnice je pak připojena k 3,3V výstupu z Arduino Uno. Poté připojíme obě uzemnění (GND) k zemnicí sběrnici prkénka. Poté připojíme sběrnici Breadboard GND 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á SPI rozhraní ke komunikaci s Arduinem. Použijeme tedy hardwarové SPI piny od 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.

Čtečka RFID je připojena. Nyní musíme připojit OLED displej k Arduinu pomocí rozhraní I2C. Takže pin SCL na displeji jde na analogový pin pinu 5 a pin SDA na displeji na analogový pin 4. Pokud nyní zapneme projekt a umístíme RFID kartu do blízkosti čtečky, můžeme vidět, že projekt funguje dobře.

Krok 5: Kód projektu

Aby se kód projektu zkompiloval, 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 Arduino potřebuje 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 smyčky kontrolujeme tag na čtečce každých 100 ms.

Pokud je na čtečce š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, která je uložena 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 ukládal více než 1 hodnotu UID, aby projekt rozpoznal více RFID tagů. Toto je jen příklad.

Kód projektu:

#zahrnout #zahrnout #zahrnout #zahrnout #define OLED_RESET 4 displej Adafruit_SSD1306(OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instance třídy MFRC522::MIFARE_Key key; int kód = (69,141,8,136); //Toto je uložené UID int codeRead = 0; Řetězec uidString; void setup() ( Serial.begin(9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializovat pomocí I2C addr 0x3D (pro 128x64) // Vymazání vyrovnávací paměti display.clearDisplay();

display.setTextSize(2);

Jak je vidět z lekce, za málo peněz můžete do svých projektů přidat čtečku RFID. Pomocí této čtečky 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í.

V tomto článku vám řeknu, jak vyrobit kombinovaný zámek z Arduina. K tomu potřebujeme červené a zelené LED, bzučák, Arduino nano, LCD displej s I2C převodníkem, servopohon a maticovou klávesnici 4x4. Po zapnutí se na displeji zobrazí „Zadejte kód“.

rozsvítí se červená LED,

a zelené světlo zhasne, servo bude nastaveno na 0°. Při zadávání čísel se na displeji rozsvítí *.

Pokud je kód zadán nesprávně, na displeji se zobrazí “Zadejte kód.”. Pokud je kód správný, ozve se pípnutí, servo se otočí o 180° a na displeji se zobrazí „Open“.

rozsvítí se zelená LED,

a červená zhasne. Po 3 sekundách se servo vrátí do výchozí polohy, rozsvítí se červená LED a zhasne zelená LED, na displeji se zobrazí „Close.”,

poté se na displeji zobrazí "Zadejte kód.". Nyní o schématu. Nejprve připojíme Arduino pomocí drátů k prkénku (napájecí kontakty).

Poté připojíme maticovou klávesnici na kontakty D9 - D2.

Pak servo. Připojíme ho ke kolíku 10.

Červená LED na pinu 11.

Zelená - pro připnutí 12.

Bzučák - na pin 13.

Nyní nahrajte skicu.

#zahrnout #zahrnout #zahrnout #zahrnout iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd(0x27, 16, 2); Servo servo; 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); lcd.setCursor(0, 0) (lcd.clear(); lcd.print("Zadejte kód."); while ( !KB.check(KEY_DOWN)); ( delay(1); ) in = KB.getNum; check(KEY_DOWN)) ( delay(1); ) in = lcd.print("*" while (!KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.print("*" while (!KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum("*"); if (in == pass) ( if (in == pass) ( if (in == pass) ( if (in == pass) ( lcd.clear(); lcd.setCursor (0, 0.tisk("Otevřít."); digitalWrite(r, LOW(3000); "); tone(13, 300, 700); digitalWrite(g, LOW); delay(1000);

))))))

To je vše. Užijte si kombinační zámek!

Seznam radioprvků Označení Typ Označení MnožstvíPoznámkaNakupovat
Můj poznámkový blok E1

Deska Arduino

1 Arduino Nano 3.0 5V
Do poznámkového bloku E8, E9

Rezistor

2 220 ohmů 5V
SMD LED

E6

1 AL102G 5V
Červený LED

E7

1 AL307G 5V
Zelený E3LCD displej1 S rozhraním I2C 5V
Zelené podsvícení E5Servo1 SG90 5V
180 stupňů E2Arduino Nano 3.01 Bzučák 5V
Bu E4Klávesnice1 4X4 5V
Matice ŽádnýBreadBoard1 640 bodů