Beginner IoT-tutorial: Temperatuurdata streamen vanaf een Raspberry Pi
"Hello World!" – Dit is waarschijnlijk de output van het eerste programma dat u ooit schreef toen u leerde coderen. Een apparaat instellen om temperatuurdata te streamen wordt snel het de facto Internet of Things (IoT) "Hello World!"-project. Als het printen van "Hello World!" de eerste keer een lange, frustrerende taak was, had u misschien nooit een ander programma geschreven. Uw eerste IoT-project zou u alleen maar een brede glimlach op het gezicht moeten toveren. Dit leuke, eenvoudige project introduceert u in de prachtige wereld van IoT-datastreaming.
Een videotutorial van dit hele project is te vinden op:
https://youtu.be/HMqPbfvCshs
Dit zijn de benodigdheden:
- Een internetverbonden Raspberry Pi of uw single-board computer van keuze.
- Een DS18B20 temperatuursensor (https://www.adafruit.com/product/381).
- Een breadboard voor het bedraden van een eenvoudig circuit (in de Adafruit Pi starter kit).
- Een 4,7K tot 10K weerstand (ook in de Adafruit Pi starter kit).
Stap 1: Hardware-opstelling
De DS18B20-temperatuursensor werkt goed met de Raspberry Pi omdat hij een digitale uitgang heeft, en de Pi geen on-board analoge-naar-digitale converters (ADC) heeft. Raspbian bevat een interface om de output van de sensor te lezen. We hoeven alleen een beetje code te schrijven om de temperatuur op te halen en te parsen. Adafruit heeft een geweldige tutorial hiervoor voor het gebruik van de DS18B20 die we gewoon gaan volgen en aanpassen om de temperatuur te streamen in plaats van alleen naar het scherm te printen.
De hardware-opstelling is simpel. DS18B20 rode draad naar 3,3V. Zwarte draad naar GND. Blauwe draad naar een pull-up-weerstand en naar GPIO-pin 4 van uw Pi.
Stap 2: De temperatuur uitlezen
Om de temperatuursensor-leesinterface te starten, moeten we twee commando's uitvoeren. Ga naar een opdrachtprompt op uw Pi of SSH in uw Pi. Typ de volgende commando's:
sudo modprobe w1-gpio sudo modprobe w1-therm
De output van uw temperatuursensor wordt nu naar een bestand op uw Pi geschreven. Om dat bestand te vinden:
cd /sys/bus/w1/devices
In deze map zal een submap zijn die begint met "28-". Wat na de "28-" komt, is het serienummer van uw sensor. cd in die map. Binnen deze map bevat een bestand genaamd w1_slave de output van uw sensor. De inhoud van dit bestand ziet er ongeveer zo uit:
a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES a2 01 4b 46 7f ff 0e 10 d8 t=26125
Het getal na "t=" is het getal dat we willen. Dit is de temperatuur in 1/1000 graden Celsius (in het bovenstaande voorbeeld is de temperatuur 26,125 °C). We hebben gewoon een simpel programma nodig dat dit bestand leest en dat getal parseert. Gelukkig voor ons heeft Adafruit al een Python-script gemaakt dat dit doet en de temperatuur naar het scherm print. Maak een nieuw bestand op uw Pi (bijv. temperature.py) en kopieer-plak de volgende code erin:
Klik hier om de code te zien
Voer dit script uit (sudo python temperature.py) om de output van uw temperatuursensor op het scherm te zien.
Stap 3: De temperatuur streamen
Dit is het punt waar we afwijken van de Adafruit-tutorial. Temperatuur naar het scherm sturen is saai. We willen deze data streamen naar een plek waar we niet alleen de huidige temperatuur kunnen zien, maar een historie van vastgelegde temperatuurdata (plus, wie wil er een "boel" temperaturen als tekst lezen; we willen een mooie datavisualisatie). Installeer eerst de Initial State-streamer om onze temperatuurmettingen een bestemming te geven (ga hier voor instructies over het instellen van de Initial State-streamer; het is super eenvoudig en duurt minder dan twee minuten). We gaan het bovenstaande script aanpassen om de temperatuur naar ons Initial State-account te streamen in plaats van naar het scherm. Hier zijn de aanpassingen:
Klik hier om de code te zien
U moet de client-sleutel die geassocieerd is met uw Initial State-account kopiëren tussen de aanhalingstekens op regel 6 waar staat client_key = "". U vindt uw client-sleutel onder uw accountinstellingen of op de landingspagina zodra u inlogt op uw account.
Dit zijn de aanpassingen die we zojuist maakten:
- Op regel 4 importeerden we de Initial State-datastreamer-module.
- Op regel 6 maakten we een nieuwe bucket genaamd "Temperature Stream" en koppelden we deze aan ons account via onze client-sleutel.
- Op regel 30 wijzigden we de
read_temp()-functie om alleen de temperatuur in Celsius te retourneren. - Op regel 34 converteerden we de output van
read_temp()naar Fahrenheit. - Op regels 35 en 36 streamden we de twee temperaturen.
Voor meer detail: IoT 101 Project: Stream Temperature from your Raspberry Pi
Productieproces
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Nauwkeurige Raspberry Pi Temperatuurprofielering Met Python, SQLite En LabVIEW
- Raspberry Pi Temperatuur & Vochtigheid Netwerk Monitor – DIY Setup Gids
- Hoe Temperatuur Te Lezen Met Een DS18B20 Op Raspberry Pi 2
- Professionele temperatuurbewaking met Raspberry Pi en DS18B20
- Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Raspberry Pi BMP085: Accurate temperatuur- en drukmetingen via I2C
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak