Cuprins:

Cum să controlați prizele folosind un Raspberry Pi: 6 pași
Cum să controlați prizele folosind un Raspberry Pi: 6 pași

Video: Cum să controlați prizele folosind un Raspberry Pi: 6 pași

Video: Cum să controlați prizele folosind un Raspberry Pi: 6 pași
Video: Cum sa ai un N.A.S cu doar 150 LEI 2024, Iulie
Anonim
Cum să controlați prizele folosind un Raspberry Pi
Cum să controlați prizele folosind un Raspberry Pi
Cum să controlați prizele folosind un Raspberry Pi
Cum să controlați prizele folosind un Raspberry Pi
Cum să controlați prizele folosind un Raspberry Pi
Cum să controlați prizele folosind un Raspberry Pi

În acest Instructable, vă voi arăta cum să creați o interfață web pentru a controla prizele din casa dvs. utilizând un Raspberry Pi. Am ales să scriu acest proiect când am văzut concursul de senzori și, deoarece acest proiect implică utilizarea unui senzor pentru a citi codurile de pe telecomanda furnizată cu prizele pe care le achiziționați, m-am gândit că acest proiect ar fi potrivirea perfectă.

Voi lucra pentru a menține acest nivel cât mai înalt posibil și pentru a oferi cod pentru ca totul să funcționeze. Pentru voi toți maimuțele de cod de acolo, simțiți-vă liber să săpați în cod și să mă examinați în comentarii! Întotdeauna caut să mă îmbunătățesc. Se întâmplă destul de puțin în acest sens, deci dacă aveți întrebări cu privire la orice pas, vă rugăm să lăsați un comentariu, astfel încât să pot actualiza instructabilul cu detaliile necesare.

Acest proiect folosește prize de frecvență radio controlate la 433 MHz cuplate cu un transmițător RF conectat la raspberry pi. Prinderile vin cu telecomenzi care pot activa / dezactiva prizele, dar nu este deloc distractiv! În schimb, vom folosi un server web care rulează pe raspberry pi care permite oricui este conectat la rețea să activeze sau să dezactiveze anumite prize. Un front-end web pentru acest proiect este ideal, deoarece orice dispozitiv conectat la web din rețeaua dvs. poate fi utilizat ca telecomandă.

Acesta este un proiect pe care am visat să-l finalizez de ani de zile și, deși există încă loc pentru completări, proiectul descris în continuare este un sistem funcțional.

Provizii

  • Un Raspberry Pi (am folosit un RPi 3 Model B +)
  • Un transmițător și un receptor de 433 MHz (l-am folosit pe acesta)
  • Prize de 433 MHz (am folosit asta)
  • Jumperi de la o femeie la alta (am cumpărat această grămadă)
  • Un computer sau dispozitiv portabil capabil să acceseze internetul

Pasul 1: configurați Raspberry Pi

Configurați-vă Raspberry Pi
Configurați-vă Raspberry Pi

Începeți instalând cea mai recentă versiune de Raspbian pe noul dvs. Raspberry Pi. Dacă intenționați să utilizați un Pi existent (pe care îl puteți face în totalitate), tot ce trebuie este să vă asigurați că aveți Python 3 pe Pi, întrucât în acest text este scris tot codul sursă pe care îl furnizez. Pentru a face acest lucru, tip

python3

în linia de comandă. Dacă aveți Python 3, ar trebui să vedeți terminalul Python deschis. Ieșiți din terminal închizând sau tastând

Ieșire()

După ce ați confirmat acest lucru, trebuie să instalați balonul pe Pi. Flask ne permite să creăm serverul nostru web. Din linia de comandă Pi, tastați

sudo pip3 instalează balonul

În cazul în care nu aveți pip instalat pe Pi, va trebui să tastați

sudo apt-get install python3-pip

Prefer să dezvolt pe Raspberry Pi din confortul computerului meu desktop. Dacă preferați și voi această opțiune, trebuie să instalați un anumit mediu de SSH în Pi. PuTTY va funcționa, dar prefer să am un GUI (interfață grafică pentru utilizator), ceea ce face să pară că ești direct pe Pi. Pentru opțiunea GUI, veți dori să instalați VNC Viewer pe computerul la care intenționați să lucrați. Există, de asemenea, setări pe care va trebui să le ajustați pe Pi. Instrucțiunile pentru modificarea setărilor pot fi găsite aici.

Pasul 2: Conectarea hardware-ului

Conectarea hardware-ului dvs
Conectarea hardware-ului dvs

În acest moment, este timpul să faceți toate conexiunile fizice pe care va trebui să le faceți în pregătirea pentru configurarea codului sursă pentru acest proiect. Veți conecta pinii transmițătorului și receptorului la pinii GPIO ai dispozitivului Pi. Veți dori să faceți referință religioasă la diagrama pinout a pinilor GPIO. Pentru a face acest lucru, deschideți terminalul de pe Pi și tastați

pinout

Următoarele sunt conexiunile pe care le-am făcut. Este posibil să aveți o configurație diferită dacă ați achiziționat un dispozitiv transmițător / receptor diferit de cel indicat în introducere. Dacă decideți să alegeți numere de pin diferite de cele pe care le indic mai jos, nu vă temeți! Când descărcați codul sursă, pur și simplu modificați numerele de pin, după cum este necesar, în fișierul RxTx.py.

Receptor (cip mare):

  • GND - Orice știft desemnat
  • DATE - Pinul 11
  • DER - Nu este conectat
  • + 5V - Orice pin + 5V desemnat
  • ------
  • + 5V - Orice pin + 5V desemnat
  • GND - Orice știft desemnat
  • GND - Nu este conectat
  • ANT - Nu este conectat

Notă: Puteți conecta o antenă după cum este necesar, dar am constatat că nu este nevoie. Acest cip mic a fost surprinzător de sensibil și detectează cu fidelitate semnale la cel puțin 50 de metri de locul în care stătea și prin cel puțin doi pereți.

Transmiţător:

  • P - Pinul de 3,3V
  • DA - Pinul 7
  • G - Orice știft desemnat
  • AN - nu este conectat

Notă: Din nou, puteți conecta o antenă la transmițător după cum este necesar, dar am constatat că nu este nevoie. Gama este mai mult decât suficientă (50 + ft).

Pasul 3: Adăugarea codului

Aceasta este partea pe care mi-am petrecut-o cea mai mare parte a timpului când dezvoltam acest proiect. Încerc să comentez cât mai mult posibil, dar probabil am lăsat lacune care ar putea necesita explicații dacă vreunul dintre voi petrece timp încercând să-l înțeleagă. Dacă vi se întâmplă acest lucru, vă rugăm să lăsați un comentariu!

Limbile implicate aici sunt:

  • Piton
  • CSS
  • Javascript
  • HTML
  • JQuery / Ajax

Python este utilizat în serverul flask și în

RxTx.py

fișier, care gestionează transmiterea și primirea codului. CSS este utilizat în generarea stilului paginii web. Cine vrea un site plictisitor !? Javascript este utilizat în oricare dintre gestionarea evenimentelor (apăsarea unui buton etc.). HTML este elementul de bază al paginii web. În cele din urmă, JQuery / Ajax este utilizat pentru a comunica între pagina web și backend-ul Python.

Dacă toate aceste limbi par intimidante, nu vă faceți griji! Știam doar că Python intră în acest proiect, care s-a întâmplat să fie limbajul care a implicat cea mai mică cantitate de codare, mergeți la cifră … Este suficient să spuneți, luați-vă timpul pieptănând codul dacă așa alegeți să faceți. Dacă nu vrei, nu trebuie!

Următoarea este structura de directoare pe care am ales să o folosesc cu această pagină web. Dosarul zip atașat la acest pas conține tot codul sursă din următoarea structură.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> pagina web-- static ----- favicon.ico ----- style.css-- șabloane ----- index.html ----- schedul.html-- app.py-- data.file

Puteți pune folderul Outlet Switch oriunde pe Pi. Când sunteți gata să vă rulați serverul web, deschideți terminalul de pe Pi și

CD

(schimbați directorul) în directorul paginii web. Apoi tastați

python3 app.py

în terminal. Dacă nu au existat erori, ar trebui să fii bun să mergi!

P. S. Vă rugăm să aveți răbdare dacă întâmpinați probleme. Am încercat să le zdrobesc pe toate înainte de a le încărca.

Pasul 4: Dă-i o lovitură

Încearcă!
Încearcă!

Acum că rulați codul, puteți avea o senzație pentru interfața web la îndemână. Controlul sistemului este foarte simplu:

  • Puteți adăuga oricâte puncte de vânzare doriți folosind interfața web.
  • Ștergerea este la fel de simplă ca să faceți clic pe editați, să selectați prizele pe care doriți să le ștergeți și să faceți clic pe ștergere.

Videoclipul YouTube de mai sus demonstrează cum puteți face efectiv adăugarea unui nou outlet la listă. Pentru a rezuma ceea ce arată:

  • Mai întâi introduceți titlul de priză în câmpul Titlu
  • Faceți clic sau atingeți în afara câmpului Titlu pentru a permite programului să verifice dacă titlul nu există deja. Nu puteți avea titluri cu același nume
  • Odată validate, butoanele ON Code și OFF Code sunt activate.
  • Apăsați și mențineți apăsat butonul ON de pe telecomanda furnizată și faceți clic rapid pe butonul ON Code de pe interfață. Țineți apăsat butonul de pe telecomandă până când codul dvs. binar completează câmpul adiacent.
  • Repetați pasul anterior pentru codul OFF.
  • Faceți clic pe OK și acum sunteți gata să schimbați această priză!

După cum sa menționat în introducere, proiectul nu este complet 100% pentru propriile mele utilizări. Cea mai mare componentă pe care încă nu o am finalizat și implementat este capacitatea de planificare. Am de gând să permit utilizatorului să construiască un program care să permită pornirea și oprirea prizelor automat la orele stabilite.

Pasul 5: Depanare și fișierul RxTx.py

Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py
Depanare și fișierul RxTx.py

Singura limitare cunoscută a sistemului este că există șanse de incompatibilitate între diferitele puncte de vânzare ale furnizorilor. Mesajele de cod pornit și oprit sunt de 25 de biți pentru sistemul meu, iar dacă un sistem are o lungime diferită a mesajului, acesta nu este imediat compatibil cu acest proiect. Dacă ați urmat exact instrucțiunile și aveți în continuare probleme pentru a face acest lucru să funcționeze, următoarele ar fi cel mai bun mod de a depana problema.

  • Asigurați-vă că aveți matplotlib instalat pe Pi. Puteți face acest lucru tastând următoarele în terminalul Pi:

    • python3

    • import matplotlib

    • Dacă primiți o eroare, atunci trebuie să instalați matplotlib.
    • Ieșiți din shell-ul python folosind

      Ieșire()

  • Pentru a instala matplotlib, tastați

    sudo pip3 instalează matplotlib

  • în terminal
  • Descărcați fișierul test.py atașat și plasați-l alături de fișierul RxTx.py pe Pi
  • Deschideți terminalul Python și schimbați directorul în folderul de comunicare.
  • Tip

    python3 test.py

  • Când apare „** Început înregistrarea **”, apăsați și mențineți apăsat butonul PORNIT sau OPRIT de pe telecomandă până când se termină înregistrarea.
  • Programul va încărca o cifră matplotlib care arată similar cu cele de mai sus. Măriți până când vedeți semnalul repetitiv așa cum se arată în fotografiile de mai sus.
  • Numărați 1 logic total și 0 logic pentru fiecare mesaj, unde un mesaj reprezintă o singură iterație a semnalului repetitiv văzut mai sus. Dacă totalul este de 25, este posibil ca fișierul RxTx.py să nu aibă vina. Dacă întâlniți altceva decât 25, asigurați-vă că ați comentat mai jos și voi reconfigura fișierul RxTx.py pentru a fi mai deschis (sau nu ezitați să vă încercați).

Ce se întâmplă dacă nu văd un semnal repetitiv?

Dacă nu vedeți un semnal repetitiv, unul dintre cele două lucruri este greșit. Mai întâi, verificați dacă toate conexiunile de cablu sunt realizate corect. Dacă totul arată bine, este posibil să aveți un receptor rău. Ai cumpărat-o pe cea propusă de tine? Când mi-am cumpărat primul cip receptor, era foarte zgomotos. Deci, zgomotos, nu am putut obține un semnal clar. Am returnat apoi acel cip și l-am luat pe cel pe care l-am legat și nu ar fi putut funcționa mai bine.

Pasul 6: Bucurați-vă

Știți că aveți capacitatea de a porni / dezactiva prizele de pe telefon, tabletă, computer sau alt dispozitiv web! Spune-mi ce părere ai în comentarii!

Recomandat: