Napětí a osvit
Pro získání hodnot reprezentujících napětí a intenzitu osvitu můžete využít rozšiřující senzorický kit DDC-SE-01, který lze snadno připojit do vývojového zařízení DK-EVAL-04A. Na tomto kitu najdete senzor intenzity osvětlení – fotorezistor, potenciometr pro snímání hodnot napětí či externí teplotní čidlo Dallas 18B20.
V sadě připravených příkladů (Examples\DPA\CustomDpaHandlerExamples) najdete příklad CustomDpaHandler-UserPeripheral-ADC.c určený pro čtení hodnot z fotorezistoru a potenciometru.
V minulém dílu jste se seznámili s tím, jak pracovat s programovou nadstavbou Custom DPA Handler. Také jste sestavili funkční mesh síť IQRF, pomocí které můžete pokrýt rozlehlou plochu, ze které můžete snímat hodnoty a ovládat zařízení. Nebudeme zde tedy znovu rozebírat, jak postavit síť a jak zařízení nakonfigurovat, aby mohla programovou nadstavbu Custom DPA Handler využívat.
Do Nodu, na který připojíte rozšiřující senzorický kit, nahrajte zkompilovaný program CustomDpaHandler-UserPeripheral-ADC-7×D-V226–160303.hex (či jeho jinou variantu) a povolte použití Custom DPA Handleru. Prostudujte tento handler, abyste věděli, na jakou periferii zasílat příkazy, případně data.
Technické údaje
Z komentářů v příslušném Custom DPA Handleru zjistíte, že PNUM = 0×20 a PCMD = 0 vrací dvoubajtovou hodnotu s 10b ADC výsledkem z pinu C5 (AN4) v parametru PData, a že PNUM = 0×21 a PCMD = 0 vrací dvoubajtovou hodnotu s 10b ADC výsledkem z pinu C1 (AN0) v parametru PData.
V dokumentaci senzorického kitu zjistíte, že pin C5 je připojen na potenciometr a C1 na fotorezistor.
Když tedy zašlete příkaz PCMD = 0 na první uživatelskou periferii PNUM = 0×20, získáte v parametru PData hodnotu z potenciometru, a pokud jej zašlete na druhou uživatelskou periferii PNUM = 0×21, získáte hodnotu z fotorezistoru.
Přijatá hodnota v parametru PData (v pořadí Little-endian – PDATA[1] a PDATA[0]) – zde 0×022A odpovídá hodnotě z potenciometru – binárně vyjádřeno jako 0000 0010 0010 1010. Jedná se o 10bitovou hodnotu zapsanou v těchto 2 bajtech, která se dá převést na napětí.
Podobně, když pošlete příkaz PCMD = 0 na druhou uživatelskou periferii PNUM = 0×21, bude vrácena hodnota z čidla intenzity osvitu.
Tato 10bitová hodnota (zde 0×0126 – binárně 0000 0001 0010 0110) lze dle dokumentace daného čidla převést na hodnotu odpovídající hodnotě intenzity osvětlení.
Teplota z čidla Dallas 18B20
Na senzorickém kitu najdete externí teplotní čidlo Dallas 18B20, pomocí kterého můžete měřit teplotu okolí neovlivněnou vlastním transceiverem. Pro čtení této teploty je připraven příklad CustomDpaHandler-UserPeripheral-18B20.c. Příslušný hex soubor nahrajte do transceiveru, prostudujete kód Custom DPA Handleru, a zašlete data pro získání teploty.
Postup je stejný jako v případě získání hodnoty z potenciometru. Příkaz PCMD = 0 se zasílá na první uživatelskou periferii PNUM = 0×20, a vrácená hodnota se nachází v parametru PData. Rozdíl je tedy pouze v tom, jaký program zaslaný příkaz zpracovává.
V této ukázce jsme získali hodnotu 0×0190, což binárně odpovídá hodnotě 0000 0001 1001 0000. Interpretace hodnoty závisí na samotném čidlu, jehož manuál je třeba vyhledat a prostudovat. Zde byla vrácena hodnota 25°C.
Zdroj: datasheet DS18B20 [PDF]
V příštím dílu se podíváme blíže na tzv. FRC – Fast Response Command, který umožňuje hromadné získávání informací ze zařízení či jejich řízení.