Mundarija:

ESP32 Smart Home Hub: 11 qadam
ESP32 Smart Home Hub: 11 qadam

Video: ESP32 Smart Home Hub: 11 qadam

Video: ESP32 Smart Home Hub: 11 qadam
Video: A1 SQUAD PROTECTION FORCE PVT. LTD. With Md Nasir Sir 2024, Noyabr
Anonim
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi
ESP32 aqlli uy uyasi

Sensorli ma'lumotlarning katta hajmini boshqaradigan, bir nechta chiqishga ega bo'lgan, Internetga yoki mahalliy tarmoqqa ulanadigan tizim yaratish uzoq vaqt va katta kuch talab qiladi. Ko'pincha, o'z uylarini aqlli uy tarmog'iga aylantirmoqchi bo'lgan odamlar, maxsus komponentlarni topib, kattaroq tizimga yig'a olmaydilar. Shuning uchun men IoT-ga ulangan sensorlar va chiqishni osonlashtiradigan modulli va boy platformani yaratmoqchi edim.

Ushbu loyihaga homiylik qilgan DFRobot va PCBGOGO.com saytlariga rahmat!

Qo'shimcha ma'lumot olish uchun Github repo-ga tashrif buyuring:

Ta'minotlar

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 sensori

    www.dfrobot.com/product-1102.html

  • APDS9960 yorug'lik va imo -ishoralar sensori

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD moduli

    www.dfrobot.com/product-590.html

  • Analog RGB LED tasmasi

    www.dfrobot.com/product-1829.html

  • DRV8825 qadamli motorli haydovchilar
  • SD -kartani o'quvchi
  • NEMA17 qadamli motorlar

1 -qadam: Xususiyatlar

Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari
Xususiyatlari

Ushbu taxtaning asosiy xususiyati - bu barcha aloqalarni, sensorlarning o'qilishini va chiqishini boshqaradigan ESP32 FireBeetle Development Board. Ikki bipolyar qadamli dvigatelni boshqaradigan ikkita qadamli dvigatellar mavjud.

I2C avtobusi APDS9960 yoki LCD kabi komponentlar bilan ishlash uchun ham ajratilgan. Haroratni o'qish uchun DHT22 sensoriga ulanish uchun singan pinlar, shuningdek, atrofdagi yorug'lik darajasini o'qish uchun fotorezistor mavjud.

Bortda LED chiroqlarini boshqarish uchun uchta MOSFET o'rnatilgan analog yorug'lik chizig'ini qo'llab -quvvatlash mavjud.

2 -qadam: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Men tenglikni loyihalash jarayonini birinchi bo'lib Eagle -da sxemani tuzishdan boshladim. ESP32 FireBeetle kutubxonasini topa olmaganim uchun, men uning o'rniga ikkita pinli 1x18 pinli sarlavhalarni ishlatardim. Keyin, men 12Vni shahar barreli uyasi orqali qabul qilib, datchiklar va ESP32 -ni quvvatlantirish uchun 5v ga aylantiradigan quvvatni boshqarish sxemasini yaratdim.

Sxema tugagandan so'ng, men PCBni loyihalashga o'tdim.

Men bilardimki, shahar barreli vilkasi taxtaning old tomoniga yaqin bo'lishi kerak va 100uF quvvat manbai yumshatuvchi kondansatörler step motorli haydovchi quvvat manbalariga yaqin bo'lishi kerak edi. Hammasi joyiga qo'yilgach, men izlarni yo'naltira boshladim.

Oshpark yuqori sifatli tenglikni ishlab chiqarsa -da, ularning narxi ancha yuqori. Yaxshiyamki, PCBGOGO.com ham arzon narxda ajoyib tenglikni ishlab chiqaradi. Men Oshpark.com saytidan faqat uchta karta uchun 52 dollar to'lash o'rniga, atigi 5 dollarga o'nta tenglikni sotib oldim.

3 -qadam: yig'ish

O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish

Umuman olganda, taxtani yig'ish juda oson edi. Men sirtga o'rnatilgan qismlarni lehimlashdan boshladim, so'ngra bochka ulagichi va regulyatorini biriktirdim. Keyinchalik, men haydovchilar va FireBeetle kabi komponentlar uchun pin sarlavhalarini lehimladim.

Lehimlash tugagandan so'ng, men multimetrni qarshilik o'lchash rejimiga o'tkazib, qarshilik ma'lum miqdordan oshib ketganini bilib, taxtani qisqa tutashuv uchun sinab ko'rdim. Kengash o'tdi, shuning uchun men har bir komponentni ulashga muvaffaq bo'ldim.

4 -qadam: Dasturlashning umumiy ko'rinishi

Men ushbu taxtaning kodini modulli va ishlatish uchun qulay bo'lishini xohlardim. Bu ma'lum funktsiyalarni bajaradigan bir nechta sinflar va kichiklarini birlashtirgan kattaroq o'rash sinfiga ega bo'lishni anglatardi.

5 -qadam: kirish

Kirishlar
Kirishlar
Kirishlar
Kirishlar
Kirishlar
Kirishlar

Kirishlarni boshqarish uchun men "Hub_Inputs" deb nomlangan sinf yaratdim, bu uy tugmachalari va sig'imli sensorli interfeyslarni yaratish va boshqarish bilan bir qatorda APDS9960 bilan aloqa qilish imkonini beradi. U quyidagi funktsiyalarni o'z ichiga oladi:

Yaratish tugmasi

Agar tugma bosilsa, oling

Tugmalar bosilishi sonini oling

Eng yangi imo -ishorani oling

Sensorli sensorli qiymatni oling

Tugmalar uchta atributga ega bo'lgan struktura sifatida saqlanadi: is_pressed, numberPresses va pin. Har bir tugma, yaratilganda, uzilishga biriktiriladi. Qachonki bu uzilish ishga tushsa, uzilishlar xizmati tartibi (ISR) tugmachaning ko'rsatgichidan o'tadi (tugmalar qatorida uning xotira manzili sifatida ko'rsatiladi) va tugmalar bosilishi sonini ko'paytiradi, shuningdek is_pressed mantiqiy qiymatini yangilaydi.

Kapasitiv sensorli qiymatlar ancha sodda. Ular sensorli pinni touchRead () funktsiyasiga o'tkazish orqali olinadi.

So'nggi imo -ishora APDS9960 so'rovi va yangi imo -ishora aniqlanganligini tekshirish orqali yangilanadi va agar aniqlangan bo'lsa, shaxsiy imo -ishora o'zgaruvchisini ushbu ishoraga o'rnating.

6 -qadam: Chiqish

Chiqish
Chiqish
Chiqish
Chiqish
Chiqish
Chiqish

Aqlli uy uyida ma'lumotni chiqarish va chiroqlarni o'zgartirishning bir necha usullari mavjud. I2C avtobusini sindirib tashlaydigan pinlar mavjud, bu foydalanuvchilarga LCD displeyni ulash imkonini beradi. Hozircha LCD displeyning faqat bitta o'lchami qo'llab -quvvatlanadi: 20 x 4. "hub.display_message ()" funktsiyasidan foydalangan holda, foydalanuvchilar simli ob'ektni o'tkazib, LCD displeyda xabarlarni ko'rsatishi mumkin.

Analog LEDlar qatorini ulash uchun pin sarlavhasi ham mavjud. "Hub.set_led_strip (r, g, b)" funktsiyasini chaqirib, chiziq rangini belgilaydi.

Ikki pog'onali dvigatellar DRV8825 juft haydovchi platalari yordamida boshqariladi. Men motorni boshqarish uchun BasicStepper kutubxonasidan foydalanishga qaror qildim. Kengash ishga tushirilganda, ikkita qadamli ob'ekt yaratiladi va ikkala dvigatel ham yoqiladi. Har bir dvigatelga qadam qo'yish uchun "hub.step_motor (motor_id, qadamlar)" funktsiyasi ishlatiladi, bu erda motor identifikatori 0 yoki 1 bo'ladi.

7 -qadam: ro'yxatga olish

Yog'och kesish
Yog'och kesish
Yog'och kesish
Yog'och kesish
Yog'och kesish
Yog'och kesish

Kengashda bir nechta datchiklar bo'lgani uchun men ma'lumotni lokal ravishda yig'ish va qayd etish qobiliyatini xohlardim.

Jurnalni boshlash uchun "hub.create_log (fayl nomi, sarlavha)" bilan yangi fayl yaratiladi, bu erda ustun ustunlarni bildiruvchi CSV fayl qatorini yaratish uchun ishlatiladi. Birinchi ustun har doim Yil oyi kun soati: Min: sek formatidagi vaqt tamg'asi. Vaqtni olish uchun hub.log_to_file () funktsiyasi basic_functions.get_time () funktsiyasi bilan vaqt oladi. Keyin tm vaqt tuzilmasi ma'lumot va fayl nomi bilan birga jurnalga yozish funktsiyasiga o'tkaziladi.

8 -qadam: Buzzer

Buzzer
Buzzer

Agar musiqa o'ynay olmasangiz, IoT taxtasidan nima foyda? Shuning uchun men tovushlarni ijro etish funktsiyasiga ega zerikarli signalni qo'shdim. "Hub.play_sounds (ohang, davomiylik, uzunlik)" deb nomlansa, qo'shiq ijro etila boshlaydi, uning ohanglari notalar chastotasi, davomiyligi notaning davomiyligi sifatida, uzunligi esa notalar soni.

9 -qadam: IoT -ning tashqi integratsiyasi

Tashqi IoT integratsiyasi
Tashqi IoT integratsiyasi
Tashqi IoT integratsiyasi
Tashqi IoT integratsiyasi
Tashqi IoT integratsiyasi
Tashqi IoT integratsiyasi

Hub hozirda IFTTT veb -kancalarini qo'llab -quvvatlaydi. Ularni Hub_IoT.publish_webhook (url, ma'lumotlar, voqea, kalit) yoki Hub_IoT.publish_webhook (url, ma'lumotlar) funktsiyasini chaqirish orqali ishga tushirish mumkin. Bu berilgan URL manziliga POST so'rovini, agar kerak bo'lsa, voqea nomi bilan birga yuboriladi. IFTTT integratsiyasining namunasini o'rnatish uchun avval yangi applet yarating. So'ngra so'rov qabul qilinganda ishga tushadigan webhook xizmatini tanlang.

Keyin, tadbirni "high_temp" deb nomlang va uni saqlang. Keyin, "Bu" qismi uchun Gmail xizmatini tanlang va "O'zimga elektron pochta yuborish" variantini tanlang. Xizmat sozlamalarida "Harorat yuqori!" Yozing. mavzu uchun, keyin men "{{OccurredAt}} da {{Value1}} o'lchangan harorati") qo'ydim, u o'lchangan harorat va voqea boshlangan vaqtni ko'rsatadi.

Uni o'rnatgandan so'ng, IFTTT tomonidan yaratilgan veb -kancaning URL manzilini joylashtiring va tadbirlar bo'limiga "high_temp" ni kiriting.

10 -qadam: Foydalanish

Foydalanish
Foydalanish
Foydalanish
Foydalanish
Foydalanish
Foydalanish
Foydalanish
Foydalanish

Smart Home Hub -dan foydalanish uchun setup () yoki loop () -da kerakli funktsiyalarni chaqirish kifoya. Men allaqachon misolni qo'ydim, masalan, joriy vaqtni chop etish va IFTTT hodisasini chaqirish.

11 -qadam: Kelgusi rejalar

Smart Home Hub tizimi oddiy avtomatlashtirish va ma'lumotlarni yig'ish vazifalari uchun juda yaxshi ishlaydi. U deyarli hamma narsada ishlatilishi mumkin, masalan, LED chizig'ining rangini belgilash, xonaning haroratini kuzatish, chiroqning yoqilganligini tekshirish va boshqa ko'plab potentsial loyihalar. Kelajakda men funksionallikni yanada kengaytirmoqchiman. Bunga yanada kuchli veb -server, mahalliy fayllarni joylashtirish va hatto Bluetooth yoki mqtt qo'shilishi mumkin.

Tavsiya: