Mündəricat:

ESP32 Smart Home Hub: 11 addım
ESP32 Smart Home Hub: 11 addım

Video: ESP32 Smart Home Hub: 11 addım

Video: ESP32 Smart Home Hub: 11 addım
Video: Делаем терминал умного дома из планшета 2024, Iyun
Anonim
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu
ESP32 Ağıllı Ev Hubu

Böyük miqdarda sensor məlumatlarını idarə edə bilən, birdən çox çıxışı olan, internetə və ya yerli bir şəbəkəyə qoşula bilən bir sistemin yaradılması uzun müddət və böyük səy tələb edir. Çox vaxt öz ağıllı ev şəbəkələrini yaratmaq istəyən insanlar, xüsusi komponentləri daha böyük bir sistemə yığa bilməklə mübarizə aparırlar. Bu səbəbdən IoT ilə əlaqəli sensorlar və çıxışların qurulmasını asanlaşdıracaq modul və xüsusiyyət baxımından zəngin bir platforma yaratmaq istədim.

Bu layihəyə sponsorluq etdikləri üçün DFRobot və PCBGOGO.com saytına təşəkkürlər!

Daha ətraflı məlumat üçün Github reposunu ziyarət edin:

Təchizat

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 Sensoru

    www.dfrobot.com/product-1102.html

  • APDS9960 İşıq və Jest Sensoru

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD Modulu

    www.dfrobot.com/product-590.html

  • Analog RGB LED şeridi

    www.dfrobot.com/product-1829.html

  • DRV8825 Step Motor Sürücüləri
  • SD Kart Oxuyucusu
  • NEMA17 Stepper Motorlar

Addım 1: Xüsusiyyətlər

Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri
Xüsusiyyətləri

Bu lövhənin əsas xüsusiyyəti, bütün ünsiyyət, sensor oxunuşları və çıxışları idarə edən bir ESP32 FireBeetle İnkişaf Lövhəsidir. İki bipolyar pilləli mühərriki idarə edən iki pilləli motor sürücüsü var.

I2C avtobusu, APDS9960 və ya LCD kimi komponentlərlə istifadə üçün də ayrıldı. İstiliyi oxumaq üçün, DHT22 sensoruna qoşulmaq üçün qırılan pinlər və ətrafdakı işıq səviyyələrini oxumaq üçün bir fotorezistor var.

Lövhədə LED işıqlarını idarə etmək üçün üç MOSFET olan analoq işıq şeridi dəstəyi var.

Addım 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

PCB dizayn prosesinə əvvəlcə Eagle -da bir sxem quraraq başladım. ESP32 FireBeetle kitabxanası tapa bilmədiyim üçün əvəzinə iki pinli 1x18 pin başlığı istifadə etdim. Daha sonra, sensorları və ESP32 -ni işə salmaq üçün bir DC barel yuvası vasitəsilə 12v qəbul edə bilən və 5v -ə çevirən bir güc idarəetmə dövrəsi yaratdım.

Sxem tamamlandıqdan sonra PCB -nin dizaynına keçdim.

DC barel fişinin lövhənin önünə yaxın olması lazım olduğunu və 100uF enerji təchizatı hamarlaşdırıcı kondansatörlərin step motor sürücüsünün güc girişlərinə yaxın olması lazım olduğunu bilirdim. Hər şey düzəldildikdən sonra izləri istiqamətləndirməyə başladım.

Oshpark yüksək keyfiyyətli PCB istehsal etsə də, qiymətləri olduqca yüksəkdir. Şükürlər olsun ki, PCBGOGO.com həm də əlverişli qiymətə əla PCB istehsal edir. Oshpark.com -dan yalnız üç lövhə üçün 52 dollar ödəmək əvəzinə cəmi 5 dollara on PCB ala bildim.

Addım 3: Montaj

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

Ümumiyyətlə, lövhənin yığılması olduqca asan idi. Səthə quraşdırılmış komponentləri lehimləməklə başladım və sonra barel jak konnektorunu və tənzimləyicisini bağladım. Sonra, motor sürücüləri və FireBeetle kimi komponentlər üçün pin başlıqlarını lehimlədim.

Lehimləmə tamamlandıqdan sonra, bir multimetr müqavimət ölçmə rejiminə keçirərək müqavimətin müəyyən bir həddən artıq olub olmadığını görərək lövhəni qısaqapanma üçün sınadım. Lövhə keçdi, buna görə də hər bir komponenti qoşa bildim.

Addım 4: Proqramlaşdırmaya Baxış

Bu lövhənin kodunun modul olmasını və istifadəsi asan olmasını istədim. Bu, müəyyən funksiyaları yerinə yetirən bir neçə sinifin və daha kiçik olanları birləşdirən daha böyük bir sarğı sinifinin olması demək idi.

Addım 5: Girişlər

Girişlər
Girişlər
Girişlər
Girişlər
Girişlər
Girişlər

Girişləri idarə etmək üçün "Hub_Inputs" adlı bir sinif yaratdım ki, bu da ev mərkəzinin düymələr və tutumlu toxunma interfeysləri yaratmaq və idarə etməklə yanaşı APDS9960 ilə əlaqə qurmasına imkan verir. Aşağıdakı funksiyaları ehtiva edir:

Yarat düyməsi

Düyməsinə basıldığı təqdirdə alın

Düymə basma sayını əldə edin

Ən son jesti əldə edin

Kapasitiv toxunma dəyəri əldə edin

Düymələr üç xüsusiyyətə malik bir quruluş olaraq saxlanılır: is_pressed, numberPresses və pin. Hər bir düymə yaradıldıqda kəsilməyə bağlanır. Bu kəsilmə tetiklendiğinde, kəsmə xidməti rutini (ISR) bu düymənin göstəricisindən keçir (düymələr sırasındakı yaddaş ünvanı olaraq verilir) və is_pressed Boolean dəyərinin yenilənməsi ilə birlikdə düymələrə basma sayını artırır.

Kapasitiv toxunma dəyərləri daha sadədir. Toxunma pinini touchRead () funksiyasına ötürərək əldə edirlər.

Ən son jest, APDS9960 sorğusu və yeni bir jestin aşkarlanıb -aşkarlanmadığını yoxlamaqla yenilənir və aşkar edildikdə, xüsusi jest dəyişənini bu jestə təyin edin.

Addım 6: Çıxışlar

Çıxışlar
Çıxışlar
Çıxışlar
Çıxışlar
Çıxışlar
Çıxışlar

Ağıllı ev mərkəzində məlumat çıxarmaq və işıqları dəyişdirmək üçün bir neçə yol var. İstifadəçilərə bir LCD bağlamağa imkan verən I2C avtobusunu qıran pinlər var. İndiyə qədər yalnız bir LCD ölçüsü dəstəklənir: 20 x 4. "hub.display_message ()" funksiyasından istifadə edərək, istifadəçilər bir simli obyekt keçərək LCD -də mesajları göstərə bilərlər.

Bir analog LED -ləri birləşdirmək üçün bir pin başlığı da var. "Hub.set_led_strip (r, g, b)" funksiyasına zəng edərək, zolağın rəngini təyin edir.

İki pilləli mühərriklər bir cüt DRV8825 sürücü lövhəsi ilə idarə olunur. Motor nəzarətini idarə etmək üçün BasicStepper kitabxanasından istifadə etmək qərarına gəldim. Lövhə açıldıqda iki pilləli obyekt yaradılır və hər iki mühərrik işə düşür. Hər bir motoru addımlamaq üçün, motor idinin 0 və ya 1 olduğu "hub.step_motor (motor_id, addımlar)" funksiyasından istifadə olunur.

Addım 7: Qeydiyyat

Giriş
Giriş
Giriş
Giriş
Giriş
Giriş

Lövhədə bir neçə sensorlar olduğu üçün məlumatları yerli olaraq toplamaq və qeyd etmək qabiliyyətini istədim.

Daxil olmağa başlamaq üçün "hub.create_log (fayl adı, başlıq)" ilə yeni bir fayl yaradılır, burada başlıq sütunları ifadə edən bir CSV fayl satırı yaratmaq üçün istifadə olunur. İlk sütun həmişə İl Ay Gün Saat: Min: San formatında bir zaman damgasıdır. Vaxtı almaq üçün hub.log_to_file () funksiyası basic_functions.get_time () funksiyası ilə vaxt alır. Tm zaman quruluşu, məlumat və fayl adı ilə birlikdə qeyd funksiyasına istinadla ötürülür.

Addım 8: Buzzer

Buzzer
Buzzer

Musiqi ifa edə bilmirsinizsə, IoT lövhəsinin nə xeyri var? Bu səbəbdən səsləri çalmaq funksiyasına malik bir səs siqnalı daxil etdim. "Hub.play_sounds (melodiya, uzunluq, uzunluq)" deyərək melodiyanın not tezlikləri, müddəti notların bir sıra olaraq, uzunluğun isə notların sayı olduğu bir mahnı çalmağa başlayır.

Addım 9: Xarici IoT inteqrasiyası

Xarici IoT inteqrasiyası
Xarici IoT inteqrasiyası
Xarici IoT inteqrasiyası
Xarici IoT inteqrasiyası
Xarici IoT inteqrasiyası
Xarici IoT inteqrasiyası

Hub hazırda IFTTT veb qarmaqlarını dəstəkləyir. Hub_IoT.publish_webhook (url, data, hadisə, açar) və ya Hub_IoT.publish_webhook (url, data) funksiyasına zəng edərək tetiklenebilir. Lazım gələrsə, bir hadisə adı ilə birlikdə verilən URL -ə bir POST sorğusu göndərilir. IFTTT inteqrasiya nümunəsi qurmaq üçün əvvəlcə yeni bir tətbiq yaradın. Sonra bir sorğu alındıqda işə salınan webhook xidmətini seçin.

Sonra hadisəni "high_temp" adlandırın və qeyd edin. Sonra, "O" hissəsi üçün Gmail xidmətini seçin və "Özümə bir e -poçt göndər" seçimini seçin. Xidmətin qurulmasında "İstilik yüksəkdir!" Yazın. mövzu üçün və sonra "Ölçülmüş temperaturu və hadisənin tetiklendiği vaxtı göstərən {{OccurredAt}} 'da {{Value1}} ölçülmüş temperaturu" qoydum.

Quraşdırdıqdan sonra, IFTTT tərəfindən yaradılan webhook URL -ni yapışdırın və hadisə hissəsinə "high_temp" qoyun.

Addım 10: İstifadə

İstifadə
İstifadə
İstifadə
İstifadə
İstifadə
İstifadə
İstifadə
İstifadə

Smart Home Hub -dan istifadə etmək üçün lazım olan hər hansı bir funksiyanı ya setup () ya da loop () -da axtarın. Cari vaxtı çap etmək və IFTTT hadisəsinə zəng etmək kimi funksiya çağırışlarını artıq qoydum.

Addım 11: Gələcək Planlar

Smart Home Hub sistemi sadə ev avtomatlaşdırılması və məlumat toplama vəzifələri üçün çox yaxşı işləyir. Bir LED şeridinin rəngini təyin etmək, bir otağın istiliyini izləmək, bir işığın yanmadığını yoxlamaq və bir çox başqa potensial layihə kimi demək olar ki, hər şey üçün istifadə edilə bilər. Gələcəkdə funksionallığı daha da genişləndirmək istərdim. Bura daha güclü bir veb serveri, yerli fayl yerləşdirmə və hətta Bluetooth və ya mqtt əlavə etmək də daxil ola bilər.

Tövsiyə: