Programování | Pojďme programovat elektroniku | Arduino

Pojďme programovat elektroniku: Pošleme zprávu na desítky kilometrů daleko díky síti Sigfox

  • Bluetooth a Wi-Fi se hodí domů a na zahradu
  • Co když je ale chytrá krabička někde v lese?
  • To je úkol pro mobilní sítě pro IoT

Minulý týden Praha hostila hned dvě zajímavé akce ze světa IoT a programování vlastní drobné elektroniky. Ve středu to byl Sigfox Makers Tour Prague, na kterém se účastníci mohli seznámit s bezdrátovou technologií Sigfox, a o den později pak hackathon Českých Radiokomunikací, které propagují konkurenční technologii LoRa.

Já se zúčastnil první akce a domů si přivezl na testování drobnou prototypovací italskou kartičku SmartEverything. Ačkoliv má rozměry a rozložení pinů jako základní Arduino Uno, o kterém už v našem seriálu byla řeč mnohokrát, má s ním společný opravdu jen rozměr a množnost programování v Arduino IDE.

Švýcarský nožík mezi arduiny

Pod kapotou se totiž namísto jednoduchého osmibitového procesoru ATmega našlo místo na armový Cortex-M0+ (Atmel SAM D21) a hromadu senzorů, kterým vévodí modem protokolu Sigfox a dále pat třeba lokalizační čip s integrovanou anténou, který vedle tradičního navigačního systému GPS podporuje také ruský GLONASS, japonský systém QZSS a je také připravený na ostrý start evropského Galilea. Dále zbylo místo na teploměr, vlhkoměr, tlakoměr, gyroskop, akcelerometr, magnetometr, NFC nebo třeba Bluetooth. SmartEverything je tedy skutečně takový švýcarský nožík mezi prototypovacími destičkami.

830022185 168140824
Prototypovací armová destička SmartEverything. Nahoře je patrná destička modemu Sigfox, vpravo dole pak GPS přijímač čtvercového půdorysu. Přišroubovanou anténu používá právě Sigfox.

Klíčový je ale samozřejmě modem Sigfoxu, kterému věnuji několik dalších pokračování našeho seriálu o programování elektroniky, jedená se totiž o jedno z možných řešení, když potřebujete dostat zprávu z krabičky kdesi v terénu na svůj web.

V prvním dílu našeho seriálu Pojďme programovat elektroniku jsem si postavil jednoduchou teplotní sondu – prostě teploměr. Jenže jak pak taková data o teplotě dostat na web? Pokud bude sonda v bytě, anebo na zahradě, stačí, když bude komunikovat skrze Wi-Fi. Jenže co když bydlíte uprostřed sídliště a chcete vědět, jaká je teplota třeba na chalupě, kde nemáte internet?

Pak už zpravidla zbývá jen jednoduchý GSM modul a mikropočítač budete ovládat pomocí SMS zpráv. Buď bude odesílat SMS s teplotou sám na váš mobil, anebo na vyžádání, když obdrží zprávu. Takové řešení se ale může zase nepěkně prodražit.

A právě proto se v posledních letech na scéně objevují noví operátoři, které provozují „mobilní sítě pro IoT.“ Jednou z těchto technologií je právě Sigfox, který u nás propaguje společnost SimpleCell.

Odešle zprávu ze vzdálenosti mnoha desítek kilometrů

Sigfox (PDF přehled) pracuje v pásmu pod 1 GHz (868 MHz) a oproti Wi-Fi, nebo Bluetooth se liší především v dosahu. Podle mapy pokrytí dnes můžete nainstalovat krabičku téměř kdekoliv ČR. A dosah? V ideálních podmínkách a při přímé viditelnosti až 100 kilometrů, v městské zástavbě pak kilometry.

354247461
SimpleCell v ČR na pokrytí technologií Sigfox spolupracuje s operátorem T-Mobile

Dost ale bylo omáčky – základní informace se dozvíte už v našem starším článku o Sigfoxu a podrobně se do technologie ponoříme příště. Náš seriál chce být maximálně praktický, a tak si dnes pošleme krátkou textovou zprávu.

Krátká zpráva… Ona vlastně nemůže být dlouhá, velikost dat a jejich množství, které můžete během dne odeslat, je totiž hlavní cenou za dostupnost a dosah. Skrze Sigfox tedy můžete odeslat všehovšudy 12 bajtů a do těchto dvanácti bajtů musíte zakódovat vše, co potřebujete. Data se odesílají v binární podobě, čili to může být třeba hned několik meteorologických údajů v jednom balíku.

428016304
Každé zařízení je podle svého identifikátoru zaregistrované v síti Sigfox. Uživatel se o autentizaci tedy vůbec nestará a může se věnovat odeslání zprávy buď pomocí jednoduchého AT příkazu, anebo skrze knihovnu pro Arduino IDE. Ve webovém rozhraní pak má každý uživatel přehled svých zaregistrovaných vysílačů.

Zařízení může od serveru zprávy zároveň přijímat, takže komunikace může být oboustranná, příjem je ale omezený na 8 bajtů na zprávu. Příchozí zprávy tedy slouží spíše pro změnu konfigurace mikropočítače, ale nikoliv pro běžnou komunikaci.

Sigfox tedy rozhodně není určený k bezdrátovému přenosu videa, ale posílání třeba nejrůznějších stavových zpráv. Například by jej mohlo používat závlahové čidlo, bezpečnostní systém aj.

Kód odeslání zprávy pomocí knihovny pro Arduino

#include <SmeSFX.h>
#include <Arduino.h>

void setup(){
 // Nastratovani seriove linky
 SerialUSB.begin(115200);

 // Nastartovani modemu
 sfxAntenna.begin();

 // Cekam na otevreni seriové linky na pocitaci
 while(!SerialUSB){;}
 SerialUSB.println("Pro odeslani zpravy napis 1");
}

// Funkce pro odeslani zpravy
void posliZpravu(){
 uint8_t exit = 0;

 // Probudit modem ze spanku
 sfxWakeup();
 delay(20);
 SerialUSB.println("Posilam zpravu...");

 // Vytvoreni kratke textove zpravy o 4 znacich
 char zprava[4] = {'A','h','o','j'};

 // Predej modemu zpravu k odeslani
 sfxAntenna.sfxSendData(zprava, strlen((char *)zprava));

 // Smycka, ktera kontroluje, jestli byla zprava odeslana
 while(!exit){
 // Cekani na odpoved od modemu
 bool answerReady = sfxAntenna.hasSfxAnswer();
 if(answerReady)
 if(sfxAntenna.getSfxMode() == sfxDataMode)
 // Modem uspesne odeslal zpravu
 if(sfxAntenna.sfxDataAcknoledge() == SFX_DATA_ACK_OK){
 SerialUSB.println("Zprava odeslana!");
 // Uspat mdoem pro minimalni spotrebu energie
 sfxSleep();
 exit = 1;
 }
 }
}

void loop(){
 // Cekani na kod ze seriove linky
 if(SerialUSB.available()){
 // Pokud jsme do seriove linky napsal 1, odesli zpravu pres Sigfox
 char kod = (char)SerialUSB.read();
 if(kod == '1'){
 posliZpravu(); 
 }
 }
}

Jakmile takovou krátkou zprávičku modem odešle, dorazí na centrální bránu služby Sigfox, kde již můžete nastavit, co se má s daty stát – data může libovolně zpracovat váš server, webová služba a stejně tak si můžete nastavit, aby vám po přijetí zprávy zaslal Sigfox e-mail s hromadou nastavitelných údajů pomocí speciálních proměnných.

600886767 458093321 488054734
Zpráva z mikropočítače přicestovala na nejbližší BTS systému Sigfox a odtud již na centrální server služby, kde se dozvím jak provozní informace modemu (síla signálu, hrubá geografická poloha dle BTS), tak obsah odeslaných bajtů v šestnáctkové soustavě. Příchozí zprávu server okamžitě zpracuje – já si vytvořil úkol, který pošle její textový obsah na e-mail.

Jak vidno, odeslání drobné zprávy je naprosto jednoduché a modem Sigfoxu zároveň autorovi programu předává detailní informace o tom, jestli se zprávu podařilo odeslat, anebo je tu nějaký problém. O nic víc se vývojář nemusí starat.

Jak ale vtěsnat co nejvíce informací do pouhých 12 bajtů. Na to se podíváme příště, kdy kartičku SmarEverything vyzbrojíme solárním panelem, baterií a necháme ji zasílat data na internet skrze Sigfox z míst, kde na rozdíl od naší redakce opravdu žádné Wi-Fi není.

Diskuze (40) Další článek: Sbíječky vyměnili za klávesnice. Nový projekt má za cíl přeučit horníky na programátory

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,