Uživatelské nástroje

Nástroje pro tento web


robotika:shieldy:gsm_gprs

GSM/GPRS Shield

Shield umožňující telefonování, zasílání SMS a internetovou komunikaci přes mobilní telefonní sítě. Vyžaduje SIM kartu (školní od T-Mobile má nízký kredit).

Obsahuje velmi rozšířený komunikační modul SIM900, slot na LCD displej, který se ale nepřipojuje k čipu, ale jde přímo na piny Arduina (FIXME které?). Žlutý „trojzubec“ pinů pod anténou slouží k připojení analogové klávesnice – dva piny jsou napájení, třetí je přiveden na analogový vstup Arduina.

Skvělý zdroj je http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield nebo také http://linksprite.com/wiki/index.php5?title=SIM900_GPRS/GSM_Shield.

Zapojení

Shield lze zapojit buď přímo na Arduino (Uno) nebo do nepájivého pole a propojit jen piny pro napájení a UART.

Shieldu nestačí napájení z USB! Je nutné připojit i externí napájení, buť 9V baterií nebo z adaptéru, jinak ssice bude vesele blikat, ale nebude komunikovat.

Na shieldu se musí nastavit pomocí jumperů správně propojení komunikační seriové linky (UART). Pokud budeme na Arduinu používat softwarový UART pro spojení s GSM modulem (abychom mohli přes hardwarový komunikovat s PC), propojíme jumpery tak, že D3 spojí prostřední (žlutý) pin s pinem blíž horního okraje (označené S_RX) a D2 propojí prostřední pin s pinem dál od horního okraje (označený S_TX). FIXME obrázek…

Vespod shieldu musí být správně umístěná funkční SIM karta, ideálně bez nutnosti zadat PIN. (Dotáhneme také anténku.)

Arduino je napojené přes USB a má nahraný jednoduchý prográmek který přeposílá data, která dostane Arduino po hardwarovém UARTu (piny 0, 1) na softwarový na pinech 2, 3 (připojený GSM modul). Viz 8. odrážka.

Po zapojení může být nutné zmáčknout tlačítka označená RST a S_PWR. Tlačítko S_PWR slouží k zapínání a vypínání modulu, takže může být nutné ho stisknout dvakrát. Po jeho stisku by měla svítit LED PWR, STA a v delších intervalech krátce probliknout NET.

Komunikace

Je-li zapojení v pořádku, komunikuje shield rychlostí 19200 baudů a řádky příkazů ukončuje znakem CR (v jazyce C \r, ASCII kód 13).

Komunikuje se jazykem AT příkazů, viz dokumentace.

Pokud při komunikaci posílá shield od určitého znaku dál nesmyslnou odpověď (např. na at+cmgr pošle půlku sms korektně a zbytek jsou divné znaky), je to proto, že knihovna SoftwareSerial.h má limit na délku načtené sekvence jen 64 znaků, což nestačí. Je nutné opravit velikost bufferu na 256 (jdou jen mocniny 2): #define _SS_MAX_RX_BUFF 256 ⁄/ RX buffer size

Přehled základních AT příkazů

AT
Test komunikace. Odpoví OK.
AT+CMGF=1
Nastaví textový reživ výpisu SMS zpráv.
AT+CMGL=„REC UNREAD“
Vypsat nepřečtené SMS zprávy.
AT+CMGD=5
smazat sms s indexem 5 (odpovídalo to indexům podle AT+CMGL=„ALL“)
AT+CMGDA=„DEL ALL“
smazat všechny sms, lze i jemněji selektovat…
AT+COPS?
Informace o operátorovi, ke kterému jsme přihlášeni.
AT+CPOL?
Informace, ke kterým operátorům a v jakém pořadí se SIM má hlásit.
AT+CCLK?
Vypíše aktuální čas hodin na čipu.
AT+CCLK=„14/08/22,01:05:00+01“
Nastaví aktuální čas hodin na čipu na 22. srpna 2014, 1.05:00 (jedna hodina po půlnoci) a časový posun je +1 hodina (časová zóna Praha).
AT+CUSD=1,„*101#“
Odešle USSD kód *101# (informace o kreditu).
ATD777666555;
Vytočí telefonní číslo 777 666 555 (pozor, na konci musí být ten středník!).
ATH
Položí aktuálně probíhající hovor nebo odmítne hovor při vyzvánění.
AT+CLTS=1;&W
Nastaví a napevno uloží, že se má datum a čas tahat ze sítě
AT+CCLK?
Zjistí, jaké je datum a čas
AT+DDET=1
Po vytočení nebo přijetí hovoru se zadá tento příkaz a modul pak dekóduje příchozí DTMF tóny. Odpovídá např. řetězcem „+DTMF: 5“, kde místo 5 může být lib. číslovka nebo * nebo # jako příchozí kód.
AT+VTS=„1“
Během hovoru odešle do spojeného telefonu DTMF tón odpovídající znaku „1“
AT+VTD=0..255
Nastaví délku DTMF tónu s krokem 0,1 s
AT+CLIP=1
Aktivuje zobrazení tel. čísla příchozího hovoru
FIXME
Chybí další…

Příklady odpovědí ze sítě

*PSUTTZ
Dává informaci o synchronizaci času podle sítě, UTC čas, pro aktuální čas se dotážeme AT+CCLK?
+CMTI:„SM“,7
Říká, že přišla sms 7 do paměti
+DTMF: 5
Příchozí DTMF kód „5“ (dekódování se zapíná AT+DDET=1)
RING
Zrovna zvoní zvonek (někdo volá)
+CLIP: „+420777666555“,145,„“,0,„“,0
Příchozí hovor z čísla „+420777666555“, pokud byl výpis zapnutý pomocí AT+CLIP=1

Jak poslat sms v UNICODE

Tady to popisují, konvertor na UTF-16 a emoji

  • Použije se jako terminál na linuxu screen /dev/ttyUSB0 9600
  • AT+CSCS=? se ověří, že má HEX a ten se nastaví AT+CSCS=„HEX“
  • nastaví se, že budeme chtít utf-16 AT+CSMP=17,167,0,8, za což může ta 8 na konci
  • zadá se číslo at+cmgs=„+420737428309“ a za > se píše zpráva (zkonvertovaný utf-16 hex
  • např. 017d006c00750165006f0075010d006b00fd0020006b016f01480020d83dde020020d83dde480020d83ddc6b
  • a stisknu CTRL+Z

Komunikace přes GRPS

Docela pěkný příklad na HTTP je na webu.

Jednotlivé kroky jsou:

  • AT+SAPBR=3,1,„Contype“,„GPRS“ Konfigurace profilu
  • AT+SAPBR=3,1,„APN“,„internet“ Konfigurace profilu
  • AT+SAPBR=1,1 Otevřeme GPRS kontext
  • AT+SAPBR=2,1 Dotazujeme se GPRS kontextu
  • odpověď +SAPBR: 1,1,„100.10.10.10“ Dostali jsme kontext a nějaká interní IP…
  • AT+HTTPINIT Inicializace HTTP
  • AT+HTTPSSL=1 Aktivace https
  • AT+HTTPPARA=„CID“,1 Nějaká záhadná inicializace
  • AT+HTTPPARA=„URL“,„www.gml.cz“ Nastavení URL
  • AT+HTTPACTION=0 A odesílá se dotaz
  • odpověď +HTTPACTION: 0,200,1000 Co je za odpověď a kolik dat jsme dostali
  • AT+HTTPREAD Vyčteme příchozí data
  • AT+HTTPTERM Ukončíme http
  • AT+SAPBR=0,1 Ukončíme GPRS

SimCom má na to Application Note

Dá se zjistit přibližná pozice podle BTS

  • Otevře se GPRS kanál: AT+SAPBR=3,1,„Contype“,„GPRS“, AT+SAPBR=3,1,„APN“,„internet“, AT+SAPBR=1,1
  • a pošleme dotaz: AT+CIPGSMLOC=1,1
  • odpověď zní třeba: +CIPGSMLOC: 0,16.621126,49.220940,2018/11/20,20:19:45, což znamená:
    • 0 je lokační kód (0=úspěch; 601=Network Error; 602=No memory; 603=DNS Error;604=Stack Busy;65535=Other Error)
    • 16.621126 je longitude – zem. délka ve stupních
    • 49.220940 je latitude – zem. šířka ve stupních
    • 2018/11/20/20:19:45 je aktuální čas (GMT)
    • pozice se dá rychle vykreslit na šikovném webu
  • asi bychom měli zavřít gprs kanál: at+sapbr=0,1

TCP spojení (kontrola DNS)

  • AT+CGATT? musí vrátit 1, jinak nastavit na 1
  • AT+CIPMUX=0 povolí jen jedno spojení v jednu chvíli (jednodušší)
  • AT+CSTT=„internet.t-mobile.cz“ nastaví APN t-mobilu
  • AT+CIICR rozjeď připojení
  • AT+CIFSR zjistí moji IP
  • AT+CIPSTART=„TCP“,„rainmaker.wunderground.com“,„23“ se připojí telnetem k předpovědi počasí
  • AT+CIPSEND se odešlou data až po Ctrl+Z (Pokud potřebujeme odeslat CR, stiskneme Ctrl+m, k odeslání LF stiskneme Ctrl+j)
  • AT+CIPSHUT zruší spojení
  • AT+CDNSCFG? zjistí, jaké jsou nastavené DNS servery
  • AT+CDNSGIP=„gml.cz“ zeptá se DNS serverů na IP gml.cz
  • AT+CIPSTATUS status linky

Email

Dají se i číst a posílat maily, podle SIM900 email at command manuálu.

  • Číst:
    • at+emailcid=1
    • at+emailto=30
    • AT+POP3SRV=”pop3.centrum.cz”,”login”,”heslo”,110
    • AT+POP3IN
    • AT+POP3NUM
    • AT+POP3LIST=1
    • AT+POP3CMD=4,1
    • AT+POP3READ=1460
    • AT+POP3OUT
  • Posílat:
    • at+emailcid=1
    • at+emailto=30
    • AT+SMTPSRV=”smtp.centrum.cz”,25
    • AT+SMTPAUTH=1,”john”,”123456„
    • AT+SMTPFROM=”john@sim.com”,”john”
    • AT+SMTPRCPT=0,0,”john@sim.com”,”john”
    • AT+SMTPSUB=”Test”
    • AT+SMTPBODY=30
    • AT+SMTPSEND
robotika/shieldy/gsm_gprs.txt · Poslední úprava: 21. 11. 2018, 00.14 autor: rydloadm