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 5: De blauwdruk voor mijn ‘Things’ en sensors

Het Internet of Things bestaat grotendeels uit apparaten die iets meten. Met behulp van sensors dus. Die sensors kunnen licht meten, temperatuur, vochtigheid, de hoeveelheid regen, en ga zo maar door. Het IoT bestaat ook uit apparaten die zelfstandig iets kunnen: een twitterbericht uitprinten via een bonnenprinter, een slot openen, een kachel aanzetten of bijvoorbeeld de rolluiken sluiten. Voordat je hiermee aan de slag gaat, is het slim om de vraag te stellen: wat wil je precies doen?

De blauwdruk

Voordat ik dieper inga op het aansluiten van de sensors en slimme apparaten die ik heb gebruikt of wil gaan gebruiken, leg ik uit welke sensors ik heb gekozen en waarom. Een soort blauwdruk dus van mijn plannen.

Sensors

Om te beginnen: de sensors. Een aantal zaken is niet alleen nuttig of leuk om te weten, het is ook de basis voor de automatisering van je huis. Ik wilde de volgende dingen weten:

  • De temperatuur
  • De luchtvochtigheid
  • De lichtintensiteit
  • De hoeveelheid koolmonoxide
  • Beweging in huis

Ik heb voor de temperatuur en de luchtvochtigheid voor een gecombineerde sensor gekozen. Het is de DHT22, een digitale sensor, die vrij nauwkeurig metingen verricht. Voor de lichtintensiteit heb ik gekozen voor de TSL2561, een sensor die niet alleen zichtbaar licht meet, maar ook infrarood licht. Ook dit is een digitale sensor.

Voor de koolmonoxide heb ik nog geen sensor in huis en ook de bewegingssensor is nog niet besteld. Ik wilde het niet meteen te ingewikkeld maken.

Automatisering

Als je sensors hebt die dingen meten, wil je ook dat op basis van die metingen iets wordt gedaan (een ‘proces’ wordt aangestuurd). In mijn geval is dat vrij eenvoudig: ik wil dat de lichten in mijn werkkamer aangaan, zodra de hoeveelheid licht onder een bepaalde lux-waarde komt. Aangezien ik geen Philips Hue-lampen wil aanschaffen – vanwege de pittige prijs voor alleen al een startset – moest ik een oplossing verzinnen voor mijn bestaande lampen.

Die oplossing heb ik gevonden in de KlikAanKlikUit-systemen (KaKu). Het systeem werkt vrij simpel: met een afstandsbediening kun je een speciale stekker aan- en uitzetten (en dus ook een lamp in- of uitschakelen). Ook zijn er bepaalde stekkers die lampen kunnen dimmen. Daarmee zijn je lampen ineens iets slimmer geworden. Maar hoe stuur je zo’n signaal naar een lamp als je geen afstandsbediening hebt? Sterker nog: hoe doe je dit geautomatiseerd? KaKu zelf heeft een speciaal basisstation (een bridge) die dit mogelijk maakt. Maar ik wil niet weer een apparaat erbij kopen dat niet met de andere apparaten praat.

Om toch de stekkers (en dus de verlichting) te kunnen bedienen kun je met de Raspberry Pi het signaal versturen naar de stekker. Dat signaal wordt op een bepaalde golflengte uitgestuurd. In het geval van de KaKu (en in heel veel andere gevallen, maar daarover later meer) is dat 433 Mhz. Voor de Pi heb je daar een handig setje voor: een 433 MHz-zender die je voor een prikkie kunt aanschaffen.

Platforms

Naast het 433 Mhz-platform waarop veel KaKu-producten werken, zijn er nog andere platforms. KaKu is eenrichtingsverkeer: een apparaat geeft niet aan of hij aan of uit staat. Wil je dat wel, dan is er ook tweerichtingsverkeer mogelijk. Dat werkt op een andere frequentie, 866 MHz. KaKu heeft deze producten ook, maar die zijn wel wat duurder.

Daarnaast is er het Z-Wave-platform, dat op weer een andere frequentie werkt (2,4 GHz). Ook zijn er platforms op basis van bluetooth, NFC, RFiD,  en ZigBee. En daarmee is de lijst nog lang niet compleet. Wederom: om het niet te moeilijk te maken, richt ik me in eerste instantie op het 433 Mhz-platform. Andere platforms komen misschien later aan bod.

ESP8266

Naast het zenden van signalen via speciale frequenties, is het ook mogelijk om via het wifi-netwerk signalen te versturen. En naast het 433 MHz-platform, wil ik me daar ook op richten. De reden: de apparaten waarmee je dit kunt doen zijn spotgoedkoop. Voor een paar dollar heb je een apparaat dat met je wifi-netwerk verbonden is en opdrachten kan ontvangen of versturen.

De basis is de ESP8266-chip: een chip met ingebouwde wifi-mogelijkheden. Een van mijn plannen is het namaken van een Philips Hue-lamp met behulp van deze chip en een LED-strip. Dat maakt het mogelijk om mijn zelfgebouwde Hue-lamp aan te sturen via HomeKit en Homebridge.

Tips en inspiratie

Hoe kun je voor jezelf bepalen wat je nodig hebt en beter nog: hoe kom je achter mogelijkheden die je zelf nog niet had bedacht? Hieronder een aantal websites die je inspiratie kunnen geven of waar je producten kunt bestellen. Het belangrijkste is eigenlijk dat er geen grenzen zijn en dat je je fantasie gebruikt. En dat is eigenlijk alleen maar heel erg leuk!

  • Kiwi Electronics – een uitstekende webwinkel met een ruim assortiment.
  • Adafruit – maker van veel producten, met veel aandacht voor projecten.
  • Hackaday – verzameling van projecten die tot de verbeelding spreken.
  • Raspberry Pi Foundation – verzameling van projecten op basis van de Pi.
  • Hackster.io – verzameling van projecten, van robots tot smart meubilair.

Lees verder in Deel 6: De DHT22-sensor aansluiten op de Raspberry Pi Zero.