Uživatelské nástroje

Nástroje pro tento web


robotika:shieldy:gsm_gprs

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
robotika:shieldy:gsm_gprs [22. 07. 2014, 18.33]
lookin vytvořeno
robotika:shieldy:gsm_gprs [21. 11. 2018, 00.14] (aktuální)
rydloadm maily
Řádek 26: Řádek 26:
 Komunikuje se jazykem AT příkazů, viz [[http://​elecfreaks.com/​store/​download/​datasheet/​rf/​SIM900/​SIM900_AT%20Command%20Manual_V1.03.pdf|dokumentace]]. Komunikuje se jazykem AT příkazů, viz [[http://​elecfreaks.com/​store/​download/​datasheet/​rf/​SIM900/​SIM900_AT%20Command%20Manual_V1.03.pdf|dokumentace]].
  
-==== Přehled ​zíkladních ​AT příkazů ====+<WRAP center round important 60%> 
 +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''​ 
 +</​WRAP>​ 
 + 
 +==== Přehled ​základních ​AT příkazů ====
   ; AT : Test komunikace. Odpoví OK.   ; AT : Test komunikace. Odpoví OK.
   ; AT+CMGF=1 : Nastaví textový reživ výpisu SMS zpráv.   ; AT+CMGF=1 : Nastaví textový reživ výpisu SMS zpráv.
   ; AT+CMGL="​REC UNREAD"​ : Vypsat nepřečtené SMS zprávy.   ; 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+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+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? : 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+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).
-  ; ATD*101# : Vytočí telefonní číslo na USSD kód *101# (informace o kreditu).+  ; 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!).   ; 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í.   ; 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ší...   ; 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 ====
 +
 +[[http://​www.smssolutions.net/​tutorials/​gsm/​sendsmsat/​|Tady to popisují]],​ [[https://​www.branah.com/​unicode-converter|konvertor na UTF-16]] a [[https://​apps.timwhitlock.info/​emoji/​tables/​unicode|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 [[http://​www.electronicwings.com/​arduino/​http-client-using-sim900a-gprs-and-arduino-uno|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 [[https://​simcom.ee/​documents/​SIM900/​SIM900_HTTPS%20AT%20Command%20Set_V1%2000.pdf|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 [[https://​www.latlong.net/​Show-Latitude-Longitude.html|š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í
 +    * Na telnetu jsou [[informatika:​zajimavosti:​telnet|různé zajímavosti]]
 +  * ''​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 [[http://​www.8051projects.net/​files/​public/​1414922889_22104_FT63039_sim900_email_at_command_manual_v1.02.pdf|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.1406046838.txt.gz · Poslední úprava: 22. 07. 2014, 18.33 autor: lookin