Ukážeme si jednoduchý teploměr DS18B20. Tento teploměr se vyrábí v několika provedeních a je velmi populární především pro jednoduchost použití a velmi nízkou cenu.
Stejně jako si MicroPython pomocí speciálního „jazyka” rozumí s LED páskem, ovládá i „jazyk” pro komunikaci s teploměrem a řadou dalších zařízení. Tento „jazyk“, protokol sběrnice OneWire, má mimojiné tu výhodu, že se na jednu nožičku destičky dá připojit hned několik teploměrů a číst teploty z každého z nich.
Po zapojení drž teploměr na chvíli mezi prsty. Pokud je zapojený špatně, začne se velmi rychle zahřívat. V takovém případě jej okamžitě odpoj.
Teploměr potřebuje součástku navíc: rezistor o hodnotě 4.7Ω. Zapoj si teploměr do prázdného nepájivého pole, ať se všechno vejde.
Otoč teploměr tak, aby jeho „břicho” směřovalo směrem od tebe. Následně propoj nožičky teploměru s destičkou takto:
GND
D4
3V3
D4
a 3V3
) připoj rezistor
(na směru nezáleží)Pokud je vše zapojeno správně, přistup k měření teploty.
from time import sleep
from machine import Pin
import onewire
from ds18x20 import DS18X20
pin = Pin(2, Pin.IN) # D4
ow = DS18X20(onewire.OneWire(pin))
sensory = ow.scan()
ow.convert_temp()
sleep(1)
teplota = ow.read_temp(sensory[0])
print("Teplota je", teplota)
Tento kód nejdříve opět připraví nožičku (pin) pro komunikaci a následně na ní
připraví komunikační protokol OneWire a teploměr DS18X20.
Prvním krokem k teplotě je nalezení všech dostupných teploměrů na dané
sběrnici, což nám zajistí metoda ow.scan()
,
která nám vrátí seznam identifikátorů nalezených teploměrů.
Metoda ow.convert_temp()
pak pošle všem teploměrům příkaz, aby změřily
teplotu.
Po tomhle rozkazu musíš alespoň vteřinu počkat a následně můžeš
teplotu z čidla přečíst.
Zkus teploměr na chvíli chytit mezi prsty, zahřát ho tak, a změřit teplotu znovu.