Բովանդակություն:

ESP32 Smart Home Hub: 11 քայլ
ESP32 Smart Home Hub: 11 քայլ

Video: ESP32 Smart Home Hub: 11 քայլ

Video: ESP32 Smart Home Hub: 11 քայլ
Video: ESP32 HomeKit Tutorial | HomeSpan 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 Motor վարորդներ
  • SD քարտի ընթերցող
  • NEMA17 Stepper Motors

Քայլ 1: Առանձնահատկություններ

Հատկություններ
Հատկություններ
Հատկություններ
Հատկություններ
Հատկություններ
Հատկություններ

Այս տախտակի հիմնական առանձնահատկությունը ESP32 FireBeetle Development Board- ն է, որը կարգավորում է բոլոր հաղորդակցությունները, սենսորների ընթերցումները և ելքերը: Գոյություն ունեն երկու շարժիչային շարժիչ, որոնք վերահսկում են երկու երկբևեռ տիպային շարժիչներ:

I2C ավտոբուսը նույնպես կոտրված է այնպիսի բաղադրիչներով օգտագործելու համար, ինչպիսիք են APDS9960- ը կամ LCD- ը: Theերմաստիճանը կարդալու համար կան կոճակներ, որոնք կոտրված են DHT22 սենսորին միանալու համար, ինչպես նաև շրջապատող լուսավորության մակարդակները կարդալու համար նախատեսված ֆոտոռեզիստոր:

Տախտակի վրա կա անալոգային լուսային ժապավենի աջակցություն, որի վրա տեղադրված է երեք MOSFET ՝ LED լույսերը վարելու համար:

Քայլ 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

Ես սկսեցի PCB- ի նախագծման գործընթացը ՝ նախ ստեղծելով սխեմա Eagle- ում: Քանի որ ես չկարողացա գտնել ESP32 FireBeetle գրադարան, փոխարենը ես օգտագործեցի երկու կապ 1x18 փին երկու վերնագիր: Այնուհետև ես ստեղծեցի էներգիայի կառավարման միացում, որը կարող էր ընդունել 12 վ լարման տակառի միջոցով և այն վերածել 5 վ -ի ՝ սենսորների և ESP32- ի սնուցման համար:

Սխեման ավարտելուց հետո ես անցա PCB- ի նախագծման վրա:

Ես գիտեի, որ DC- ի տակառի խրոցը պետք է լինի տախտակի առջևի մոտ, իսկ 100uF էներգիայի մատակարարման հարթեցման կոնդենսատորները պետք է մոտենան սլաքի շարժիչի շարժիչի հզորության մուտքերին: Ամեն ինչ դասավորվելուց հետո ես սկսեցի հետքեր ուղարկել:

Մինչ Oshpark- ը հիանալի որակի PCB է պատրաստում, դրանց գները բավականին բարձր են: Բարեբախտաբար, PCBGOGO.com- ը նաև հիանալի PCB է պատրաստում մատչելի գնով: Ես կարողացա տասը հատ հատ գնել 5 դոլարով, այլ ոչ թե 52 դոլար վճարել Oshpark.com- ի ընդամենը երեք տախտակի համար:

Քայլ 3: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով

Ընդհանուր առմամբ, խորհուրդը հավաքելը բավականին հեշտ էր: Ես սկսեցի մակերեսին ամրացված բաղադրամասերը զոդել, այնուհետև ամրացնելով տակառի միակցիչը և կարգավորիչը: Հաջորդը, ես կպցրի վերնագրերում այն բաղադրիչների համար, ինչպիսիք են շարժիչային վարորդները և FireBeetle- ը:

Eringոդման աշխատանքներն ավարտելուց հետո ես փորձարկեցի տախտակը կարճ միացման համար `մուլտիմետրը դիմադրության չափման ռեժիմի մեջ դնելով և տեսնելով, թե արդյոք դիմադրությունը որոշակի չափից ավելի է: Տախտակն անցավ, այնպես որ ես այնուհետև կարողացա միացնել յուրաքանչյուր բաղադրիչ:

Քայլ 4: mingրագրավորման ակնարկ

Ես ուզում էի, որ այս տախտակի ծածկագիրը լինի մոդուլային և հեշտ օգտագործելի: Սա նշանակում էր ունենալ մի քանի դասեր, որոնք կարգավորում են որոշակի գործառույթներ, ինչպես նաև ավելի մեծ փաթաթան դաս, որը միավորում է փոքրերը:

Քայլ 5: Ներածումներ

Մուտքերը
Մուտքերը
Մուտքերը
Մուտքերը
Մուտքերը
Մուտքերը

Մուտքերի մշակման համար ես ստեղծեցի «Hub_Inputs» կոչվող դաս, որը հնարավորություն է տալիս տնային հանգույցին հաղորդակցվել APDS9960- ի հետ, ինչպես նաև ստեղծել և կառավարել կոճակներ և տարողունակ հպման միջերեսներ: Այն պարունակում է հետևյալ գործառույթները.

Ստեղծել կոճակը

Ստացեք, եթե կոճակը սեղմված է

Ստացեք կոճակների սեղմումների քանակը

Ստացեք վերջին ժեստը

Ստացեք capacitive touch արժեքը

Կոճակները պահվում են որպես կառուցվածք ՝ երեք հատկանիշով ՝ 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 ձևաչափով: Getամանակ ստանալու համար hub.log_to_file () գործառույթը ժամանակ է ստանում հիմնական_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, data) գործառույթ: Սա ուղարկում է POST հարցումը տվյալ URL- ին `կցված տվյալներով, անհրաժեշտության դեպքում նաև իրադարձության անվան հետ: IFTTT ինտեգրման օրինակ ստեղծելու համար նախ ստեղծեք նոր հավելված: Այնուհետև ընտրեք վեբհուկի ծառայությունը, որը գործարկում է հարցումը ստանալիս:

Հաջորդը, իրադարձությունը անվանեք «բարձր_տեմպ» և պահեք այն: Այնուհետև ընտրեք Gmail ծառայությունը «Դա» մասի համար և ընտրեք «Ինձ էլ -նամակ ուղարկել» տարբերակը: Forառայության կարգավորման մեջ նշեք «temperatureերմաստիճանը բարձր է»: առարկայի համար, այնուհետև ես դնում եմ «Չափված ջերմաստիճանը {{Value1}} - ի վրա {{OccurredAt}}», որը ցույց է տալիս չափված ջերմաստիճանը և իրադարձության գործարկման ժամանակը:

Այն կարգավորելուց հետո պարզապես կպցրեք IHTTT- ի կողմից ստեղծված webhook հասցեն և իրադարձությունների բաժնում տեղադրեք «high_temp»:

Քայլ 10: Օգտագործում

Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը

Smart Home Hub- ից օգտվելու համար պարզապես զանգահարեք անհրաժեշտ բոլոր գործառույթները `(setup () կամ loop () պարամետրերում: Ես արդեն տեղադրել եմ ֆունկցիոնալ զանգերի օրինակ, օրինակ ՝ ընթացիկ ժամանակը տպելը և IFTTT իրադարձության կանչը:

Քայլ 11: Ապագա ծրագրեր

Smart Home Hub համակարգը շատ լավ է աշխատում տան պարզ ավտոմատացման և տվյալների հավաքման առաջադրանքների համար: Այն կարող է օգտագործվել գրեթե ամեն ինչի համար, օրինակ ՝ LED շերտի գույնը սահմանելը, սենյակի ջերմաստիճանը վերահսկելը, լույսի առկայությունը ստուգելը, և մի շարք այլ հնարավոր նախագծեր: Ապագայում ես կցանկանայի ավելի ընդլայնել ֆունկցիոնալությունը: Սա կարող է ներառել ավելի հզոր վեբ սերվեր, տեղական ֆայլերի հոստինգ և նույնիսկ Bluetooth կամ mqtt ավելացնել:

Խորհուրդ ենք տալիս: