Talaan ng mga Nilalaman:

NexArdu: Pag-iilaw ng Smart Control: 5 Mga Hakbang
NexArdu: Pag-iilaw ng Smart Control: 5 Mga Hakbang

Video: NexArdu: Pag-iilaw ng Smart Control: 5 Mga Hakbang

Video: NexArdu: Pag-iilaw ng Smart Control: 5 Mga Hakbang
Video: 15 Innovative Electric Vehicles | Are Electric Vehicles The Future? 2024, Hulyo
Anonim
NexArdu: Pag-iilaw ng Smart Control
NexArdu: Pag-iilaw ng Smart Control

Update

Kung nakabuo ng parehong pag-andar gamit ang Home Assistant. Nag-aalok ang Home Assistant ng napakalawak na hanay ng mga posibilidad. Mahahanap mo rito ang pag-unlad.

Isang sketch upang makontrol ang pag-iilaw ng bahay sa isang matalinong pamamaraan sa pamamagitan ng 433.92MHz (aka 433MHz) na mga wireless X10 na tulad ng mga aparato, hal. Nexa.

Background

Pagdating sa pandekorasyon na pag-iilaw, nakakapagod sa akin na tuwing ikalawa o pangatlong linggo kailangan kong ayusin ang mga timer na nakabukas ang mga ilaw dahil sa paglilipat ng solar hour patungkol sa CET. Sa parehong oras, ilang gabi natutulog kami nang mas maaga kaysa sa iba. Dahil dito, minsan ang mga ilaw ay pumapatay alinman sa "huli na" o "masyadong maaga". Hinahamon ako ng nasa itaas na isipin: Nais kong ang pandekorasyon na ilaw upang laging nakabukas sa parehong antas ng ambient light at pagkatapos ay patayin sa isang tiyak na oras depende sa kung gising tayo o hindi.

Layunin

Ang itinuturo na ito ay nagsasamantala sa mga posibilidad ng mga wireless na kinokontrol na aparato tulad ng System Nexa na tumatakbo sa dalas ng 433.92MHz. Dito ay maitatampok natin:

  1. Na-automate ang kontrol sa pag-iilaw
  2. Kontrol sa web

Pagkontrol sa web. Panloob kumpara sa Panlabas na Web server

Sinasamantala ng Panloob na Server ang posibilidad ng Arduino Ethernet na kalasag upang magbigay ng isang web server. Dadalo ang web server sa mga tawag sa web client upang suriin at makipag-ugnay sa Arduino. Ito ay isang diretso na pasulong na solusyon na may limitadong pagpapaandar; ang mga posibilidad ng pagpapahusay ng web server code ay limitado ng memorya ng Arduino. Kinakailangan ng Panlabas na Server ang pag-setup ng isang panlabas na web server ng PHP. Ang setup na ito ay mas kumplikado at hindi suportado ng tutorial na ito subalit, ang PHP code / pahina upang suriin at patnubayan ang Arduino ay binibigyan ng pangunahing pagpapaandar. Ang mga posibilidad ng pagpapahusay ng web server ay, sa kasong ito, limitado ng panlabas na web server.

Bill ng mga materyales

Upang lubos na samantalahin ang mga posibilidad na ibibigay ng sketch na ito, kailangan mo:

  1. Isang Arduino Uno (nasubukan sa R3)
  2. Isang kalasag na Arduino Ethernet
  3. Isang hanay ng Nexa o katulad na pagpapatakbo sa 433.92MHz
  4. Isang sensor ng PIR (Passive InfraRed) na tumatakbo sa 433.92MHz
  5. Isang resistor ng 10KOhms
  6. Isang LDR
  7. Isang RTC DS3231 (panlabas na bersyon ng server lamang)
  8. Isang 433.92MHz transmitter: XY-FST
  9. Isang tatanggap ng 433.92MHz: MX-JS-05V

Ang minimum na inirekomenda ay:

  1. Isang Arduino Uno (nasubukan sa R3)
  2. Isang hanay ng Nexa o katulad na pagpapatakbo sa 433.92MHz
  3. Isang resistor ng 10KOhms
  4. Isang LDR
  5. Isang 433.92MHz transmitter: XY-FST

(Ang pagkukulang ng kalasag ng Ethernet ay nangangailangan ng mga pagbabago ng sketch na hindi ibinigay sa loob ng itinuturo na ito)

Ang Nexa Logic. Isang maikling paglalarawan

Nalalaman ng tatanggap ng Nexa ang remote control ID at button ID. Sa madaling salita, ang bawat remote ay may numero ng nagpadala at ang bawat pares ng on / off na pindutan ay mayroong button ID. Kailangang matutunan ng tatanggap ang mga code na iyon. Ang ilang mga dokumento ng Nexa ay nagsasaad na ang isang tatanggap ay maaaring ipares na may hanggang anim na remote. Ang mga parameter ng Nexa:

  • SenderID: ID ng remote control
  • ButtonID: numero ng pares ng pindutan (on / off). Nagsisimula ito sa numero 0
  • Pangkat: oo / hindi (aka mga pindutan na "Lahat ng off / on")
  • Command: on / off

Maituturo na Mga Hakbang. Tandaan

Ang iba't ibang Mga Hakbang na inilarawan dito ay upang mag-alok ng dalawang magkakaibang lasa sa kung paano makamit ang layunin. Huwag mag-atubiling piliin ang isa sa iyong kaginhawaan. Narito ang index:

Hakbang # 1: Ang circuit

Hakbang # 2: Nexardu na may Panloob na Web Server (na nagtatampok ng NTP)

Hakbang # 3: Nexardu kasama ang Panlabas na Server

Hakbang # 4: Mahalagang Impormasyon

Hakbang 1: Ang Circuit…

Ang Circuit…
Ang Circuit…

Wire ang magkakaibang mga bahagi tulad ng ipinakita sa larawan.

Arduino pin # 8 sa Data pin sa RX (receiver) module Modul Arrdino # 2 sa Data pin sa RX (receiver) module Module Arrdino # 7 sa Data pin sa TX (nagpadala) module Arrdino pin A0 sa LDR

Pagsasaayos ng RTC. Kailangan lamang sa pagsasaayos ng Panlabas na Server. Angrduino pin A4 sa SDA pin sa module ng RTCrduino pin A5 hanggang SCL pin sa module ng RTC

Hakbang 2: Nexardu Sa Panloob na Web Server (nagtatampok ng NTP)

Ang Mga Aklatan

Ginagamit ng code na ito ang maraming mga aklatan. Karamihan sa kanila ay matatagpuan sa pamamagitan ng "Library Manager" ng Arduino IDE. Hindi ba dapat makakita ka ng nakalistang silid aklatan, mangyaring google.

Wire.hSPI.h - Kinakailangan ng Ethernet ShieldNexaCtrl.h - Nexa aparato controller Ethernet.h - Upang paganahin at maitampok ang Ethernet shieldRCSwitch.h - Kinakailangan para sa PIRTime.h - Kinakailangan para sa RTCTimeAlarms.h - Pamamahala ng alarm ng orasEthernetUdp.h - Kinakailangan para sa NTP client

Ang Sketch

Sinasamantala ng code sa ibaba ang posibilidad ng paggamit ng Arduino UNO board hindi lamang bilang ibig sabihin upang makontrol ang mga aparato ng Nexa ngunit nagtatampok din ito ng isang panloob na Web server. Ang isang pangungusap na idaragdag ay ang module ng RTC (Real Time Clock) na awtomatikong nababagay sa pamamagitan ng NTP (Network Time Protocol).

Bago mo i-upload ang code sa Arduino, maaaring kailanganin mong i-configure ang sumusunod:

  • SenderId: kailangan mo munang isimhot ang SenderId, tingnan sa ibaba
  • PIR_id: kailangan mo munang isimhot ang SenderId, tingnan sa ibaba
  • LAN IP Address: magtakda ng isang IP ng iyong LAN sa iyong kalasag na Ethernet Arduino. Default na halaga: 192.168.1.99
  • NTP Server: Hindi mahigpit na kinakailangan ngunit maaaring maging mahusay na mag-google para sa mga NTP server sa iyong kalapit. Default na halaga: 79.136.86.176
  • Ang code ay nababagay para sa time zone ng CET. Ayusin ang halagang ito -kung kinakailangan, sa iyong time zone upang maipakita ang tamang oras (NTP)

Ang pag-sniff ng mga Nexa code

Para sa mga ito kailangan mong mag-wire - sa pinakamaliit, ang bahagi ng RX sa Arduino tulad ng ipinakita sa circuit.

Hanapin sa ibaba ng Nexa_OK_3_RX.ino sketch na, sa oras ng pagsulat nito, ay katugma sa mga aparatong Nexa na NEYCT-705 at PET-910.

Ang mga hakbang na susundan ay:

  1. Ipares ang Nexa receiver gamit ang remote control.
  2. I-load ang Nexa_OK_3_RX.ino papunta sa Arduino at buksan ang "Serial Monitor".
  3. Pindutin ang pindutan ng remote control na kumokontrol sa Nexa receiver.
  4. Itala ang "RemoteID" at "ButtonID".
  5. Itakda ang mga numerong ito sa ilalim ng SenderID at ButtonID sa variable na deklarasyon ng nakaraang sketch.

Upang mabasa ang Id ng PIR, gamitin lamang ang parehong sketch na ito (Nexa_OK_3_RX.ino) at basahin ang halaga sa "Serial Monitor" kapag nakita ng PIR ang paggalaw.

Hakbang 3: Nexardu Sa Panlabas na Server

Ang Mga Aklatan

Ginagamit ng code na ito ang maraming mga aklatan. Karamihan sa mga mahahanap sa pamamagitan ng "Library Manager" ng Arduino IDE. Kung hindi ka makahanap ng nakalistang silid aklatan, mangyaring google.

Wire.hRTClib. PIRTime.

Ang Sketch

Nagtatampok ang sketch sa ibaba ng isa pang lasa ng parehong bagay, sa oras na ito ay binibigyan ng kapangyarihan ang mga posibilidad na maibibigay ng isang panlabas na web server. Tulad ng nabanggit na sa pagpapakilala, ang Panlabas na Server ay nangangailangan ng pag-set up ng isang panlabas na web server ng PHP. Ang setup na ito ay mas kumplikado at hindi suportado ng tutorial na ito subalit, ang PHP code / pahina upang suriin at patnubayan ang Arduino ay binibigyan ng pangunahing pagpapaandar.

Bago mo i-upload ang code sa Arduino, maaaring kailanganin mong i-configure ang sumusunod:

  • SenderId: kailangan mo munang isimhot ang SenderId, tingnan ang Pag-sniff ng mga Nexa code sa naunang hakbang
  • PIR_id: kailangan mo munang isimhot ang SenderId, tingnan ang Pag-sniff ng mga Nexa code sa naunang hakbang
  • LAN IP Address: magtakda ng isang IP ng iyong LAN sa iyong kalasag na Ethernet Arduino. Default na halaga: 192.168.1.99

Para sa pamamaraan ng pag-sniff ng Nexa code, mangyaring sumangguni sa Hakbang # 1.

Komplimentaryong file

I-upload ang naka-attach na nexardu4.txt file sa iyong panlabas na PHP server at palitan ang pangalan nito sa nexardu4.php

Itinakda ang oras ng RTC

Upang maitakda ang oras / petsa sa RTC Gumagamit ako ng sketch SetTime na magkakasama sa library ng DS1307RTC.

Hakbang 4: Mahalagang Impormasyon

Mahalagang impormasyon
Mahalagang impormasyon
Mahalagang impormasyon
Mahalagang impormasyon

Magandang malaman ang pag-uugali

  1. Kapag ang Arduino ay nasa ilalim ng "Banayad na Awtomatikong Pagkontrol", maaari itong mapunta sa apat na magkakaibang estado na nauugnay sa pag-iilaw sa paligid at sa oras ng araw:

    1. Gumising: Naghihintay si Arduino sa darating na gabi.
    2. Aktibo: Ang gabi ay dumating at ang Arduino ay nakabukas ang mga ilaw.
    3. Somnolent: ON ang mga ilaw ngunit darating ang oras upang patayin ang mga ito. Nagsisimula ito sa "time_to_turn_off - PIR_time" iyon ay, kung ang time_to_turn_off ay nakatakda sa 22:30 at ang PIR_time ay itinakda sa 20 minuto, pagkatapos ay ang Arduino ay papasok sa medyo katangi-tanging estado sa 22:10.
    4. Dormant: Ang gabi ay dumadaan, pinatay ni Arduino ang mga ilaw OFF at hinihintay ni Arduino ang madaling araw na maging gising.
  2. Palaging nakikinig ang Arduino ng mga signal na ipinadala ng mga remote control. Nagtatampok ito ng posibilidad ng pagpapakita ng estado ng mga ilaw (on / off) sa web kapag ginamit ang remote control.
  3. Habang ang Arduino ay gising na sinusubukan nitong i-OFF ang mga ilaw sa lahat ng oras samakatuwid, ON signal na ipinadala ng isang remonte control upang buksan ang mga ilaw ay maaaring makuha ng Arduino. Kung mangyari ito, susubukan ng Arduino na patayin muli ang mga ilaw.
  4. Habang ang Arduino ay aktibo sinusubukan nitong makuha ang mga ilaw na ON sa lahat ng oras samakatuwid, ang mga OFF signal na ipinadala ng isang remote control upang patayin ang mga ilaw ay maaaring makuha ng Arduino. Kung mangyari ito, susubukan ng Arduino na muling buksan ang mga ilaw.
  5. Sa somnolent state ang mga ilaw ay maaaring i-on / i-off gamit ang isang remote control. Ang Arduino ay hindi makikipag-counteract.
  6. Sa somnolent na estado ang PIR countdown ay magsisimulang mag-reset mula sa "time_to_turn_off - PIR_time" at sa gayon ang time_to_turn_off ay pinalawak ng 20 minuto tuwing nakakakita ang PIR ng paggalaw. Isang "PIR Signal na Napansin!" ipapakita ang mensahe sa web browser kapag nangyari ito.
  7. Habang ang Arduino ay hindi natutulog na ilaw ay maaaring i-on at i-off sa pamamagitan ng remote control. Ang Arduino ay hindi makikipag-counteract.
  8. Ang isang pag-reset o cycle ng kuryente ng Arduino ay magdadala sa ito sa aktibong mode. Nangangahulugan ito na kung ang Arduino ay na-reset pagkatapos ng time_turn_off pagkatapos ay bubuksan ng Arduino ang mga ilaw. Upang maiwasan ito ang Arduino ay kailangang dalhin sa manu-manong mode (lagyan ng tsek ang "Banayad na Awtomatikong Kontrol") at maghintay hanggang sa umaga upang maibalik ito sa "Banayad na Awtomatikong Pagkontrol".
  9. Tulad ng nabanggit, naghihintay si Arduino para sa madaling araw upang maging aktibo muli. Dahil dito, maaaring maloko ang system sa pamamagitan ng pagdidirekta ng isang sapat na malakas na ilaw patungo sa light sensor na upang malampasan ang "minimum na ilaw" threshold. Kung mangyari ito, kung gayon ang Arduino ay magbabago sa aktibong estado.
  10. Ang halaga ng Tolerance ay may mataas na kahalagahan upang maiwasan ang pag-flap at pag-off ng system sa paligid ng halaga ng threshold Minimum Luminosity. Ang mga ilaw na ilaw, dahil sa kanilang pagkutitap at kanilang mataas na pagtugon, ay maaaring maging mapagkukunan ng flaping pag-uugali. Taasan ang halaga ng pagpapaubaya kung nakakaranas ka ng problemang ito. Gumagamit ako ng halaga 7.

Mabuting malaman tungkol sa code

  1. Tulad ng mapapansin mo, ang code ay napakalaki at gumagamit ng isang malaking halaga ng mga aklatan. Nakokompromiso nito ang dami ng kinakailangang libreng memorya para sa tambak. Napansin ko ang hindi matatag na pag-uugali sa nakaraan na ang sistema ay nahihinto, lalo na pagkatapos ng mga tawag sa web. Samakatuwid, ang pinakamalaking hamon na mayroon ako ay upang limitahan ang laki nito at ang paggamit ng magkakaibang mga variable upang gawing matatag ang system.
  2. Ang code na nagsasamantala sa panloob na server na ginamit ko sa bahay, ay tumatakbo ngayon mula noong Pebrero 2016 nang walang problema.
  3. Naglagay ako ng malalaking pagsisikap sa pagpapayaman ng code sa mga paliwanag. Samantalahin ito upang i-play na may magkakaibang mga parameter tulad ng bilang ng mga pagpapadala ng Nexa code bawat pagsabog, oras ng pag-sync ng NTP, atbp.
  4. Hindi nagtatampok ang code ng pag-save ng daylight. Kailangan itong ayusin sa pamamagitan ng web browser kapag nalalapat ito.

Ang ilang mga puntong dapat isaalang-alang

  1. Idagdag ang mga antena sa mga module ng TX at RX radio frequency (RF). Makakatipid sa iyo ng oras sa pagreklamo tungkol sa dalawang pangunahing punto: katatagan at saklaw ng signal ng RF. Gumagamit ako ng isang 50Ohms wire na 17.28cm (6.80in) ang haba.
  2. Ang intructable na ito ay maaaring gumana sa ibang mga system ng automation ng bahay na tulad din ng Proove, halimbawa. Ang isa sa maraming mga kundisyon upang matupad ay ang pagpapatakbo ng mga ito sa dalas ng 433.92MHz.
  3. Ang isang malaking sakit ng ulo kay Arduino ay upang harapin ang mga aklatan na maaaring ma-update sa paglipas ng panahon at biglang hindi magkatugma sa iyong "lumang" sketch; ang parehong problema ay maaaring itaas kapag ina-upgrade ang iyong Arduino IDE. Mag-ingat na ito ang maaaring maging kaso natin dito-oo, ang problema ko rin.
  4. Ang maramihang kasabay na mga kliyente sa web na may iba't ibang mga light mode ay lumilikha ng isang "kumukurap" na estado.

Screenshot

Sa carousel ng larawan sa itaas, mahahanap mo ang isang screenshot ng web page na ipinakita kapag tinawag mo ang Arduino sa pamamagitan ng iyong web browser. Dahil sa default na pagsasaayos ng IP ng code, ang URL ay magiging

Ang isang aspeto na maaaring maging paksa ng pagpapabuti ay ang pagpoposisyon ng pindutang "isumite" dahil magkakabisa sa lahat ng mga kahon ng pag-input at hindi lamang sa "Magaan na Awtomatikong Kontrol" na maaaring iniisip ng isa. Sa madaling salita, kung nais mong baguhin ang anuman sa mga posibleng halaga, palaging kailangan mong pindutin ang pindutang "isumite".

Detalyado / Advanced na dokumentasyon

Inilakip ko ang mga sumusunod na file upang matulungan ka nilang maunawaan ang buong solusyon, lalo na para sa pag-troubleshoot at pagpapabuti.

Ang Arduino_NexaControl_IS.pdf ay nagbibigay ng dokumentasyon sa solusyon ng Panloob na Server.

Ang Arduino_NexaControl_ES.pdf ay nagbibigay ng dokumentasyon sa solusyon ng Panlabas na Server.

Mga panlabas na sanggunian

Nexa System (Suweko)

Hakbang 5: Tapos na

Tapos na!
Tapos na!

Doon natapos mo na ang lahat at kumilos!

Ang kaso ng Arduino Uno ay matatagpuan sa Thingiverse bilang "Arduino Uno Rev3 na may Ethernet Shield XL-case".

Inirerekumendang: