Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Mga Tampok
- Hakbang 2: PCB
- Hakbang 3: Assembly
- Hakbang 4: Pangkalahatang-ideya ng Programming
- Hakbang 5: Mga Input
- Hakbang 6: Mga Output
- Hakbang 7: Pag-log
- Hakbang 8: Buzzer
- Hakbang 9: Panlabas na Mga Pagsasama ng IoT
- Hakbang 10: Paggamit
- Hakbang 11: Mga Plano sa Hinaharap
Video: ESP32 Smart Home Hub: 11 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Ang paglikha ng isang system na maaaring hawakan ang malaking halaga ng data ng sensor, magkaroon ng maraming output, at kumonekta sa internet o isang lokal na network ay tumatagal ng mahabang oras at malaking pagsisikap. Kadalasan, ang mga taong nais na gumawa ng kanilang sariling mga smart home network ay nakikipagpunyagi sa kakayahang maghanap at magtipon ng mga pasadyang sangkap sa isang mas malaking system. Iyon ang dahilan kung bakit nais kong gumawa ng isang modular at mayaman sa tampok na platform na magpapadali sa pagbuo ng mga sensor at output na konektado sa IoT.
Salamat sa DFRobot at PCBGOGO.com sa pag-sponsor ng proyektong ito!
Para sa higit pang malalim na impormasyon, bisitahin ang Github repo:
Mga gamit
-
DFRobot ESP32 FireBeetle
www.dfrobot.com/product-1590.html
-
DHT22 Sensor
www.dfrobot.com/product-1102.html
-
APDS9960 Light and Gesture Sensor
www.dfrobot.com/product-1361.html
-
I2C 20x4 LCD Module
www.dfrobot.com/product-590.html
-
Analog RGB LED Strip
www.dfrobot.com/product-1829.html
- DRV8825 Stepper Motor Drivers
- Reader ng SD Card
- NEMA17 Stepper Motors
Hakbang 1: Mga Tampok
Ang pangunahing tampok ng board na ito ay isang ESP32 FireBeetle Development Board na humahawak sa lahat ng komunikasyon, pagbabasa ng sensor, at mga output. Mayroong dalawang mga driver ng stepper motor na kumokontrol sa dalawang bipolar stepper motor.
Ang I2C bus ay nasira din para magamit sa mga sangkap tulad ng APDS9960 o isang LCD. Para sa pagbabasa ng temperatura, may mga pin na sirang upang kumonekta sa isang sensor ng DHT22, pati na rin isang photoresistor para sa pagbabasa ng mga antas ng ambient light.
Mayroong suporta para sa isang analog light strip sa board, na mayroong tatlong MOSFET dito upang himukin ang mga LED light.
Hakbang 2: PCB
Sinimulan ko ang proseso ng disenyo ng PCB sa pamamagitan ng unang paglikha ng isang eskematiko sa Eagle. Dahil hindi ako makahanap ng isang library ng ESP32 FireBeetle, gumamit lang ako ng dalawang pin na 1x18 pin na mga header. Pagkatapos, lumikha ako ng isang circuit ng pamamahala ng kuryente na maaaring tanggapin ang 12v sa pamamagitan ng isang jack ng DC bariles at i-convert ito sa 5v para sa paggana ng mga sensor at ESP32.
Matapos makumpleto ang eskematiko, lumipat ako sa pagdidisenyo ng PCB mismo.
Alam ko na ang plug ng bariles ng DC ay dapat na malapit sa harap ng board, at ang supply ng kuryente na 100uF na inaayos ang mga capacitor na kinakailangan upang malapit sa mga stepper na pag-input ng kuryente ng driver ng motor. Matapos mailatag ang lahat, nagsimula akong mag-ruta ng mga bakas.
Habang ang Oshpark ay gumagawa ng mahusay na kalidad ng mga PCB, ang kanilang mga presyo ay medyo mataas. Sa kabutihang palad, gumagawa din ang PCBGOGO.com ng magagaling na PCB sa isang abot-kayang presyo. Nakabili ako ng sampung PCB para sa $ 5 lamang, kaysa sa pagbabayad ng $ 52 para sa tatlong board lamang mula sa Oshpark.com.
Hakbang 3: Assembly
Sa pangkalahatan, ang pag-iipon ng board ay medyo madali. Nagsimula ako sa pamamagitan ng paghihinang sa mga naka-mount na bahagi, at pagkatapos ay ikinakabit ang konektor ng jack jack at regulator. Susunod, naghinang ako sa mga header ng pin para sa mga sangkap tulad ng mga driver ng motor at FireBeetle.
Matapos makumpleto ang paghihinang, sinubukan ko ang board para sa maikling circuit sa pamamagitan ng paglalagay ng isang multimeter sa mode ng pagsukat ng pagtutol at nakikita kung ang paglaban ay higit sa isang tiyak na halaga. Dumaan ang board, kaya't nakaya kong mai-plug ang bawat bahagi.
Hakbang 4: Pangkalahatang-ideya ng Programming
Gusto ko ang code para sa board na ito na maging modular at madaling gamitin. Nangangahulugan ito ng pagkakaroon ng maraming mga klase na humahawak sa mga tiyak na pag-andar, kasama ang isang mas malaking klase ng pambalot na pinagsasama ang mas maliit.
Hakbang 5: Mga Input
Para sa paghawak ng mga input, lumikha ako ng isang klase na tinatawag na "Hub_Inputs", na hinahayaan ang home hub na makipag-usap sa APDS9960, kasama ang paglikha at pamamahala ng mga pindutan at capacitive touch interface. Naglalaman ito ng mga sumusunod na pagpapaandar:
Button na lumikha
Kunin kung pinindot ang pindutan
Kumuha ng bilang ng mga pagpindot sa pindutan
Kumuha ng pinakabagong kilos
Kumuha ng capacitive touch halaga
Ang mga pindutan ay naka-imbak bilang isang struct, na may tatlong mga katangian: ay_pressed, numberPresses, at pin. Ang bawat pindutan, kapag nilikha, ay nakakabit sa isang nakakagambala. Kapag na-trigger ang pagkagambala na iyon, ang Interrupt Service Routine (ISR) ay ipinapasa ang pointer ng pindutan na iyon (ibinigay bilang memory address nito sa array ng pindutan) at nagdaragdag ng bilang ng mga pagpindot sa pindutan, kasama ang pag-update ng halaga ng Boolean na na-ispress.
Ang mga halaga ng capacitive touch ay mas simple. Nakuha ang mga ito sa pamamagitan ng pagpasa ng touch pin sa pagpapaandar ng touchRead ().
Ang pinakabagong kilos ay na-update sa pamamagitan ng botohan ng APDS9960 at suriin kung may nakita ng anumang bagong kilos, at kung may napansin, itakda ang variable ng pribadong kilos sa kilos na iyon.
Hakbang 6: Mga Output
Nagtatampok ang matalinong home hub ng maraming paraan upang mag-output ng impormasyon at baguhin ang mga ilaw. May mga pin na sumisira sa I2C bus, hinahayaan ang mga gumagamit na kumonekta sa isang LCD. SA ngayon, isang sukat lamang ng LCD ang suportado: 20 x 4. Sa pamamagitan ng paggamit ng pagpapaandar na "hub.display_message ()", ang mga gumagamit ay maaaring magpakita ng mga mensahe sa LCD sa pamamagitan ng pagpasa sa isang string object.
Mayroon ding isang header ng pin upang ikonekta ang isang string ng mga analog LED. Ang pagtawag sa pagpapaandar na "hub.set_led_strip (r, g, b)", ay nagtatakda ng kulay ng strip.
Ang dalawang stepper motor ay hinihimok gamit ang isang pares ng DRV8825 driver boards. Napagpasyahan kong gamitin ang library ng BasicStepper upang hawakan ang kontrol sa motor. Kapag ang board ay na-boot up, ang dalawang mga stepper na bagay ay nilikha, at ang parehong mga motor ay pinagana. Upang hakbangin ang bawat motor, ang function na "hub.step_motor (motor_id, mga hakbang)" ay ginagamit, kung saan ang motor id ay alinman sa 0 o 1.
Hakbang 7: Pag-log
Dahil ang board ay maraming mga sensor, nais ko ang kakayahang mangolekta nang lokal at mag-log ng data.
Upang simulan ang pag-log, isang bagong file ay nilikha gamit ang "hub.create_log (filename, header)", kung saan ginagamit ang header upang makagawa ng isang hilera ng CSV file na nagsasaad ng mga haligi. Ang unang haligi ay palaging isang timestamp sa Year Month Day Hour: Min: Sec format. Upang makuha ang oras, ang pagpapaandar ng hub.log_to_file () ay nakakakuha ng oras sa pagpapaandar ng basic_function.get_time (). Ang oras ng oras ng istruktura ay pagkatapos ay ipinasa sa pamamagitan ng pagtukoy sa pag-log function, kasama ang data at filename.
Hakbang 8: Buzzer
Ano ang buti ng isang board ng IoT kung hindi ka makakapagpatugtog ng musika? Iyon ang dahilan kung bakit nagsama ako ng isang buzzer na may pagpapaandar upang magpatugtog ng mga tunog. Ang pagtawag sa "hub.play_sounds (himig, tagal, haba)" ay nagsisimulang maglaro ng isang kanta, na ang himig ay isang hanay ng mga frequency ng tala, tagal bilang isang hanay ng mga tagal ng tala, at haba ng bilang ng mga tala.
Hakbang 9: Panlabas na Mga Pagsasama ng IoT
Kasalukuyang sinusuportahan ng hub ang mga webhook ng IFTTT. Maaari silang ma-trigger sa pamamagitan ng pagtawag sa Hub_IoT.publish_webhook (url, data, kaganapan, key) o Hub_IoT.publish_webhook (url, data) na pagpapaandar. Nagpapadala ito ng isang kahilingan sa POST sa ibinigay na URL na may kalakip na data, kasama ang isang pangalan ng kaganapan kung kinakailangan. Upang mag-set up ng isang halimbawa ng pagsasama ng IFTTT, lumikha muna ng isang bagong applet. Pagkatapos piliin ang serbisyo ng webhook na nagti-trigger kapag natanggap ang isang kahilingan.
Susunod, tawagan ang kaganapan na "high_temp" at i-save ito. Pagkatapos, piliin ang serbisyo ng Gmail para sa bahaging "Iyon", at piliin ang opsyong "Magpadala ng email sa sarili ko". Sa loob ng pag-set up para sa serbisyo, ilagay ang "Ang temperatura ay mataas!" para sa paksa, at pagkatapos ay inilagay ko ang "Sinukat na temperatura ng {{Value1}} sa {{Naganap angAt}}", na ipinapakita ang sinusukat na temperatura at ang oras kung kailan natiyak ang kaganapan.
Pagkatapos i-set up ito, i-paste lamang ang webhook URL na nabuo ng IFTTT, at ilagay ang "high_temp" sa seksyon ng kaganapan.
Hakbang 10: Paggamit
Upang magamit ang Smart Home Hub, tawagan lamang ang anumang kinakailangang pag-andar sa alinman sa pag-setup () o loop (). Naglagay na ako ng mga halimbawang tawag sa pag-andar, tulad ng pag-print ng kasalukuyang oras at pagtawag sa isang kaganapan sa IFTTT.
Hakbang 11: Mga Plano sa Hinaharap
Mahusay na gumagana ang system ng Smart Home Hub para sa simpleng gawain sa pag-automate ng bahay at pangongolekta ng data. Maaari itong magamit para sa halos anumang, tulad ng pagtatakda ng kulay ng isang LED strip, pagsubaybay sa temperatura ng isang silid, pag-check kung may ilaw, at isang buong host ng iba pang mga potensyal na proyekto. Sa hinaharap, nais kong palawakin ang pagpapaandar nang higit pa. Maaaring isama dito ang pagdaragdag ng isang mas matatag na webserver, lokal na pag-host ng file, at maging sa Bluetooth o mqtt.
Inirerekumendang:
Paano Gumawa ng Smart Home Gamit ang Arduino Control Relay Module - Mga Ideya sa Pag-aautomat ng Bahay: 15 Hakbang (na may Mga Larawan)
Paano Gumawa ng Smart Home Gamit ang Arduino Control Relay Module | Mga Ideya sa Pag-aautomat ng Bahay: Sa proyekto sa automation ng bahay na ito, magdidisenyo kami ng isang matalinong module ng relay sa bahay na makokontrol ang 5 mga gamit sa bahay. Ang module ng relay na ito ay maaaring makontrol mula sa Mobile o smartphone, IR remote o TV remote, Manu-manong switch. Ang matalinong relay na ito ay maaari ding maunawaan ang r
Smart Home Sa Arduino: 11 Mga Hakbang (na may Mga Larawan)
Smart Home With Arduino: Kumusta. Ipapakita ko sa iyo kung paano bumuo ng iyong sariling matalinong bahay. Ipinapakita nito ang temperatura kapwa sa loob at labas, kung ang bintana ay bukas o sarado, ipinapakita kapag umuulan at gumawa ng alarma kapag gumalaw ang pandama ng PIR sensor. Ginawa ko ang application sa android sa
Pagsisimula Sa ESP32 - Pag-install ng Mga Board ng ESP32 sa Arduino IDE - ESP32 Blink Code: 3 Mga Hakbang
Pagsisimula Sa ESP32 | Pag-install ng Mga Board ng ESP32 sa Arduino IDE | ESP32 Blink Code: Sa mga itinuturo na ito makikita natin kung paano magsisimulang magtrabaho kasama ang esp32 at kung paano mag-install ng mga esp32 board sa Arduino IDE at ipo-program namin ang esp 32 upang patakbuhin ang blink code gamit ang arduino ide
Ang Raspberry Pi-Arduino-SignalR Home Automation Hub: 11 Mga Hakbang (na may Mga Larawan)
Ang Raspberry Pi-Arduino-SignalR Home Automation Hub: Kasunod sa isang pares ng aking paunang mga IBLE na na-publish dito at dito, ang proyektong ito ay kumukuha ng unang hakbang patungo sa pagbuo ng isang pangunahing bersyon ng isang gumaganang Home Automation Hub. Gumamit ako ng maraming iba't ibang mga teknolohiya sa isang pagsisikap na magkaroon ng kahulugan ng kung paano ako maaaring
DIY Google Home Sa Bluetooth Speaker sa Raspberry Pi Zero Docking Hub: 7 Hakbang (na may Mga Larawan)
DIY Google Home Sa Bluetooth Speaker sa Raspberry Pi Zero Docking Hub: Mayroon kaming isang itinuturo sa DIY Amazon Echo Alexa - Alexa Voice Assistant sa Raspberry Pi Zero Docking Hub. Sa oras na ito nais naming ipakita sa iyo kung paano bumuo ng isang DIY Google Home. Sa itinuturo na ito, ipapakita namin sa iyo kung paano mag-install at mag-setup ng Google Assistant