Publicitate

Întrerupătoarele de întunecare-până-zori și comutatoarele de timp sunt ambele modalități utile de a-ți automatiza luminile. Nu ar fi minunat dacă i-ai putea combina pe cei doi sau chiar i-ai conecta la internet pentru un sistem de iluminat cu adevărat inteligent?

Un Raspberry Pi, un releu, un senzor de lumină și o linie de cod sunt tot ce ai nevoie pentru a obține acest nirvana de iluminare automată pe un șir.

Ce ai nevoie

Componentele pentru comutatorul inteligent senzor de lumină sunt ușor de sursa. O să ai nevoie:

  • Orice model Raspberry Pi care rulează Raspbian.
  • A placa releului, ușor de găsit pe Amazon.
  • Un Senzor de luminozitate Adafruit TSL2561.
  • Fire de jumper.
  • Câteva lumini de automatizat!

Cum funcționează un comutator inteligent cu lumină

Folosind un releu în același mod ca al nostru proiect de deschidere automată a ușilor de garaj Cum să vă automatizați ușa de garaj cu IFTTT și zmeură PiÎn acest tutorial, vă vom arăta cum să vă automatizați ușa garajului folosind nimic altceva decât Raspberry Pi și IFTTT. Citeste mai mult

instagram viewer
, puteți programa un Raspberry Pi pentru a porni și opri un circuit de iluminare la ore fixe. Adăugarea unui senzor de luminozitate la mix înseamnă că Pi poate detecta nivelul de lumină ambientală și alege să aprindă luminile numai atunci când sunt cu adevărat necesare.

Deoarece un Pi este un computer minuscul care poate fi conectat la o rețea, îl puteți configura să fie controlat și pe internet. Luminile dvs. inteligente vor avea trei intrări pentru a determina când se aprind:

  1. Un program programat.
  2. Nivelul luminii ambientale.
  3. Semnal de anulare trimis prin rețea.

Pasul 1: Conectați zmeura Pi la releu

Dacă sunteți nou în utilizarea GPIO, începeți să citiți Tot ce trebuie să știți despre Pinioane de raspberry Pi GPIO.

În primul rând, verificați dacă placa de releu are un jumper care conectează pinii VCC și JD-VCC. Dacă are, scoateți-l.

JD-VCC până la VCC jumper board board

Cu tot ce este pornit, conectați placa releu la Pi-ul dvs. după cum urmează:

  • Pin Pin 2 (5v) la JD-VCC de pe placa releului.
  • Pi Pin 6 (GND) la GND pe placa releului.
  • Pi Pin 15 (GPIO 22) până la IN1 de pe placa releului
  • Pin Pin 17 (3.3v) până la VCC de pe placa releului.
Raspberry Pi Zero W conectat la o placă de releu

Pasul 2: Conectați senzorul de luminozitate

TSL2561 este un senzor de lumină care poate detecta infraroșu, spectru complet și lumină vizibilă pentru om. Poate trimite o lectură digitală foarte precisă la Raspberry Pi. Senzorul raportează nivelul luminii pe o scară de la 0,1 (fără lumină) la 40 000 (soare luminos).

Consiliul de administrație TSL2561 discută cu Zmeura Pi folosind protocolul i2c. I2C are nevoie doar de două conexiuni, una pentru un ceas pentru a menține sincronizarea celor două dispozitive și una pentru transferul de date. Desigur, senzorul lux are nevoie și de o anumită putere, așa că există patru conexiuni pentru a face cu totul:

  • Conectați Pin Pin 1 (3.3v) la Vin (sau VCC) pe senzorul lux
  • Conectați Pi Pin 3 (SDA) la SDA pe senzorul lux
  • Conectați Pi Pin 5 (SCL) la SCL pe senzorul lux
  • Conectați Pi Pin 9 (GND) la GND pe senzorul lux
Raspberry Pi Zero W conectat la senzorul TSL2561 lux

Pasul 3: Configurați și instalați dependențele

Înainte de a merge mai departe, va trebui să verificați dacă I2C este activat pe Raspberry Pi (este implicit dezactivat). Introduceți următoarele în terminal:

sudo raspi-config

Selectați Opțiuni de interfațare> P5 I2C, atunci alege da.

Opțiuni de interfațare în utilitatea raspi-config

Lovit introduce apoi selectați finalizarea pentru a ieși de pe ecranul de configurare. Reporniți dispozitivul Pi pentru ca modificarea să intre în vigoare:

repornire sudo

Unele dependențe sunt necesare pentru ca Pi să poată comunica cu placa de senzori. Introduceți următoarele comenzi:

Actualizare sudo apt-get. sudo apt-get install -y python-smbus. sudo apt-get install -y i2c-tools

Puteți verifica că totul funcționează tastând:

sudo i2cdetect -y 1

Dacă dependențele dvs. sunt instalate și senzorul lux este conectat corect, veți vedea un răspuns de acest fel:

IC-Detectare adresă lux senzor raportare utilitate

Aici, utilitarul raportează că a găsit un dispozitiv I2C (senzorul lux) la adresa 39 a I2C.

Încă nu ai terminat cu dependențele. Veți avea nevoie și de câteva biblioteci. Mai întâi, creați un folder pentru a păstra tot ce are legătură cu acest proiect în:

mkdir ~ / iluminat. cd ~ / iluminat

În continuare, descărcați sticla, un cadru ușor care va crea un server web simplu pe Pi. Îl veți folosi pentru controlul luminilor dvs. de pe web.

wget https://bottlepy.org/bottle.py

Celelalte biblioteci de care aveți nevoie sunt pe Github, așa că dacă Raspberry Pi nu are deja Git instalat, adăugați-l acum:

sudo apt-get install git

Acum clonați două biblioteci, astfel:

clonă de git https://github.com/adafruit/Adafruit_Python_GPIO.git. clonă de git https://github.com/adafruit/Adafruit_Python_PureIO.git

Și, în sfârșit, creați un script de testare prin crearea unui nou fișier:

nano test.py

Lipiți acest cod (amabilitate din Adafruit):

#! / usr / bin / env python. # - * - codare: utf-8 - * - din __future__ import absolut_import, divizare, print_funcție, unicode_literals. din tsl2561 import TSL2561. dacă __name__ == "__main__": tsl = TSL2561 (debug = True) print (tsl.lux ())

presa Ctrl + X pentru a salva, urmând instrucțiunile de pe ecran pentru a ieși.

După ce ați terminat, executați scriptul de testare:

testul python.py

Dacă totul este instalat și funcționează, veți primi un număr. Acest număr este o lectură de lux din senzor. Încercați să blocați senzorul sau să-l mutați astfel încât să devină mai mult sau mai puțin lumină. Apoi rulați scriptul de testare din nou și vedeți cum se schimbă numărul.

Pasul 4: Creați scripturile de automatizare

Raspberry Pi va aprinde luminile când se va întuneca, dar le va stinge și în anumite momente. De exemplu, s-ar putea să doriți ca luminile dvs. să se aprindă când se întunecă seara, apoi stingeți în jurul nopții pentru a economisi electricitate. Puteau reîncepe dimineața devreme, apoi se puteau opri când devine lumină.

Pentru a gestiona un program cu mai multe zone de calendar ca acesta, există două scripturi diferite. Unu (onzone.py) va rula în fiecare minut în timpul în care doriți să se aprindă luminile dvs. dacă este întuneric. Celălalt (offzone.py) va rula în fiecare minut în timp ce doriți ca luminile să fie stinse, indiferent de nivelul luminii.

Program de script inteligent pentru iluminare

Scripturile vor fi programate să fie difuzate folosind cron joburi Cum să planificați sarcinile în Linux cu Cron și CrontabCapacitatea de a automatiza sarcinile este una dintre acele tehnologii futuriste care există deja aici. Fiecare utilizator Linux poate beneficia de planificarea sistemului și de sarcinile utilizatorului, datorită cron, un serviciu de fundal ușor de utilizat. Citeste mai mult . Alegând ce ore din zi și din noapte se execută fiecare script, va fi ușor să setați orele în care luminile dvs. se pot aprinde automat. Puteți configura cât mai multe perioade de pornire și oprire.

La fel ca și scripturi pentru controlul automat al luminilor, există un al treilea script pentru gestionarea situațiilor de anulare. Acest lucru vă va permite să aprindeți luminile de la distanță, indiferent de nivelul luminii ambientale.

Script 1: Zona ON

Acest script Python va fi rulat în fiecare minut al zilei în care doriți ca luminile să se aprindă dacă este întuneric. Descărcați scriptul copiind și lipind această comandă în terminal:

wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py

De fiecare dată când onzone.py este rulat, va primi o valoare lux de la senzor pentru a vedea dacă este întuneric. Dacă este, atunci va verifica dacă luminile sunt aprinse sau oprite. Dacă sunt oprite, le va activa. Dacă nu este întuneric, scriptul va vedea dacă luminile sunt aprinse. Dacă sunt, le va opri dacă nu au fost ignorate.

Scriptul folosește o variabilă numită lowlux pentru a decide în ce moment este suficient de întunecat pentru a aprinde luminile. Puteți să-l schimbați în ceva potrivit pentru propria instalare, modificând valoarea din această linie de lângă partea de sus a onzone.py:

lowlux = 50

Script 2: Zona OFF

Acest script va fi rulat în fiecare minut al zilei în care doriți ca luminile să rămână stinse, cu excepția cazului în care acestea au fost anulate. Descărcați scriptul:

wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py

Acest scenariu nu-i pasă de cât de lumină sau întuneric este. Misiunea sa este pur și simplu să stingă luminile dacă sunt aprinse (cu excepția cazului în care au fost anulate).

Script 3: Serverul de înlocuire

Acest script creează un serviciu web simplu care poate accepta comenzi pentru a face următoarele acțiuni:

  1. Porniți luminile timp de câteva minute, indiferent de nivelul luminii ambientale.
  2. Opriți luminile.
  3. Aflați dacă luminile sunt în acest moment pornite sau oprite.
  4. Aflați cât timp trebuie să stea luminile atunci când au fost anulate.

Descărcați scriptul:

wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py

Înainte de a trece la pasul următor, rulați scriptul offzone.py astfel:

python offzone.py

Acest lucru va crea fișierele de control pe care scripturile le folosesc pentru a ține evidența a tot.

Pasul 5: Planificați scripturile

Raspberry Pi dvs. poate rula scripturile de automatizare cu cron. Configurați programul astfel:

sudo crontab -e

Inserați aceste două rânduri în editorul de text:

* 7,8,9,17,18,19,20,21,22,23 * * * python /home/pi/lighting/onzone.py> NULL. * 0,1,2,3,4,5,6,10,11,12,13,14,15,16 * * * python /home/pi/lighting/offzone.py> NULL

Notă: Dacă numele de utilizator cu care v-ați conectat la Raspberry Pi nu a fost implicit pi, schimbați calea în consecință.

Enumerați toate orele în care doriți să se aprindă luminile când este întuneric în prima linie. Toate orele în care doriți să se aprindă luminile în a doua linie.

Acum setați scriptul de înlocuire să funcționeze automat la pornirea Pi:

sudo nano /etc/rc.local

Lipiți această linie în partea de jos a fișierului, apoi salvați și ieșiți:

nohup python /home/pi/lighting/lightserver.py &

În cele din urmă, reporniți Raspberry Pi pentru a putea verifica dacă scriptul serverului se încarcă așa cum trebuie

repornire sudo

Pasul 6: Testează releul

Înainte de a conecta luminile, testați că totul funcționează folosind funcția de anulare. Introduceți următoarele într-un browser web în aceeași rețea ca Pi-ul dvs., înlocuind adresa IP cu adresa propriei Raspberry Pi:

11.22.33.44:1234/overrideon/3

Dacă totul este bine, veți auzi clicul releului și browserul va răspunde că luminile au fost aprinse timp de trei minute.

În timp ce releul este închis, puteți testa celelalte funcții de anulare. Acest lucru vă va spune pentru încă câteva minute luminile vor rămâne pornite din cauza anulării:

11.22.33.44:1234/getoverrideremaining

Acest lucru ar trebui să vă spună că luminile sunt aprinse:

11.22.33.44:1234/lightstatus

În cele din urmă, le puteți dezactiva din nou cu:

11.22.33.44:1234/overrideoff

Releul va face clic pe măsură ce se deschide.

Pasul 7: Conectează-ți luminile

Opriți și deconectați zmeura Pi înainte de a conecta luminile la releu. Folosiți conectorii de tip deschis (NU) de pe placa releului în locul unui comutator obișnuit, astfel:

Introducerea releului în circuitul de iluminare

În cele din urmă, puteți instala senzorul lux într-un loc în care va capta nivelul luminii ambientale. Rețineți că TSL2561 se va raporta ca fiind saturat dacă întâlnește lumina directă a soarelui, așa că este mai bine să îl păstrați la umbră, dacă este posibil.

Mai multe proiecte Raspberry Pi pe care să le încercați

Suprasolicitarea de la distanță a noii configurații de iluminare inteligentă prin introducerea comenzilor într-un browser web este destul de greoaie. O modalitate mai bună este de a conecta ceva ca un Amazon Echo pentru a facilita lucrurile. Combinând serviciul Alexa și serviciul Webhooks activat IFTTT este un mod simplu de a adăuga controlul vocal.

Vezi a noastră ghid pentru utilizarea IFTTT pentru a vă ajuta să începeți.

IFTTT Applet pentru conectarea luminilor inteligente la Alexa

O altă opțiune este să utilizați comenzi rapide Siri. O singură comandă rapidă cu meniuri poate interoga starea luminilor și poate utiliza funcțiile de anulare pentru a le activa și dezactiva.

Dacă v-a plăcut acest proiect, asigurați-vă că le verificați proiecte ciudate de zmeură Pi 10 proiecte cele mai ciudate de zmeură PiExistă un om de știință nebun în fiecare dintre noi, iar zmeura Pi vă lasă să vă ieși jocul interior și să se joace. Uneori, lucrurile devin ciudate. Foarte ciudat. Citeste mai mult pentru mai multe idei.

Hamish este un scriitor independent, iubitor pe tot parcursul vieții al tehnologiei și tocilă confirmată. A lucrat în departamentele IT ale mai multor multinaționale înainte de a-și concedia definitiv șeful și de a merge singur.