Мазмуну:

ESP32 Smart Home Hub: 11 кадам
ESP32 Smart Home Hub: 11 кадам

Video: ESP32 Smart Home Hub: 11 кадам

Video: ESP32 Smart Home Hub: 11 кадам
Video: A1 SQUAD PROTECTION FORCE PVT. LTD. With Md Nasir Sir 2024, Ноябрь
Anonim
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub
ESP32 Smart Home Hub

Көп өлчөмдөгү сенсордук маалыматтарды иштете ала турган, бир нече жолу чыгуучу, интернетке же жергиликтүү тармакка туташа турган системаны түзүү көп убакытты жана көп күчтү талап кылат. Көбүнчө, өздөрүнүн акылдуу үй түйүндөрүн түзүүнү каалагандар, ыңгайлаштырылган компоненттерди чоң системага табуу жана чогултуу менен күрөшүшөт. Мына ошондуктан мен 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 Card Reader
  • NEMA17 Stepper Motors

1 -кадам: Өзгөчөлүктөр

Өзгөчөлүктөрү
Өзгөчөлүктөрү
Өзгөчөлүктөрү
Өзгөчөлүктөрү
Өзгөчөлүктөрү
Өзгөчөлүктөрү

Бул тактанын негизги өзгөчөлүгү - бул ESP32 FireBeetle Development Board, ал баардык байланышты, сенсордук көрсөткүчтөрдү жана чыгууларды башкарат. Эки биполярдуу тепкич моторун башкарган эки тепкичтүү мотор айдоочулары бар.

I2C автобусу APDS9960 же ЖК сыяктуу компоненттер менен колдонуу үчүн сындырылган. Температураны окуу үчүн DHT22 сенсоруна туташуу үчүн сынган казыктар, ошондой эле айланадагы жарыктын деңгээлин окуу үчүн фоторезистор бар.

Тактада аналогдук жарык тилкесин колдоо бар, анын үстүндө LED чырактарын иштетүү үчүн үч MOSFET бар.

2 -кадам: PCB

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

Мен ПХБ дизайн процессин алгач Eagleде схема түзүү менен баштадым. Мен ESP32 FireBeetle китепканасын таба албагандан кийин, анын ордуна эки пин 1x18 пин төбөсүн колдондум. Андан кийин, мен 12 вольтту DC баррель уячасы аркылуу кабыл алып, сенсорлорду жана ESP32ди иштетүү үчүн 5vга айландыра турган кубатты башкаруу схемасын түздүм.

Схема бүткөндөн кийин, мен ПХБнын өзүн иштеп чыгууга өттүм.

Мен DC баррелинин сайгычынын тактанын маңдайында болушу керек экенин билчүмүн жана 100uF кубаттоочу тегиздөөчү конденсаторлор мотор айдоочусунун кубаттуу киришине жакын болушу керек болчу. Баары чечилгенден кийин издерди маршрутка баштадым.

Oshpark эң жакшы сапаттагы ПХБ жасаса да, алардын баасы кыйла жогору. Бактыга жараша, PCBGOGO.com ошондой эле жеткиликтүү баада улуу ПХБ жасайт. Oshpark.comдон үч тактага 52 доллар төлөбөй, он ПХБны 5 долларга гана сатып алдым.

3 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Жалпысынан алганда, тактаны чогултуу абдан оңой болгон. Мен бетине орнотулган компоненттерди ширетүүдөн баштадым, анан баррель джек туташтыргычы менен жөндөгүчтү тиркөө. Андан кийин, мен мотор драйверлери жана FireBeetle сыяктуу компоненттер үчүн төөнөгүчтөрдүн башын коштум.

Лайкоо бүткөндөн кийин, мен мультиметрди каршылыкты өлчөө режимине коюп, каршылыктын белгилүү бир чектен ашып кеткенин көрүп, кыска туташуу үчүн тактаны сынап көрдүм. Такта өттү, ошондуктан мен ар бир компонентти туташтыра алдым.

4 -кадам: Программалоого жалпы сереп

Мен бул тактанын кодун модулдук жана колдонууга оңой болушун кааладым. Бул кичинекейлерди айкалыштырган чоңураак класс менен бирге белгилүү бир функцияларды аткарган бир нече класстарга ээ болууну билдирет.

5 -кадам: Кириштер

Кириштер
Кириштер
Кириштер
Кириштер
Кириштер
Кириштер

Кириштерди иштетүү үчүн, мен "Hub_Inputs" деп аталган классты түздүм, ал үй түйүнүн APDS9960 менен байланышууга, баскычтарды жана сыйымдуу сенсордук интерфейстерди түзүүгө жана башкарууга мүмкүнчүлүк берет. Ал төмөнкү функцияларды камтыйт:

Түзүү баскычы

Кнопка басылганда алыңыз

Баскычтардын басуу санын алыңыз

Акыркы жаңсоону алыңыз

Сыйымдуу тийүү маанисин алыңыз

Баскычтар структура катары сакталат, үч атрибут менен: is_pressed, numberPresses жана pin. Ар бир баскыч, качан түзүлгөн, үзгүлтүккө тиркелет. Бул үзгүлтүккө учураганда, үзгүлтүккө учуроо кызматы тартиби (ISR) ошол баскычтын көрсөткүчүнөн өтөт (баскычтар массивинде анын эстутум дареги катары берилет) жана баскычтардын басуу санын көбөйтөт, is_pressed логикалык маанини жаңыртуу менен бирге.

Capacitive тийүү баалуулуктары алда канча жөнөкөй. Алар тийүү пинин touchRead () функциясына өткөрүп берүү менен алынат.

Акыркы жаңсоо APDS9960 сурамжылоо аркылуу жаңыртылып, кандайдыр бир жаңы жаңсоонун аныкталганын текшерет жана эгерде ал аныкталган болсо, жеке жаңсоо өзгөрмөсүн ошол жаңсоого коюңуз.

6 -кадам: Чыгаруулар

Чыгуулар
Чыгуулар
Чыгуулар
Чыгуулар
Чыгуулар
Чыгуулар

Акылдуу үй хабында маалыматты чыгаруунун жана жарыкты алмаштыруунун бир нече жолу бар. I2C автобусун сындыруучу казыктар бар, бул колдонуучуларга LCDди туташтырууга мүмкүндүк берет. Азырынча ЖКнын бир гана өлчөмү колдоого алынат: 20 x 4. "hub.display_message ()" функциясын колдонуу менен, колдонуучулар ЖИБде сап объектиси аркылуу билдирүүлөрдү көрсөтө алышат.

Ошондой эле аналогдук LED диапазонун туташтыруу үчүн төөнөгүч баш бар. "Hub.set_led_strip (r, g, b)" функциясын чакырып, тилкенин түсүн белгилейт.

Эки тепкичтүү мотор DRV8825 драйверлер тактасынын жардамы менен башкарылат. Мен моторду башкаруу үчүн BasicStepper китепканасын колдонууну чечтим. Такта жүктөлгөндө, эки тепкичтүү объект түзүлөт жана эки мотор тең иштетилет. Ар бир моторду басуу үчүн "hub.step_motor (motor_id, steps)" функциясы колдонулат, мында мотор ID 0 же 1 болот.

7 -кадам: Кирүү

Кирүү
Кирүү
Кирүү
Кирүү
Кирүү
Кирүү

Тактада бир нече сенсорлор болгондуктан, мен маалыматты жергиликтүү деңгээлде чогултуу жана каттоо жөндөмүн кааладым.

Журналды баштоо үчүн, "hub.create_log (файлдын аталышы, баш аталышы)" менен жаңы файл түзүлөт, мында баш мамычаларды билдирген CSV файл катарын түзүү үчүн колдонулат. Биринчи тилке ар дайым Жылдын Ай Күнү Саатында убакыт белгиси: Мин: Сек форматы. Убакытты алуу үчүн 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, data, event, key) же Hub_IoT.publish_webhook (url, data) функциясын чакырып иштетсе болот. Бул көрсөтүлгөн URL тиркелген POST сурамын жөнөтөт, эгер зарыл болсо, иш -чаранын аталышы. IFTTT интеграциясынын мисалын орнотуу үчүн, адегенде жаңы апплет түзүңүз. Андан кийин суроо -талап түшкөндө ишке кирүүчү webhook кызматын тандаңыз.

Андан кийин, окуяны "high_temp" деп атап, аны сактап коюңуз. Андан кийин, "Ошол" бөлүгү үчүн Gmail кызматын тандап, "Өзүмө электрондук кат жөнөтүү" опциясын тандаңыз. Кызматты орнотуунун ичинде "Температура жогору!" предмет үчүн, анан мен "{{OccurredAt}} боюнча {{Value1}} өлчөнгөн температурасын" койдум, ал өлчөнгөн температураны жана окуя качан башталганын көрсөтөт.

Аны орноткондон кийин, IFTTT тарабынан түзүлгөн веб -хуктун URL дарегин чаптап, окуялар бөлүмүнө "high_temp" дегенди коюңуз.

10 -кадам: Колдонуу

Колдонуу
Колдонуу
Колдонуу
Колдонуу
Колдонуу
Колдонуу
Колдонуу
Колдонуу

Smart Home Hub'ды колдонуу үчүн жөндөө () же loop () бөлүмдөрүндө керектүү функцияларды чакырыңыз. Мен буга чейин учурдагы убакытты басып чыгаруу жана IFTTT окуясын чакыруу сыяктуу функционалдык чалууларды койгом.

11 -кадам: Келечектеги пландар

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

Сунушталууда: