Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Sa Instructable na ito, ipapakita ko sa iyo kung paano lumikha ng isang web interface upang makontrol ang mga outlet sa iyong bahay gamit ang isang Raspberry Pi. Pinili kong isulat ang proyektong ito nang makita ko ang paligsahan ng Sensors, at dahil ang proyektong ito ay nagsasangkot ng paggamit ng isang sensor upang basahin ang mga code mula sa remote na ibinigay sa mga outlet na iyong binili, naisip kong ang proyektong ito ay magiging perpektong akma.
Magtatrabaho ako upang mapanatili itong kasing mataas ng antas hangga't maaari at magbigay ng code upang magawa itong lahat. Para sa inyong lahat na mga code unggoy doon, huwag mag-atubiling maghukay sa paligid ng code, at suriin ako sa mga komento! Palagi akong naghahanap upang mapabuti. Mayroong medyo nangyayari sa ito, kaya kung mayroon kang mga katanungan sa anumang hakbang, mangyaring mag-iwan ng komento upang ma-update ko ang Makatuturo sa mga kinakailangang detalye.
Gumagamit ang proyektong ito ng mga outlet ng kontrolado ng dalas ng radyo sa 433MHz na kaisa ng isang RF transmitter na konektado sa iyong raspberry pi. Ang mga outlet ay may mga remote na maaaring i-on / i-off ang mga outlet, ngunit hindi iyon masaya! Sa halip ay gagamit kami ng isang web server na tumatakbo sa raspberry pi na nagbibigay-daan sa sinumang nakakonekta sa network na i-on o i-off ang ilang mga saksakan. Ang isang web front-end sa proyektong ito ay mainam dahil ang anumang aparato na nakakonekta sa web sa iyong network ay maaaring magamit bilang iyong remote.
Ito ay isang proyekto na pinangarap kong makumpleto sa loob ng maraming taon, at kahit na may puwang pa para sa mga karagdagan, ang proyekto na inilarawan tulad ng sumusunod ay isang functional system.
Mga gamit
- Isang Raspberry Pi (Gumamit ako ng isang RPi 3 Model B +)
- Isang 433MHz Transmitter at Receiver (Ginamit ko ang isang ito)
- 433MHz Outlets (Ginamit ko ito)
- Mga Jumpers ng Babae-sa-Babae (Binili ko ang bungkos na ito)
- Isang computer o handheld device na may kakayahang mag-access sa internet
Hakbang 1: I-set up ang Iyong Raspberry Pi
Magsimula sa pamamagitan ng pag-install ng pinakabagong bersyon ng Raspbian sa iyong bagong Raspberry Pi. Kung balak mong gumamit ng isang mayroon nang Pi (na maaari mong ganap na gawin), ang kailangan mo lang ay tiyakin na mayroon kang Python 3 sa iyong Pi, dahil iyan ang isinulat sa lahat ng pinagmulang code na ibinigay ko. Upang magawa ito, uri
sawa3
sa linya ng utos. Kung mayroon kang Python 3, dapat mong makita na bukas ang terminal ng sawa. Lumabas sa terminal sa pamamagitan ng pagsasara o pagta-type
exit ()
Sa sandaling nakumpirma mo ito, kailangan mong mag-install ng prasko sa iyong Pi. Pinapayagan kami ng Flask na lumikha ng aming web server. Mula sa linya ng utos ng Pi, uri
sudo pip3 install flask
Kung sakaling wala kang naka-install na pip sa iyong Pi, kakailanganin mong mag-type
sudo apt-get install python3-pip
Mas gusto kong bumuo sa aking Raspberry Pi mula sa kaginhawaan ng aking desktop computer. Kung mas gusto mo rin ang pagpipiliang ito, kailangan mong mag-install ng ilang uri ng kapaligiran sa SSH sa Pi. Gagana ang PuTTY, ngunit mas gusto ko na magkaroon ng isang GUI (grapiko na interface ng gumagamit), na nagpapahiwatig na direkta kang nasa Pi. Para sa pagpipiliang GUI, gugustuhin mong i-install ang VNC Viewer sa computer na plano mong gumana. Mayroon ding mga setting na kakailanganin mong ayusin sa iyong Pi. Ang mga tagubilin para sa pagbabago ng mga setting ay matatagpuan dito.
Hakbang 2: Pag-hook ng Iyong Hardware
Sa puntong ito, oras na upang gawin ang lahat ng mga pisikal na koneksyon na kakailanganin mong gawin bilang paghahanda sa pagse-set up ng source code para sa proyektong ito. Ikokonekta mo ang mga pin ng transmiter at ang tatanggap sa mga GPIO pin ng iyong Pi. Gusto mong sanggunian sa relihiyon ang pinout diagram ng mga GPIO pin. Upang magawa ito, buksan ang terminal sa iyong Pi at i-type
pinout
Ang mga sumusunod ay ang mga koneksyon na ginawa ko. Maaari kang magkaroon ng ibang pagsasaayos kung bumili ka ng iba't ibang mga hardware ng transmitter / receiver kaysa sa ipinahiwatig ko sa pagpapakilala. Kung magpasya kang pumili ng iba't ibang mga numero ng pin kaysa sa mga isinasaad ko sa ibaba, huwag kang matakot! Kapag na-download mo ang source code, baguhin lamang ang mga numero ng pin kung kinakailangan sa RxTx.py file.
Tumatanggap (malaking maliit na tilad):
- GND - Anumang itinalagang ground pin
- DATA - Pin 11
- DER - Hindi konektado
- + 5V - Anumang itinalagang + 5V pin
- ------
- + 5V - Anumang itinalagang + 5V pin
- GND - Anumang itinalagang ground pin
- GND - Hindi konektado
- ANT - Hindi nakakonekta
Tandaan: Maaari mong ikonekta ang isang antena kung kinakailangan, ngunit nalaman kong hindi ko kailangan. Ang maliit na maliit na tilad na ito ay nakakagulat na sensitibo at matapat na nakakakita ng mga signal sa hindi bababa sa 50ft mula sa kung saan ito nakaupo at dumaan sa hindi bababa sa dalawang pader.
Transmitter:
- P - Ang 3.3V pin
- DA - Pin 7
- G - Anumang itinalagang ground pin
- AN - hindi konektado
Tandaan: Muli, maaari mong ikonekta ang isang antena sa transmitter kung kinakailangan, ngunit nalaman kong hindi ko na kailangan. Ang saklaw ay higit pa sa sapat (50 + ft).
Hakbang 3: Pagdaragdag ng Code
Ito ang bahagi kung saan ginugol ko ang karamihan ng aking oras noong binuo ko ang proyektong ito. Sinusubukan kong magkomento hangga't maaari, ngunit malamang na nag-iwan ako ng mga puwang na maaaring mangailangan ng paliwanag kung ang sinuman sa iyo ay gumugol ng oras sa pagsubok na maunawaan ito. Kung nangyari ito sa iyo, mangyaring mag-iwan ng komento!
Ang mga wikang kasangkot dito ay:
- Sawa
- CSS
- Javascript
- HTML
- JQuery / Ajax
Ang Python ay ginagamit sa flask server at sa
RxTx.py
file, na humahawak sa paghahatid ng code at resibo. Ginagamit ang CSS sa pagbuo ng istilo ng webpage. Sino ang gusto ng isang boring website !? Ginagamit ang Javascript sa alinman sa paghawak ng kaganapan (pagtulak sa isang pindutan, atbp.). Ang HTML ay ang pangunahing bloke ng pagbuo ng webpage. Sa wakas, ang JQuery / Ajax ay ginagamit upang makipag-usap sa pagitan ng webpage at ng backend ng Python.
Kung ang lahat ng mga wikang ito ay nakakatakot, huwag mag-alala! Alam ko lamang ang pagpunta ni Python sa proyektong ito, na kung saan ay naging wika na nagsasangkot ng hindi gaanong halaga ng pag-coding, pumunta sa numero … Sapat na sabihin, dalhin ang iyong oras sa pagsusuklay sa pamamagitan ng code kung iyon ang pinili mong gawin. Kung ayaw mo, hindi mo na kailangan!
Ang sumusunod ay ang istraktura ng direktoryo na pinili kong gamitin sa webpage na ito. Ang naka-zip na folder na naka-attach sa hakbang na ito ay naglalaman ng lahat ng source code sa sumusunod na istraktura.
Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> webpage-- static ----- favicon.ico ----- style.css-- template ----- index.html ----- iskedyul.html-- app.py-- data.file
Maaari mong ilagay ang folder ng Outlet Switch saanman sa iyong Pi. Kapag handa ka nang patakbuhin ang iyong web server, buksan ang terminal sa iyong Pi, at
cd
(baguhin ang direktoryo) sa direktoryo ng webpage. Pagkatapos mag-type
python3 app.py
papasok sa terminal. Kung walang anumang mga error, dapat kang maging mahusay na pumunta!
P. S. Mangyaring maging mapagpasensya kung nasagasaan ka ng anumang mga bug. Sinubukan kong kalabasa lahat sa kanila bago mag-upload.
Hakbang 4: Bigyan Ito ng isang shot
Ngayon na pinapatakbo mo ang code, maaari kang makakuha ng isang pakiramdam para sa web interface sa iyong mga kamay. Ang kontrol ng system ay napaka-simple:
- Maaari kang magdagdag ng maraming mga outlet hangga't gusto mo gamit ang web interface.
- Ang pagtanggal ay kasing simple ng pag-click sa pag-edit, pagpili ng mga outlet na nais mong tanggalin, at pag-click sa tanggalin.
Ipinapakita ng video sa itaas sa YouTube kung paano talaga pumunta tungkol sa pagdaragdag ng isang bagong outlet sa iyong listahan. Upang buod kung ano ang ipinapakita nito:
- Una ipasok ang pamagat ng outlet sa patlang ng Pamagat
- Mag-click o pindutin ang labas ng patlang ng Pamagat upang payagan ang programa na suriin na ang pamagat ay wala na. Hindi ka maaaring magkaroon ng mga pamagat sa parehong pangalan
- Kapag napatunayan, ang mga ON Code at OFF Code na mga pindutan ay pinagana.
- Pindutin nang matagal ang pindutang ON sa iyong ibinigay na remote at mabilis na i-click ang pindutang ON Code sa interface. Hawakan ang pindutan sa remote hanggang ang iyong binary code ay mapunan ang katabing patlang.
- Ulitin ang naunang hakbang para sa OFF Code.
- Mag-click sa OK, at handa ka na ngayong ilipat ang outlet na ito!
Tulad ng nabanggit sa pagpapakilala, ang proyekto ay hindi 100% kumpleto para sa aking sariling mga gamit. Ang pinakamalaking sangkap na hindi ko pa nakukumpleto at naipatupad ay ang kakayahan sa pag-iiskedyul. Plano kong payagan ang gumagamit na bumuo ng isang iskedyul na magpapahintulot sa mga outlet na buksan at patayin sa mga itinalagang oras na awtomatiko.
Hakbang 5: Pag-debug at ang RxTx.py File
Ang tanging kilalang limitasyon ng system ay mayroong posibilidad na hindi magkatugma sa mga outlet ng iba't ibang vendor. Ang naka-on at naka-off na mga mensahe ng code ay 25 piraso para sa aking system, at kung ang isang system ay may iba't ibang haba ng mensahe, hindi ito kaagad katugma sa proyektong ito. Kung eksaktong nasunod mo ang mga tagubilin at nagkakaroon ka pa rin ng mga isyu sa paggana nito, ang sumusunod ay ang pinakamahusay na paraan upang mai-debug ang problema.
-
Tiyaking mayroon kang naka-install na matplotlib sa iyong Pi. Maaari mo itong gawin sa pamamagitan ng pag-type sa sumusunod sa terminal ng Pi:
-
sawa3
-
i-import ang matplotlib
- Kung nakatanggap ka ng isang error, kailangan mong mag-install ng matplotlib.
-
Lumabas sa shell ng sawa gamit ang
exit ()
-
-
Upang mai-install ang matplotlib, i-type
sudo pip3 i-install ang matplotlib
- papasok sa terminal
- I-download ang nakalakip na test.py file, at ilagay ito sa tabi ng RxTx.py file sa iyong Pi
- Buksan ang terminal ng sawa at baguhin ang direktoryo sa folder ng comm.
-
Uri
pagsubok sa python3.py
- Kapag sinabing "** Started Recording **," pindutin nang matagal ang iyong ON o OFF button sa iyong remote hanggang matapos ang recording.
- Maglo-load ang programa ng isang matplotlib na pigura na mukhang katulad sa itaas. Mag-zoom in hanggang sa makita mo ang paulit-ulit na signal tulad ng ipinakita sa mga larawan sa itaas.
- Bilangin ang kabuuang lohikal na 1 at lohikal na 0 para sa bawat mensahe, kung saan ang isang mensahe ay isang pag-ulit ng paulit-ulit na signal na nakikita sa itaas. Kung ang kabuuan ay 25, ang RxTx.py file ay malamang na walang kasalanan. Kung nakatagpo ka ng isang bagay bukod sa 25, tiyaking magbigay ng puna sa ibaba, at ibabalik ko ang file na RxTx.py upang maging mas bukas (o huwag mag-atubiling subukan ito.)
Paano kung hindi ako nakakakita ng paulit-ulit na signal?
Kung hindi ka nakakakita ng paulit-ulit na signal, mali ang isa sa dalawang bagay. Una, suriin na ang lahat ng iyong koneksyon sa jumper wire ay maayos na ginawa. Kung ang lahat ay mukhang maganda, maaari kang magkaroon ng isang hindi magandang tatanggap. Nabili mo ba ang iminungkahi ko? Kapag binili ko ang aking unang chip ng tatanggap, napakaingay nito. Kaya maingay hindi ako makakuha ng isang malinaw na signal. Ibinalik ko pagkatapos ang chip na iyon at kinuha ang na-link ko, at hindi ito maaaring gumana nang mas mahusay.
Hakbang 6: Mag-enjoy
Alam mong may kakayahang mag-on / off ng mga outlet mula sa iyong telepono, tablet, computer, o iba pang aparato na pinagana ng web! Ipaalam sa akin kung ano ang palagay mo sa mga komento!