Aplikace IO Expandéru s moduly IQRF II
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Aplikace IO Expandéru s moduly IQRF IIAplikace IO Expandéru s moduly IQRF II

 

Aplikace IO Expandéru s moduly IQRF II

Google       Google       6. 1. 2014       6 982×

V předchozím článku jsme si vytvořili desetikanálový dálkový ovladač s modulem IQRF. V závěru jsme si slíbili, že doplníme indikaci vybité baterie a vytvoříme dva typy přijímačů. Jeden bude pouhým převodníkem na sériovou linku, druhým pak bude šestnáctikanálový programovatelný spínač. Pro jednoduchost si práci rozdělíme a v dnešním článku zůstaneme pouze u prvního.

Reklama
Reklama

Měříme napájecí napětí

Základem modulů IQRF jsou procesory PIC. Operační systém této platformy nám dává možnost využít některé z periferií tohoto procesoru. Jednou z nich je i AD převodník. Naštěstí pro ty vývojáře, kteří běžně PIC nepoužívají, není pro většinu činností nutné studovat registry procesorů PIC, protože OS už obsahuje funkce pro využívání některých periferií. Pro měření napájecího napětí je tak možné využít hotovou funkci:

getSupplyVoltage()

Návratovou hodnotou funkce (level) je osmibitové číslo v rozsahu 1 až 15, kde výsledné napětí:

Voltage > 2.25 V + level × 0.1 V

Je třeba si dávat pozor na to, že napětí je u modulů se stabilizátorem měřeno právě na výstupu stabilizátoru, a proto za vhodných podmínek bude maximální napětí 3 V. Změnu zjistíme až s klesajícím napětím zdroje (například baterie). U modulů bez zdroje pak můžeme měřit v plném rozsahu.

Obdobně můžeme například měřit i teplotu pomocí funkce getTemperature(), ale o tom až příště, vrátíme se k měření napájecího napětí. Náš příklad ovladače z předchozího článku si mírně upravíme. Budeme vycházet z referenční příručky výrobce modulu. Přidáme následující část kódu (tučně), parametr DLEN je nutné upravit na hodnotu 3:

if (timeout > 0)        // pokud ještě neodešel dostatečný počet zpráv
{
    read_IO();        // přečte stav tlačítek            
    // zvysi se timer pro mereni
    meastime = meastime +1;            
    // pokud od posledniho mereni uplynulo 10 zprav
    if (meastime == 10)
    {
        // zjisti napeti
        supplyV = getSupplyVoltage();
        // prida priznak ze napeti je platne
        supplyV |=0x80;
        // presune data do bufferu
        bufferRF[2] = supplyV;
        // vynuluje timer
        meastime = 0;
    } else bufferRF[2] = 0x00;
    
    bufferRF[0] = btns_L;
    bufferRF[1] = btns_H;    

Z výše uvedeného je zřejmé, že napájecí napětí budeme měřit jednou za deset odeslaných zpráv. Abychom označili zprávu, která nese informaci o napájecím napětí, využijeme nejvyšší bit třetího bajtu RF bufferu. To si můžeme dovolit právě proto, že informace o napětí nesou pouze nejnižší 4 bity (0-3). V praxi to znamená, že pokud bude napětí například 3,05 V, pak návratová hodnota funkce bude číslo 8 (bitově 1000). Pokud označíme zprávu nejvyšším bitem, pak hodnota třetího bajtu RF bufferu bude bitově 1000 1000; v případě, že napětí bude 2,95 V, pak by hodnota třetího bajtu byla 1000 0111.

Převodník IQRF RF Packet na UART

Vysílač máme hotový, zbývá nám dodělat přijímač. Jednou z variant univerzálního přijímače je prostý převodník RF paketů na pakety zasílané po sériové lince. Díky tomu budeme moci využívat stejně naprogramovaný modul jak pro zařízení připojené k PC, tak pro nasazení ve vlastní elektronice. MICRORISC zatím bohužel funkce pro UART neimplementoval do systému, ale podobně jako u dalších periferií jeho použití nijak neblokuje, jen je nutné si napsat vlastní obsluhu. Stejně jako v případě rozhraní I2C nám výrobce tuto práci usnadnil a v několika příkladech ze StartUp balíčku lze nalézt tyto funkce, nebo jejich modifikace:

void openUART_9600()    
{
    TRISC.5 = 1;        // Pin connected with RX
    TRISC.7 = 1;        // RX input
    TRISC.6 = 0;        // TX output
    BAUDCON = 0;        // Baudrate control setup
                        // Baudrate @ 8MHz, high speed
    #ifdef BD_19200
    SPBRGL = 25;
    #elif defined BD_9600
    SPBRGL = 51;
    #elif defined BD_4800
    SPBRGL = 103;
    #else
    SPBRGL = 51;        // Default baudrate 9600 bd
    #endif
    
    TXSTA = 0b00100100;    // Async UART, high speed, 8 bit, TX enabled
    RCSTA = 0b10010000;    // Continuous receiving, enable port, 8 bits

}

void SendByteUART(uns8 data)
{
    TXREG = data;
    while ((TXSTA&0x02) == 0);
}

První funkce nastaví chování UARTU a portů. Jako výchozí baudovou rychlost budeme využívat 9600Bd, definici nemusíme tedy nikde vytvářet. Druhá funkce pak zajistí naplnění vysílacího bufferu UARTU a počká na jeho vyprázdnění, tedy odeslání bajtu. Budeme-li tedy uvažovat, že přeposíláme tři bajty, mohl by hlavní výkonný kód vypadat zhruba takto:

if	(RFRXpacket())		// wait for message ~100ms (toutRF)		
{			 
	pulseLEDR(); 
	copyBufferRF2INFO(); 
	SendByteUART (0X02);
	SendByteUART (bufferINFO[0]);           
	SendByteUART (bufferINFO[1]);       
	SendByteUART (bufferINFO[2]);			
	SendByteUART (0x0D); 
	SendByteUART (0x0A);            
	clearBufferINFO();
	copyBufferINFO2RF();		//VYNULOVANI RF
}

Z výše uvedeného: Pokud funkce RFRXPacket přijme 3 bajty, překopírují se do bufferu INFO. Dále odešleme hlavičku 0x02, ony tři přijaté bajty a patičku zprávy 0x0D a 0x0A. Hlavičku a patičku používáme pro lepší zpracování v cílové aplikaci a také pro lepší zobrazení v terminálu. Celý kód je ke stažení na konci článku. Následující obrázek zachycuje data přijatá v sériovém terminálu Docklight, prakticky ale můžete pro otestování využít jakýkoliv terminál. Z dat je viditelná hlavička, dva bajty se stavy tlačítek (stisknuto tlačítko F1) a indikace měření napájení spolu s hodnotou napájení jednou za deset zpráv.

Obrázek 1: Výřez okna sériového terminálu

Pro jednodušší testování jsem vytvořil aplikaci, která zobrazuje stav stisknutých tlačítek a napětí baterie. Aplikace může sloužit jako základ pro váš vlastní program. Spolu se zdrojovými kódy je ke stažení na konci článku.

Obrázek 2: Screenshot testovací aplikace (ke stažení na konci článku)

Hardware IQRF USB adaptéru

Jako základ adaptéru nám poslouží jakýkoliv USB-UART převodník, na čínských e-shopech nebo Aukru. Jsou dostupné od 60 korun. Základem je vždy některý z běžných integrovaných USB-UART převodníků (FT232RL, PL2303, CP2102) a jejich typické katalogové zapojení. Například:

Jako druhá (a poslední část) nám poslouží konektor pro IQRF. K převodníku USB-UART pouze stačí připojit napájecí a komunikační linky RX, TX a máme hotovo. Nezapomeňte, že je nutné nastavit na desce převodníku úrovně 3,3 V. Po zasunutí modulu převodníku do USB a instalaci ovladačů bude vytvořen nový virtuální sériový port.

Obrázek 3: Testovací hardware přijímače

Fotografie ovladače

Obrázek 4: Finální verze ovladače

Obrázek 5: Vnitřní uspořádání ovladače

Kde nakupovat

  • IQRF Modul TR-52DA.
  • Krabička HAMMOND 1553BBKBAT – SOS Electronic nebo TME.
  • Štítek na krabičku – libovolný výrobce reklamních předmětů – podlahové PVC + chemická laminace.

Při montáži je vhodné podlepit štítek v místě tlačítek silikonovými kolečky o průměru 10 mm.

Odkazy

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
2 hlasy
Google
(fotka) Ondřej KarasAutor se věnuje vývoji řídících a komunikačních systémů a tvorbě podpůrných aplikací.
Web    

Nové články

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý