Smart electronic castle sa Arduino, nagtatrabaho sa Bluetooth - ang pinto ng pasukan tulad ng isang Spiderman. Electronic Castle sa Arduino Code Castle sa Arduino Uno.

Kaya nangyari na nagpasya kaming mag-install ng lock ng code sa iyong pinto sa trabaho, dahil patuloy kaming tumatakbo - tumakbo kami sa labas ng opisina, ang pinto na dapat sarado patuloy sa kawalan ng mga naninirahan. Ang mga key ay madalas na nakalimutan sa loob. Sa pangkalahatan, napagpasyahan nila na ang lock ng code ay isang mahusay na paraan.

Ako rummaged sa Chinese flea market at eBay hindi ko mahanap ang anumang mas mura at higit pa o mas mababa malubhang at nagpasyang gawin ito ang aking sariling mga kamay. Magagawa ko agad ang reservation na ang Arduino platform ay pinili para sa pagiging simple nito, dahil ang karanasan ng komunikasyon sa microcontrollers ay hindi sa lahat.

Idea

Sa pintuan sa labas ng pinto ay dapat na isang keyboard kung saan ipinasok ang password, ang natitirang bahagi ng disenyo ay naayos sa loob. Upang kontrolin ang buong pagsasara ng pinto ay ginagamit ni Geron. Lumabas sa gabinete, ang isang tao ay nagpindot sa "*" na keyboard at nang hindi naghihintay hanggang sa malapit na ang pinto ang mas malapit sa kanyang mga gawain kapag ang pinto ay ganap na sarado, ang Geron ay magsasara at ang lock ay sarado. Ang pinto ay bubukas sa pamamagitan ng pagpasok ng 4x digit na password at pag-click sa "#".

Accessories.

Arduino Uno \u003d $ 18.
Arduino Protoshield + Breadboard \u003d $ 6.
L293d \u003d $ 1.
Punch of wires 30pcs para sa Braddatrad \u003d $ 4.
2 sockets rj45 \u003d $ 4.
2 plugs rj45 \u003d $ 0.5.
Central locking actuator \u003d 250 rubles.
Geron \u003d freezing libre mula sa lumang window.
Pananahi Metal Giant Laki \u003d Libre
Kaso mula sa isang lumang hub d-link mula sa isa at kalahating milyong bakal \u003d libre
Power supply mula sa parehong d-link hub para sa 12 at 5V \u003d din nang libre
Ang isang grupo ng mga screws at mga timba para sa pangkabit ang lahat ng ito magandang sa pabahay \u003d 100 rubles.
Ang control panel mula sa alarma sa seguridad \u003d libre.

Kabuuang: $ 33.5 at 350 RUB.

Hindi kaunti, sasabihin mo, at tiyak kang tama, ngunit para sa kasiyahan na kailangan mong bayaran! At palagi kang magaling na mangolekta ng isang bagay. Bago mapabagal ang disenyo, kung gumamit ka ng hubad na MK nang walang Arduino.

Paghahanda para sa Assembly.

Gusto kong magsabi ng ilang mga salita tungkol sa pagbili ng isang mahalagang elemento ng disenyo ng actuator. Sa lokal na auto-store ako ay inaalok ang mga actuator ng dalawang uri: "na may dalawang wires at limang". Ayon sa tindero, sila ay ganap na pareho at ang pagkakaiba sa bilang ng mga wires ay hindi nangangahulugang walang anuman. Gayunpaman, dahil ito ay lumabas sa ibang pagkakataon, hindi ito! Pinili ko ang isang aparato na may dalawang wires, ito ay fed mula sa 12V. Sa disenyo na may limang wires, ang mga switch ng limitasyon ay naka-install, na nagbibigay-daan sa iyo upang kontrolin ang kilusan ng pingga. Napagtanto ko na hindi ko binili ito kapag ako ay disassembled sa kanya at baguhin ito huli. Ang kurso ng pingga ay naging masyadong maikli upang itulak ang tape nang normal, kaya kinakailangan na baguhin ito nang kaunti, samakatuwid, alisin ang dalawang washers ng goma na nagpapaikli sa actuator pever. Para sa mga ito, ang katawan ay dapat i-cut kasama ang karaniwang hacksaw, dahil ang pangalawang washer ay nasa loob. Blue tape sa amin, bilang palaging nakatulong sa amin sa hinaharap kapag assembling ito pabalik.
Upang kontrolin ang motor motor, ang L293D motors ay ginamit, na nakasalalay sa peak load ng hanggang sa 1200 MA, kapag humihinto sa engine ng actuator, ang peak load ay lumaki hanggang 600 MA.
Ang mga kontrol mula sa keyboard, dynamics at dalawang LED ay inalis mula sa control control panel ng control. Ang console at ang pangunahing aparato ay dapat na konektado gamit ang isang baluktot na pares at RJ45 connectors

Programming.

Kaya, bilang karanasan sa programming Arduino hindi pa ako nagkaroon. Sinamantala ko ang trabaho at mga artikulo ng ibang tao mula sa site arduino.cc. Sino ang interesado, maaaring tumingin sa pangit na code na ito :)

Larawan at video.



Arduino at Actuator.


Power supply.


Keyboard.


Sewingale (konektado sa actuator na may metal na karayom \u200b\u200bat kung saan ang pag-urong ng init para sa kagandahan)

Pagpapatakbo ng video ng device:

Ngayon ay isang aralin tungkol sa kung paano gamitin ang RFID reader sa Arduino upang lumikha ng isang simpleng sistema ng pag-block, simpleng salita - RFID lock.

RFID (English Radio Frequency Identification, Radio Frequency Identification) - Isang paraan para sa awtomatikong pagkakakilanlan ng mga bagay kung saan ang data na nakaimbak sa tinatawag na mga transponders o RFID label ay binabasa sa pamamagitan ng mga signal ng radyo. Ang anumang sistema ng RFID ay binubuo ng isang reader (Reader, Reader o Interrogator) at isang transponder (ito rin ang RFID label, ginagamit din ang terminong RFID tag).

Ang isang label ng RFID na may Arduino ay gagamitin sa aralin. Binabasa ng aparato ang isang natatanging identifier (UID) ng bawat RFID tag, na tinatanggap namin sa tabi ng mambabasa, at ipinapakita ito sa display ng OLED. Kung ang UID tag ay katumbas ng predetermined na halaga, na nakaimbak sa memory ng Arduino, pagkatapos ay sa display makikita namin ang mensahe na "Unlocked" (Eng, unlock). Kung ang isang natatanging identifier ay hindi katumbas ng isang paunang natukoy na halaga, ang mensahe na "Unlocked" ay hindi lilitaw - tingnan ang larawan sa ibaba.

Sarado ang kastilyo

Bukas ang kastilyo

Mga detalye na kinakailangan upang lumikha ng proyektong ito:

  • RFID RC522 RFID.
  • OLED display.
  • Bread Board
  • Wires

Mga karagdagang detalye:

  • Baterya (powerbank)

Ang kabuuang halaga ng mga proyekto ng bahagi ay humigit-kumulang na 15 dolyar.

Hakbang 2: RFID Reader RC522.

Ang bawat label ng RFID ay may maliit na maliit na tilad (sa larawan ng isang puting card). Kung magpadala ka ng isang flashlight sa RFID card na ito, maaari mong makita ang isang maliit na maliit na tilad at isang likid na pumapaligid dito. Ang chip na ito ay walang baterya upang makabuo ng kapangyarihan. Nakakakuha ng pagkain mula sa mambabasa nang wireless gamit ang malaking likid na ito. Maaari mong basahin ang RFID card na katulad nito, mula sa isang distansya na hanggang 20 mm.

Ang parehong chip ay umiiral sa RFID tag.

Ang bawat RFID tag ay may natatanging numero na kinikilala ito. Ito ay isang UID, na ipinapakita sa display ng OLED. Maliban sa UID na ito, ang bawat tag ay maaaring mag-imbak ng data. Sa ganitong uri ng mga baraha, maaari kang mag-imbak ng hanggang sa 1 libong data. Kahanga-hanga, hindi ba? Ang tampok na ito ay hindi gagamitin ngayon. Ngayon, ang lahat ng interes ay ang pagkakakilanlan ng isang partikular na card para sa UID nito. Ang halaga ng RFID reader at ang dalawang RFID card ay tungkol sa 4 US dollars.

Hakbang 3: OLED display.

Ang aralin ay ginagamit ng OLED Monitor 0.96 "128x64 I2C.

Ito ay isang napakahusay na display para gamitin sa Arduino. Ito ay OLED display at ito ay nangangahulugan na ito ay may mababang kapangyarihan consumption. Ang paggamit ng kuryente ng display na ito ay tungkol sa 10-20 ma, at depende ito sa bilang ng mga pixel.

Ang display ay may isang resolution ng 128 hanggang 64 pixels at may isang maliit na sukat. Mayroong dalawang mga pagpipilian sa pagpapakita. Ang isa sa mga ito ay monochrome, at ang isa, bilang isa na ginagamit sa aralin, ay maaaring magpakita ng dalawang kulay: dilaw at asul. Ang tuktok ng screen ay maaari lamang maging dilaw, at ang mas mababang bahagi ay asul.

Ang display ng OLED na ito ay napakalinaw at ang kanyang mahusay at napaka-kaaya-aya na aklatan, na binuo ng Adafruit para sa display na ito. Bilang karagdagan sa display na ito ay gumagamit ng interface ng I2C, kaya ang koneksyon sa Arduino ay hindi mapaniniwalaan o kapani-paniwala simple.

Kailangan mo lamang na ikonekta ang dalawang wires, maliban sa VCC at GND. Kung ikaw ay bago sa Arduino at nais na gumamit ng isang murang at simpleng display sa iyong proyekto, magsimula sa ito.

Hakbang 4: Ikonekta ang lahat ng mga detalye

Ang komunikasyon sa Arduino Uno board ay napaka-simple. Una naming ikinonekta ang kapangyarihan sa mambabasa at ang display.

Mag-ingat, ang RFID reader ay dapat na konektado sa output ng 3.3 V mula sa Arduino Uno o ito ay sira.

Dahil ang display ay maaari ring gumana sa 3.3 V, ikinonekta namin ang VCC mula sa parehong mga module sa positibong layout ng bus. Pagkatapos ay ang bus na ito ay konektado sa output ng 3.3 V mula sa Arduino Uno. Pagkatapos nito ay ikinonekta namin ang parehong mga lupain (GND) na may isang mock grounding bus. Pagkatapos ay ikinonekta namin ang layout ng GND bus sa Arduino GND.

OLED display → Arduino.

SCL → analog pin 5.

SDA → Analog Pin 4.

RFID reader → Arduino.

RST → Digital PIN 9.

Irq → hindi konektado

Miso → digital pin 12.

Mosi → Digital PIN 11.

SCK → Digital Pin 13.

SDA → Digital PIN 10.

Ginagamit ng module ng RFID Reader ang interface ng SPI upang makipag-usap sa Arduino. Samakatuwid, gagamitin namin ang mga Pins ng SPI Hardware mula sa Arduino Uno.

Ang RST output ay pumasok sa digital contact 9. Ang contact ng IRQ ay nananatiling hindi naaayon. Ang Miso contact ay konektado sa digital na output 12. Ang MOSI PIN ay nasa digital contact 11. Ang SCK contact switch sa digital contact 13, at sa wakas, ang output ng SDA ay napupunta sa digital na output 10. Iyon lang.

Ang RFID reader ay konektado. Ngayon kailangan naming ikonekta ang OLED display sa Arduino gamit ang interface ng I2C. Kaya, ang SCL output sa display ay nalikom sa analog pin 5 at SDA output sa display sa analog pin 4. Kung binuksan namin ngayon ang proyekto at ilagay ang isang RF card sa tabi ng mambabasa, makikita namin na ang proyekto ay gumagana pagmultahin .

Hakbang 5: Code ng Proyekto

Upang ang proyekto code ay naipon, kailangan naming isama ang ilang mga aklatan. Una sa lahat, kailangan namin ang MFRC522 RFID library.

Upang i-install ito, pumunta sa. Sketch -\u003e Isama ang mga aklatan -\u003e Pamahalaan ang mga aklatan (Pamamahala ng Library). Hanapin ang mfrc522 at i-install ito.

Kailangan din namin ang Adafruit SSD1306 library at ang Adafruit GFX library para sa display.

I-install ang parehong mga aklatan. Ang Adafruit SSD1306 library ay nangangailangan ng isang maliit na pagbabago. Pumunta sa folder. Arduino -\u003e Mga AklatanBuksan ang folder ng Adafruit SSD1306 at i-edit ang library Adafruitic_ssd1306.h.. Gumawa ng isang string 70 at unassign ang string 69, dahil Ang display ay may resolution ng 128x64.

Una, ipinapahayag namin ang halaga ng RFID tag na dapat kilalanin ni Arduino. Ito ay isang array ng integers:

Int code \u003d (69,141,8,936); // uid.

Pagkatapos ay simulan namin ang RFID reader at ang display:

Rfid.pcd_init (); display.begin (SSD1306_SwitchCapvcc, 0x3c);

Pagkatapos nito, sa pag-ikot ng pag-ikot, suriin namin ang tag sa mambabasa bawat 100 ms.

Kung mayroong tag sa mambabasa, binabasa namin ito uid at i-print ito sa display. Pagkatapos ay ihambing namin ang UID tag, na binabasa lang namin, na may halaga na naka-imbak sa variable ng code. Kung ang mga halaga ay pareho, nagpapakita kami ng mensahe sa pag-unlock, kung hindi, hindi namin ipapakita ang mensaheng ito.

Kung (tugma) (serial.println ("\\ ni alam ang card na ito!"); PrintunlockMessage ();) else (serial.println ("\\ nunknown card");)

Siyempre, maaari mong baguhin ang code na ito upang makatipid ng higit sa 1 mga halaga ng UID upang makilala ng proyekto ang higit pang mga RFID label. Ito ay isang halimbawa lamang.

Kodigo sa proyekto:

#Include. #Include. #Include. #Include. #define OLED_RESET 4 ADAFRUT_SSD1306 Display (OLED_RESET); #Define ss_pin 10 #define rst_pin 9 mfrc522 rfid (ss_pin, rst_pin); / Halimbawa ng klase mfrc522 :: mifare_key key; Int code \u003d (69,141,8,936); // Ito ang naka-imbak na UID int coderead \u003d 0; String uidstring; void setup () (serial.begin (9600); spi.begin (); // init spi bus rfid.pcd_init (); // init mfrc522 display.begin (SSD1306_SwitchCapvcc, 0x3c); // Magsimula sa I2C Addr 0x3D (Para sa 128x64) // I-clear ang buffer. Display.Cleardisplay (); display.display (); display.setTextColor (puti); // o itim); display.setTexsize (2); Display.etcursor (10.0); display.print ("rfid lock"); display.display (); ) Void loop () (kung (rfid.picc_isnewcardpresent ()) (readrfid ();) pagkaantala (100);) walang bisa readrfid () (rfid.picc_readcardserval (); serial.print (f ("\\ npicc type:") ); Mfrc522 :: picc_type picctype \u003d rfid.picc_gettype (rfid.uid.sak); serial.println (rfid.picc_gettypename (picctype)); // check ay ang picc ng klasikong uri ng mifare kung (picctype! \u003d Mfrc522 :: picc_type_mifare_mini && picctype! \u003d Mfrc522 :: picc_type_mifare_1k && picctype! \u003d Mfrc522 :: picc_type_mifare_4k) (serial.println (f ("Ang iyong tag ay hindi uri ng mifare classic."): Return;) clearuid (); serial.println (" Scan picc "s uid:"); printdec (rfid.uid.uidbyte, rfid.uid.size); uidstring \u003d string (rfid.uid.uidbyte) + "" + string (rfid.uid.uidbyte) + "" + String (rfid.uid.uidbyte) + "" + string (rfid.uid.uidbyte); Printuid (); int i \u003d 0; boolean match \u003d true; habang (i

Hakbang 6: Final resulta

Tulad ng makikita mula sa aralin - maaari mong idagdag ang RFID reader para sa maliit na pera sa iyong mga proyekto. Maaari mong madaling lumikha ng isang sistema ng seguridad gamit ang mambabasa na ito o lumikha ng mas kawili-wiling mga proyekto, halimbawa, na ang data mula sa USB disk ay binabasa lamang pagkatapos i-unlock.

Ang nangungunang channel Youtube "Alexgyver" ay hiniling na gumawa ng elektronikong lock gamit ang kanilang sariling mga kamay. Maligayang pagdating sa ikot ng video tungkol sa mga elektronikong kandado sa Arduino. Sa pangkalahatang mga tuntunin, ipapaliwanag ng master ang ideya.

Mayroong ilang mga pagpipilian para sa paglikha ng isang electronic lock system. Karamihan ay kadalasang ginagamit upang i-lock ang mga pinto at mga kahon, mga cabinet. Pati na rin upang lumikha ng mga cache at lihim na safes. Samakatuwid, kailangan mong gumawa ng isang layout na kung saan ito ay maginhawa upang gumana at maaaring malinaw na ipinapakita nang detalyado ang sistema ng aparato mula sa loob at labas. Samakatuwid, nagpasya akong gumawa ng isang frame na may pinto. Upang gawin ito, kakailanganin mo ang isang parisukat na bar ng 30 x 30. plywood 10mm. Hinges ng pinto. Sa una, gusto kong gumawa ng isang plywood box, ngunit naalala ko na lahat ng bagay ay baluktot na may ekstrang bahagi. Ang nasabing kahon ay wala kahit saan upang ilagay. Samakatuwid, ang layout ay gagawin. Kung nais ng isang tao na maglagay ng electronic lock, pagkatapos ay tumitingin sa layout maaari mong madaling ulitin ang lahat.

Ang kailangan mo lang para sa kastilyo ay makikita sa tindahan ng Intsik na ito.

Ang layunin ay upang bumuo ng mga pinaka mahusay na mga scheme at firmware para sa electronic lock. Maaari mong gamitin ang mga resultang ito upang i-install ang mga system na ito sa iyong mga pinto, mga kahon, mga cabinet at cache.


Handa na ang pinto. Ngayon kailangan mong magkaroon ng kung paano buksan at isara sa elektronikong paraan. Para sa mga layuning ito, ang isang malakas na solenoid pike na may AliExpress ay angkop (link sa tindahan sa itaas). Kung sumasailalim ka sa mga konklusyon ng boltahe, magbubukas ito. Ang likidong paglaban ay halos 12 ohms, nangangahulugan ito na sa isang boltahe ng 12 volts, ang likaw ay kumain ng tungkol sa 1 amp. Ang isang lithium battery at isang pagtaas sa modyul ay makayanan ang gayong gawain. Ipasadya ang naaangkop na boltahe. Kahit na maaari mong at bahagyang higit pa. Ang pitch ay naka-mount sa loob ng pinto sa isang distansya upang hindi clinging ang gilid at maaaring slam. Ang shekold ay dapat na isang retaliatory bahagi sa anyo ng isang metal box. Ito ay hindi komportable na gamitin ito nang wala ito. Kailangan naming maglagay ng hakbang, hindi bababa sa nilikha ang hitsura ng normal na operasyon.

Sa idle mode, ang junk ay bubukas nang normal, ibig sabihin, kung may hawakan sa pinto, nag-aplay kami ng pulso, buksan ang pinto para sa hawakan. Ngunit kung tumalon ka, ang pamamaraan na ito ay hindi na angkop. Ang Enhancement Converter ay hindi nakayanan ang pag-load. Upang buksan ang pinto na ginawa ng tagsibol, kailangan mong gumamit ng mga malalaking baterya at isang mas malakas na converter. Alinman ang isang network power supply at puntos sa awtonomiya ng system. Sa mga tindahan ng Tsino mayroong malalaking sukat. Ang mga ito ay angkop para sa mga kahon. Ang nutrisyon ay maaaring ibigay gamit ang isang relay o transistor mosphore, o isang power key sa parehong transistor. Higit pang kawili-wili at mas mura ang pagpipilian ay isang servo na nakakonekta sa isang pagkonekta ng baras na may anumang elemento ng pag-lock - isang dekorasyon o mas malubhang balbula. Ito ay maaaring kailanganin ng isang piraso ng mga karayom \u200b\u200bbakal na gumaganap ng papel ng isang pagkonekta pamalo. Ang ganitong sistema ay hindi nangangailangan ng mataas na kasalukuyang. Ngunit nangangailangan ng mas maraming espasyo at mas mapanlinlang na lohika sa pamamahala.

Mayroong dalawang uri ng mga drive ng servo. Maliit na mahina at malalaking makapangyarihan, na maaaring kalmado na naka-plug sa mga butas sa malubhang mga pin ng metal. Parehong ipinakita ang mga pagpipilian sa trabaho parehong sa mga pinto at sa mga drawer. Sa kahon ay magkakaroon ng manghihinang, paghila ng butas sa maaaring iurong na pader.

Ang ikalawang bahagi ng.

Ang pag-unlad ay hindi tumayo at ang "smart castles" ay lalong lumilitaw sa mga pintuan ng mga apartment, garage at mga bahay.

Ang isang katulad na lock ay bubukas kapag pinindot mo ang pindutan sa smartphone. Sa kabutihang palad, ang mga smartphone at tablet ay naipasok na ang aming paggamit. Sa ilang mga kaso, ang "Smart Locks" ay konektado sa "mga serbisyo ng ulap" tulad ng isang Google disk at bukas nang malayuan. Bilang karagdagan, ang pagpipiliang ito ay posible upang magbigay ng access sa pagbubukas ng pinto sa ibang tao.

Ang proyektong ito ay ipapatupad ng bersyon ng DIY ng Smart Lock sa Arduino, na maaaring pinamamahalaang mula sa anumang punto ng lupa.

Bilang karagdagan, idinagdag ng proyekto ang kakayahang buksan ang lock pagkatapos ng pagkilala ng fingerprint. Upang gawin ito, ang fingerprint sensor ay isasama. Ang parehong mga pagpipilian para sa pagbubukas ng mga pinto ay magpapatakbo batay sa platform ng Adafruit IO.

Ang isang katulad na kastilyo ay maaaring maging isang mahusay na unang hakbang sa proyekto ng iyong smart home.

Pagtatakda ng fingerprint sensor.

Upang magtrabaho kasama ang fingerprint sensor, mayroong isang mahusay na library para sa Arduino, na lubhang pinapadali ang proseso ng pagsasaayos ng sensor. Ang Arduino Uno ay ginagamit sa proyektong ito. Ang Adafruit CC3000 ay ginagamit upang kumonekta sa Internet.

Magsimula tayo sa pagkonekta ng kapangyarihan:

  • Ikonekta ang contact 5V mula sa Arduino board patungo sa Red Rail;
  • Ang pakikipag-ugnay sa GND sa Arduino ay kumokonekta sa isang asul na tren sa isang masikip na circuit board.

Pumunta sa koneksyon ng fingerprint sensor:

  • Unang ikonekta ang kapangyarihan. Upang gawin ito, ang pulang kawad ay konektado sa rail +5 V, at ang itim - kasama ang Rail gnd;
  • Ang puting sensor wire ay kumokonekta sa 4 sa Arduino.
  • Ang green wire ay pumupunta sa contact 3 sa isang microcontroller.

Ngayon ay haharapin namin ang module ng CC3000:

  • Makipag-ugnay sa IRQ mula sa CC3000 card Kumonekta sa Pin 2 sa Arduino.
  • Vbat - upang makipag-ugnay sa 5.
  • CS - upang makipag-ugnay sa 10.
  • Pagkatapos nito, kailangan mong ikonekta ang mga contact sa SPI sa Arduino: Mosi, Miso at CLK sa mga contact 11, 12 at 13, ayon sa pagkakabanggit.

Well, sa dulo ito ay kinakailangan upang magbigay ng pagkain: Vin - sa Arduino 5V (Red Rail sa iyong mount board), at GND sa GND (asul na tren sa laype).

Ang larawan ng ganap na binuo na proyekto ay ipinapakita sa ibaba:

Bago umunlad ang sketch, na mag-load ng data sa Adafruit IO, kailangan mong maglipat ng data tungkol sa iyong fingerprint sensor. Kung hindi, sa hinaharap, hindi ka niya nakikilala;). Inirerekumenda namin ang pag-calibrate ng fingerprint sensor gamit ang Arduino nang hiwalay. Kung nagtatrabaho ka sa sensor na ito sa unang pagkakataon, inirerekumenda namin ang pagbabasa ng proseso ng pagkakalibrate at mga detalyadong tagubilin para magtrabaho gamit ang fingerprint sensor.

Kung hindi mo pa nagawa ito, magsisimula ka ng isang account sa Adafruit IO.

Pagkatapos nito, maaari naming magpatuloy sa susunod na yugto ng pag-unlad ng isang "smart lock" sa Arduino: samakatuwid, ang pag-unlad ng sketch, na magpapadala ng data sa Adafruit IO. Dahil ang programa ay medyo malaki, sa artikulo ay i-highlight namin at isaalang-alang lamang ang mga pangunahing bahagi nito, at pagkatapos ay magbigay ng isang link sa GitHub, kung saan maaari mong i-download ang buong sketch.

Nagsisimula ang skatch sa paglo-load ng lahat ng kinakailangang mga aklatan:

#Include.

#Include.

#Include.

#Include "adafruit_mqtt.h"

#Include "adafruit_mqtt_cc3000.h"

#Include.

#Include. >

Pagkatapos nito, kailangan mong wastong iwasto ang sketch, na ipinapasok ang mga parameter ng iyong WiFi network, na tumutukoy sa SSID at password (password):

#Define wlan_security wlan_sec_wpa2\u003e

Bilang karagdagan, dapat mong ipasok ang pangalan at key ng AIO (key) upang ipasok ang iyong ADAFRUTI IO account:

#Define aio_serverport 1883.

#Define aio_username "adafruitic"

#Define aio_key "adafruit_io_key"\u003e

Ang mga sumusunod na linya ay may pananagutan para sa pakikipag-ugnayan at pagpoproseso ng data mula sa sensor ng fingerprint. Kung ang sensor ay na-activate (ang imprint ng coincided), ay magiging "1":

const char fingerprint_feed progmem \u003d aio_username "/ feed / fingerprint";

Adafruit_mqtt_publish fingerprint \u003d adafruit_mqtt_publish (& mqtt, fingerprint_feed);

Bilang karagdagan, kailangan mong lumikha ng isang halimbawa ng softwareserial object para sa aming sensor:

Softwareserial myserial (3, 4);

Pagkatapos nito, maaari kaming lumikha ng isang bagay para sa aming sensor:

Adafruit_fingerprint daliri \u003d adafruit_fingerprint (& myserial);

Sa loob ng sketch, tinukoy namin kung aling fingerid ang dapat i-activate ang lock sa hinaharap. Ang halimbawang ito ay gumagamit ng 0 na tumutugma sa unang fingerprint ID, na ginagamit ng sensor:

int fingerid \u003d 0;

Pagkatapos nito, magpasimula ng counter at pagkaantala (pagkaantala) sa aming proyekto. Sa kakanyahan, gusto naming awtomatikong magtrabaho ang lock pagkatapos ng pagbubukas. Ang halimbawang ito ay gumagamit ng pagkaantala ng 10 segundo, ngunit maaari mong ayusin ang halaga na ito para sa iyong sariling mga pangangailangan:

int activationCounter \u003d 0;

int lastactivation \u003d 0;

int activationtime \u003d 10 * 1000;

Sa katawan ng pag-setup () function, pinasimulan namin ang fingerprint sensor at matiyak ang koneksyon ng CC3000 chip sa iyong WiFi network.

Sa katawan ng loop () function kumonekta sa adafruit Io. Ang sumusunod na linya ay responsable para dito:

Pagkatapos ng pagkonekta sa platform ng Adafruit IO, suriin ang huling fingerprint. Kung ito ay coincides, at ang lock ay hindi na-activate, nagpapadala kami ng "1" para sa pagproseso sa Adafruit IO:

kung (fingerprintid \u003d\u003d fingerid && lockstate \u003d\u003d false) (

Serial.println (f ("access granted!"));

lockstate \u003d totoo;

Serial.println (f ("nabigo"));

Serial.println (f ("ok!"));

lastactivation \u003d millis ();

Kung, sa loob ng loop () function, ang lock ay naisaaktibo at naabot namin ang halaga ng pagkaantala, na ipinahiwatig sa itaas, nagpapadala ng "0":

kung ((activationCounter - hastactivation\u003e activationtime) && lockstate \u003d\u003d totoo) (

lockstate \u003d false;

kung (! Fingerprint.Publish (estado)) (

Serial.println (f ("nabigo"));

Serial.println (f ("ok!"));

Maaari mong i-download ang pinakabagong bersyon ng code sa GitHub.

Panahon na upang subukan ang aming proyekto! Huwag kalimutang i-download at i-install ang lahat ng kinakailangang mga aklatan para sa Arduino!

Tiyaking ginawa mo ang lahat ng kinakailangang pagbabago sa sketch at i-download ito sa iyong Arduino. Pagkatapos nito, buksan ang serial monitor window.

Kapag nag-uugnay si Arduino sa network ng WiFi, ang fingerprint sensor ay magiging pula. Alamat ang iyong daliri sa sensor. Ang serial monitor window ay dapat lumitaw ang numero ng ID. Kung ito ay coincides, isang mensahe ay lilitaw, "OK!". Nangangahulugan ito na ang data ay ipinadala sa Adafruit IO server.

Scheme at sketch para sa karagdagang lock setting sa halimbawa ng LED

Ngayon ay haharapin namin ang bahagi ng proyekto na direktang responsable para sa pamamahala ng lock ng pinto. Upang kumonekta sa wireless network at i-activate / i-deactivate ang lock, kakailanganin mo ng isang opsyonal na module ng ADAFRUTI ESP8266 (ang ESP8266 module ay hindi kailangang maging mula sa Adafruit). Sa halimbawa, kung saan isasaalang-alang namin sa ibaba, maaari mong suriin kung gaano kadali upang matiyak ang palitan ng data sa pagitan ng dalawang platform (Arduino at ESP8266) gamit ang Adafruit IO.

Sa seksyon na ito, hindi kami gagana nang direkta sa lock. Sa halip, ikinonekta namin lamang ang LED sa contact, kung saan ang lock ay konektado dito. Ito ay magbibigay ng pagkakataon upang subukan ang aming code, nang hindi lumalalim sa mga tampok ng disenyo ng kastilyo.

Ang scheme ay medyo simple: unang itakda ang ESP8266 sa breadboard. Pagkatapos nito, itakda ang LED. Huwag kalimutan na ang mahaba (positibo) binti ng LED ay konektado sa pamamagitan ng risistor. Ang ikalawang risistor foot ay konektado sa contact 5 sa module na ESP8266. Ang ikalawang (katod) ng LED ay konektado sa GND PIN sa ESP8266.

Ang ganap na binuo scheme ay ipinapakita sa larawan sa ibaba.


Ngayon ipaalam ito sa isang sketch na ginagamit para sa proyektong ito. Muli, ang code ay medyo malaki at kumplikado, kaya isasaalang-alang lamang namin ang mga pangunahing bahagi nito:

Nagsisimula kami sa koneksyon ng mga kinakailangang aklatan:

#Include.

#Include "adafruit_mqtt.h"

#Include "adafruit_mqtt_client.h"

I-configure ang WiFi:

#Define wlan_ssid "your_wifi_ssid"

#Define wlan_pass "your_wifi_pall"

#Define wlan_security wlan_sec_wpa2.

I-configure din ang mga parameter ng Adafruit IO. Tulad ng sa nakaraang seksyon:

#Define aio_server "io.adafruit.com"

#Define aio_serverport 1883.

#Define aio_username "adafruit_io_" user "

#Define aio_key "adafruit_io_key"

Ipinapahiwatig namin kung aling pine ang nakakonekta sa LED (sa hinaharap ito ang aming lock o relay):

int relaypin \u003d 5;

Pakikipag-ugnayan sa sensor ng fingerprint, tulad ng sa nakaraang seksyon:

const char lock_feed progmem \u003d aio_username "/ feed / lock";

Adafruit_mqtt_subscribe lock \u003d adafruit_mqtt_subscribe (& mqtt, lock_feed);

Sa katawan ng pag-setup () function, tinukoy namin na ang pin kung saan ang LED ay konektado ay dapat gumana sa output mode:

pindode (relaypin, output);

Sa loob ng loop () cycle, unang suriin kung nakakonekta kami sa Adafruit IO:

Pagkatapos nito, suriin kung aling signal ang dumating. Kung ang "1" ay ipinadala, i-activate ang contact na aming inihayag nang mas maaga kung saan konektado ang aming LED. Kung nakuha namin ang "0", isinasalin namin ang contact sa "mababang" estado:

Adafruit_mqtt_subscribe * subscription;

habang ((subscription \u003d mqtt.readsubscription (1000))) (

kung (subscription \u003d\u003d & lock) (

Serial.print (f ("got:"));

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

/ / I-save ang command sa data ng uri ng data

String command \u003d string (char *) lock.Lastread);

kung (command \u003d\u003d "0") (

digitalwrite (relaypin, mababa);

kung (command \u003d\u003d "1") (

digitalwrite (relaypin, mataas);

Makikita mo ang pinakabagong bersyon ng Sketch sa GitHub.

Panahon na upang subukan ang aming proyekto. Huwag kalimutang i-download ang lahat ng kinakailangang mga aklatan para sa iyong Arduino at suriin kung gumawa ka ng mga pagbabago sa sketch.

Upang mag-program ng ESP8266 chip, maaari mong gamitin ang isang simpleng USB-FTDI converter.

I-load ang skatch sa Arduino at buksan ang serial monitor window. Sa yugtong ito, sinuri lamang namin kung kumonekta sa Adafruti IO: abot-kayang pag-andar ay higit na titingnan namin.

Proyekto ng pagsubok

Ngayon magpatuloy sa pagsubok! Pumunta sa iyong user menu ng Adafruit Io, sa menu ng mga feed. Suriin, nilikha o walang mga channel para sa fingerprint at lock (sa screen ng pag-print sa ibaba ito ay ang mga hanay ng fingerprint at lock):


Kung walang, kailangan mong lumikha ng mano-mano.

Ngayon kailangan naming magbigay ng data exchange sa pagitan ng fingerprint at lock channel. Ang lock channel ay dapat gumawa ng halaga na "1" kapag ang fingerprint channel ay tumatagal ng halaga na "1" at vice versa.

Upang gawin ito, gumamit ng isang napakalakas na tool Adafruit IO: nag-trigger. Ang mga nag-trigger ay nasa mga kondisyon ng kakanyahan na maaari mong ilapat sa mga naka-configure na channel. Iyon ay, maaari silang magamit sa pakikipag-ugnayan ng dalawang channel.

Lumikha ng isang bagong reaktibo trigger mula sa mga pag-trigger seksyon sa Adafruit Io. Magbibigay ito ng kakayahang makipagpalitan ng data sa pagitan ng mga channel ng fingerprint sensor at ang kastilyo:


Ito ay kung paano ito dapat tumingin kapag ang parehong mga trigger ay na-customize:

Lahat! Ngayon ay maaari naming talagang subukan ang aming proyekto! Ilapat ang iyong daliri sa sensor at makita bilang Arduino nagsimulang mag-wink sa pamamagitan ng LED, na tumutugma sa paghahatid ng data. Pagkatapos nito, ang LED ay kumikislap sa module na ESP8266. Nangangahulugan ito na nagsimula siyang tumanggap ng data sa pamamagitan ng MQTT. Ang LED sa circuit board sa puntong ito ay dapat ding i-on.

Pagkatapos ng pagkaantala, na iyong na-install sa sketch (bilang default, ang halagang ito ay 10 segundo), ang LED ay i-off. Binabati kita! Maaari mong kontrolin ang LED sa isang fingerprint, na sa anumang punto sa mundo!

I-customize ang Electronic Castle.

Nakuha namin ang huling bahagi ng proyekto: ang direktang koneksyon at kontrol ng electronic lock gamit ang Arduino at ang fingerprint sensor. Ang proyekto ay hindi madali, maaari mong gamitin ang lahat ng mga mapagkukunan sa form kung saan sila ay itinakda mas mataas, ngunit sa halip ng LED upang ikonekta ang relay.

Upang direktang ikonekta ang lock, kakailanganin mo ng karagdagang mga bahagi: supply ng kuryente sa 12 V, Jack para sa power supply, transistor (sa halimbawang ito, ginamit ang IRLB8721PBF MOSFET, ngunit maaari mo ring gamitin ang isa pang, halimbawa, ang bipolar transistor tip102. Kung ikaw Gumamit ng isang bipolar transistor, kakailanganin mong magdagdag ng risistor.

Nasa ibaba ang electrical circuit ng pagkonekta sa lahat ng mga sangkap sa module na ESP8266:


Mangyaring tandaan na kung ginagamit mo ang MOSFET transistor, hindi mo kakailanganin ang isang risistor sa pagitan ng pin 5 ng module na ESP8266 at ang transistor.

Ang ganap na binuo na proyekto ay ipinapakita sa larawan sa ibaba:


Wave isang module ng ESP8266 gamit ang FTDI module at ikonekta ang power supply ng 12 V sa Jack. Kung ginamit mo ang mga inirekumendang pin upang kumonekta, hindi mo kailangang baguhin ang anumang bagay sa sketch.

Ngayon ay maaari mong sandalan ang iyong daliri sa sensor: ang lock ay dapat gumana, pagtugon sa iyong fingerprint. Ang video sa ibaba ay nagpapakita ng proyekto ng isang awtomatikong "smart" kastilyo sa pagkilos:

Karagdagang pag-unlad ng proyekto na "Smart Castle"

Sa aming proyekto ay naglabas ng remote control ng lock ng pinto gamit ang isang fingerprint.

Maaari mong ligtas na mag-eksperimento, baguhin ang sketch at strapping. Halimbawa, maaari mong palitan ang pinto ng electronic lock sa relay upang pamahalaan ang iyong 3D printer, manipulator o quadcopter ...

Maaari kang bumuo ng iyong smart home. Halimbawa, malayuan i-activate ang sistema ng patubig sa Arduino o isama ang liwanag sa kuwarto ... Huwag kalimutan na maaari mong sabay-sabay i-activate ang halos walang limitasyong bilang ng mga device gamit ang Adafruit IO.

Iwanan ang iyong mga komento, mga tanong at ibahagi ang iyong personal na karanasan sa ibaba. Ang mga bagong ideya at proyekto ay madalas na ipinanganak sa talakayan!