Poslední součástkou, kterou si dnes ukážeme, bude 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á navíc 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.
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
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.
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-jaro-2019-pondeli:tmp5:1", "title": "TeplomÄ›r", "html": "\n \n \n\n <h1>Teploměr</h1>\n<p>Poslední součástkou, kterou si dnes ukážeme, bude jednoduchý teploměr DS18B20.\nTento teploměr se vyrábí v několika provedeních a je velmi populární především\npro jednoduchost použití a velmi nízkou cenu.</p>\n<p>Stejně jako si MicroPython pomocí speciálního „jazyka” rozumí s LED páskem,\novládá i „jazyk” pro komunikaci s teploměrem a řadou dalších zařízení.\nTento „jazyk“, protokol sběrnice OneWire, má navíc tu výhodu, že se na jednu\nnožičku destičky dá připojit hned několik teploměrů a číst teploty\nz každého z nich.</p>\n<h2>Zapojení</h2>\n<div class=\"admonition warning\"><p>Po zapojení drž teploměr na chvíli mezi prsty.\nPokud je zapojený špatně, začne se velmi rychle zahřívat.\nV takovém případě jej okamžitě odpoj.</p>\n</div><p>Otoč teploměr tak, aby jeho „břicho” směřovalo směrem od tebe.\nNásledně propoj nožičky teploměru s destičkou takto:</p>\n<ul>\n<li>Levou nožičku propoj s <code>GND</code></li>\n<li>Prostřední nožičku propoj s <code>D4</code></li>\n<li>Pravou nožičku propoj s <code>3V3</code></li>\n</ul>\n<h1>Měření</h1>\n<p>Pokud je vše zapojeno správně, přistup k měření teploty.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kn\">from</span> <span class=\"nn\">time</span> <span class=\"kn\">import</span> <span class=\"n\">sleep</span>\n<span class=\"kn\">from</span> <span class=\"nn\">machine</span> <span class=\"kn\">import</span> <span class=\"n\">Pin</span>\n<span class=\"kn\">import</span> <span class=\"nn\">onewire</span>\n<span class=\"kn\">from</span> <span class=\"nn\">ds18x20</span> <span class=\"kn\">import</span> <span class=\"n\">DS18X20</span>\n\n\n<span class=\"n\">pin</span> <span class=\"o\">=</span> <span class=\"n\">Pin</span><span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">Pin</span><span class=\"o\">.</span><span class=\"n\">IN</span><span class=\"p\">)</span> <span class=\"c1\"># D4</span>\n<span class=\"n\">ow</span> <span class=\"o\">=</span> <span class=\"n\">DS18X20</span><span class=\"p\">(</span><span class=\"n\">onewire</span><span class=\"o\">.</span><span class=\"n\">OneWire</span><span class=\"p\">(</span><span class=\"n\">pin</span><span class=\"p\">))</span>\n<span class=\"n\">sensory</span> <span class=\"o\">=</span> <span class=\"n\">ow</span><span class=\"o\">.</span><span class=\"n\">scan</span><span class=\"p\">()</span>\n\n<span class=\"n\">ow</span><span class=\"o\">.</span><span class=\"n\">convert_temp</span><span class=\"p\">()</span>\n<span class=\"n\">sleep</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"n\">teplota</span> <span class=\"o\">=</span> <span class=\"n\">ow</span><span class=\"o\">.</span><span class=\"n\">read_temp</span><span class=\"p\">(</span><span class=\"n\">sensory</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">])</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Teplota je"</span><span class=\"p\">,</span> <span class=\"n\">teplota</span><span class=\"p\">)</span>\n</pre></div><p>Tento kód nejdříve opět připraví nožičku (pin) pro komunikaci a následně na ní\npřipraví komunikační protokol OneWire a teploměr DS18X20.\nPrvním krokem k teplotě je nalezení všech dostupných teploměrů na dané\nsběrnici, což nám zajistí metoda <code>ow.scan()</code>,\nkterá nám vrátí seznam identifikátorů nalezených teploměrů.</p>\n<p>Metoda <code>ow.convert_temp()</code> pak pošle všem teploměrům příkaz, aby změřily\nteplotu.\nPo tomhle rozkazu musíš alespoň vteřinu počkat a následně můžeš\nteplotu z čidla přečíst.</p>\n<p>Zkus teploměr na chvíli chytit mezi prsty, zahřát ho tak, a změřit teplotu\nznovu.</p>\n\n\n " } } }