OK

Při poskytování služeb nám pomáhají soubory cookie. Používáním našich služeb vyjadřujete souhlas s naším používáním souborů cookie. Více informací

Úvodní stránka » GSM » Jak jednoduše na GSM - III.díl - Jedeme přes Arduino

Jak jednoduše na GSM - III.díl - Jedeme přes Arduino

AT příkazy máme z minulého dílu v malíčku, tak si pojďme poskládat nějaký HW, který je použitelný pro samostatné použití a znalosti z minulého dílu si ještě jednou prakticky ověříme přes skeč, který ná zprostředkuje transparentní terminál mezi doporučenou HW SETUP utilitou z minulého dílu a modulem SIM800L přes Arduino.

 Zapojení s Arduinem

S odřenýma ušima lze SIM800L živit z 5V zdroje Arduina, jen je potřeba dodržet tyto 3 zásady:

  1. Do napájecí větve vložit dvě diody např. 1N5871 (křemíkové usměrňovací, nikoliv shottkyho! - využíváme úbytku 0,6V na každé) tak, aby se z 5V po celkovým úbytku 1,2V vyrobilo napájení pro SIM800L někde kolem 3,8V (je to pořád v toleranci - napájení by mělo být od 3,6 do 4,2V
  2. Arduino MUSÍME napájet z externího zdroje - připojené pouze k PC přes USB nedá 5V USBčko dostatečný proud v komunikačních špičkách - SIM800L to neuživí!
  3. Pro vykrytí komunikačních špiček - tj. odběrů i kolem 2A použijeme dostatečně kvalitní kondenzátor 1000M/6.3V. Dle mých dosavadních zkušeností tento kondenzátor pomůže "chytit" všechny špičky, které mohou nastat - kritiké okamžiky proudového odběru jsou zejména registrace modulu SIM800L ke GSM síti, odeslání SMS, příchod/odchod hovoru.

V zásadě používám zapojení dle schémat níže. Preferovanou platformou je Arduino DUE - jednak je nativně na 3,3V úrovních, takže není třeba cvičit s konverzí úrovní a jednak je vhodnější pro rozsáhlejší projekty. 

 

Nicméně občas je potřeba vykutit i něco levnějšího, takže ani AVR platforma nemůže být opomíjená - zde je potřeba ale myslet na komunikační úrovně na sériové lince mezi SIM800L a Arduinem. Ukázalo se, že postačí jedoduchý dělič na TX Arduina - ten srazí 5V "jedničku" na přibližně 3,3V. V opačném směru není situace tak složitá, RX Arduina má ještě o chlup SIM800L TX úroveň v toleranci.

 

Transparentní terminál

Pro odzkoušení základní funkcionality chodivosti HW nebo pro další laborování s AT příkazy např. dle předchozího dílu nebo jinými AT příkazy se hodí mít plně transparentní terminál. který do modulku SIM800L posílá příkazy ze sériového kanálu a jejich odpovědi pak zpět na sériový kanál vrací.

Vypracoval jsem jednoduchý skeč, který velmi často a rád používám při implementaci nových vlastností zařízení, kydž si nejsem úplně jistý, jak daný příkaz funguje, jaké může mít odezvy apod.


  

#define SIM900 Serial1
#define GSMReset 5
char c,s;

void setup()
{

  Serial.begin(115200);
  SIM900.begin(115200);
  digitalWrite(GSMReset,LOW);
  delay(200);
  digitalWrite(GSMReset,HIGH);
  delay(200);
  

}

void loop()
{
	WDT_Restart(WDT);
	if(Serial.available()>0)
	{
		c = Serial.read();
		SIM900.print(c);
	}
	if (SIM900.available()>0)
	{
		s = SIM900.read();
		Serial.print(s);
	}
  
}

Skeč je ke stažení zde. Jedná se o skeč pro Arduino DUE - je to má preferovaná platforma pro rozsáhé projekty. Nicméně po drobné úpravě lze tento skeč použít i pro "malá" Arduina, která mají jen jeden sériový kanál a ten je většinou spřažený s USB převodníkem a určen pro nahráváni skečů nebo jednoduchý debuging. V tomto případě je potřeba použít softwarový sériový kanál pomocí známé SoftwareSerial knihovny a správně nastavit porty TX a RX vůči modulku SIM800L. Modifikovaný skeč pro tyto účely se zapojením RX na pinu D2 a TX na pinu D3 je k dispozici zde. Zde si všimněte, že je třeba snížit komunikační rychlost, protože SoftwareSerial nepodporuje větší rychlosti, než 19200b/s. I přesto odezvy nejsou špatné, pro většinu "SMSkových" aplikací to plně postačuje, u složitějších aplikací, kde se zachází s větším množstvím dat pro odesílání a přijímání přes GPRS bych velmi zvažoval právě Arduino DUE platformu.

V dalším pokračování seriálu již sestavíme nějaký použitelný skeč, který třeba pošle SMSku na nějaké číslo při překlopení vstupu z "0" na "1" nebo vyhodnotí přijatou SMSku a blikne LEDkou.

 

Přidat komentář

Zvýrazněné položky jsou povinné.

Přehled komentářů

  1. příklady (Vasek, 3.10.2015 17:23:08) Odpovědět

    Hezký článek, kdy se můžeme těšit na nějaký příklad se SMS, případně i zavoláním při překolepní stavu?

  2. Pokračování (Admin, 3.10.2015 20:27:49) Odpovědět

    Dobrý den,
    Díky za přízeň. Někdy v říjnu zase něco sepíšu, jsem teď trochu zasekaný prací, ale to přejde :-).

    PF

  3. 1000M/6,3v (RDP, 14.11.2015 2:00:23) Odpovědět

    Ahoj, díky za článek - prosim tě, jaké přesné označení má požadovaný kondenzátor? Podle 1000M/6,3v nenajdu na internetu nic, co bych mohl objednat. Díky

    Admin:
    Ahoj,
    Je to bězný typ 1000uF na 6,3V, elektrolytický kondenzátor v radiálním provedení:

    http://www.gme.cz/ce-1000u-6-3vit-hit-exr-8x12-rm3-5-bulk-p123-666

    PF

  4. Dotaz (zozan, 28.3.2016 13:41:34) Odpovědět

    Proč není ve skeči pro UNO definován v setupu vývod 5 (GSMReset) jako výstup? Stalo se mi , že to neresetovalo modul....

    Admin:
    Proč? Protože to prostě není potřeba, když si s tím hrajete. Není přece problém, když to je z nějakého důvodu vyžadováno, si ten reset doplnit ... o tom je bastlení ... není to plug & play.

  5. Dotaz (zozan, 28.3.2016 23:25:08) Odpovědět

    V tom případě proč máte v setupu napsány tyto příkazy, když to nechcete resetovat. Takto jsem to pochopil z vaší odpovědi....

    void setup()
    {
    .......
    digitalWrite(GSMReset,LOW);
    delay(200);
    digitalWrite(GSMReset,HIGH);
    delay(200);
    }

    Admin:
    chi, nechci, nepíšu sketche pro každý příklad ze zelené louky, asi jsem to vykopíroval z nějakého projektu ... vidno, že se nad tím zamýšlíte, takže i to je mimo jiné účelem mých článků. Plug & play potlačuje kreativitu, Ctrl+C a Ctrl+V z nikoho ještě programátora nebo vývojáře neudělalo. To pak oceníte při troubleshootingu, když budete rozumět, jak je co napsáno a jak co má fungovat.

    PF

  6. dotaz (zozan, 31.3.2016 13:07:06) Odpovědět

    Tak to je jina ... Mam jeste dotaz. Vlastnim tento GSM modul zAli http://www.aliexpress.com/item/Smallest-SIM800L-GPRS-GSM-Module-MicroSIM-Card-Core-BOard-Quad-band-TTL-Serial-Port/32286088224.html?spm=2114.01010208.3.1.BRq5MZ&ws_ab_test=searchweb201556_2,searchweb201602_5_10036_10035_301_10034_507_10032_10020_10017_10005_10006_10021_10022_401_10018_10019,searchweb201603_9&btsid=58e5e6c9-cf09-44ea-a25a-cfc2352a43aa
    a nejde mi seriova komunice s arduinem. Neresil jste to nekde?

    Admin:
    Je to jen jinak zapojená verze toho, co prodáváme na e-shopu. V zásadě by s tím neměl být problém a mělo by se to chovat podobně jako je popsáno v článku. Nezapomeňte za příkazy dát CR+LF, jinak nebudete mít odezvy. Dbejte taky na napěťové úrovně, vhodné napájení ...

    PF

  7. dotaz (zozan, 31.3.2016 15:16:07) Odpovědět

    Zkoušel jsem to s tímto vaším terminálem (SIM800terminalAVR.ino), podle výše uvedeného zapojení pro UNO a něco to odpovídá, ale jsou to hausnumera, jako kdybych neměl přepnutou správně rychlost v baudech na terminálu od arduina. Příkazům to taky nerozumí...

  8. odpoved (zozan, 19.4.2016 12:29:53) Odpovědět

    Odpovim si sam. Problem byl v tom, ze tento modul je od vyrobce nastaven pouze na rychlost 115 200b a knihovna SoftwareSerial.h (pro Uno) chodi pouze do rychlosti 19200b !!!....takze nejste schopni se s timto module spojit...rychlost modulu se musi dle manualu prepnout na 9600b...

    Nemáte pravdu s tou rychlostí na sofrwareserial, čtěte dokumenaci k posledním IDE a ne 3 roky staré komenáře ve fórech.
    S pozdravem, PF

  9. opověď (zozan, 22.4.2016 22:10:48) Odpovědět

    Možná nemám pravdu s tou rychlostí 19200b, ale 115200b to určitě nechodí...musel jsem udělat terminal s arduinem mega 2560. S Unem a knihovnou SoftwareSerial.h to nechodí ani náhodou....

  10. odpověď (zozan, 22.4.2016 22:16:15) Odpovědět

    Teď jsem si všiml, že tu rychlost 19200b máte nahoře dokonce v článku napsaný, tak si to opravte...

  11. chyba? (Andrej, 25.4.2016 14:07:52) Odpovědět | Zobrazit odpovědi

    Ako sa shield sprava ked na UNO pouzijete reset?
    Prezije 5V uroven,alebo je to chyba shieldu?
    Pri DUE s 3V nevidim problem ale na UNO 5V pre ktore je shield urceny mam strach to pouzit.

    1. Re: chyba? (zozan, 19.12.2016 16:33:51) Odpovědět

      Ten reset není potřeba používat, ale pokud ho tam chcete, udělejte to u UNA přes tranzistor...

  12. Více SIM800L na Arduino UNO (scherry, 1.9.2016 20:09:48) Odpovědět

    Zdravím,

    šlo by na jednom Arduino UNO současně připojit např. 5 ks SIM800L? Rychlostně stačí 1 SMS / sek.
    A ovládat pět SIM800L současně jak pro posílání, tak příjem SMS?

    Děkuji.

  13. Oprava k Více SIM800L na Arduino UNO - DUE (scherry, 1.9.2016 20:12:34) Odpovědět

    Omlouvám se, výše jsem myslel pomocí Arduino DUE (to pro složitější projekty)ovládat současně pět SIM800L.

  14. send sms by sim800l (janamhosein, 25.10.2016 9:58:25) Odpovědět

    hi
    Thank you for your helpful training
    Please Put your Codes send SMS for Arduino DUE .

  15. diody (zozan, 19.12.2016 16:30:27) Odpovědět

    Pozor na ty použité diody 1N5871 ve schématu, jsou to zenerky na 28V/0,4W. Je možný, že v propustném směru budou chodit, ale mají dost malý proud...

  16. konvertor úrovní (Vláďa, 22.3.2017 10:24:52) Odpovědět

    V případě použití una doporučují použít konvertor úrovní viz https://www.arduinotech.cz/inpage/arduino-v-prikladech-v-dil-menu-na-lcd/ vyhnete se mnoha problémům. Komunikace opravdu fungovala jako ožralej králík, tak jak zmiňuje autor ve výše uvedeném článku.


TOP produkty

Arduino DUE

Arduino DUE
696 Kč s DPH

Arduinotech GSM shield

Arduinotech GSM shield
877 Kč s DPH

Kontakt

Ing. Petr Foltýn
Kunčice pod Ondřejníkem 814, 73913
TOPlist