Na trhu je dostupných veľa typov senzorov na meranie teploty. Pre meranie teploty som sa rozhodol použiť teplotný senzor DS18B20 z niekoľkých dôvodov. Jedná sa o digitálny teplotný senzor s tzv. 1-wire interface - na odosielanie údajov o teplote využíva iba jeden dátový vodič. Je ho možné zakúpiť v podobe integrovaného obvodu alebo vo vodotesnej verzii s privedenými káblami. Rozhodol som sa práve pre druhú verziu, pretože je vhodná aj na meranie vonkajšej teploty a odoláva rôznym podmienkam počasia. Rozsah meraných teplôt je od -55°C do +125°C. Na intervale od -10°C do +85°C sa udáva presnosť ±0,5°C. Jeho cena sa pohybuje od 2€ na eBay.
Pripojenie senzora DS18B20
Teplotný senzor obsahuje 3 vodiče. Dva vodiče slúžia na napájanie (červený a čierny) a jeden vodič je dátový (žltý). Dátový vodič je potrebné pripojiť na napájanie cez 10kΩ rezistor (pull-up).
Pripojenie teplotného senzora DS18B20 k Raspberry Pi 3.
Pin GPIO4 slúži ako 1-wire pin a preto musí byť dátový vodič teplotného
senzora pripojený práve k tomuto pinu. Aby sme pin GPIO4 mohli využívať ako
1-wire rozhranie, musíme na koniec konfiguračného súboru config.txt zapísať nasledovné: dtoverlay=w1-gpio.
Otvorenie súboru config.txt na editovanie:
sudo nano /boot/config.txt
Šípkou dolu sa presunieme na koniec textu a tam zapíšeme:
#1-wire interface
dtoverlay=w1-gpio
Aby sa nastavenie uplatnilo, musíme Raspberry Pi reštartovať:
sudo reboot
Pomocou príkazu modprobe môžeme do Linuxu pridať alebo odobrať modul. Na registráciu nového zariadenia, ktorý je pripojené na GPIO4 a využíva jednovodičové rozhranie (1-wire interface) použijeme nasledovný zápis:
sudo modprobe w1-gpio
Aby sme špecifikovali, že zariadenie umožňuje meranie teploty prostrednícvom 1-wire rozhrania použijeme nasledovný zápis:
sudo modprobe w1-therm
Ak je senzor pripojený k Raspberry Pi správne, tak by sa v umiestnení /sys/bus/w1/devices mal zobraziť adresár začínajúci 28-. Za pomlčkou nasleduje sériové číslo senzora. Každý senzor má unikátne sériové číslo. Toto umožňuje pripojiť viacero senzorov na rovnaký pin GPIO4. Pri pripojení viacerých senzorov sa pripája iba jeden 10kΩ pull-up rezistor. Ak máme pripojených viacero senzorov, tak sa v danom umiestnení zobrazí zodpovedajúci počet adresárov začínajúcich 28-. Adresáre zobrazíme pomocou nasledujúcich príkazov:
cd /sys/bus/w1/devices
ls
Na obrázku nižšie je príklad dvoch pripojených teplotných senzorov.
Pripojenie dvoch teplotných senzorov 28-0416c219d3ff a 28-0416c2686fff.Vojdeme do adresára, ktorého názov sme zistili v predchádzajúcom kroku a zodpovedá vybranému senzoru (napr. 28-0416c219d3ff):
cd 28-0416c219d3ff
A pomocou príkazu cat vypíšeme výstup zo súboru w1_slave:
cat w1_slave
Dostaneme výstup v tvare:
79 01 4b 46 7f ff 0c 10 29 : crc=29 YES
79 01 4b 46 7f ff 0c 10 29 t=23562
Prvý riadok nás informuje o úspešnej kontrole CRC pomocou kľúčového slova YES. Ak dostaneme iný výsledok kontroly (NO, FALSE, ERROR), treba nájsť chybu a odstrániť ju. Dôležitejší je druhý riadok, ktorý obsahuje údaj o nameranej teplote. Údaj t=23562 znamená, že bola nameraná teplota 23,562°C.
Načítanie teploty zo senzora 28-0416c219d3ff.Zaujímavé odkazy
Raspberry Pi: Measure, Record, Explore.