Sistem inteligent de management al casei, bazat pe zmeura pi

Sistem inteligent de management de acasă bazat pe Raspberry Pi

Internetul lucrurilor

Sistem inteligent de management de acasă bazat pe Raspberry Pi

Inspirat de ideea de a asigura viața unei case inteligente, am început să lucrez la un proiect de sistem de control al iluminării în camera de zi a casei mele. Scopul acestui proiect a fost de a crea un sistem care să permită instalarea temporizatoarelor pentru a opri iluminatul în camera de zi a casei, cu posibilitatea de a gestiona acest sistem prin intermediul internetului prin intermediul unui browser web. De asemenea, am vrut să pun în aplicare un API care ar putea fi folosit mai târziu pentru a controla programatic modul de funcționare a dispozitivului de la alte dispozitive.







Hardware

După ce am format o listă de cerințe pentru sistem, am început să aleg hardware. Tabelul 1 enumeră dispozitivele și materialele pe care le-am folosit pentru a implementa hardware-ul sistemului, iar Figura 1 prezintă o diagramă bloc a hardware-ului sistemului.

Tabelul 1. Dispozitive și materiale

Restricționarea tensiunii cablurilor

Sistem inteligent de management al casei, bazat pe zmeura pi

Figura 1. Diagrama bloc a hardware-ului sistemului

Descrierea procesului de instalare a componentei hardware a sistemului durează mult timp, dar este destul de simplă. Mai întâi, conectați sursa de alimentare la priza de perete folosind un cablu prelungitor, tăind priza acestui cablu prelungitor. Îndepărtați firele și fixați-le cu șuruburi în bornele sursei de alimentare. Mai mult zmeură Pi conecta cu sursa de alimentare, retezarea conector de tip A de la cablul USB și conectarea fire cu bornele de alimentare cu energie corespunzătoare și introduceți conectorul micro USB în conectorul de alimentare RPI. După aceea ar trebui să fie curățate ambele capete ale celor două nuclee ale cablului flexibil, și să le conecteze la terminalele corespunzătoare marcate GND și JDVcc de alimentare și caseta de releu. În cele din urmă, trebuie să scoateți jumperul care conectează pinul la denumirea JDVcc cu terminalul etichetat Vcc. În acest caz, dacă nu eliminați dumper pe intenționat tensiunea de 3.3 Concluziile RPI vor fi sub tensiune la 5 V, care este foarte probabil scoate computerul de acțiune.

linii Acum, când puterea este furnizată tuturor terminalelor ar trebui să fie conectate IN1-IN8 modul releu cu conector GPIO pini corespunzător cu un cablu flexibil, în modul prezentat în figura 2. prezentate în acest articol, codul a fost dezvoltat pentru cazul când constatările IN1-IN7 sunt conectate la pinii GPIO1-GPIO7. În cazul în care decideți să conectați aceste concluzii într-un mod diferit, va trebui să modificați codul în consecință.

Dispunerea circuitului terminalelor conectorului GPIO Raspberry Pi prezentate în figura 2. Pe porturile de intrare-ieșire de tensiune Raspberry Pi este de 3,3 V, iar modulul releu funcționează cu o tensiune de 5 V. Cu toate acestea, releele sunt izolate de la terminalele GPIO Raspberry Pi prin intermediul optocuploare. Optocuplorul poate furniza 3,3 V de la pinul Vcc. O tensiune de 3,3 V de la conectorul GPIO Raspberry Pi poate fi aplicată la ieșirea Vcc a modulului releului. Asigurați-vă că scoateți jumper, face concluzii și modulul releu Vcc JDVcc. Ieșirea JDVcc trebuie furnizată cu o tensiune de 5 V pentru funcționarea corectă a releului. Modulul releu în cauză deschide contactele în starea activă. Aceasta înseamnă că trebuie să conectați terminalele IN1-IN8 la pornirea releului.

Sistem inteligent de management al casei, bazat pe zmeura pi






Figura 2. Pinout pentru conectorul GPIO Raspberry Pi

Atenție: aveți grijă când conectați componentele hardware ale sistemului. Consecințele șocului electric pot fi fatale!

Sistem inteligent de management al casei, bazat pe zmeura pi

Figura 3. Montarea hardware-ului sistemului

Mediul de program

software-ul

biblioteci

Aplicația server care rulează pe nivelul Raspberry Pi trebuie să controleze starea conectorului GPIO al plăcii Raspberry Pi. De asemenea, trebuie să furnizeze o interfață HTTP pentru transferul de date GUI și o interfață WebSocket pentru trecerea mesajelor cu comenzi și date de stare. Gata pentru a instala aplicația server cu astfel de funcții specifice, pur și simplu nu există, așa că am decis să înființeze propria lor implementare server folosind limbajul de programare Python. Pentru a simplifica dezvoltarea descrisă aplicația server folosind limbajul de programare Python module disponibile, cu punerea în aplicare a unor metode de lucru cu interfață GPIO zmeură Pi, pentru a crea un server HTTP, și de a lucra cu interfață WebSockets. Deoarece toate aceste module sunt concepute pentru a îndeplini sarcinile, am avut de a dezvolta o cantitate minimă de cod.

Listarea 1. Utilizând modulul RPi.GPIO

CherryPy este un cadru web modular pentru limbajul de programare Python. Capacitățile acestui cadru sunt ușor de extins pentru a sprijini protocolul WebSocket utilizând modulul ws4py. Modulele CherryPy și ws4py pot fi de asemenea instalate utilizând instrumentul pip.

Exemple de utilizare a cadrului CherryPy și a pluginului ws4py sunt date în secțiunile cu documentația cadru CherryPy și modulul ws4py, respectiv. Pentru a crea cel mai simplu server bazat pe cadrul CherryPy, codul din listare 2 poate fi folosit.

Listing 2. Cel mai simplu cod de server bazat pe cadrul CherryPy

În codul mai complex, un parametru pentru metoda de pornire rapidă poate fi trecut la un indicator la o instanță a clasei cu parametrii de configurare. Această abordare este ilustrată folosind fragmentul de cod din listare 3. Codul de mai sus servește cererilor către subresource / js, lucrând cu fișiere din subdirectorul js. Subdirectorul js este localizat în directorul cu codul sursă al serverului dezvoltat.

Listare 3. Transmiterea parametrului metodei de pornire rapidă

Pentru a adăuga suport pentru protocolul WebSocket în CherryPy cadru bazat pe server ar trebui să modifice codul în același mod, așa cum se arată în Listarea 4. Ca parte a clasei WebSocket cererile de gestionare a protocoalelor trebuie să fie puse în aplicare trei metode: a fost deschisă. mesaj închis și primit. Listarea 4 prezintă un simplu cod de tip server-side cu suport pentru protocolul WebSocket, care a fost redus cât mai mult posibil pentru a explica scopul principalelor sale componente funcționale; Pe baza celor de mai sus, acest cod nu efectuează de fapt niciun lucru util.

Listing 4. Cel mai simplu server cu suport pentru protocolul WebSocket

Pe partea clientului, scripturile de script HTML trebuie să implementeze o funcție de conectare la server utilizând protocolul WebSocket și procesarea mesajelor primite. Lista 5 prezintă codul pentru o pagină HTML simplă cu un script care implementează această funcție. În acest cod, evenimentul jQuery.ready () este utilizat pentru a iniția o conexiune la server folosind protocolul WebSocket. Scriptul din această listare implementează metode pentru tratarea tuturor evenimentelor: onopen (). onclose (). onerror () și onmessage (). Pentru a extinde capabilitățile acestui script, adăugați o implementare a metodei onmessage (). destinate procesării mesajelor primite.

Listarea 5. Codul paginii cu un script pentru conectarea la server folosind protocolul WebSocket și procesarea mesajelor primite

Sistem de control inteligent la domiciliu

Fișierul relayLabel.json conține datele de configurare necesare, cum ar fi numele releelor, valorile temporizatorului pentru activarea și dezactivarea iluminării și altele. Lista 6 prezintă configurația de bază a părții software a sistemului. Șablonul de mai sus trebuie repetat pentru fiecare releu. Valoarea proprietății dow este generată biți pe biți pentru fiecare din zilele săptămânii, începând cu bitul mic pentru luni și terminând cu bitul senior pentru duminică.

Lista 6. Diagrama de bază a componentei software a sistemului

Figura 4 prezintă o diagramă bloc a sistemului cu o indicație a principalelor sale părți funcționale. Tabelul 2 enumeră toate comenzile pe care clientul le poate trimite pe server, precum și acțiunile pe care ar trebui să le efectueze serverul atunci când sunt recepționate. Aceste comenzi sunt transmise din browser către server în format JSON. Următoarea schemă este utilizată pentru comenzi:

Sistem inteligent de management al casei, bazat pe zmeura pi

Figura 4. Diagrama bloc a sistemului

Tabelul 2. Comenzi

Salvarea noilor nume de relee în fișiere în format JSON

concluzie







Articole similare

Trimiteți-le prietenilor: