Arduino-da Bluetooth vasitəsilə işləyən ağıllı elektron kilid - ön qapı Spiderman kimidir. Arduino-da avtomatik ağıllı kilid və Arduino Elektron birləşmə kilidi

Bu layihə moduldur, yəni. qoşula/ayrıla bilər müxtəlif elementlər və fərqli funksionallıq əldə edin. Yuxarıdakı şəkillər tam funksionallıqla bir seçim göstərir, yəni:

  • Kilidləmə mexanizmi. Qapının AÇILMASI və BAĞLANMASI üçün xidmət edir. Bu layihə üç fərqli mexanizmin istifadəsini araşdırır:
    • Servo. Böyükləri də var, kiçikləri də var. Çox yığcam və ağır sürgü ilə birlikdə - əla seçimdir
    • Elektrikli avtomobilin qapı kilidi. Bu, böyük və güclü bir şeydir, lakin dəli cərəyanları istehlak edir.
    • Solenoid kilidi. Yaxşı variant, çünki özü bağlanır

    Firmware parametrlərində siz hər hansı birini seçə bilərsiniz üç növ(tənzimləmə kilid_növü)

  • Daxili düymə. Qapının içəridən AÇILMASI və BAĞLANMASINA xidmət edir. Qapının tutacağına (xurma tərəfi və ya barmaq tərəfi), qapının özünə və ya dirəyə yerləşdirilə bilər
  • Çöldə düymə. Qapını bağlamaq, həmçinin enerjiyə qənaət etmək üçün oyanmaq üçün xidmət edir. Qapının tutacağına (xurma tərəfi və ya barmaq tərəfi), qapının özünə və ya dirəyə yerləşdirilə bilər
  • Son qapaq qapını bağlamaq. Qapı bağlı olduqda kilidin avtomatik bağlanmasına xidmət edir. Bu ola bilər:
    • Nəzakət düyməsi
    • Hall sensoru + qapının özündə maqnit
    • Qamış açarı + qapının özündə maqnit
  • Gizli giriş sıfırlama düyməsi. Şifrəni sıfırlamaq/yeni parol daxil etmək/yeni açarı/kombinasiyanı yadda saxlamaq və s. üçün istifadə olunur. Davada bir yerdə gizlənə bilər
  • LEDəməliyyatı göstərmək üçün. RGB LED, qırmızı və yaşıl rənglər(qarışdıqda sarı rəng verirlər):
    • Yaşıl işıq yanır - kilid AÇIQDIR. Qapını bağlamağı unutmamağınız üçün yanır
    • Sarı aktivdir - sistem oyandı və parolun daxil edilməsini gözləyir
    • Qırmızı yanıb-sönür - az batareya

Bu elementlərdən hər hansı biri sistemdən xaric edilə bilər:

  • Limit açarını çıxarırıq. Parametrlərdəki proqram təminatında biz də onu söndürürük (tənzimləmə quyruq_düyməsi). İndi kilidi bağlamaq üçün düyməni basmalısınız.
  • Xarici düyməni çıxarın. Parametrlərdəki proqram təminatında biz də onu söndürürük (tənzimləmə oyandırma_düyməsi). İndi sistemin oyanmasına ehtiyac yoxdur, özü oyanır (enerji sərfiyyatı bir qədər yüksəkdir). İndi qapının ön hissəsində bağlama düyməmiz yoxdur və bizə limit açarı lazımdır. Və ya kilid bir qapaqdır
  • Daxili düyməni çıxarın. Bu seçim şkaflar və seyflər üçün uygundur. Parametrlərdə heç nəyi dəyişməyə ehtiyac yoxdur
  • LED-i çıxarırıq. Parametrlərdə heç nəyi dəyişməyə ehtiyac yoxdur
  • Giriş sıfırlama düyməsi ilk istifadədən sonra açıla bilər və ya kod ehtiyaclarınıza uyğun olaraq yenidən yazıla bilər
  • Qapı bağlıdır, OUTSIDE düyməsini basın - oyan, parol/RFID etiketi/elektron açar/barmaq izi daxil edilməsini gözləyin
  • Qapı bağlıdır, sistem oyaqdır, parolun daxil olmasını gözləyir. Vaxt tənzimlənə bilər (tənzimləmə yuxu_vaxtı)
  • Qapı bağlıdır, parol/etiket/açar və s. daxil edilib. - açıq
  • Qapı bağlıdır, INSIDE düyməsini basın - açın
  • Qapı açıqdır, OUTSIDE düyməsini basın - bağlayın
  • Qapı açıqdır, INSIDE düyməsini basın - bağlayın
  • Qapı açıqdır, LIMIT sıxılır - bağlayın

Kilid aşağı enerjiyə qənaət rejimində batareya gücü ilə işləmək üçün nəzərdə tutulmuşdur (aktiv et: parametr yuxu_aktiv edin), yəni:

  • Bir neçə saniyədən bir oyan, TƏDBİR-ə nəzarət et (əgər çöldə düymə yoxdursa, isteğe bağlı seçimdir. Parametrlərdə aktivləşdirə bilərsiniz. oyandırma_düyməsi)
  • Batareyanın gərginliyinə bir neçə dəqiqədən bir nəzarət edin (on/off parametri). batareya_monitor)
  • Batareya boşaldıqda (gərginlik parametrdə müəyyən edilir bat_low):
    • qapını açın (isteğe bağlı, proqram təminatında konfiqurasiya edilə bilər open_bat_low)
    • daha da açılmasını və bağlanmasını qadağan edin
    • Düyməni basdığınız zaman qırmızı LED yanıb-sönür
    • HADİSƏ monitorinqini dayandırın (məsələn, parol girişi/etiket və s.)

Sistem yatmırsa, parol dəyişdirmə düyməsini (gizli düymə) basın. özümüzü tapırıq parol dəyişdirmə rejimi:
Rəqəmlərdən ibarət parol daxil edin ( MAKSİMUM 10 RƏQƏM!!!)

  • * düyməsini sıxdığınız zaman parol yaddaşa yazılır və sistem parol dəyişikliyindən çıxır
  • # düyməsini basdığınız zaman parol sıfırlanır (yenidən daxil edə bilərsiniz)
  • Əgər 10 saniyə heç nə basmasanız, biz avtomatik olaraq parol dəyişdirmə rejimindən çıxacağıq, köhnə parol qalacaq.

Sistem yatmayanda (düymə ilə oyandı və ya yuxu söndürüldü), parol daxiletmə rejiminə daxil olmaq üçün * düyməsini basın.
Sistem yatırsa və HADİSƏni yoxlamaq üçün vaxtaşırı oyanırsa, * düyməsini basın və qırmızı LED yanana qədər saxlayın.
Parol rejimi:

  • Parolun emalı elə həyata keçirilir ki, düzgün parol yalnız siz yazdığınız zaman nəzərə alınsın düzgün ardıcıllıq nömrələr, yəni parol 345-dirsə, 345 ardıcıllığı görünənə qədər istənilən nömrələri daxil edə bilərsiniz, yəni. 30984570345 345 ilə bitdiyi üçün kilidi açacaq.
  • Şifrə düzgün daxil edilərsə, qapı açılacaqdır
  • Heç bir şeyə basmasanız, 10 saniyədən sonra sistem normal (gözləmə) rejiminə qayıdacaq
  • # düyməsini sıxsanız, biz dərhal parol daxiletmə rejimindən çıxacağıq
  • Şifrə daxiletmə rejimində gizli parol dəyişdirmə düyməsini sıxsanız, siz də ondan çıxacaqsınız

Tərəqqi hələ də dayanmır və "Ağıllı kilidlər" getdikcə mənzillərin, qarajların və evlərin qapılarında görünür.

Bənzər bir kilid smartfonunuzdakı düyməni basdığınız zaman açılır. Xoşbəxtlikdən, smartfonlar və planşetlər artıq gündəlik həyatımıza daxil olub. Bəzi hallarda "ağıllı kilidlər" " bulud xidmətləri"Google Drive kimi və onu uzaqdan açın. Bundan əlavə, bu seçim qapını başqa insanlara açmağa icazə verməyə imkan verir.

Bu layihə Arduino-da dünyanın istənilən yerindən uzaqdan idarə oluna bilən ağıllı kilidin DIY versiyasını həyata keçirəcək.

Bundan əlavə, layihəyə barmaq izini müəyyən etdikdən sonra kilidi açmaq imkanı əlavə edilib. Bu məqsədlə barmaq izi sensoru inteqrasiya olunacaq. Hər iki qapının açılması variantı Adafruit IO platforması ilə təchiz ediləcək.

Belə bir kilid Ağıllı Ev layihənizdə əla ilk addım ola bilər.

Barmaq izi sensorunun qurulması

Barmaq izi sensoru ilə işləmək üçün Arduino üçün sensorun qurulması prosesini xeyli asanlaşdıran əla kitabxana var. Bu layihə istifadə edir Arduino Uno. İnternetə qoşulmaq üçün Adafruit CC3000 lövhəsi istifadə olunur.

Gücü birləşdirməyə başlayaq:

  • Arduino lövhəsindən 5V pinini qırmızı elektrik relsinə qoşun;
  • Arduino-dan olan GND pin lehimsiz dövrə lövhəsindəki mavi relsə qoşulur.

Barmaq izi sensorunu birləşdirməyə davam edək:

  • Əvvəlcə gücü birləşdirin. Bunun üçün qırmızı tel +5 V relsinə, qara tel isə GND relsinə birləşdirilir;
  • Sensorun ağ teli Arduino-nun 4-cü pininə qoşulur.
  • Yaşıl tel mikrokontrolörün 3-cü pininə keçir.

İndi CC3000 moduluna keçək:

  • CC3000 lövhəsindən IRQ pinini Arduino-da 2-ci pinlə birləşdiririk.
  • VBAT - 5-i bağlamaq üçün.
  • CS - pin 10 üçün.
  • Bundan sonra, SPI pinlərini Arduino-ya qoşmalısınız: MOSI, MISO və CLK - müvafiq olaraq 11, 12 və 13-cü pinlərə.

Yaxşı, sonunda enerji təmin etməlisiniz: Vin - Arduino 5V-ə (dövrə lövhənizdəki qırmızı rels) və GND-dən GND-yə (çörək lövhəsindəki mavi rels).

Tam yığılmış layihənin fotoşəkili aşağıda göstərilir:

Məlumatları Adafruit IO-ya yükləyəcək eskiz hazırlamazdan əvvəl barmaq iziniz haqqında məlumatları sensora ötürməlisiniz. Yoxsa gələcəkdə səni tanımaz;). Arduino-dan istifadə edərək barmaq izi sensorunu ayrıca kalibrləməyi tövsiyə edirik. Əgər bu sensorla ilk dəfə işləyirsinizsə, kalibrləmə prosesi və barmaq izi sensoru ilə işləmək üçün ətraflı təlimatlarla tanış olmağı tövsiyə edirik.

Əgər bunu etməmisinizsə, Adafruit IO ilə hesab yaradın.

Bundan sonra biz Arduino-da “ağıllı kilid”in yaradılmasının növbəti mərhələsinə keçə bilərik: daha doğrusu, məlumatları Adafruit IO-ya ötürəcək eskizin hazırlanması. Proqram kifayət qədər geniş olduğundan, bu məqalədə biz onun yalnız əsas hissələrini vurğulayacağıq və nəzərdən keçirəcəyik, sonra isə tam eskizini yükləyə biləcəyiniz GitHub-a keçid təqdim edəcəyik.

Eskiz bütün lazımi kitabxanaları yükləməklə başlayır:

#daxildir

#daxildir

#daxildir

#daxil edin "Adafruit_MQTT.h"

#daxil edin "Adafruit_MQTT_CC3000.h"

#daxildir

#daxildir >

Bundan sonra, SSID və şifrəni göstərərək WiFi şəbəkənizin parametrlərini daxil edərək eskizi bir az düzəltməlisiniz:

#WLAN_SECURITY WLAN_SEC_WPA2> müəyyən edin

Bundan əlavə, Adafruit IO hesabınıza daxil olmaq üçün adınızı və AIO açarınızı daxil etməlisiniz:

#AIO_SERVERPORT 1883 təyin edin

#AIO_USERNAME "adafruit_io_name" təyin edin

#AIO_KEY "adafruit_io_key"> müəyyən edin

Aşağıdakı sətirlər barmaq izi sensorundan məlumatların qarşılıqlı əlaqəsi və işlənməsi üçün məsuliyyət daşıyır. Sensor işə salınıbsa (barmaq izi uyğun gəlir), "1" olacaq:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME "/feeds/barmaq izi";

Adafruit_MQTT_Publish barmaq izi = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Bundan əlavə, sensorumuz üçün SoftwareSerial obyektinin nümunəsini yaratmalıyıq:

SoftwareSerial mySerial(3, 4);

Bundan sonra sensorumuz üçün bir obyekt yarada bilərik:

Adafruit_Fingerprint barmaq = Adafruit_Fingerprint(&mySerial);

Eskizin içərisində gələcəkdə hansı barmaq identifikatorunun kilidi aktivləşdirməli olduğunu göstəririk. Bu nümunə sensor tərəfindən istifadə edilən ilk barmaq izinin identifikatoruna uyğun gələn 0-dan istifadə edir:

int barmaq ID = 0;

Bundan sonra layihəmizdə sayğac və gecikməni işə salırıq. Əslində, kilidin açıldıqdan sonra avtomatik olaraq işə salınmasını istəyirik. Bu nümunə 10 saniyəlik gecikmədən istifadə edir, lakin siz bu dəyəri ehtiyaclarınıza uyğunlaşdıra bilərsiniz:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10 * 1000;

Setup() funksiyasının korpusunda biz barmaq izi sensorunu işə salırıq və CC3000 çipinin WiFi şəbəkənizə qoşulmasını təmin edirik.

Loop() funksiyasının gövdəsində biz Adafruit IO-ya qoşuluruq. Aşağıdakı xətt buna cavabdehdir:

Adafruit IO platformasına qoşulduqdan sonra sonuncu barmaq izini yoxlayırıq. Əgər uyğun gəlirsə və kilid aktiv deyilsə, biz emal üçün Adafruit IO-ya "1" göndəririk:

əgər (barmaq izi ID == barmaq identifikatoru && lockState == yanlış) (

Serial.println(F("Giriş verilib!"));

lockState = doğru;

Serial.println(F("Uğursuz"));

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

lastActivation = millis();

Əgər loop() funksiyası daxilində kilid aktivləşdirilibsə və yuxarıda göstərilən gecikmə dəyərinə çatmışıqsa, “0” göndəririk:

əgər ((activationCounter - lastActivation > activationTime) && lockState == true) (

lockState = false;

əgər (! fingerprint.publish(state)) (

Serial.println(F("Uğursuz"));

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

Kodun son versiyasını GitHub-da yükləyə bilərsiniz.

Layihəmizi sınaqdan keçirməyin vaxtı gəldi! Arduino üçün bütün lazımi kitabxanaları yükləməyi və quraşdırmağı unutmayın!

Eskizdə bütün lazımi dəyişiklikləri etdiyinizə əmin olun və onu Arduino-ya yükləyin. Bundan sonra Serial Monitor pəncərəsini açın.

Arduino WiFi şəbəkəsinə qoşulduqda barmaq izi sensoru qırmızı yanıb-sönməyə başlayacaq. Barmağınızı sensorun üzərinə qoyun. ID nömrəsi serial monitor pəncərəsində göstərilməlidir. Uyğundursa, "OK!" mesajı görünəcək. Bu o deməkdir ki, məlumat Adafruit IO serverlərinə göndərilib.

Bir LED nümunəsindən istifadə edərək kilidin sonrakı konfiqurasiyası üçün diaqram və eskiz

İndi isə layihənin birbaşa idarəetməyə cavabdeh olan hissəsi ilə məşğul olaq qapı kilidi. Simsiz şəbəkəyə qoşulmaq və kilidi aktivləşdirmək/deaktiv etmək üçün sizə lazım olacaq əlavə modul Adafruit ESP8266 (ESP8266 modulunun Adafruit-dən olması lazım deyil). Aşağıdakı nümunədən istifadə edərək, Adafruit IO istifadə edərək iki platforma (Arduino və ESP8266) arasında məlumat mübadiləsinin nə qədər asan olduğunu qiymətləndirə bilərsiniz.

Bu bölmədə biz birbaşa kilidlə işləməyəcəyik. Bunun əvəzinə, biz sadəcə olaraq LED-i kilidin daha sonra birləşdiriləcəyi pinlə birləşdirəcəyik. Bu, bizə kilidin dizaynının xüsusiyyətlərini öyrənmədən kodumuzu sınamaq imkanı verəcək.

Sxem olduqca sadədir: əvvəlcə ESP8266-nı çörək lövhəsinə quraşdırın. Bundan sonra LED-i quraşdırın. Unutmayın ki, LED-in uzun (müsbət) ayağı bir rezistor vasitəsilə bağlanır. Rezistorun ikinci ayağı ESP8266 modulunda 5-ci pinlə birləşdirilir. LED-in ikincisini (katodunu) ESP8266-dakı GND pininə bağlayırıq.

Tamamilə yığılmış dövrə aşağıdakı fotoda göstərilmişdir.


İndi bu layihə üçün istifadə etdiyimiz eskizə baxaq. Yenə də kod kifayət qədər böyük və mürəkkəbdir, ona görə də biz yalnız onun əsas hissələrinə baxacağıq:

Lazımi kitabxanaları birləşdirərək başlayırıq:

#daxildir

#daxil edin "Adafruit_MQTT.h"

#daxil edin "Adafruit_MQTT_Client.h"

WiFi parametrlərinin konfiqurasiyası:

#WLAN_SSID "wifi_ssid"inizi təyin edin

#WLAN_PASS "wifi_parolunuzu" təyin edin

#WLAN_SECURITY WLAN_SEC_WPA2-ni təyin edin

Biz həmçinin Adafruit IO parametrlərini konfiqurasiya edirik. Əvvəlki hissədə olduğu kimi:

#AIO_SERVER "io.adafruit.com"u müəyyən edin

#AIO_SERVERPORT 1883 təyin edin

#AIO_USERNAME "adafruit_io_username" təyin edin

#AIO_KEY "adafruit_io_key" təyin edin

LED-i hansı pinlə bağladığımızı göstəririk (gələcəkdə bu bizim kilidimiz və ya rölemiz olacaq):

int relayPin = 5;

Əvvəlki hissədə olduğu kimi barmaq izi sensoru ilə qarşılıqlı əlaqə:

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

Adafruit_MQTT_Subscribe lock = Adafruit_MQTT_Subscribe(&mqtt, LOCK_FEED);

Setup() funksiyasının gövdəsində göstəririk ki, LED-in qoşulduğu pin OUTPUT rejimində işləməlidir:

pinMode(relayPin, OUTPUT);

Loop() döngəsi daxilində əvvəlcə Adafruit IO-ya qoşulduğumuzu yoxlayırıq:

Bundan sonra hansı siqnalın alındığını yoxlayırıq. Əgər "1" ötürülürsə, biz daha əvvəl elan etdiyimiz, LED-imizin bağlı olduğu pinini aktivləşdiririk. "0" alsaq, kontaktı "aşağı" vəziyyətinə köçürürük:

Adafruit_MQTT_Subscribe *abunə;

isə ((abunə = mqtt.readSubscription(1000)))) (

əgər (abunə == &lock) (

Serial.print(F("Aldım:"));

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

// Komandanı sətir məlumatında saxlayın

String əmri = String((char *)lock.lastread);

əgər (əmr == "0") (

digitalWrite(relayPin, LOW);

əgər (əmr == "1") (

digitalWrite(relayPin, HIGH);

Tapın son versiya Eskizi GitHub-da tapa bilərsiniz.

Layihəmizi sınaqdan keçirməyin vaxtı gəldi. Arduino-nuz üçün lazım olan bütün kitabxanaları yükləməyi və eskizdə düzgün dəyişikliklər edib-etmədiyinizi yoxlamağı unutmayın.

ESP8266 çipini proqramlaşdırmaq üçün sadə USB-FTDI çeviricisindən istifadə edə bilərsiniz.

Eskizi Arduino-ya yükləyin və Serial Monitor pəncərəsini açın. Aktiv bu mərhələdə biz Adafruit IO-ya qoşula bildiyimizi yoxladıq: mövcud funksionallığa daha sonra baxacağıq.

Layihənin sınaqdan keçirilməsi

İndi test etməyə başlayaq! Feeds menyusunun altında, Adafruit IO-nun istifadəçi menyusuna keçin. Barmaq izi və kilid kanallarının yaradılıb-yaradılmadığını yoxlayın (aşağıdakı çap ekranında bunlar barmaq izi və kilid xətləridir):


Əgər onlar mövcud deyilsə, onları əl ilə yaratmalı olacaqsınız.

İndi barmaq izi və kilid kanalları arasında məlumat mübadiləsini təmin etməliyik. Barmaq izi kanalı "1" dəyərini aldıqda kilid kanalı "1" qiymətini almalıdır və əksinə.

Bunun üçün biz çox güclü Adafruit IO alətindən istifadə edirik: tetikler. Tətiklər əsasən konfiqurasiya edilmiş kanallara tətbiq edə biləcəyiniz şərtlərdir. Yəni, onlar iki kanalı birləşdirmək üçün istifadə edilə bilər.

Adafruit IO-da Tətiklər bölməsindən yeni reaktiv tətik yaradın. Bu, barmaq izi sensoru və kilid kanalları arasında məlumat mübadiləsini təmin edəcək:


Hər iki tetikleyici konfiqurasiya edildikdə belə görünməlidir:

Hamısı! İndi layihəmizi həqiqətən sınaqdan keçirə bilərik! Barmağımızı sensora qoyuruq və Arduino-nun məlumat ötürülməsinə uyğun gələn bir LED ilə necə göz qırpmağa başladığını görürük. Bundan sonra ESP8266 modulundakı LED yanıb-sönməyə başlamalıdır. Bu o deməkdir ki, o, MQTT vasitəsilə məlumat almağa başlayıb. Bu anda dövrə lövhəsindəki LED də yanmalıdır.

Eskizdə təyin etdiyiniz gecikmədən sonra (standart dəyər 10 saniyədir), LED sönəcək. Təbrik edirik! Dünyanın istənilən yerindən barmaq izinizlə LED-i idarə edə bilərsiniz!

Elektron kilidin qurulması

Layihənin son hissəsinə çatdıq: birbaşa əlaqə və nəzarət. elektron kilid ilə Arduino istifadə edərək və barmaq izi sensoru. Layihə asan deyil, bütün mənbələri yuxarıda təqdim olunduğu formada istifadə edə bilərsiniz, lakin bir LED əvəzinə bir röleyi birləşdirə bilərsiniz.

Kilidi birbaşa qoşmaq üçün əlavə komponentlərə ehtiyacınız olacaq: 12 V enerji təchizatı, gücü birləşdirmək üçün bir jak, tranzistor (bu nümunədə IRLB8721PbF MOSFET istifadə olunur, lakin başqa birini istifadə edə bilərsiniz, məsələn, TIP102 bipolyar tranzistor Əgər bipolyar tranzistordan istifadə edirsinizsə, rezistor əlavə etməlisiniz.

Aşağıda göstərilmişdir elektrik diaqramı bütün komponentləri ESP8266 moduluna qoşmaq:


Qeyd edək ki, MOSFET tranzistorundan istifadə edirsinizsə, ESP8266 modulunun 5-ci pin ilə tranzistor arasında rezistora ehtiyacınız olmayacaq.

Tam yığılmış layihə aşağıdakı fotoda göstərilir:


FTDI modulundan istifadə edərək ESP8266 modulunu gücləndirin və 12V enerji təchizatı yuvasına qoşun. Bağlantı üçün yuxarıda tövsiyə olunan sancaqlardan istifadə etmisinizsə, eskizdə heç nə dəyişməli olmayacaqsınız.

İndi barmağınızı sensorun üzərinə qoya bilərsiniz: kilid barmaq izinə cavab olaraq işləməlidir. Aşağıdakı video avtomatik smart kilid layihəsini göstərir:

Smart Lock layihəsinin sonrakı inkişafı

Layihəmizdə yayımlandı uzaqdan idarəetmə barmaq izinizlə qapını kilidləyin.

Təcrübə etməkdən, eskizi və bağlamanı dəyişdirməkdən çekinmeyin. Məsələn, siz 3D printerinizin, robot qolunuzun və ya kvadrokopterinizin gücünü idarə etmək üçün elektron qapı kilidini rele ilə əvəz edə bilərsiniz...

Özünüzü inkişaf etdirə bilərsiniz ağıllı ev". Məsələn, Arduino-da suvarma sistemini uzaqdan aktivləşdirin və ya otaqda işıqları yandırın... Unutmayın ki, siz Adafruit IO-dan istifadə edərək eyni vaxtda demək olar ki, qeyri-məhdud sayda cihazı aktivləşdirə bilərsiniz.

Şərhlərinizi, suallarınızı və paylaşın şəxsi təcrübə aşağıda. Yeni ideyalar və layihələr tez-tez müzakirələrdə doğulur!

Elə oldu ki, iş yerində quraşdırmaq qərarına gəldik kombinasiyalı kilid qapımıza, çünki biz daim qaçırıq - ofisdən qaçırıq, sakinlərin yoxluğunda qapısı daim bağlı olmalıdır. Açarlar çox vaxt içəridə unudulur. Ümumiyyətlə, birləşmiş kilidin əla bir həll olduğuna qərar verdik.

Çinin birə bazarlarını və ebay-ı gəzərək ucuz və ya daha az ciddi bir şey tapmadım və bunu özüm etmək qərarına gəldim. Dərhal deyim ki, Arduino platforması sadəliyinə görə seçilib, çünki mikrokontrollerlərlə ümumiyyətlə təcrübəm olmayıb.

İdeya

ilə qapıda kənarda qapıda parolun daxil edildiyi klaviatura olmalıdır içəridə strukturun qalan hissəsi sabitlənmişdir. Qapının tam bağlanmasına nəzarət etmək üçün qamış açarı istifadə olunur. Ofisdən çıxanda adam klaviaturada “*” sıxır və yaxınlaşanla qapının bağlanmasını gözləmədən öz işinə gedir, qapı tam bağlananda qamış açarı bağlanır və qıfıl bağlanır. . Qapı 4 rəqəmli parol daxil edib “#” düyməsini sıxmaqla açılır.

Aksesuarlar

Arduino UNO = 18 dollar
Arduino protoshield + çörək lövhəsi = 6 dollar
L293D = 1 dollar
Bradboard üçün məftil dəsti 30 ədəd = 4 dollar
2 RJ45 rozetka = 4 dollar
2 RJ45 fiş = 0,5 dollar
aktuator mərkəzi kilid= 250 rub.
Reed açarı = köhnə pəncərədən sərbəst cırılmışdır.
Nəhəng metal kilid = pulsuz
Bir yarım millimetr dəmirdən hazırlanmış köhnə D-LINK hub-dan korpus = pulsuz
12 və 5V üçün eyni D-LINK hubdan enerji təchizatı = həm də pulsuz
Bütün bunları bədənə bağlamaq üçün bir dəstə vint və qoz-fındıq = 100 rubl.
-dən uzaqdan idarəetmə oğurluq siqnalı= pulsuz.

Cəmi: 33,5 dollar və 350 rub.

O qədər də az deyil, deyəcəksən və mütləq haqlı olacaqsan, amma zövq üçün pul ödəməlisən! Öz əlinizlə bir şey yığmaq həmişə xoşdur. Bundan əlavə, Arduino olmadan çılpaq MK istifadə etsəniz, dizayn dəyəri xeyli azaldıla bilər.

Montaj üçün hazırlıq

Satınalma haqqında bir neçə söz demək istərdim əsas element aktuator dizaynları. Yerli bir avtomobil mağazasında mənə iki növ ötürücü təklif etdilər: "iki naqilli və beşli". Satıcının dediyinə görə, onlar tamamilə eyni idi və naqillərin sayındakı fərq tamamilə heç nə demək deyildi. Ancaq sonradan məlum olduğu kimi, bu belə deyil! Mən iki naqilli bir cihaz seçdim, o, 12V ilə işləyirdi. Beş naqilli dizayn qolun hərəkətini idarə etmək üçün məhdudlaşdırıcı açarlara malikdir. Yanlış aldığımı yalnız onu sökəndə başa düşdüm və onu dəyişdirmək üçün çox gec idi. Qolun vuruşu mandalı düzgün şəkildə geri çəkmək üçün çox qısa oldu, buna görə də onu bir az dəyişdirmək, yəni aktuator qolunun vuruşunu qısaltmış iki rezin yuyucunu çıxarmaq lazım idi. Bunun üçün gövdəni adi bir mişarla uzununa mişar etmək lazım idi, çünki ikinci yuyucu içəridə idi. Mavi elektrik lenti, həmişə olduğu kimi, gələcəkdə onu yenidən yığarkən bizə kömək etdi.
Ötürücü mühərriki idarə etmək üçün biz 1200 mA-a qədər pik yükə tab gətirə bilən L293D motor sürücüsündən istifadə etdik, pik yük yalnız 600 mA-a qədər artdı.
Klaviaturadan, dinamikdən və iki LED-dən kontaktlar təhlükəsizlik siqnalının idarəetmə panelindən çıxarılıb. Uzaqdan idarəetmə və əsas cihazın bükülmüş cüt və RJ45 konnektorlarından istifadə etməklə birləşdirilməli idi.

Proqramlaşdırma.

Beləliklə, indiyə qədər Arduino proqramlaşdırma təcrübəm yox idi. Başqalarının işlərindən və arduino.cc saytından məqalələrdən istifadə etdim. Maraqlanan hər kəs bu çirkin koda baxa bilər :)

Foto və video



Arduino və aktuator


güc qurğusu


Klaviatura


Espanolette (gücləndiriciyə metal dişli ilə qoşulmuş və gözəllik üçün istilik büzüşməsi ilə örtülmüşdür)

Cihazın işləmə prosesinin videosu:

Bugünkü dərsimiz sadə kilidləmə sistemi yaratmaq üçün Arduino ilə RFID oxuyucudan necə istifadə etməkdir, sadə sözlərlə- RFID kilidi.

RFID (İngiliscə Radio Frequency Identification, radio tezlik identifikasiyası) sözdə transponderlərdə və ya RFID etiketlərində saxlanılan məlumatların radio siqnallarından istifadə edərək oxunduğu və ya yazıldığı obyektlərin avtomatik identifikasiyası üsuludur. İstənilən RFID sistemi oxuma qurğusundan (oxuyucu, oxucu və ya sorğulayıcı) və transponderdən (həmçinin RFID etiketi kimi tanınır, bəzən RFID etiketi termini də istifadə olunur) ibarətdir.

Bu dərslik Arduino ilə RFID etiketindən istifadə edəcək. Cihaz oxucunun yanına yerləşdirdiyimiz hər bir RFID etiketinin unikal identifikatorunu (UID) oxuyur və onu OLED displeydə göstərir. Teqin UID-i Arduino yaddaşında saxlanılan əvvəlcədən təyin edilmiş dəyərə bərabərdirsə, ekranda “Kilidi açıldı” mesajını görəcəyik. Unikal ID əvvəlcədən təyin edilmiş dəyərə bərabər deyilsə, "Kilidi açıldı" mesajı görünməyəcək - aşağıdakı fotoya baxın.

Qala bağlıdır

Kilid açıqdır

Bu layihəni yaratmaq üçün lazım olan hissələr:

  • RFID oxuyucu RC522
  • OLED displey
  • İnkişaf lövhəsi
  • Tellər

Əlavə təfərrüatlar:

  • Batareya (powerbank)

Layihənin komponentlərinin ümumi dəyəri təxminən $15 idi.

Addım 2: RFID Reader RC522

Hər bir RFID etiketində kiçik bir çip var (şəkildə göstərilən ağ kart). Bu RFID kartında fənər yandırsanız, kiçik çipi və onu əhatə edən sarğı görə bilərsiniz. Bu çipin enerji yaratmaq üçün batareyası yoxdur. Bu böyük rulondan istifadə edərək oxuyucudan kabelsiz olaraq enerji alır. Belə bir RFID kartı 20 mm-ə qədər məsafədən oxumaq mümkündür.

Eyni çip RFID açar fob etiketlərində də mövcuddur.

Hər bir RFID etiketinin onu müəyyən edən unikal nömrəsi var. Bu, OLED displeydə göstərilən UID-dir. Bu UID istisna olmaqla, hər bir teq məlumatları saxlaya bilər. Bu tip kart 1 minə qədər məlumat saxlaya bilər. Təsirli, elə deyilmi? Bu xüsusiyyət bu gün istifadə edilməyəcək. Bu gün maraqlı olan hər şey UID ilə müəyyən bir kartı müəyyən etməkdir. RFID oxuyucusu və bu iki RFID kartının qiyməti təxminən 4 dollardır.

Addım 3: OLED Ekran

Dərsdə 0,96" 128x64 I2C OLED monitor istifadə olunur.

Bu Arduino ilə istifadə etmək üçün çox yaxşı ekrandır. Bu OLED displeydir və bu o deməkdir ki, onun aşağı enerji sərfiyyatı var. Bu displeyin enerji istehlakı 10-20 mA civarındadır və piksel sayından asılıdır.

Ekran 128x64 piksel təsvir ölçüsünə malikdir və kiçik ölçülüdür. İki ekran variantı var. Biri monoxromdur, digəri isə dərslikdə istifadə olunan kimi iki rəng göstərə bilər: sarı və mavi. Üst hissə ekran yalnız sarı ola bilər və alt hissəsi- mavi.

Bu OLED displey çox parlaqdır və Adafruit-in bu displey üçün hazırladığı böyük və çox gözəl kitabxanaya malikdir. Bundan əlavə, displey I2C interfeysindən istifadə edir, ona görə də Arduino-ya qoşulmaq inanılmaz dərəcədə asandır.

Vcc və GND istisna olmaqla, yalnız iki teli birləşdirmək lazımdır. Arduino-da yenisinizsə və layihənizdə ucuz və sadə ekrandan istifadə etmək istəyirsinizsə, buradan başlayın.

Addım 4: Bütün hissələri birləşdirin

Arduino Uno lövhəsi ilə əlaqə çox sadədir. Əvvəlcə gücü həm oxucuya, həm də displeyə bağlayaq.

Ehtiyatlı olun, RFID oxuyucu Arduino Uno-dan 3.3V çıxışa qoşulmalıdır, əks halda o zədələnəcək.

Displey 3.3V-də də işləyə bildiyi üçün biz VCC-ni hər iki moduldan çörək lövhəsinin müsbət relsinə bağlayırıq. Bu avtobus daha sonra Arduino Uno-dan 3.3V çıxışa qoşulur. Sonra hər iki əsası (GND) çörək lövhəsinin topraklama avtobusuna bağlayırıq. Sonra çörək lövhəsi GND avtobusunu Arduino GND-yə bağlayırıq.

OLED displey → Arduino

SCL → Analoq Pin 5

SDA → Analoq Pin 4

RFID oxuyucu → Arduino

RST → Rəqəmsal Pin 9

IRQ → Qoşulmayıb

MISO → Rəqəmsal Pin 12

MOSI → Rəqəmsal Pin 11

SCK → Rəqəmsal Pin 13

SDA → Rəqəmsal Pin 10

RFID oxuyucu modulu Arduino ilə əlaqə saxlamaq üçün SPI interfeysindən istifadə edir. Beləliklə, biz Arduino UNO-dan hardware SPI sancaqlarından istifadə edəcəyik.

RST pin rəqəmsal pin 9-a keçir. IRQ pin əlaqəsiz qalır. MISO pin 12 rəqəmsal pinə keçir. MOSI pin 11 rəqəmsal pinə keçir. SCK pin 13 rəqəmsal pinə, nəhayət SDA pin 10 rəqəmsal pinə keçir. Bu qədər.

RFID oxuyucusu qoşulub. İndi I2C interfeysindən istifadə edərək OLED displeyini Arduino-ya qoşmalıyıq. Beləliklə, displeydəki SCL pin pin 5-in analoq pininə və displeydəki SDA pininə isə analoq Pin 4-ə keçir. İndi layihəni işə salıb RFID kartı oxuyucuya yaxın yerləşdirsək, görə bilərik ki, layihə yaxşı işləyir.

Addım 5: Layihə Kodu

Layihə kodunu tərtib etmək üçün bəzi kitabxanaları daxil etməliyik. İlk növbədə, MFRC522 Rfid kitabxanasına ehtiyacımız var.

Quraşdırmaq üçün keçin Eskiz -> Kitabxanaları daxil et -> Kitabxanaları idarə et(Kitabxananın idarə edilməsi). MFRC522 tapın və quraşdırın.

Göstərmək üçün bizə Adafruit SSD1306 kitabxanası və Adafruit GFX kitabxanası da lazımdır.

Hər iki kitabxananı quraşdırın. Adafruit SSD1306 kitabxanasına bir az dəyişiklik lazımdır. Qovluğa keçin Arduino -> Kitabxanalar, Adafruit SSD1306 qovluğunu açın və kitabxananı redaktə edin Adafruit_SSD1306.h. 70-ci sətri şərh edin və 69-cu sətri şərhdən çıxarın, çünki Ekran 128x64 təsvir ölçüsünə malikdir.

Əvvəlcə Arduino-nun tanıması lazım olan RFID etiketinin dəyərini elan edirik. Bu tam ədədlər massividir:

Int kodu = (69,141,8,136); // UID

Sonra RFID oxuyucunu işə salırıq və göstəririk:

Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Bundan sonra, loop funksiyasında hər 100 ms-dən bir oxucuda etiketi yoxlayırıq.

Oxucuda etiket varsa, biz onun UID-ni oxuyuruq və onu displeydə çap edirik. Sonra oxuduğumuz etiketin UID-ni kod dəyişənində saxlanılan dəyərlə müqayisə edirik. Dəyərlər eyni olarsa, KİLİDİ ​​AÇ mesajını göstərəcəyik, əks halda bu mesajı göstərməyəcəyik.

If(match) ( Serial.println("\nMən bu kartı tanıyıram!"); printUnlockMessage(); )else ( Serial.println("\nNaməlum Kart"); )

Əlbəttə ki, layihənin daha çox RFID teqlərini tanıması üçün 1-dən çox UID dəyəri saxlamaq üçün bu kodu dəyişə bilərsiniz. Bu sadəcə bir nümunədir.

Layihə kodu:

#daxildir #daxildir #daxildir #daxildir #OLED_RESET 4 Adafruit_SSD1306 displeyini təyin edin(OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // MFRC522::MIFARE_Key açarı sinfinin nümunəsi; int kodu = (69,141,8,136); //Bu saxlanılan UID int codeRead = 0; Simli uidString; void setup() ( Serial.begin(9600); SPI.begin(); // SPI avtobusunu işə salın rfid.PCD_Init(); // MFRC522 display.begin başlat (SSD1306_SWITCHCAPVCC, 0x3C); // I2C adr 0x3D ilə işə salın (128x64 üçün) // Buferi təmizləyin display.setTextColor(WHITE);

display.setTextSize(2);

Dərsdən göründüyü kimi, az pulla layihələrinizə RFID oxuyucu əlavə edə bilərsiniz. Bu oxucudan istifadə edərək asanlıqla təhlükəsizlik sistemi yarada və ya daha maraqlı layihələr yarada bilərsiniz, məsələn, USB sürücüsündən məlumatların yalnız kilidi açdıqdan sonra oxunması üçün.

Bu yazıda sizə Arduino-dan kombinasiyalı kilidi necə edəcəyinizi söyləyəcəyəm. Bunun üçün bizə qırmızı və yaşıl LEDlər, səs siqnalı, Arduino nano, I2C çeviricisi olan LCD displey, servo sürücü və 4x4 matris klaviaturası lazımdır. Yandırıldıqda, ekranda "Kodu daxil edin" yazacaq.

qırmızı LED yanacaq,

və yaşıl işıq sönəcək, servo 0°-yə qurulacaq. Nömrələri daxil etdiyiniz zaman ekranda * yanıb-sönəcək.

Əgər kod səhv daxil edilərsə, ekranda “Enter code.” yazısı görünəcək. Kod düzgündürsə, bip səsi eşidilir, servo 180° fırlanır və ekranda "Açıq" yazısı görünür.

yaşıl LED yanacaq,

və qırmızı sönəcək. 3 saniyədən sonra servo ilkin vəziyyətinə qayıdacaq, qırmızı LED yanacaq və yaşıl LED sönəcək, ekranda “Bağla” yazacaq.

sonra ekranda "Kodu daxil edin." yazacaq. İndi sxem haqqında. Əvvəlcə Arduino-nu naqillərlə çörək lövhəsinə (güc kontaktları) bağlayırıq.

Sonra matris klaviaturasını D9 - D2 kontaktlarına bağlayırıq.

Sonra servo. Onu pin 10-a bağlayırıq.

Pin 11-ə qırmızı LED.

Yaşıl - 12-ə qədər.

Siqnal - 13 pininə.

İndi eskizi yükləyin.

#daxildir #daxildir #daxildir #daxildir 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; etibarsız quraşdırma() ( 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("Kod daxil edin."); while ( !KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.setCursor(0, 0) ( delay(1); ) in = KB.getNum("*"); (!KB.check(KEY_DOWN)) ( delay(1); ) in = KB.getNum; lcd.print("*"); while (!KB.check(KEY_DOWN)) ( gecikmə(1); ) = KB.getNum("*"); if (== pass) ( if (== pass) ( if (in == pass)) ( in == pass) ( lcd.clear(); lcd.setCursor (0, 0) lcd.print("Açıq."); ."); ton (13, 300, 700); digitalWrite (g, LOW); gecikmə (1000);

)))

bu qədər. Qarışıq kiliddən həzz alın!

Radioelementlərin siyahısı Təyinat Növ Denominasiya KəmiyyətQeydMağaza
Mənim bloknotum E1

Arduino lövhəsi

1 Arduino Nano 3.0 5V
Notepad üçün E8, E9

Rezistor

2 220 Ohm 5V
SMD LED

E6

1 AL102G 5V
Qırmızı LED

E7

1 AL307G 5V
Yaşıl E3LCD displey1 I2C interfeysi ilə 5V
Yaşıl arxa işıq E5Servo1 SG90 5V
180 dərəcə E2Arduino Nano 3.01 Buzzer 5V
Bu E4Klaviatura1 4X4 5V
Matris yoxÇörək lövhəsi1 640 xal