Pokud jste zkušený bastlíř, jistě Vám budou následující řádky dobře známé. Nicméně, z dotazů na technickou podpořu vyplývá, že přinejmenší úplní začátečníci mají v této oblasti trochu guláš. V tomto článku si tedy ukážeme tři způsoby jak navázat sériovou komunikaci mezi kompatibilním modulem (návod je univerzální - platí tedy pro všechny moduly s UART rozhraním) a PC, popř. Arduinem.

Arduino jako USB TTL převodník

Tento způsob navázání komunikace je velmi užitečný v případě, že potřebujete komunikovat s modulem, který má ve svém nitru firmware podporující AT příkazy. V takovémto případě uživatel nemusí vůbec nic programovat, jelikož je možné zařízení ovládat právě pomocí zmíněných příkazů. Ty uživatel odesílá prostřednictvím sériové linky. Modul na ně poté patřičně reaguje.

Otázka zní, jak na to? Zkušený bastlíř má pravděpodobně po ruce USB TTL převodník (bude o něm ještě řeč), který mu ušetří čas a práci. Ale co takový začátečník, který právě rozbalil svou první zasilku s Arduinem a modulem s UART rozhraním (Bluetooth, GSM modul, GPS modul atd.)?

Následující řešení je asi to nejjednoduší. Vytvoříte si zkrátka USB TTL převodník z Arduina. Například Arduino Uno 1424115860 disponuje hardwarovým sériovým rozhraním, které by pro naše potřeby bylo vhodné. Nicméně, rozhraní je normálně vyhrazeno pro mikroprocesor ATmega328p, což nám brání v našem plánu. My mu ho ovšem můžeme elegantně odebrat a použít ho ke svým účelům a potřebám. K tomu nám stačí vytvořit spoj mezi piny RESET a GND, který mikroprocesor vyřadí z činnosti. Pokud se Vám nechce nic zapojovat, je tu zde ještě možnost vyjmutí procesoru z patice (jen pokud je to možné!) nebo využití softwarového řešení.

Po provedení jednoho z popsaných postupů budete moci použít sériovou linku pro komunikaci s připojeným modulem. Arduino musí být samozřejmě připojeno k PC, v kterém si otevřete sériový terminál, nastavíte příslušný COM port a baudovou rychlost. Mějte ovšem při zapojování na paměti, že nesmíte překřížit piny RX a TX (jak je tomu normálně zvykem). Překřížení je řešeno na PCB Arduina. Na Obrázku 1 si můžete prohlédnout příklad zapojení Bluetooth modulu s UART rozhraním (metoda spojení RESET a GND). 

Obrázek 1: Arduino jako USB TTL převodník

Zapojení Arduino jako USB TTL

Poznámka: Pokud budete modul napájet z jiného zdroje a Arduino použijete jen jako prostředek komunikace, doporučuji spojit pin GND na Arduinu s pinem GND na modulu.

USB TTL převodník

Využití převodníku je asi ta nejelegantnější metoda navázání sériové komunikace. Například převodník 1421353514 má své tělo usazené uvnitř plastové krytky a disponuje dlouhým kabelem s 4 vodiči s dupont konektory. Vodič 5V (červená/růžová) a GND (černá) slouží k napájení modulu. Vodiče Rx (bílá) a Tx (zelená) slouží pro komunikaci.

Během připojování převodníku k modulu se ujistěte, zda jste provedli překřížení (vodič převodníku Tx na pin modulu Rx a obráceně). Po připojení stačí zasunout USB TTL převodník do USB portu počítače, otevřít sériový terminál, provést vhodné nastavení a navázat komunikaci. Na Obrázku 2 je znázorněn příklad zapojení Bluetooth modulu a USB TTL převodníku.

Obrázek 2: Zapojení Bluetooth modulu k USB TTL převodníku

Bluetooth připojen přes USB TTL př.

Poznámka: Pokud budete modul napájet z jiného zdroje a USB TTL převodník použijete jen jako prostředek komunikace, doporučuji spojit vodič GND s pinem GND na modulu.

Emulace sériové komunikace

Tento postup lze použít s drtivou většinou Arduino platforem a dalšími, které jsou kompatibilní. Podle mého názoru dává tato možnost smysl jen u vývojových platforem s jedním hardwarovým sériovým rozhraním - tedy např. Arduino Uno nebo Nano - nebo v případě, že chcete ovládat větší počet modulů. Pokud budete mít k dispozici hardwarové UART rozhraní, rozhodně jej využijte.

Ke zkompilování programu není nutné stahovat žádnou knihovnu, jelikož SoftwareSerial.h je již součástí balíčku Arduino IDE. Jako Rx je nastaven pin 7, jako Tx pin 8. Avšak piny na kterých bude sériová linka emulována si může uživatel vybrat podle vlastního uvážení (kromě pinů D1 a D0 - hardware. sériová linka). Nezapomeňte při zapojování vodiče opět překřížit, stejně jako v odstavci o USB TTL převodníku. Na Obrázku 3 si můžete prohlédnout příklad zapojení opět s Bluetooth modulem.

Obrázek 3: Zapojení v případě emulace sériové komunikace 

Emulace sériového rozhraní

Jistě je dobré si uvědomit, že informace, která se zobrazí na vašem sériovém terminálu (na PC) musí být zpracována Arduinem. To znamená, že Arduino např. zachytí zprávu, která přišla prostřednictvím emulované sériové linky. Zpráva je zpracována a odeslána na hardwarovou sériovou linku, kterou monitorujete na PC.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 8); // RX, TX

void setup() {
  Serial.begin(19200);
  while (!Serial) {
  }
  mySerial.begin(19200);
}

void loop() { 
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Poznámka: Například Arduino Mega 1423598706 obsahuje hned čtyři hardwarová sériová rozhraní. Není tedy nutné sériovou komunikaci v tomto případě dále emulovat. Kód bude velmi podobný jako v případě emulace, jen nebudete potřebovat knihovnu SoftwareSerial.h a instanci mySerial (bude nahrazena instancí třídy HardwareSerial - tedy Serial1, Serial2 nebo Serial3).  

FB tw

Další podobné články