GSM modul

 

 

GSM modul

Pro využití Arduina ke komunikaci přes veřejnou mobilní síť GSM (Global System Mobile) si opatříme tzv. "volač", v tomto případě modul SIM800L (datový list), dále SIM kartu se zrušeným pinem a desku Arduino NANO (UNO je nevhodné pro odlišné napětí datového signálu).

 

Musíme zjistit napájecí napětí, které umožní provoz volače. Dodavatel uvádí napájení 3,8 - 4,3 V. Deklarované napětí nemusí být platné v plném rozsahu. Dosud ověřené moduly pracovaly v rozmezí cca 4,0 - 4,3 V. K tomuto účelu lze použít nastavitelný stabilizátor LM317 (LM217, od -40stC). 

Napájecí napětí stabilizovaného zdroje bylo nastaveno na 4,15 V. Orientačně se výstupní napětí stabilizátoru LM317stanoví výpočtem:

Uvv = 1,25 ( 1+ R2/R1) = 1,25 (1+506/220)

 

Stabilizátor napájecího napětí:

Vyhovující napájecí napětí umožní přihlášení modulu k operátorovi.

Po napojení volače na zdroj napájecího napětí začne blikat ledka volače v intervalu 0,8 s (připojování), po cca 10-15 sekundách blikání zpomalí na interval 3 s (připojeno), poté zatelefonujeme ze svého telefonu na číslo volače. Pokud se v telefonu ozve vyzváněcí tón, volač je připojen.

Pro danou aplikaci použijeme desku NANO. Datové propojení by mělo být na úrovni max. 2,8 V. U desek UNO je nutno natětí signálového propojení upravit odporovým děličem, v případě desky NANO táto úprava nebyla nutná.

 Modul volače připojíme na extérní zdroj napájení, z desky NANO připojíme kontakt GND a signálový kontakt Tx Arduina NANO spojíme s kontaktem Rx volače.

 

Pro komunikaci nebudeme v tomto případě potřebovat knihovnu, postačí tzv. AT příkazy naprogramované ve skeči. Nejprve ověříme vyzvánění. Do IDE nahrajeme kód "GSM_vyzvaneni" :

 

Skeč "GSM_vyzvaneni.ino":

void setup()                               
{Serial.begin(9600);}                   	//aktivace sériové komunikace rychlosti 9600 baudů (funguje i na vyšší)   

void loop()                                
{Serial.println("AT+CFUN=1");                  	//připraví GSM modul         
Serial.println("ATD00420xxxxxxxxx;\r");}	//příkaz "Serial.print" odesílá na sériový pin telefonní číslo "xxxxxxxxx" s předřazeným příkazem k vyzvánění (ATD),

 

 

Malá písmena "x" přepíšeme na požadované telefonní číslo. Skeč nahrajeme do Arduina - volač začne vyzvánět. Předmětný skeč neobsahuje ukončení vyzvánění. Po odpojení napájení volače zvonění telefonu pokračuje časem stanoveným operátorem, tj. cca 2,5 minuty.

Následující skeč obsahuje vyzvánění a odeslání SMSky. Do IDE a desky Arduino nahrajeme kód "GSM_vyzvaneni_SMS":

Skeč "GSM_vyzvaneni_SMS.ino" :

void setup()                                          
{Serial.begin(9600);}    				// aktivace sériové komunikace                             

void loop()                                           
{Serial.println("AT+CFUN=1");  				// připraví GSM modul                         
Serial.println("ATD00420xxxxxxxxx;\r");              	// příkaz "Serial.print" odesílá na sériový pin telefonní číslo "xxxxxxxxx" s předřazeným příkazem k vyzvánění (ATD),
delay (15000);                                        	// vyzvání 15 sekund, prozvoní cca 4x
Serial.println("ATH");                               	// ukončí vyzvánění
delay (1000);                                         	// čeká 1 sekundu
Serial.print("AT+CMGF=1\r\n");                          // nastaví textovou komunikaci  
delay (1000);                                          	// čeká 1 sekundu
Serial.print("AT+CMGS=\"00420xxxxxxxxx\"\r\n");         // odešle na seriový pin číslo SMSky
delay (1000);                                          	// čeká 1 sekundu
Serial.println("Text SMSky");                         	// odešle text "Text SMSky"
delay (10000);                                        	// čeká 10 sekund
Serial.println((char)26);                             	// ukončí SMS režim
delay (3600000);}                                      	// program se zastaví na hodinu

 

Malá písmena "x" přepíšeme na požadované telefonní číslo. Skeč nahrajeme do Arduina - volač začne vyzvánět a poté odešle SMSku. Čekací časy na řádcích slouží operátorovi ke zpracování dat.

Nezávislé zapojení (bez připojení na PC) je uvedeno níže. V desce NANO bude nahrán předchozí skeč. Nejprve zapojíme volač na stabilizovaný zdroj a ověříme připojení volače na operátora provoláním z vlastního telefonu. Poté připojíme Arduino na napájení, např. vypínačem P. Arduino začne vyzvánět a poté pošle SMS.

 

Funkční "bastl" Arduino + volač GSM:

 

 

Na co si dát pozor

Volač SIM800L má klidový odběr 13 mA, přesto vyžaduje "tvrdý zdroj" pro zabezpečení proudu 2,5 A ve špičkách (USB nestačí). Pokud použijeme měkčí zdroj (min. 0,5 A), je nutné připojit ke zdroji kapacitu cca 2G pro vyrovnávání proudových špiček volače.  Volač není chráněn vůči přepólování napájení. Přepólování způsobí zkrat zdroje a může volač poškodit. V místech s nižší úrovní signálu je vhodné nahradit spirálovou anténu kvalitnější anténou, např. anténou připomínající "dipol". Vodiče pro napájení volače by neměly být dlouhé (odpor max. 0,15 Ω). Např. zapojení ampérmetru do napájení volače způsobilo selhání připojení k operátorovi.

Nezapomeňme, že deska UNO je zde pro použití bez úpravy nevhodná a nelze ji použít ani při předběžném odlaďování a ověřování funkčnosti skeče. V jednom případě použití desky UNO docházelo k chaotickým a náhodilým chybám komunikace volače s operátorem.

 

Prosinec 2019 

 

Home

 

Arby

arduinohobby@email.cz