Satura rādītājs:
- Piegādes
- 1. darbība: iestatiet savu Raspberry Pi
- 2. darbība. Aparatūras pievienošana
- 3. darbība: koda pievienošana
- 4. solis: izmēģiniet to
- 5. darbība: atkļūdošana un fails RxTx.py
- 6. solis: izbaudiet
Video: Kā kontrolēt kontaktligzdas, izmantojot Raspberry Pi: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Šajā pamācībā es jums parādīšu, kā izveidot tīmekļa saskarni, lai kontrolētu kontaktligzdas jūsu mājās, izmantojot Raspberry Pi. Es izvēlējos rakstīt šo projektu, kad redzēju konkursu Sensori, un, tā kā šis projekts ietver sensora izmantošanu, lai nolasītu kodus no tālvadības pults, kas ir komplektā ar iegādātajām kontaktligzdām, es domāju, ka šis projekts būs ideāls.
Es strādāšu, lai tas būtu pēc iespējas augstāks, un sniegšu kodu, lai tas viss darbotos. Visiem kodiem pērtiķiem, kas tur atrodas, nekautrējieties kodēt un pārbaudiet mani komentāros! Es vienmēr cenšos uzlabot. Tas notiek diezgan maz, tādēļ, ja jums ir jautājumi par kādu darbību, lūdzu, atstājiet komentāru, lai es varētu atjaunināt instrukciju ar nepieciešamo informāciju.
Šajā projektā tiek izmantotas radiofrekvences kontrolētās kontaktligzdas 433MHz kopā ar RF raidītāju, kas pievienots jūsu aveņu pi. Tirdzniecības vietās ir tālvadības pults, kas var ieslēgt/izslēgt kontaktligzdas, taču tas nav jautri! Tā vietā mēs izmantosim tīmekļa serveri, kas darbojas uz aveņu pi, kas ļauj ikvienam tīklam pieslēgtam ieslēgt vai izslēgt noteiktas kontaktligzdas. Šī projekta tīmekļa priekšpuse ir ideāla, jo jebkuru ar tīklu savienotu ierīci jūsu tīklā var izmantot kā tālvadības pulti.
Šis ir projekts, par kuru esmu sapņojusi pabeigt gadiem ilgi, un, lai gan vēl ir vietas papildinājumiem, tālāk aprakstītais projekts ir funkcionāla sistēma.
Piegādes
- A Raspberry Pi (es izmantoju RPi 3 modeli B+)
- 433MHz raidītājs un uztvērējs (es izmantoju šo)
- 433 MHz izejas (es to izmantoju)
- Džemperi no sievietēm līdz sievietēm (es nopirku šo ķekaru)
- Dators vai rokas ierīce, kas spēj piekļūt internetam
1. darbība: iestatiet savu Raspberry Pi
Sāciet, instalējot jaunāko Raspbian versiju savā jaunajā Raspberry Pi. Ja jūs plānojat izmantot esošu Pi (ko jūs varat pilnībā izdarīt), viss, kas jums jādara, ir pārliecināties, vai jūsu Pi ir Python 3, jo tas ir viss manis sniegtais avota kods., tips
python3
komandrindā. Ja jums ir Python 3, jums vajadzētu redzēt atvērtu python termināli. Izejiet no termināļa, aizverot vai ierakstot
Izeja()
Kad esat to apstiprinājis, jums jāinstalē kolba savā Pi. Kolba ļauj mums izveidot savu tīmekļa serveri. No komandrindas Pi ierakstiet
sudo pip3 instalācijas kolba
Ja jūsu Pi nav instalēts pip, jums būs jāievada
sudo apt-get instalēt python3-pip
Es labprātāk attīstos savā Raspberry Pi no sava galda datora ērtībām. Ja arī jūs dodat priekšroku šai opcijai, PiH jāinstalē sava veida vide. PuTTY darbosies, bet man labāk patīk GUI (grafiskais lietotāja interfeiss), kas liek šķist, ka atrodaties tieši uz Pi. GUI opcijai vēlaties instalēt VNC Viewer datorā, ar kuru plānojat strādāt. Ir arī iestatījumi, kas jums būs jāpielāgo savā Pi. Norādījumus par iestatījumu maiņu var atrast šeit.
2. darbība. Aparatūras pievienošana
Šobrīd ir pienācis laiks izveidot visus fiziskos savienojumus, kas jums būs jādara, lai sagatavotos šī projekta avota koda iestatīšanai. Jūs savienosit raidītāja un uztvērēja tapas ar jūsu Pi GPIO tapām. Jūs vēlaties reliģiski atsaukties uz GPIO tapu pinout diagrammu. Lai to izdarītu, atveriet Pi termināli un ierakstiet
pinout
Tālāk ir norādīti savienojumi, kurus es izveidoju. Jums var būt cita konfigurācija, ja iegādājāties citu raidītāja/uztvērēja aparatūru, nekā es norādīju ievadā. Ja jūs nolemjat izvēlēties citus pin numurus, nekā tie, kurus es norādīju zemāk, nebaidieties! Lejupielādējot avota kodu, vienkārši mainiet PIN numurus pēc nepieciešamības failā RxTx.py.
Uztvērējs (liela mikroshēma):
- GND - jebkura norādīta zemējuma tapa
- DATI - 11. tapa
- DER - nav savienots
- +5 V - jebkura norādīta +5 V tapa
- ------
- +5V - jebkura norādīta +5V tapa
- GND - jebkura norādīta zemējuma tapa
- GND - nav savienots
- ANT - nav savienots
Piezīme: Jūs varat pievienot antenu pēc vajadzības, bet es atklāju, ka man tas nav nepieciešams. Šī mazā mikroshēma bija pārsteidzoši jutīga un uzticīgi uztver signālus vismaz 50 pēdu attālumā no vietas, kur tā sēdēja, un caur vismaz divām sienām.
Raidītājs:
- P - 3,3 V tapa
- DA - 7. tapa
- G - jebkura norādīta zemējuma tapa
- AN - nav savienots
Piezīme: Atkal, ja nepieciešams, varat pievienot raidītājam antenu, bet es atklāju, ka man tas nav nepieciešams. Diapazons ir vairāk nekā pietiekams (50+pēdas).
3. darbība: koda pievienošana
Šī ir daļa, kurai es veltīju lielāko daļu sava laika, izstrādājot šo projektu. Es cenšos pēc iespējas vairāk komentēt, bet, iespējams, atstāju nepilnības, kas var prasīt paskaidrojumus, ja kāds no jums tērē laiku, lai to saprastu. Ja tas notiek ar jums, lūdzu, atstājiet komentāru!
Šeit ir iesaistītas šādas valodas:
- Python
- CSS
- Javascript
- HTML
- JQuery/Ajax
Python tiek izmantots kolbas serverī un
RxTx.py
failu, kas apstrādā koda pārraidi un saņemšanu. CSS tiek izmantots, veidojot tīmekļa lapas stilu. Kurš vēlas garlaicīgu vietni !? Javascript tiek izmantots jebkurā notikumu apstrādē (nospiežot pogu utt.). HTML ir tīmekļa lapas galvenais elements. Visbeidzot, JQuery/Ajax tiek izmantots, lai sazinātos starp tīmekļa lapu un Python aizmuguri.
Ja visas šīs valodas izklausās biedējošas, neuztraucieties! Es zināju tikai to, ka Python iesaistās šajā projektā, kas bija valoda, kurā bija vismazāk kodēšanas, dodieties uz skaitli … Pietiek ar to, veltiet laiku ķemmēšanai, ja izvēlaties to darīt. Ja negribi, nevajag!
Tālāk ir norādīta direktoriju struktūra, kuru izvēlējos izmantot šajā tīmekļa vietnē. Šai darbībai pievienotā mape ar rāvējslēdzēju satur visu avota kodu šādā struktūrā.
Izejas slēdzis-> comm-- DataRW.py-- keys.py-- RxTx.py-> tīmekļa lapa-statiska ----- favicon.ico ----- style.css-- veidnes ----- index.html ----- schedule.html-- app.py-- data.file
Jūs varat ievietot mapi Outlet Switch jebkurā vietā savā Pi. Kad esat gatavs palaist savu tīmekļa serveri, atveriet termināli savā Pi un
cd
(mainīt direktoriju) uz tīmekļa lapu direktoriju. Pēc tam ierakstiet
python3 app.py
terminālī. Ja nav nekādu kļūdu, jums vajadzētu doties ceļā!
P. S. Lūdzu, esiet pacietīgs, ja rodas kādas kļūdas. Pirms augšupielādes es mēģināju tos visus saspiest.
4. solis: izmēģiniet to
Tagad, kad izmantojat kodu, varat viegli sajust tīmekļa saskarni. Sistēmas vadība ir ļoti vienkārša:
- Izmantojot tīmekļa saskarni, varat pievienot tik daudz tirdzniecības vietu, cik vēlaties.
- Dzēšana ir tik vienkārša, kā noklikšķināt uz rediģēt, atlasīt dzēšanas vietas un noklikšķināt uz dzēst.
Iepriekš minētais YouTube videoklips parāda, kā faktiski pievienot jaunu kontaktinformāciju savam sarakstam. Apkopojot, ko tas parāda:
- Vispirms laukā Nosaukums ievadiet tirdzniecības vietas nosaukumu
- Noklikšķiniet vai pieskarieties laukam Nosaukums, lai ļautu programmai pārbaudīt, vai nosaukums jau nepastāv. Jums nevar būt nosaukumi ar tādu pašu nosaukumu
- Pēc apstiprināšanas pogas ON Code un OFF Code ir iespējotas.
- Nospiediet un turiet ieslēgtā pogu tālvadības pultī un saskarnē ātri noklikšķiniet uz pogas IESLĒGT. Turiet tālvadības pults pogu, līdz jūsu binārais kods aizpilda blakus esošo lauku.
- Atkārtojiet OFF koda iepriekšējo darbību.
- Noklikšķiniet uz Labi, un tagad esat gatavs mainīt šo kontaktligzdu!
Kā minēts ievadā, projekts nav 100% pabeigts manai lietošanai. Lielākais komponents, kas man vēl jāpabeidz un jāievieš, ir plānošanas iespēja. Es plānoju ļaut lietotājam izveidot grafiku, kas ļautu automātiski ieslēgt un izslēgt kontaktligzdas noteiktā laikā.
5. darbība: atkļūdošana un fails RxTx.py
Vienīgais zināmais sistēmas ierobežojums ir dažādu pārdevēju tirdzniecības vietu nesaderības iespēja. Ieslēgšanas un izslēgšanas koda ziņojumi manai sistēmai ir 25 biti, un, ja sistēmai ir atšķirīgs ziņojuma garums, tā nav uzreiz saderīga ar šo projektu. Ja precīzi izpildījāt norādījumus un joprojām rodas problēmas, lai tas darbotos, tālāk minētais būtu labākais veids, kā novērst problēmu.
-
Pārliecinieties, vai jūsu Pi ir instalēts matplotlib. To var izdarīt, Pi terminālī ierakstot:
-
python3
-
importēt matplotlib
- Ja saņemat kļūdu, jums jāinstalē matplotlib.
-
Iziet no pitona apvalka, izmantojot
Izeja()
-
-
Lai instalētu matplotlib, ierakstiet
sudo pip3 instalējiet matplotlib
- terminālī
- Lejupielādējiet pievienoto test.py failu un novietojiet to kopā ar RxTx.py failu savā Pi
- Atveriet python termināli un mainiet direktoriju uz mapi comm.
-
Tips
python3 test.py
- Kad tiek rakstīts “** Sākta ierakstīšana **”, nospiediet un turiet tālvadības pults ieslēgšanas vai izslēgšanas pogu, līdz ieraksts beidzas.
- Programma ielādēs matplotlib figūru, kas izskatās līdzīgi iepriekš minētajam. Tuviniet, līdz redzat atkārtotu signālu, kā parādīts iepriekš redzamajos fotoattēlos.
- Katram ziņojumam saskaitiet kopējo loģisko 1 un loģisko 0, ja ziņojums ir viena atkārtotā signāla atkārtojums, kas redzams iepriekš. Ja kopsumma ir 25, iespējams, RxTx.py failā nav vainas. Ja saskaraties ar kaut ko citu, nevis 25, noteikti komentējiet zemāk, un es pārprogrammēšu RxTx.py failu, lai tas būtu atvērtāks (vai arī izmēģiniet savu roku).
Ko darīt, ja neredzu atkārtotu signālu?
Ja neredzat atkārtotu signālu, viena no divām lietām ir nepareiza. Vispirms pārbaudiet, vai visi savienojuma vadu savienojumi ir pareizi izveidoti. Ja viss izskatās labi, iespējams, jums ir slikts uztvērējs. Vai jūs iegādājāties to, ko es ieteicu? Kad es nopirku savu pirmo uztvērēja mikroshēmu, tā bija ļoti trokšņaina. Tik trokšņains, ka nevarēju iegūt skaidru signālu. Pēc tam es atgriezu šo mikroshēmu un paņēmu to, kuru es saistīju, un tā nevarēja darboties labāk.
6. solis: izbaudiet
Jūs zināt, ka varat ieslēgt/izslēgt kontaktligzdas no sava tālruņa, planšetdatora, datora vai citas ierīces, kas nodrošina tīmekli! Ļaujiet man zināt, ko jūs domājat komentāros!
Ieteicams:
DIY Kā kontrolēt servomotoru leņķi, izmantojot Visuino secības komponentu: 10 soļi
DIY Kā kontrolēt servomotoru leņķi, izmantojot Visuino secības komponentu: Šajā apmācībā mēs izmantosim Servo motoru un Arduino UNO un Visuino, lai kontrolētu servomotoru leņķi, izmantojot secības komponentu. Secības komponents ir lieliski piemērots situācijām, kad vēlamies izraisīt vairākus notikumus pēc kārtas mūsu gadījumā servomotoru dzinējs
Kontrolēt pasauli, izmantojot Google AIY: 8 soļi
Kontrolēt pasauli, izmantojot Google AIY: Google AIY Projects Voice komplekts tika piegādāts bez maksas kopā ar The MagPi 2017. gada maija drukāto izdevumu, un tagad jūs to varat iegādāties arī no daudziem elektronikas piegādātājiem. Komplekts Kā iegūt informāciju no balss
Izgaist/kontrolēt LED/spilgtumu, izmantojot potenciometru (mainīgu rezistoru) un Arduino Uno: 3 soļi
Izgaist/kontrolēt LED/spilgtumu, izmantojot potenciometru (mainīgo rezistoru) un Arduino Uno: Arduino analogās ieejas tapa ir pievienota potenciometra izejai. Tātad Arduino ADC (analogā digitālā pārveidotāja) analogā tapa nolasa izejas spriegumu ar potenciometru. Pagriežot potenciometra pogu, mainās izejas spriegums un Arduino
Kā kontrolēt spuldzi, izmantojot Arduino UNO un viena kanāla 5V cietvielu releja moduli: 3 soļi
Kā kontrolēt spuldzi, izmantojot Arduino UNO un viena kanāla 5V cietvielu releja moduli: Apraksts: Salīdzinot ar tradicionālo mehānisko releju, cietvielu relejam (SSR) ir daudz priekšrocību: tam ir ilgāks kalpošanas laiks, daudz lielāka ieslēgšanās/ izslēgts ātrums un nav trokšņa. Turklāt tam ir arī labāka izturība pret vibrācijām un mehānisku
Labojiet līdzstrāvas kontaktligzdas problēmu klēpjdatorā, izmantojot modema portu: 5 soļi
Labojiet līdzstrāvas barošanas ligzdas problēmu klēpjdatorā, izmantojot modema portu: vienreiz ar nesagraujošu metodi es fiksēju klēpjdatora strāvas ligzdu. Jā, es to novērsu. Pēc trim mēnešiem es dzirdēju troksni no klēpjdatora. Ak, mans …. atkal? Kad es raustīju savienotāju, tas dažreiz strādāja. Tāpat kā iepriekš, tas beidzot pārstāja darboties. Es