Lekce 24 – Arduino a Bluetooth II – komunikace s Androidem

V první části tutoriálu jsme si ukázali přenos dat mezi Arduinem a PC pomocí modulu Bluetooth a v tomto díle si ukážeme přenos dat se zařízením se systémem Android. V dnešní době rozmachu chytrých mobilních telefonů a tabletů s tímto systémem tento způsob komunikace využijeme více jak s PC.

Ze začátku ovšem upozorňuji, že to nebo věc lehká, a budeme muset programovat i pro Android. Já sám, protože zkušenosti s programováním se systémem Android nemám, jsem se musel naučit spousty nových věcí v programovaní pod jiným systémem. Na straně Arduina nebudeme nic měnit. Bluetooth je připojen na sériový port a dále je k Arduino připojeno čidlo teploty a vlhkosti DHT11 a také diody, kterou budeme pomocí tabletu nebo telefonu rozsvěcet a zhasínat, je připojena na digitální pin přes odpor 1,2 kOhmu. Kód pro Arduino zůstává stejný jako v předchozí části tutoriálu o Bluetooth.

Aby jsme si komunikaci se systémem Android vyzkoušeli, nebudeme zatím nic programovat, a využijeme jednoduchý terminál pro Android, který dokáže najít naše zařízení a odesílat a přijímat nějaká data. Jedná se o program od společnosti ITEAD STUDIO “Bluetooth and Wifi Debuging Assistant”. Program naleznete na Google Play zdarma. Odkaz je zde:

Obslužný program pro Arduino je zde:

Kód programu je vysvětlen v první části tutoriálu o Arduinu. Změnou pouze je to, že nepoužíváme PC ale např. tablet.

Nemusím připomínat, že je nutné také si nejdříve naše zařízení v zařízení s Androidem najít a spátovat. Po spuštění programu Bluetooth Assitant … vybereme možnost “Bluetooth” a následně i naše zařízení.

Na obrázku vidíte screenshot z programu Bluetooth Assistant.

Čísla která se tam objevují se symbolem “*” odesílá Arduino jako teplotu z čidla DHT11 každé 3 vteřiny. * je tam pouze proto, aby program poznal, že je přijímána teplota.

 

s tímto programem dokážeme také hodnoty odesílat. Víme, že k Arduinu máme připojenou LED diodu, která se rozsvítí, pokud Bluetooth modul přijme hodnotu ‘1’, myšleno jako jako znak a pokud přijme hodnotu ‘0’ tak diodu zhasne. Pokaždé také nazpět odešle z Arduina “OK 1” nebo “OK 2”. To jsem naprogramoval navíc jen jako kontrolu, zda Arduino příkaz dostalo. Není to povinné. Vše bez problémů funguje a LED dioda se rozsvěcí a zhasíná jak má.

Těžko ovšem budeme ovládat naše Arduino přes Bluetooth tímto terminálem, ale budeme si muset napsat vlastní program pro systém Android. Tak to dále nebudeme zdržovat a začneme. Nevím jestli se zde rozepisovat a tom jak začít programovat pro Android, ale něco málo si k tomu řekneme. Pro programování pro tento systém se mi zdálo nejlepší prostředí “Eclipse”. Najděte si na internetu jak a kde ho stáhnout. Já jsem při vývoji mé aplikace používal tablet NEXUS 7, který jsem měl při programovaní spojen s počítačem  a při kompilaci mého programu se vždy program nahrál rovnou do tabletu, kde se spustil. Je samozřejmé mít zařízení (tablet nebo telefon), kde je Bluetooth a také mít aktivovanou volbu “Pro vývojáře” a “Ladění přes USB” – hledejte na internetu. Já jsem vyvíjel tento druh aplikace poprvé a používal jsem hodně internet, kde najdete spoustu návodů (samozřejmě v angličtině) pro programovaní Bluetooth pro Android.

Dávám sem zdrojová kód “Activity”, který Vám sice samostatně fungovat samozřejmě nebude, ale mnohé napoví:

Upozorňuji, že není dokonalý. Bez zapnutého Bluetooth spadne a nefunguje. Avšak jako moje první dílo pro Android to docela ujde. Z videa je patrné, že vše dělá co má a i když to není sofistikovaný program, LED diodu už ovládáme tlačítkem a i text s teplotou určitě vypadá lépe něž nějaká data z terminálu.

Někdy v předchozím dílu jsem slíbil, že Vám ukážu jak změnit zobrazovaný název zakoupeného bluetooth modulu. Pro ty, který to dočetli až sem je to jako bonus. Provedeme to pomocí AT příkazu.

Nezapomeňme, že jsme v programu nepoužili SoftwareSerial, takže modul musí být připojen na RX a TX (pozor na RX –> TX a TX –> RX a odpojte modul při programovaní Arduina !). AT kódy jde měnit rychlost přenosu, jméno, heslo, a další parametry dané výrobcem. Na internetu bude spousta manuálů a návodů, někdy je uváděn zápis AT+NAME=”NOVY_NAZEV”rn někdy stačí pouze AT+NAMENOVY_NAZEV jako v mém případě. Vyzkoušejte sami, mě to vše funguje, pouze pozor na změnu rychlosti spojení. Defaultně je nastavena na 9600 v případě, že tuto změníte, musíte k návratu na původní hodnotu poslat AT příkaz již v nastavené rychlosti, kterou jste provedli naposledy.

2 Komentářů

  1. kocour

    Ahoj,
    je možné poslat z mobilu text, aby my ho arduino poslalo obratem zpět? Jdou mi poslat jen jednotlivé znaky. Problém je v chair, nebo to prostě přes Bluetooth and Wifi Debuging Assistant nepůjde? Díky
    void loop() {
    if ( Bluetooth.available())
    {
    char znak = Bluetooth.read();
    Bluetooth.println(znak);
    }
    }

  2. martas1357

    Zkus změnit proměnnou char za string.(proměnná na uchování textu)

Napsat komentář

Translate »