Агуулгын хүснэгт:

ESP32 Smart Home Hub: 11 алхам
ESP32 Smart Home Hub: 11 алхам

Видео: ESP32 Smart Home Hub: 11 алхам

Видео: ESP32 Smart Home Hub: 11 алхам
Видео: Делаем терминал умного дома из планшета 2024, Арваннэгдүгээр
Anonim
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв
ESP32 ухаалаг гэрийн төв

Их хэмжээний мэдрэгчийн өгөгдлийг зохицуулах, олон гаралттай байх, интернет эсвэл дотоод сүлжээнд холбогдох системийг бий болгоход урт хугацаа, ихээхэн хүчин чармайлт шаардагдана. Ихэнхдээ өөрсдийн ухаалаг гэрийн сүлжээг бий болгохыг хүсдэг хүмүүс өөрчлөн тохируулсан бүрэлдэхүүн хэсгүүдийг олж, том систем болгон угсрах чадвартай тулгардаг. Тийм ч учраас би IoT-тэй холбогдсон мэдрэгч, гаралтыг бүтээхэд хялбар модульчлагдсан, онцлог шинж чанартай платформ хийхийг хүсч байсан юм.

Энэхүү төслийг ивээн тэтгэсэн DFRobot болон PCBGOGO.com -д баярлалаа!

Дэлгэрэнгүй мэдээллийг Github репо руу зочилно уу:

Хангамж

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 мэдрэгч

    www.dfrobot.com/product-1102.html

  • APDS9960 гэрэл ба дохио мэдрэгч

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD модуль

    www.dfrobot.com/product-590.html

  • Аналог RGB LED зурвас

    www.dfrobot.com/product-1829.html

  • DRV8825 Stepper мотор жолооч нар
  • SD карт уншигч
  • NEMA17 Stepper Motors

Алхам 1: Онцлог шинж чанарууд

Онцлог шинж чанарууд
Онцлог шинж чанарууд
Онцлог шинж чанарууд
Онцлог шинж чанарууд
Онцлог шинж чанарууд
Онцлог шинж чанарууд

Энэхүү самбарын гол онцлог нь бүх харилцаа холбоо, мэдрэгчийн уншилт, гаралтыг зохицуулдаг ESP32 FireBeetle Development Board юм. Хоёр туйлт хоёр шатлалт моторыг хянадаг хоёр шатлалт мотор жолооч байдаг.

I2C автобусыг APDS9960 эсвэл LCD гэх мэт бүрэлдэхүүн хэсгүүдэд ашиглах зорилгоор задалсан болно. Температурыг уншихын тулд DHT22 мэдрэгчтэй холбогдохын тулд эвдэрсэн тээглүүр, мөн орчны гэрлийн түвшинг унших зориулалттай фоторезистор байдаг.

Самбар дээр LED гэрлийг жолоодох гурван MOSFET бүхий аналог гэрлийн туузыг дэмжих боломжтой.

Алхам 2: ПХБ

ПХБ
ПХБ
ПХБ
ПХБ
ПХБ
ПХБ
ПХБ
ПХБ

Би ПХБ -ийн дизайны процессыг эхлээд Eagle -д схем бүтээх замаар эхлүүлсэн. ESP32 FireBeetle номын сан олж чадаагүй тул би оронд нь 2х 1 зүүтэй 18 зүү толгой ашигласан. Дараа нь би 12V -ийг DC баррель үүрээр хүлээн авч, 5V болгон хувиргаж, мэдрэгч болон ESP32 -ийг асаахад зориулагдсан цахилгаан удирдлагын хэлхээг үүсгэсэн.

Схемийг дуусгасны дараа би ПХБ -ийн загварыг өөрөө боловсруулж эхлэв.

Би DC баррель залгуур нь самбарын урд талд байх ёстой бөгөөд 100uF цахилгаан хангамжийн тэгшлэх конденсатор нь stepper мотор жолоочийн тэжээлийн оролттой ойролцоо байх шаардлагатай гэдгийг би мэдэж байсан. Бүх зүйл тавигдсаны дараа би ул мөрийг чиглүүлж эхлэв.

Oshpark нь маш сайн чанарын ПХБ хийдэг боловч тэдний үнэ нэлээд өндөр байдаг. Аз болоход, PCBGOGO.com нь боломжийн үнээр гайхалтай ПХБ хийдэг. Би Oshpark.com -аас ердөө гурван самбар авахад 52 доллар төлөхөөс илүүтэйгээр 10 ширхэг ПХБ -ийг ердөө 5 доллараар худалдаж авах боломжтой болсон.

Алхам 3: угсрах

Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган

Ерөнхийдөө самбарыг угсрах нь маш хялбар байсан. Би эхлээд гадаргуу дээр суурилуулсан эд ангиудыг гагнах, дараа нь баррель үүрний холбогч ба зохицуулагчийг холбох ажлыг эхлүүлсэн. Дараа нь би мотор жолооч, FireBeetle гэх мэт бүрэлдэхүүн хэсгүүдийг зүү толгой дээр гагнав.

Гагнах ажил дууссаны дараа би мультиметрийг эсэргүүцэл хэмжих горимд оруулж, эсэргүүцэл нь тодорхой хэмжээнээс хэтэрсэн эсэхийг шалгах замаар богино залгааны самбарыг туршив. Удирдах зөвлөл өнгөрсөн тул би бүрэлдэхүүн хэсэг бүрийг залгах боломжтой болсон.

Алхам 4: Програмчлалын тойм

Би энэ самбарын кодыг модульчлагдсан, ашиглахад хялбар байхыг хүссэн. Энэ нь тодорхой функцийг гүйцэтгэдэг хэд хэдэн ангитай байх бөгөөд жижиг хэсгүүдийг нэгтгэсэн том боодлын ангитай байх ёстой гэсэн үг юм.

Алхам 5: Оролтууд

Оролт
Оролт
Оролт
Оролт
Оролт
Оролт

Оролтыг зохицуулахын тулд би "Hub_Inputs" нэртэй анги үүсгэсэн бөгөөд энэ нь гэрийн зангилаа нь APDS9960 -тай харилцах, товчлуурууд болон багтаамжийн мэдрэгчтэй интерфэйсийг үүсгэх, удирдах боломжийг олгодог. Энэ нь дараахь функцуудыг агуулдаг.

Үүсгэх товчлуур

Хэрэв товчлуур дарагдсан бол авах

Товчлуур дарах тоог авах

Хамгийн сүүлийн дохио авах

Мэдрэмжийн багтаамжийг авах

Товчнууд нь is_pressed, numberPresses, pin гэсэн гурван шинж чанар бүхий бүтэц хэлбэрээр хадгалагддаг. Товчлуур бүрийг үүсгэх үед тасалдалд хавсаргасан болно. Энэ тасалдал идэвхжсэн үед тасалдлын үйлчилгээний горим (ISR) нь тухайн товчлуурын заагчийг дамжуулдаг (товчлуурын массив дахь санах ойн хаягийг өгдөг) ба товчлуур дарах тоог нэмэгдүүлж, is_pressed логик утгыг шинэчилдэг.

Мэдрэмжийн багтаамжийн утга нь илүү хялбар байдаг. TouchRead () функцэд мэдрэгчтэй зүү дамжуулснаар тэдгээрийг олж авдаг.

Хамгийн сүүлийн дохио зангаа нь APDS9960 -аас санал асуулга авч, ямар нэгэн шинэ дохио илрүүлсэн эсэхийг шалгаж, хэрэв илрүүлсэн бол хувийн дохио зангаа хувьсагчийг энэ дохио болгож тохируулна.

Алхам 6: Гаралт

Гаралт
Гаралт
Гаралт
Гаралт
Гаралт
Гаралт

Ухаалаг гэрийн зангилаа нь мэдээлэл дамжуулах, гэрлийг солих хэд хэдэн арга байдаг. I2C автобусыг задалж, хэрэглэгчид LCD холбох боломжийг олгодог. Одоогийн байдлаар зөвхөн нэг хэмжээтэй LCD дэлгэц дэмжигдэж байна: 20 x 4. "hub.display_message ()" функцийг ашигласнаар хэрэглэгчид LCD объект дээр дамжуулж зурвасуудыг харуулах боломжтой болно.

Мөн аналог LED гэрлийг холбох зүү толгой байдаг. "Hub.set_led_strip (r, g, b)" функцийг дуудах нь туузны өнгийг тохируулдаг.

Хоёр шатлалт моторыг DRV8825 хос жолоочийн самбар ашиглан удирддаг. Би BasicStepper номын санг моторын хяналтыг ашиглахаар шийдсэн. Самбарыг ачаалах үед хоёр алхамтай объект үүсч, хоёр хөдөлгүүр хоёулаа идэвхждэг. Мотор бүрийг гишгэхийн тулд "hub.step_motor (motor_id, steps)" функцийг ашигладаг бөгөөд моторын id нь 0 эсвэл 1 байна.

Алхам 7: Бүртгэл хийх

Мод бэлтгэх
Мод бэлтгэх
Мод бэлтгэх
Мод бэлтгэх
Мод бэлтгэх
Мод бэлтгэх

Удирдах зөвлөл нь хэд хэдэн мэдрэгчтэй тул өгөгдлийг орон нутагт цуглуулах, бүртгэх чадварыг хүсч байсан.

Бүртгэлийг эхлүүлэхийн тулд "hub.create_log (файлын нэр, толгой)" гэсэн шинэ файл үүсгэж, толгойг баганыг илэрхийлсэн CSV файлын мөр болгоход ашигладаг. Эхний багана нь үргэлж жилийн сарын өдрийн цагийн цагийн тэмдэг юм: Min: Sec формат. Цаг авахын тулд hub.log_to_file () функц нь basic_functions.get_time () функцтэй цагийг авдаг. Tm цагийн бүтцийг өгөгдөл, файлын нэрийн хамт бүртгэлийн функцэд шилжүүлэх замаар дамжуулдаг.

Алхам 8: Buzzer

Дуу чимээ
Дуу чимээ

Хэрэв та хөгжим тоглож чадахгүй бол IoT самбар ямар хэрэгтэй вэ? Тийм ч учраас би дуу тоглуулах функцтэй дуугаруулагчийг оруулсан. "Hub.play_sounds (аялгуу, үргэлжлэх хугацаа, урт)" гэж дуудах нь дууг тоглуулж эхэлдэг бөгөөд аялгуу нь тэмдэглэлийн давтамжийн массив, үргэлжлэх хугацаа нь тэмдэглэлийн үргэлжлэх хугацаа, урт нь тэмдэглэлийн тоо юм.

Алхам 9: IoT -ийн гадаад интеграцчлал

Гадаад IoT интеграцчлал
Гадаад IoT интеграцчлал
Гадаад IoT интеграцчлал
Гадаад IoT интеграцчлал
Гадаад IoT интеграцчлал
Гадаад IoT интеграцчлал

Энэ төв нь одоогоор IFTTT вэб хөтчийг дэмждэг. Hub_IoT.publish_webhook (url, өгөгдөл, үйл явдал, түлхүүр) эсвэл Hub_IoT.publish_webhook (url, өгөгдөл) функцийг дуудах замаар тэдгээрийг өдөөж болно. Энэ нь өгөгдлийг хавсаргасан URL -д POST хүсэлтийг илгээж, шаардлагатай бол үйл явдлын нэрийг илгээдэг. IFTTT интеграцийн жишээг тохируулахын тулд эхлээд шинэ апплет үүсгэнэ үү. Дараа нь хүсэлт хүлээн авахад идэвхждэг webhook үйлчилгээг сонгоно уу.

Дараа нь энэ үйл явдлыг "high_temp" гэж нэрлээд хадгална уу. Дараа нь "Тэр" хэсгийн Gmail үйлчилгээг сонгоод "Өөртөө имэйл илгээх" сонголтыг сонгоно уу. Үйлчилгээний тохиргоонд "Температур өндөр байна!" Гэж бичнэ үү. сэдвийн хувьд, дараа нь би хэмжсэн температур, үйл явдлыг өдөөсөн цагийг харуулсан "{{Value1}} хэмжсэн температурыг {{OccurredAt}}" дээр тавив.

Үүнийг тохируулсны дараа IFTTT -ээр үүсгэгдсэн webhook URL -г буулгаж, арга хэмжээний хэсэгт "high_temp" оруулна уу.

Алхам 10: Хэрэглээ

Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ

Smart Home Hub -ийг ашиглахын тулд setup () эсвэл loop () аль ч хэсэгт шаардлагатай функцүүдийг дуудахад л хангалттай. Би одоогийн цагийг хэвлэх, IFTTT үйл явдлыг дуудах гэх мэт функцын дуудлагын жишээг аль хэдийн оруулсан болно.

Алхам 11: Ирээдүйн төлөвлөгөө

Smart Home Hub систем нь гэрийн автоматжуулалт, өгөгдөл цуглуулах энгийн ажлуудад маш сайн ажилладаг. Үүнийг LED зурвасын өнгийг тохируулах, өрөөний температурыг хянах, гэрэл ассан эсэхийг шалгах гэх мэт бараг бүх зүйлд ашиглаж болно. Ирээдүйд би функцийг илүү өргөжүүлэхийг хүсч байна. Үүнд илүү хүчирхэг вэб сервер, локал файл байршуулах, тэр ч байтугай Bluetooth эсвэл mqtt нэмж оруулах боломжтой.

Зөвлөмж болгож буй: