Raspberry Pi – Temperatuur sensor QT18B20 uitlezen

Hardware

Temperatuur sensor module QT18B20 bovenkantTemperatuur sensor module QT18B20 zijkant

7qtek logo

BESTEL NU!

De 7Q-Tek QT18B20 is een nauwkeurige digitale temperatuur sensor en is volgens mij een kopie van de Dallas DS18B20, en functioneert net zo, het is een one-wire device en werkt op 3.3v, je kan meerdere sensoren aansluiten via dezelfde pinnen en deze uitlezen.

Afwijking: ±0,5°C bij −50°C en +85°C

Specificaties:

– Resolution adjustment range :9-12
– With mounting holes for easy installation, Aperture: 2.5
– Temperature measuring range: -55 ~ +125 ℃
– Temperature measurement accuracy: 0.5 ℃
– Working voltage: DC 5V
– Size: 28mm x 12mm x 10mm

Pinout

7Q-Tek 18B20 pinout TO-92 
Pin:Functie:
1GND
2Digitale uitgang
3Vdd (+3.3v)

Wat heb je nodig?

1) Weerstand van 4,7 kΩ (als pull-up)
1) Python 2.x

Aansluiten op de Raspberry Pi

Sluit de QT18B20 sensor aan zoals aangegeven op onderstaand schema:

DS18B20-raspberry-pi-schema
Ps. de weerstand is nodig voor de pull-down!

Q7-Tek 18B20 pin:Raspberry Pi pin:
1 (GND)GND
2 (Digitale uitgang)GPIO4
3 (Vdd (+3.3v)+3.3v

Voor de module:

Q7-Tek 18B20 module pin:Raspberry Pi pin:
1 (-)GND
2 (+)+3.3v
3 (S) (Data)GPIO4

Schema om meerdere sensoren aan te sluiten:

7Q-Tek-18B20-multi-raspberry-pi-schema

1-Wire module laden

Normaal is de 1-wire module niet geladen, als je  ls /sys/bus/ (geeft inhoud van de fodler weer) zou uitvoeren, staat w1 er niet bij:

Om de 1-Wire module te laden moeten we 2 commando’s uitvoeren, namelijk  sudo modprobe w1-gpio en  sudo modprobe w1_therm , om dit in 1 lijn uit te voeren op de raspberry pi, gebruik dan het volgende commando:

sudo modprobe w1-gpio && sudo modprobe w1_therm

Al je daarna nog een keer de inhoud bekijkt van /sys/bus/ , dan zie je nu w1 er wel bij staan.

1-Wire module automatisch laden

Om nu niet elke keer deze regel in te hoeven tikken om de 1-wire module te laden als je de raspberyr pi (heR)start, kun je deze regels toevoegen aan het opstart script /etc/modules

1) Tik in op de raspberry pi: sudo nano /etc/modules
2) Plak deze regels onderaan het bestand:

Druk op CTRL+O en dan ENTER om op te slaan, CTRL+X om nano af te sluiten.

3) Herstart de raspberry pi met het commando: sudo reboot

Na het opstarten word de 1-wire module automatisch geladen.

GPIO en de nieuwe kernel

Er zijn problemen bekend dat de GPIO toewijzingen niet altijd goed werken, het onderstaande kan het probleem verhelpen door “/boot/config.txt” te bewerken.

1) Bewerk “/boot/config.txt” met het commando: sudo nano /boot/config.txt

2) Zet onderaan deze inhoud:

Druk op CTRL+O en dan ENTER om op te slaan, CTRL+X om nano af te sluiten.

3) Herstart de raspberry pi met het commando: sudo reboot

Foutmeldingen?

In het dmesg log komen deze regels voor:

w1_master_driver w1_bus_master1: Family 0 for 00.X00000000000.XX is not registered.

Dit is geen foutmelding maar een “standaard” melding op de 1-wire bus dat er niets is aangesloten!

Waar bevind zich de sensor en de data?

LET OP: de folder “w1_bus_master1” is bij een nieuwe kernel er bij gekomen:

RPi 1,2 met oude kernel:  /sys/bus/w1/devices/[sensorid]/w1_slave

RPi 2,3 met nieuwe kernel:  /sys/bus/w1/devices//w1_bus_master1/[sensorid]/w1_slave

Nadat je de 1-wire module hebt geladen, vind je alle temperatuur modules in:  /sys/bus/w1/devices/w1_bus_master1/

De data staat in de folder van de “gevonden sensoren”:  /sys/bus/w1/devices/w1_bus_master1/[ID van de sensor]/w1_slave

Om de data weer te geven zou je kunnen intikken:  cat /sys/bus/w1/devices/w1_bus_master1/[ID van de sensor]/w1_slave

Hieronder zie je een voorbeeld:

raspberry pi - DS18B20 uitlees voorbeeld

Zien hoeveel sensoren er zijn gevonden kan met het commmando:

cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count

Temperatuur uitlezen via BASH

Snel en eenvoudig de temperatuur uitlezen van een sensor via de bash kan met deze regel (pas het ID aan aan je eigen situatie):

raspberry pi - DS18B20 uitlees voorbeeld bash

Makkelijk en snel een bash gebruiken

1) Creëer een bestand “temp1” in “/usr/bin“, met het commando: sudo nano /usr/bin/temp1

2) Zet daarin deze inhoud;

3) Druk op CTRL+O en dan ENTER om op te slaan, CTRL+X om nano af te sluiten.

4) Zet de rechten van het bestand zo dat het uitgevoerd mag worden met het commando:  sudo chmod +x /usr/bin/temp1

Temperatuur uitlezen via Python

Het is mogelijk om dus de waarde die je ziet dmv het “cat” commando:

in een string te zetten en zo “knippend” naar de temperatuur waarde te gaan:

Gegevens wegschrijven naar CSV bestand (1 sensor)

Je kan de gegevens ook opslaan in een CSV bestand, onderstaand script maakt ook gebruik van de commandolijn parameters en slaat gegevens op in een bestand (per maand) in “/usr/src/DS_DATA_[YYYY]_[MM].csv

De inhoud van het CSV bestand ziet er zo uit:

Gegevens wegschrijven naar CSV bestand (2 sensoren)

Je kan de gegevens ook opslaan in een CSV bestand, onderstaand script maakt ook gebruik van de commandolijn parameters en slaat gegevens op in een bestand (per maand) in “/usr/src/DS_DATA_[YYYY]_[MM].csv

De inhoud van het CSV bestand ziet er zo uit:

Bronnen: reuk.co.uk / projects.privateeyepi.comblog.vokiel.com / iada.nl