Deel 7: De TSL2561-sensor aansluiten op een Raspberry Pi Zero

De tweede sensor die ik wilde aansluiten was een sensor die de lichtintensiteit meet. Ik heb gekozen voor de digitale I2C-sensor, de TSL2561 van Adafruit.

Hardware

De TSL2561 is een kleine sensor die het zichtbare licht meet én het licht in het infraroodspectrum. De sensor wordt gemaakt door AMS, voorheen TAOS (datasheet). Ik heb toevallig voor het board van Adafruit gekozen, maar dezelfde sensor wordt ook door Sparkfun aangeboden en is te koop via Chinese webshops.

De sensor kan op verschillende gevoeligheden worden ingesteld, zodat je de sensor ook kunt gebruiken bij veel of juist heel weinig licht. De TSL2561 werkt via I2C.

 

TSL2561 sensor

 

Het aansluiten is relatief eenvoudig:

Fritzing TSL2561 en Raspberry Pi Zero

De pinnen op de TSL2561 van links naar rechts gezien:

  • Vin: Voeding (3.3V) → Pin 1
  • GND: Ground (GND) → Pin 6
  • 3vo: Niet in gebruik
  • Addr: Niet in gebruik
  • Int: Niet in gebruik
  • SDA: Seriële data → Pin 3
  • SCL: Seriële klok → Pin 5

Voor een handig overzicht van de ‘pinout’ op Raspberry Pi Zero kun je dit diagram gebruiken.

Ter referentie: Pin 1 (het oranje vierkantje linksboven), is de meest linker pin van de onderste rij als je de Pi Zero voor je hebt liggen met de USB-aansluitingen naar je toe.

Pinout Raspberry Pi Zero
Pinout Raspberry Pi Zero, afbeelding via The Pi4J Project: http://pi4j.com/images/j8header-zero-large.png

 

I2C

I2C (meestal gewoon geschreven als I2C) is een manier om te kunnen communiceren tussen microprocessors en andere IC’s. Om met I2C te werken moet er een aantal zaken worden ingesteld.

Stap 1: Inschakelen I2C

Standaard staat I2C niet aan op de Raspberry Pi Zero. Om I2C in te schakelen, start je raspi-config.

Ga naar Advanced Options → I2C en schakel deze in.

Stap 2: Installeer i2c-tools

Om vervolgens aan de slag te kunnen met I2C en te controleren of de sensor goed is aangesloten, is het handig om i2c-tools te installeren. Dat doe je als volgt:

Stap 3: Test of de sensor zichtbaar is

Om te controleren of de sensor wordt herkend door de Pi geef je het volgende commando:

Als je vervolgens een overzicht krijgt met het nummer 39 (het standaard I2C-adres van de TSL2561) dan zit je goed. Verschijnt de sensor niet, dan is er iets niet goed gegaan met het aansluiten.

Voorbeeldscript

Stap 1: Installeer smbus

Om de sensor uit te kunnen lezen met Python heb je een script nodig. Dit script maakt gebruik van smbus, een stukje software om via Python en de System Management Bus het I2C-apparaat aan te sturen. Dat onderdeel moet dus eerst worden geïnstalleerd.

Side note: eigenlijk is dit een omweg om de sensor uit te lezen. Het is ook mogelijk om de sensor direct via i2c uit te lezen. Waarom geef ik daar dan geen voorbeeld van? Simpel: ik kon geen geschikt script vinden om de sensor op de juiste manier aan te sturen. Er bestaat ook een smbus-versie van de sensor, dat is de TSL2560. Meer informatie in deze datasheet van AMS.

Stap 2: Open een nieuw document in Nano

Je opent nu een nieuw document met de naam tsl2561voorbeeld.py in de Nano-editor.

Stap 3: Kopieer en plak het script

Kopieer en plak de volgende code.

Stap 4: Opslaan

Sla het script op met Ctrl + X, Y en Enter.

Stap 5: Draai het script

Het script kun je uitvoeren met het volgende commando:

 

Lees verder in Deel 8: Laat je ‘things’ met elkaar praten via MQTT

Deel 6: De DHT22-sensor aansluiten op de Raspberry Pi Zero

De eerste sensor die ik wilde aansluiten was de DHT22, een digitale sensor die de temperatuur en de vochtigheid meet. De DHT22 is voor iets meer dan 2 dollar te koop in China en is het grote broertje van de DHT11.

Hardware

De DHT22 wordt soms geleverd op een speciaal bordje, een breakout board, maar in mijn geval heb ik gewoon gekozen voor de sensor, zonder breakout board. De sensor wordt ook wel de AM2302 genoemd en wordt gemaakt door Aosong in China (datasheet). De DHT11 kan ook gebruikt worden, maar meet een stuk minder nauwkeurig.

DHT22 sensor

Het aansluiten is relatief eenvoudig:

Fritzing DHT22 en Raspberry Pi Zero
Fritzing diagram DHT22 en Raspberry Pi Zero

De pinnen op de DHT22 van links naar rechts gezien:

  • Pin 1: Voeding (3.3V) → Pin 17
  • Pin 2: Data input → Pin 15
  • Pin 3: Niet in gebruik
  • Pin 4: Ground (GND) → Pin 9

Ik heb een weerstand van 10kΩ gebruikt, zoals wordt geadviseerd. Die zet je tussen de voeding en de datapin als pull-up. Het is letterlijk een kwestie van minuten om de sensor aan te sluiten.

Library

Om de sensor te kunnen uitlezen met de Raspberry Pi is een ‘library’ vereist. Adafruit (de elektronicaspecialist uit de Verenigde Staten) heeft die voor de DHT22 al gemaakt. Je kunt die vinden op GitHub. Bovendien moet de programmeertaal Python geïnstalleerd zijn. Dat laatste is overigens standaard het geval bij Raspbian.

Stap 1: Installeer de Python ontwikkeltools

Voordat je de libraries kunt installeren, moet je eerst de Python ontwikkeltools installeren. Dat doe je als volgt:

Is dat al gedaan? Dan zal het systeem dat netjes aangeven en verandert er niks. Is dat nog niet gedaan, toets Y en Enter.

Stap 2: Installeer de libraries

Je kunt op twee manieren de libraries installeren:

Met behulp van ‘git’

 

Handmatig, door de bestanden te downloaden van GitHub met wget.

Let op: de bestanden worden gedownload in de folder waar je je op dat moment bevindt!

 

Voorbeeldscript

Als de installatie voltooid is, kun je met een Python-script de sensor uitlezen. Adafruit heeft een voorbeeldscript gemaakt, dat je als volgt kunt aanmaken:

Stap 1: Open een nieuw document in Nano

Je opent nu een nieuw document met de naam DHT22voorbeeld.py in de Nano-editor.

Stap 2: Kopieer en plak het script

Kopieer en plak de volgende code. In het script wordt uitgegaan van de aansluiting van de DHT22 op GPIO pin 4.

Stap 3: Opslaan

Sla het script op met Ctrl + X, Y en Enter.

Stap 4: Draai het script

Het script kun je uitvoeren met het volgende commando:

 

Lees verder in Deel 7: De TSL2561-sensor aansluiten op de Raspberry Pi Zero.

Deel 4: Installeren Homebridge op Raspberry Pi Zero

Als je mijn eerdere blogs hebt gevolgd (deel 1 en 2) dan heb je nu een Pi die draait op Raspbian, goed geconfigureerd is en verbonden is met je wifi-netwerk. En dan kun je pas echt aan de slag.

Allereerst: toegang via SSH

Het is altijd fijner om vanaf je ‘echte’ computer te kunnen werken op je Raspberry Pi. Open Terminal als je een Mac gebruikt, als je Windows gebruikt, download dan Putty, en tik onderstaande commando in. Pas het ip-adres aan naar het ip-adres van je Pi. Heb je de username veranderd op je Pi, pas die dan ook aan (in dit voorbeeld is pi de user).

Er wordt nu gevraagd om je wachtwoord. Let op: er verschijnen geen tekens of sterretjes!

Zodra de verbinding is opgezet werk je ‘van afstand’ op de Pi.

Homebridge installeren

Op een ‘gewone’ Raspberry Pi is het enorm simpel om Homebridge te installeren, maar op een Pi Zero is het net even wat ingewikkelder. Voor dit stappenplan heb ik gebruik gemaakt van de tutorial van de maker van Homebridge. Waar nodig heb ik deze aangepast voor de Pi Zero (W).

Stap 1: Installeer ‘git’ en ‘make’:

Stap 2: Installeer de laatste versie van Node.js. Ga hiervoor naar de website van Node.js en zoek de laatste versie voor ARMv6 op. Kopieer de link naar de laatste versie (download het bestand dus niet) en tik wget in en plak vervolgens de link. Voorbeeld:

Pak het gedownloade bestand (de tarball) vervolgens uit. Maak een nieuwe directory /opt/node aan en kopieer de bestanden naar die directory. Elke regel is een nieuw commando dat gevolgd moet worden door Enter! 

Zorg er vervolgens voor dat updates goed verwerkt worden:

Stap 3: Installeer de vereiste pakketten:

Stap 4: Installeer Homebridge. Dit kan een behoorlijke tijd in beslag nemen. Blijf geduldig wachten en zet bijvoorbeeld even koffie. Ook hier geldt: elke regel is een nieuw commando dat gevolgd moet worden door Enter! 

Stap 5: Start Homebridge.

Na een aantal waarschuwingen (die je kunt negeren) start Homebridge op. Nu is het tijd om je iPad of iPhone te pakken en de Woning-app op te starten. Je kunt nu Homebridge a.k.a. je Raspberry Pi toevoegen.

Aangezien er nog geen plugins geïnstalleerd zijn, zul je er nog niet veel mee kunnen, maar de basis is gelegd. Alvast bekijken welke plugins er zijn? Dat kan hier!

Lees verder in Deel 5: De blauwdruk voor mijn ‘Things’ en sensors.

Deel 3: Home automation (domotica) met een Raspberry Pi Zero

Zoals ik al in de introductie schreef had ik altijd zo mijn bedenkingen bij zelfdenkende koelkasten of slimme thermometers die je een push-bericht sturen als de kip in de oven gaar is. Tot ik bij een vriend langs ging die nuttige toepassingen had bedacht. Home automation, ook wel domotica genoemd.

De toepassing van slimme apparaten in huis

Slimme apparaten kunnen het leven makkelijker maken. Ze kunnen bijvoorbeeld met één klik op de knop je hele huis ‘instellen’ als je lekker een filmpje wil kijken. Maar het draait niet alleen om home automation. Slimme apparaten kunnen je huis veiliger maken of zorgen voor energiebesparing. De basis voor al die apparaten wordt gelegd met sensors.

Sensors meten bijvoorbeeld de lichtintensiteit (lux-waarde) en het systeem kan vervolgens op basis daarvan besluiten de lichten in huis aan of uit te zetten. Zo blijft er nooit een lamp branden als de zon fel schijnt. Een ander voorbeeld is het inschakelen van de centrale verwarming als een sensor registreert dat de temperatuur in huis onder de 19°C is én een andere sensor registreert dat er mensen in het huis zijn. En dit is nog maar het topje van de ijsberg.

Nest Thermostaat
Persfoto van de Nest Thermostaat, via: https://nest.com/nl/press/#product-images

Ik besloot dat ik ook wel eens wilde kijken hoe ik mijn huis ‘smart’ kon maken.

Welk systeem kies je?

Er zijn allerlei verschillende systemen om je huis slim te maken. Als Apple-liefhebber was ik op de hoogte van HomeKit – een app van Apple die het mogelijk maakt om vanaf je iPhone of iPad de home automation aan te sturen. Het is met HomeKit bijvoorbeeld mogelijk om de Hue-lampen van Philips te gebruiken.

Er zijn tientallen aanbieders van slimme producten die je met een app op je telefoon kan aansturen. Om er een paar te noemen: Elgato, Philips, KlikAanKlikUit en bijvoorbeeld NEST.

Er is echter een aantal grote nadelen. De wirwar van aanbieders zorgt ook voor een wirwar van apps op je telefoon. Bovendien ‘praten’ niet alle systemen met elkaar, omdat ze met verschillende protocollen werken. Daarnaast zijn deze systemen vaak niet goedkoop en in sommige gevallen worden ze niet (volledig) ondersteund door HomeKit.

Enter Homebridge. Homebridge is een gratis softwarepakket dat ontwikkeld is om met HomeKit slimme apparaten aan te sturen. En dan hebben we het niet alleen over de slimme lampen van Philips of de schakelaars van KlikAanKlikUit of Toon, de slimme thermostaat. We hebben het dan ook over zelfgebouwde apparaten of sensors. Bovendien maakt Homebridge het mogelijk om apparaten die eigenlijk niet door HomeKit worden ondersteund tóch te gebruiken. En dan wordt home automation plots erg interessant.

Mijn eigen Internet of Things

Ik besloot de Raspberry Pi Zero, die ik in een opwelling had gekocht toen ik de Zero W bestelde, te gaan gebruiken om mijn eigen Internet der Dingen op te tuigen en mijn huis – samen met mijn telefoon – ‘smart’ te maken. Nu woon ik een huis uit begin 20e eeuw, waardoor ik bijvoorbeeld geen centrale verwarming heb. Dat beperkt mijn mogelijkheden. Anderzijds is het een extra uitdaging om zelfs een oud huis slimmer te maken door zelf nieuwe oplossingen te bedenken.

Ik heb de keuze gemaakt voor een Raspberry Pi Zero, Homebridge en Apple’s HomeKit, maar er zijn natuurlijk diverse andere softwarepakketten en minicomputers waarmee je hetzelfde kunt bereiken. In deze serie blogs wil ik laten zien hoe ik mijn eigen Internet der Dingen vormgeef. Tegelijkertijd fungeert het blog als een soort logboek waarin ik vastleg tegen welke problemen ik aanloop en welke oplossingen ik heb gevonden. Ik hoop dat ik daarmee ook anderen kan helpen die tegen dezelfde problemen aanlopen.

Lees verder in Deel 4: Installeren Homebridge op Raspberry Pi Zero