Lekce 24 - Arduino a Bluetooth I - komunikace s PC

14.08.2013 12:12

Translate to English

V dnešním díle si k Arduinu připojíme Bluetooth modul a zkusíme si komunikaci, přenos dat a řízení. V dalším díle se pokusíme spojit Arduino přes Bluetooth se zařízením se systémem Android (telefon, tablet). Takže co budeme potřebovat. V první řade Arduino - jedno jaké a dále tedy nějaký ten modul Bluetooth. Já použiji již s připravenými vývody na modulu, který zasunu do mini nepájivého kontaktního pole.

 

Na obrázku vidíte, že modul má celkem 6 pinů, ale k zapojení je třeba jen 4. Z toho 2 napájení a protože modul komunikuje po sériové lince tak další je Tx a Rx. Napájení je 3,3V nejsem si jistý, ale na modulu je možná regulátor takže by měl umožnit i 5V napájení. 

Modul si tedy zapojíme. V případě zapojení s Arduinem UNO máme sériovou komunikaci připravenou na pinu digital 0 (Rx) a digital 1 (Tx). Ovšem pozor !!! Tx z Arduina zapojíme na Rx modulu bluetooth a Rx z Arduina na Tx modulu. Nejedná se o sběrnici, takže receive do transmit a naopak :-). Do Arduina si nahrajeme program, který bude tedy něco pro začátek vysílat.  

Pozor ovšem na to, když ho programujeme. Při programovaní přes USB je vyuřívám právě seriový port na pin 0 a 1, který je zapojen k modulu. Modul si při programování odpojíme a nemělo by to dělat problémy. 

A jak to udělat, aby jsme nemuseli pořád něco odpojovat od sériového portu?

Prostě si sériový port uděláme nikde jinde. Pomocí knihovny SoftwareSerial.h, která by již měla být standardně integrována do prostředí Arduina, si vytvoříme sériový port na pinech 2 a 3 a nazveme ho Bluetooth. Kód k tomuto je zde:

Nezapomeňme tedy přepojit modul na pin 2 a 3. No teď už jenom spojit bluetooth modul s počítačem. Vešina notebooků má již bluetooth integrován. V mém případě jsem použil bluetooth modul do USB. Po zapojení napájení našeho modulu, by měl tento operační systém detekovat. V mém případě u OS W7 nebyl problém.  

v ovládacích panelech v systému Windows 7 otevřeme záložku "Tiskárny a zařízení" a dále přidat zařízení. V nabídce by se měl objevit náš modul. Ovšem pozor vy tam uvidíte ne název Arduino monitor, ale HC-08... nebo nějak tak. Já si svůj modul přejmenoval (ukážu později jak se to dělá). Poté kliknete na další kdy se objeví následující nábídka. 

Vybereme nabídku "Zadat párovací kód zařízení". V našem případě to bude obligátní "1234" nebo "0000", mě fungovalo 1324. I tento PIN jde změnit stejně jako název, ale jak jsem již uvedl, vysvětlím později. Po těhto krocích by mělo být zařízení spojeno s počítačem. Ovšem k čemu nám to teď je? Systém Windows vytvoří v počítači seriový port COM pro komunikaci s naším modulem.  

My teď tedy potřebujeme program, kde budeme odposlouchávat příchozí data z modulu a také do něho i data posílat. Já jsem pátral na internetu a nenašel jsem mnoho programů. Ale jedním z nich, který fungoval byl TERA TERM, který si můžete stáhnout na tomto odkazu. Program má sice cca 10MB, což je dost, ale funguje a to je hlavní.

Po spuštění vybereme Serial a v rozbalené nabídce již vidíme port který budeme potřebovat. Po potvrzení OK si můžeme všiimnout, že že LED dioda na našem modulu připojeném k Arduinu přestala blikat a začala svítit. To znamená, že je zařízení spárované a mělo by to být funkční. 

Na terminálu na počítači již nyní můžeme vidět jak se vypisuje text "ahoj" každé 2 vteřiny. :-). Pokud jste se dostali až sem tak gratuluji :-). 

Ptáte se proč jsme nepoužili SerialMonitor z prostředí Arduina? Prostě protože, ač se mi tam někdy COM8 ukázal, program vykazoval chybu, prostě se zařízení nespárovalo. A vzhledem k tomu, že program TERATERM mi připadal dost těžkopádný, napsal jsem si malý prográmek sám v C# .NET. má cca 250KB a mě plně postačí. Stejně, aby jsem modul s počítačem plně využil, aplikaci si budu muset napsat sám. Těžko budu psát příkazy a číst data na nějakém terminálu. Takže program dávám k dispozici zde. Nevím zda po Vás nebude systém vyžadovat nějaké knihovny .NET, ale mě to fungovalo bez problémů. 

V mém programu vše funguje. Jednosměrnou komunikaci jsme si ukázali a teď si to uděláme trošku složitější. Použijeme např. čidlo teploty a vlhkosti DHT11 a do počítače budeme bezdrátově odesílat hodnotu teploty a při tomto budeme ještě z počítače ovládat LED diodu, kterou budeme příkazy rozsvěcovat či zhasínat. 

Tak program je jasný. Čidlo DHT11 připojíme na digital pin 4 (dle lekce 6) a LED přes odpor 1,2kOhm na digital pin 13. 

Arduino přes rohraní Bluetooth odesílá v určené časovém intervalu hodnotu teploty. Dále, když odešleme počítačem přes Bluetooth znak 0 nebo 1, LED dioda se rozsvítí nebo zhasne. Samozřejmě pro aplikace již přímo určené nějakému účelu bude námi naprogramované rozhraní na počítači trochu lépe vypadat a k zapnutí něčeho tam nebudeme odesílat přes příkazový řádek nějaké hodnoty, ale bude vše skryto pod tlačítky a např. teplota pod nějakými grafickými ukazateli. 

 

Zpět

Diskusní téma: Lekce 24 - Arduino a Bluetooth I

Datum
Vložil
Titulek

přítomnost arduina

Ahoj, strašně se mi líbí nápad, který si zrealizoval. Byl jsem trochu zmatený, když jsem se náhodou dostal poprvé na Tvé stránky a četl jsem jako první tento článek, ale už po připojení s telefonem nebo tabletem. Teď jsem dočetl tento článek a velmi mě zaujal a mám také dobrý nápad, zkusím ho též zrealizovat a dal bych kdyžtak pak vědět, ale nejsem moc dobrý programátor, jsem laik a s arduinem jsem se zatím nesetkal, proto můj první dotaz možná vyzní hloupě. Pokud se mi povede naprogramovat BT čip přes arduino jako Tobě, tak potom při každém spárování zařízení (dále jen BT) musím mít BT připojeno k arduinu? Nebo se dá udělat vlastní napájení a naprogramovat vlastní čip, co by ovládaĺ BT. Chtěl bych to zkloubit do něčeho, co je velké asi jako USB falska nebo tak. Čekám na odpověď a předem za ní děkuji, s pozdravem Adam Polák :)

Datum
Vložil
Titulek

Re: přítomnost arduina

Ahoj,
BT ti samostatně fungovat nebude. V BT se pouze naprogramuje jak se zařízení jmenuje, jakou používá rychlost a dalších několik parametrů. Potřebuješ něco co bude řídit tvoje BT a odesílat pomocí něho data, které Arduino vygeneruje nebo naopak přijme a vyhodnotí. Samozřejmě, že se dá vše miniaturizovat. Koukni na lekci 22, kde používáme pouze procesor bez samotné desky Arduina, nebo můžeš využít i jinou platformu nebo procesor. Ale samotný BT modul ti fungovat nebude.

Datum
Vložil
Titulek

Re: přítomnost arduina

BT modul ti bude fungovat na všem co má UART (AVR, PIC, atd...)

Datum
Vložil
Titulek

Prohození TX RX

Jojo, to prohození RX a TX mě pěkně zmátlo. Přišel jsem na to víceméně náhodou. Už jsem chtěl ten modul reklamovat.

Datum
Vložil
Titulek

Re: Prohození TX RX

je to logický, RX znamená receive (přijímat) a TX transmit (odesílat), tedy když jeden čip odesílá, druhej to přijímá a opačně

<< 1 | 2

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.