Cílem následujícího článku je seznámit čtenáře časopisu s aplikací poslední verze komunikačního standardu – Bluetooth verze 4.0. Tento článek popíše důvody použití tohoto komunikačního rozhraní, možnosti implementace a bude se snažit vysvětlit mnou zvolené metody. Na závěr zhodnotí výsledek na komerčně prodávaném produktu. Článek také ukáže, jak složitá může být cesta ke splnění zadání, pokud člověk použije nejnovější technologii.
Jako první si tedy uvedeme důvod použití komunikačního rozhraní Bluetooth 4.0, které je také uváděno jako Bluetooth Low Energy (BLE). Byl jsem minulý rok osloven jednou firmou s potřebou modernizace jejího produktu, kde hlavním vylepšením mělo být nahrazení kabelové komunikace za bezdrátovou. S nabídkou jsem bez zaváhání souhlasil a s její realizací jsem nečekal v podstatě žádné problémy. Protože přáním zákazníka bylo použití nějakého zavedeného standardu, tak řešení bylo nasnadě – použiji Bluetooth verze 2.0 nebo wifi modul a za měsíc nebude co řešit. Když jsem ovšem zjistil, že můj zákazník prodává přístroje po celém světě, tak jsem řešení s wifi zavrhnul – nastavení Bluetooth je přeci jenom jednodušší. Vždyť umožňuje i komunikaci mezi mobilem a handsfree sadou v autě.
Po bližším rozhovoru se zákazníkem jsem ale zjistil, že celá záležitost nebude tak jednoduchá. Jeho přístroj je napájen z lithiové baterie o napětí 3 V a spotřebě několik mA (do 5 mA), přičemž baterie má kapacitu 200 mAh. Když jsem zákazníkovi nastínil řešení se standardním Bluetooth modulem verze 2.0 a uvedl spotřebu modulu asi 25 mAh, hned jsem zjistil, že toto řešení není pro něho přijatelné.
Nerad se však vzdávám, a tak jsem začal pátrat dále po jiné možnosti, až jsem objevil vhodné řešení. Byl jím nový standard, a to Bluetooth verze 4.0. Prospekty a katalogové listy udávaly výdrž komunikace několik let z běžně známé baterie CR2032. Protože jsem kdysi modul Bluetooth ver. 2.0 používal, tak jsem věděl, že modul lze přepnout do režimu, kdy emuluje sériovou linku, který se nazývá SPP profil. Pohledem do dokumentace Bluetooth standardu verze 4.0 jsem ale zjistil, že tento profil již není dále podporován. S trochou nadsázky lze říci, že Bluetooth verze 2.0 a verze 4.0 mají společný snad jenom název. V tabulce 1 je uvedeno porovnání obou těchto verzí.
Tab.1 Tabulka 1 Porovnání obou verzí Bluetooth
Z výše uvedeného vyplývá, že Bluetooth verze 2.0 je určen pro přenos velkých bloků dat bez ohledu na spotřebu, zatímco verze 4.0 je vhodná pro přenos krátkých bloků dat s minimální spotřebou. Omezující podmínky verze 4.0 mně nijak nevadily – potřeboval jsem navázat spojení, přenést naměřenou hodnotu a ukončit spojení. Zbývalo mi tedy popsat fyzickou a softwarovou implementaci. Začal jsem pátrat na internetu po detailech, jenom abych velmi rychle zjistil, že se jedná o novinku, ke které existuje jen velmi málo informací. Naštěstí ty dostupné indikovaly řešení pomocí procesoru CC2540 od Texas Instruments. Tento procesor pracuje s jádrem 8051 a s rozšířením o adresaci větší paměti a o vysokofrekvenční část.
Další můj postup byl už jenom logický – zakoupil jsem vývojovou sadu pro tento procesor. Ta obsahuje malý programátor a hw debugger, malý slave modul s 3osým akcelerometrem, snímačem vlhkosti a LED diodou a Blue-tooth klíč do USB portu na počítači. To vše je vidět na obr. 1.
Obr. 1 Vývojový kit pro Bluetooth verze 4.0 od Texas Instruments
V tu chvíli jsem předpokládal, že mám vyhráno. Vývojový kit má předprogramovanou aplikaci, a tak jsem zasunul klíč do portu a vložil baterii slave do modulu. Po zmáčknutí tlačítka na klíči slave modul ihned reagoval. Začal jsem tedy pátrat po zdrojových kódech programu. K vývojovému kitu lze stáhnout ukázkové příklady v programovacím jazyce C. Také lze stáhnout Bluetooth stack, který tyto programy využívá. Velkým překvapením pro mne byla velikost stacku, který zabírá v procesoru asi 160 KB paměti flash. Podíval jsem se do dokumentace ke standardu Bluetooth a ihned jsem pochopil důvod – tento standard obsahuje asi 1 000 stránek. Začal jsem studovat zdrojové texty ukázkových programů a Bluetooth stacku. Po několika dnech usilovné práce se mi podařilo přenést vzduchem několik bajtů tak, jak jsem požadoval. To ale bylo pro použití v reálné aplikaci, jako bych stál na začátku cesty.
Začalo mi být zřejmé, že tudy cesta nevede. Toto řešení je vhodné přeci jenom pro větší firmu, která může na tuto práci vyčlenit pracovníka. Odměnou je potom možnost nastavit komunikaci přesně podle požadavků na spotřebu, rychlost odezvy, počet současných spojení atd. Není ale asi vhodné pro malou firmu, která nemá vhodné lidské zdroje, a přeci je potřeba tuto část rychle vyřešit. Začal jsem tedy už přemýšlet i o tom, zda tento úkol dokáži vůbec dotáhnout do konce, když jsem náhodou našel na internetu jiné řešení, zdánlivě vhodné i pro mne. Byl jím komunikační modul PAN1720 od firmy Panasonic, který má nahrán firmware od firmy BlueRadios.
Jedná se o modul velikosti 16×10×2 mm a je určen pro připájení do vyvíjené aplikace. Obsahuje fyzicky již zmíněný procesor CC2540, vysokofrekvenční anténu a několik pasivních součástek. S aplikací modul komunikuje přes UART sběrnici. Ale hlavním důvodem pro pořízení je již výše zmíněný firmware od firmy BlueRadios. Na internetu jsem objevil popis modulu a tak i zjistil pro mne velmi důležitou vlastnost – po správném nakonfigurování a sestavení spojení se dva moduly mezi sebou chovají jako standardní sériový port. Je zde tedy doprogramován SPP profil jinými prostředky. Zakoupil jsem následně několik modulů s tímto firmwarem v ceně asi 450 Kč za kus. Moduly mi dorazily celkem rychle, a tak jsem začal pátrat po popisu firmware. Záhy jsem ale zjistil, že tím problémy nekončí. Nejdříve jsem kontaktoval německé zastoupení firmy Panasonic – to se mi sice snažilo vyjít co nejvíce vstříc, ale skončilo to s tím, že mi žádné informace poskytovat nesmějí, že si je musím získat od výrobce firmware. Následovala tedy komunikace s firmou, která naprogramovala firmware, kdy jsem vysvětlil, že potřebuji popis komunikačního protokolu pro modul Panasonic 1720. Odpovědí kupodivu bylo, že žádný modul s tímto označením nemůže obsahovat jejich firmware. Protože po připojení napájecího napětí je modul detekován ve vzduchu jako BlueRadios modul, opsal jsem z modulu asi 10místné číslo a obsahy obrazovek z detekce jiným Bluetooth zařízením a to jsem znovu poslal emailem. Zde je zapotřebí říci, že k detekci jsem použil vývojovou sadu od Texas Instruments. Opět jsem obdržel odpověď, že žádný takový výrobek nemůže obsahovat jejich firmware. Zkontroloval jsem tedy odeslaný email a našel možný problém – použil jsem malá písmena místo velkých. Následoval další email, kde již byl typ napsán správně velkými písmeny. Obratem jsem obdržel přístupová práva na jejich stránky, kde jsem si stáhnul popis komunikačního protokolu firmware a nejnovější verzi firmware.
Co tedy firmware umožňuje? Po připojení napájecího napětí modul poslouchá tzv. AT příkazy, pomocí kterých umí vypsat zařízení v dosahu, přičemž umožňuje udržovat současně až 20 spojení. Umožňuje také nahrát blacklisty a whitelisty zařízení pro nepovolené a/nebo přednostní spojení atd.
Ale nejdůležitější funkcí tohoto modulu je bezesporu přepnutí do módu, kdy se po navázaném spojení chová modul na obou stranách komunikace jako bezdrátový UART. Vysláním předem nastavené sekvence se modul umí přepnout zpět do režimu, kdy opět poslouchá AT příkazy. Tak například příkaz ATDILE zobrazí všechna zařízení s Bluetooth ver. 4.0 v dosahu.
Nyní se vrátím k mé zakázce. Navrhnul jsem desku, která obsahuje 2 nezávislé Bluetooth moduly, ke kterým jsem připojil převodníky USB na sériovou linku pro ladění z počítače, a provedl měření. Modul v plně komunikačním módu má spotřebu asi 6 mA. Po přepnutí do režimu spánku, kdy funguje vysokofrekvenční část a je uspán UART, má spotřebu jenom asi 0,6 mA. Tyto výsledky již byly pro mou úlohu přijatelné. Modul provozuji v režimu spánku, periodicky jej probouzím, abych zjistil, zdali se někdo nepřipojil nebo mi neposlal nějaká data. Celé zařízení pro test komunikace je vidět na obrázku 2.
Obr. 2 Deska pro test komunikace s moduly PAN1720
Musím říci, že vývoj zařízení s pomocí nového standardu Bluetooth verze 4.0 nebyl vůbec snadný, přestože již mám nějaký ten vývoj za sebou. Informace se zkušenostmi jiných vývojářů se na internetu skoro vůbec nevyskytovaly. Pokud se člověk nemůže opřít o diskusní fóra a podobné kanály, tak se nebojím říci, že se jedná o prvotní výzkum. Použití vývojového kitu od firmy Texas Instruments je velmi náročné na studium zdrojových textů software a klade požadavky na dobrou znalost tohoto rozhraní. Výsledkem však může být kvalitní aplikace, kde lze vše mít pod kontrolou. Pokud použijeme již hotové zařízení od některé z menších firem, tak se k výsledku přece jenom dopracujeme snadněji. V mém případě naštěstí vše vedlo k úspěšnému řešení a ke spokojenému zákazníkovi.