Advertentie

Schemerschakelaars en tijdschakelaars zijn beide handige manieren om uw verlichting te automatiseren. Zou het niet geweldig zijn als je de twee zou kunnen combineren of zelfs zou kunnen verbinden met internet voor een echt slim verlichtingssysteem?

Een Raspberry Pi, een relais, een lichtsensor en een streepje code zijn alles wat je nodig hebt om dit automatische verlichtingsnirvana op een kleine schaal te bereiken.

Wat je nodig hebt

Componenten voor uw lichtgevoelige slimme schakelaar zijn eenvoudig te vinden. Je hebt nodig:

  • Elk model Raspberry Pi met Raspbian.
  • EEN relaiskaart, gemakkelijk te vinden op Amazon.
  • Een Adafruit TSL2561 lichtsterktesensor.
  • Jumper draden.
  • Enkele lampen om te automatiseren!

Hoe een lichtgevoelige slimme schakelaar werkt

Door een relais op dezelfde manier te gebruiken als ons automatisch garagedeuropenerproject Hoe u uw garagedeur automatiseert met IFTTT en Raspberry PiIn deze tutorial laten we u zien hoe u uw garagedeur automatiseert met niets meer dan een Raspberry Pi en IFTTT. Lees verder

instagram viewer
, je kunt een Raspberry Pi programmeren om een ​​verlichtingscircuit op vaste tijden in en uit te schakelen. Door een helderheidssensor aan de mix toe te voegen, kan de Pi het omgevingslichtniveau detecteren en ervoor kiezen om de lichten alleen in te schakelen wanneer ze echt nodig zijn.

Omdat een Pi een kleine computer is die op een netwerk kan worden aangesloten, kunt u instellen dat deze ook via internet wordt bestuurd. Uw slimme lampen hebben drie ingangen om te bepalen wanneer ze aangaan:

  1. Een geprogrammeerd schema.
  2. Het omgevingslichtniveau.
  3. Een override-signaal dat via het netwerk wordt verzonden.

Stap 1: sluit de Raspberry Pi aan op het relais

Als je nieuw bent bij het gebruik van de GPIO, begin dan met lezen Alles wat u moet weten over Raspberry Pi GPIO-pinnen.

Controleer eerst of uw relaiskaart een jumper heeft die de VCC- en JD-VCC-pinnen met elkaar verbindt. Als dat zo is, verwijder het dan.

JD-VCC naar VCC relaiskaartjumper

Terwijl alles is uitgeschakeld, sluit u het relaisbord als volgt aan op uw Pi:

  • Pi Pin 2 (5v) naar de JD-VCC op het relaisbord.
  • Pi Pin 6 (GND) naar GND op het relaisbord.
  • Pi Pin 15 (GPIO 22) naar IN1 op de relaiskaart
  • Pi Pin 17 (3.3v) naar VCC op het relaisbord.
Raspberry Pi Zero W aangesloten op een relaiskaart

Stap 2: sluit de helderheidssensor aan

De TSL2561 is een lichtsensor die infrarood, volledig spectrum en voor de mens zichtbaar licht kan detecteren. Het kan een zeer nauwkeurige digitale meting naar de Raspberry Pi sturen. De sensor rapporteert het lichtniveau op een schaal van 0,1 (geen licht) tot 40.000 (felle zon).

Het bord TSL2561 praat met de Raspberry Pi met het i2c-protocol. I2C heeft slechts twee verbindingen nodig, één voor een klok om de twee apparaten synchroon te houden en één voor de gegevens die worden overgedragen. Natuurlijk heeft de lux sensor ook wat stroom nodig, dus er zijn in totaal vier aansluitingen te maken:

  • Verbind Pi Pin 1 (3.3v) met Vin (of VCC) op de lux-sensor
  • Sluit Pi Pin 3 (SDA) aan op SDA op de lux-sensor
  • Sluit Pi Pin 5 (SCL) aan op SCL op de lux-sensor
  • Verbind Pi Pin 9 (GND) met GND op de lux-sensor
Raspberry Pi Zero W aangesloten op TSL2561 lux-sensor

Stap 3: Afhankelijkheden configureren en installeren

Voordat je verder gaat, moet je controleren of I2C is ingeschakeld op je Raspberry Pi (het is standaard uitgeschakeld). Typ het volgende in de terminal:

sudo raspi-config

Selecteer Interface-opties> P5 I2C, kies dan Ja.

Interface-opties in het hulpprogramma Raspi-config

Raken Enter selecteer vervolgens Af hebben om het configuratiescherm te verlaten. Start uw Pi opnieuw op om de wijziging door te voeren:

sudo herstart

Sommige afhankelijkheden zijn nodig om de Pi te laten communiceren met de sensorkaart. Typ de volgende opdrachten:

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

U kunt controleren of alles werkt door te typen:

sudo i2cdetect -y 1

Als uw afhankelijkheden zijn geïnstalleerd en uw lux-sensor correct is aangesloten, ziet u een reactie als deze:

IC-Detect hulpprogramma rapporteert lux sensoradres

Hier meldt het hulpprogramma dat het een I2C-apparaat (de lux-sensor) heeft gevonden op I2C-adres 39.

Je bent nog niet helemaal klaar met de afhankelijkheden. Je hebt ook een paar bibliotheken nodig. Maak eerst een map om alles met betrekking tot dit project te bewaren in:

mkdir ~ / verlichting. cd ~ / verlichting

Download vervolgens fles, een lichtgewicht framework dat een eenvoudige webserver op je Pi zal creëren. Je gebruikt het om je lampen vanaf internet te bedienen.

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

De andere bibliotheken die je nodig hebt, bevinden zich op Github, dus als je Raspberry Pi nog niet Git heeft geïnstalleerd, voeg het dan nu toe:

sudo apt-get install git

Kloon nu twee bibliotheken, zoals deze:

git kloon https://github.com/adafruit/Adafruit_Python_GPIO.git. git kloon https://github.com/adafruit/Adafruit_Python_PureIO.git

En maak tot slot een testscript door een nieuw bestand te maken:

nano test.py

Plak deze code (met dank aan Adafruit):

#! / usr / bin / env python. # - * - codering: utf-8 - * - van __future__ import absolute_import, divisie, print_function, unicode_literals. van tsl2561 import TSL2561. if __name__ == "__main__": tsl = TSL2561 (debug = True) print (tsl.lux ())

druk op Ctrl + X om op te slaan, volg de instructies op het scherm om af te sluiten.

Als u klaar bent, voert u het testscript uit:

python test.py

Als alles is geïnstalleerd en werkt, krijg je een nummer terug. Dat nummer is een luxwaarde van de sensor. Blokkeer de sensor of verplaats deze zodat deze meer of minder licht krijgt. Voer vervolgens het testscript opnieuw uit en kijk hoe het nummer verandert.

Stap 4: Maak de automatiseringsscripts

De Raspberry Pi schakelt de lichten in als het donker wordt, maar schakelt ze ook op bepaalde tijden uit. U wilt bijvoorbeeld dat uw lichten 's avonds aangaan als het donker wordt en dan rond middernacht uitgaan om elektriciteit te besparen. Ze kunnen 's ochtends vroeg weer aangaan en zichzelf dan uitschakelen als het licht wordt.

Om een ​​schema met meerdere tijdzones zoals deze te beheren, zijn er twee verschillende scripts. Een (onzone.py) loopt elke minuut gedurende de tijd dat u wilt dat uw lichten aan zijn als het donker is. De andere (offzone.py) zal elke minuut draaien wanneer u wilt dat de lichten uit zijn, ongeacht het lichtniveau.

Slimme verlichting scriptschema

De scripts zullen worden uitgevoerd cron-taken gebruiken Taken plannen in Linux met Cron en CrontabDe mogelijkheid om taken te automatiseren is een van die futuristische technologieën die er al is. Elke Linux-gebruiker kan profiteren van planningssysteem- en gebruikerstaken dankzij cron, een gebruiksvriendelijke achtergrondservice. Lees verder . Door te kiezen welke uren van de dag en nacht elk script wordt uitgevoerd, is het eenvoudig om de uren in te stellen waarop uw lichten automatisch kunnen gaan branden. U kunt zoveel aan- en uitperiodes instellen als u wilt.

Naast scripts voor het automatisch regelen van de verlichting, is er nog een derde script om override situaties te beheren. Hiermee kunt u de verlichting op afstand inschakelen, ongeacht het omgevingslicht.

Script 1: de ON-zone

Dit Python-script wordt elke minuut van de dag uitgevoerd wanneer u wilt dat de lichten aangaan als het donker is. Download het script door deze opdracht te kopiëren en in de terminal te plakken:

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

Elke keer dat onzone.py wordt uitgevoerd, krijgt het een luxwaarde van de sensor om te zien of het donker is. Als dit het geval is, wordt er gecontroleerd of de lichten aan of uit zijn. Als ze zijn uitgeschakeld, worden ze ingeschakeld. Als het niet donker is, kijkt het script of de lampjes branden. Als dat het geval is, worden ze uitgeschakeld, tenzij ze worden genegeerd.

Het script gebruikt een variabele genaamd lowlux om te beslissen op welk punt het donker genoeg is om de lichten aan te doen. Je kunt het wijzigen in iets dat geschikt is voor je eigen installatie door de waarde in deze regel aan de bovenkant van onzone.py te wijzigen:

lowlux = 50

Script 2: de UIT-zone

Dit script wordt elke minuut van de dag uitgevoerd waarop u wilt dat de lichten uit blijven, tenzij ze zijn genegeerd. Download het script:

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

Het maakt dit script niet uit hoe licht of donker het is. Het is zijn taak om de lichten uit te schakelen als ze aan zijn (tenzij ze zijn genegeerd).

Script 3: The Override Server

Dit script maakt een eenvoudige webservice die opdrachten kan accepteren om de volgende acties uit te voeren:

  1. Schakel de verlichting een aantal minuten in, ongeacht het omgevingslicht.
  2. Doe de lichten uit.
  3. Zoek uit of de lichten momenteel aan of uit zijn.
  4. Ontdek hoe lang de lampjes blijven branden als ze zijn onderdrukt.

Download het script:

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

Voordat u doorgaat naar de volgende stap, voert u het offzone.py-script als volgt uit:

python offzone.py

Hiermee worden de controlebestanden gemaakt die de scripts gebruiken om alles bij te houden.

Stap 5: Plan de scripts

Uw Raspberry Pi kan de automatiseringsscripts uitvoeren met cron. Stel het schema als volgt in:

sudo crontab -e

Plak deze twee regels in de teksteditor:

* 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

Opmerking: als de gebruikersnaam waarmee u inlogde op uw Raspberry Pi niet de standaard was pi, verander het pad dienovereenkomstig.

Maak een lijst van alle uren waarop u wilt dat de lichten gaan branden als het donker is in de eerste regel. Alle uren waar je de lichten uit wilt, gaan in de tweede regel.

Stel nu het overschrijvingsscript zo in dat het automatisch wordt uitgevoerd wanneer de Pi opstart:

sudo nano /etc/rc.local

Plak deze regel onder aan het bestand, sla op en sluit af:

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

Start ten slotte de Raspberry Pi opnieuw op, zodat u kunt controleren of het serverscript wordt geladen zoals het hoort

sudo herstart

Stap 6: Test het relais

Voordat u uw lampen aansluit, test u of alles werkt met behulp van de override-functie. Typ het volgende in een webbrowser op hetzelfde netwerk als uw Pi, waarbij u het IP-adres vervangt door het adres van uw eigen Raspberry Pi:

11.22.33.44:1234/overrideon/3

Als alles in orde is, hoor je de relaisklik en reageert de browser dat de verlichting drie minuten is ingeschakeld.

Terwijl het relais gesloten is, kunt u de andere override-functies testen. Dit geeft aan hoeveel minuten de lichten blijven branden vanwege de opheffing:

11.22.33.44:1234/getoverrideremaining

Dit zou je moeten vertellen dat de lichten aan zijn:

11.22.33.44:1234/lightstatus

Ten slotte kun je ze weer uitschakelen met:

11.22.33.44:1234/overrideoff

Het relais klikt tijdens het openen.

Stap 7: sluit uw lampen aan

Schakel uw Raspberry Pi uit en trek de stekker uit het stopcontact voordat u uw lampen op het relais aansluit. Gebruik de normaal open (NO) connectoren op de relaiskaart in plaats van een gewone schakelaar, zoals deze:

Het relais in het verlichtingscircuit plaatsen

Ten slotte kunt u uw lux-sensor installeren op een plaats waar deze het omgevingslichtniveau registreert. Houd er rekening mee dat de TSL2561 als verzadigd zal rapporteren als hij direct fel zonlicht tegenkomt, dus het is het beste om hem indien mogelijk in de schaduw te houden.

Meer Raspberry Pi-projecten die u kunt proberen

Het op afstand overschrijven van uw nieuwe slimme verlichtingsinstellingen door opdrachten in een webbrowser in te voeren, is behoorlijk omslachtig. Een betere manier is om zoiets als een Amazon Echo aan te sluiten om het gemakkelijker te maken. Combineer de Alexa-service en de Webhooks-service IFTTT is een eenvoudige manier om stembesturing toe te voegen.

Zie onze gids voor het gebruik van IFTTT om u op weg te helpen.

IFTTT-applet om slimme lampen met Alexa te verbinden

Een andere optie is om Siri-snelkoppelingen te gebruiken. Een enkele snelkoppeling met menu's kan de status van de lampen opvragen en de override-functies gebruiken om ze in en uit te schakelen.

Als je dit project leuk vond, bekijk deze dan zeker rare Raspberry Pi-projecten 10 raarste Raspberry Pi-projectenIeder van ons heeft een gekke wetenschapper en de Raspberry Pi laat je innerlijke gek naar buiten komen en spelen. Soms worden dingen raar. Echt raar. Lees verder voor meer ideeën.

Hamish is een freelance schrijver, een levenslange liefhebber van technologie en een bevestigde nerd. Hij werkte op de IT-afdelingen van een aantal multinationals voordat hij uiteindelijk zijn baas ontsloeg en het alleen deed.