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-XI.díl - Troubleshooting AGS a SIM800L

Jak jednoduše na GSM-XI.díl - Troubleshooting AGS a SIM800L

V tomto článku bych rád trochu shrnul poznatky, které se objevily zejména od Vás, kteří jste si koupili buď Arduinotech GSM shield nebo jen modulek SIM800L. Po větším, či menším boji jste jej nakonec všichni zprovoznili a pokusím se zde shrnou několik klíčových věcí, které jsem Vám v podstatě radil v e-mailech tak, aby informace byly hezky pohromadě.

Vložení SIM karty

Ukázalo se, že některé obrázky mohou být matoucí a proto zde uvádím jediný možný a správný způsob vložení Vaší SIM karty do GSM modulku. Toto byl z mé strany nedostatek, že jsem jasně nezveřejnil na fotografii, jak SIM kartu správně vložit a důsledkem pak byl stav, kdy si SIM800L modulek vesele blikal a odmítal se registrovat, protože jednoduše SIM kartu neviděl. Tak tedy, pouze a jedině takto:

Chování SIM800L modulku - indikační LEDka

V momentě, kdy máte správně vloženou SIM kartu a připojíte vhodné napájení tak, aby se zvládaly krýt proudové špičky při registraci k síti GSM (a z USB portu PC se to fakt podaří jen velmi zřídka...), pak modulek asi 10x zabliká v intervalu 800ms tma/64ms světlo - nemá signál, není regisrován k síti. Po tomto čase by měla proběhnout registrace ke GSM operátorovi - LEDka na 3000ms zhasne a pokud vše proběhlo správně, pak se zase na 64ms rozsvítí a na 3 sekundy zhasne a takto se perioda opakuje, dokud modulek zůstává registrován k síti - tedy až na jednu výjimku a to je attachement ke GPRS službám. Zde pak LEDka začne blikat poněkud splašeně - 300ms tma a 64ms světlo a tento stav se opakuje opět tak dlouho, dokud je SIM800L připojen ke GPRS službám.

Nutnost mít dostatečný buffer pro SMS a GPRS zprávy

Mnoho z Vás narazilo při prvních experimentech na velmi podivné chování - nesmyslné ořezávání příchozího čísla, těla SMS zprávy apod., které nebylo způsobeno ničím jiným, než nedostatečným bufferem pro příjem komunikace od SIM800L. Jak je patrné z konstrukce AGS, jeho knihovny a uvedených příkladů, používám pro jeho obsluhu SoftwareSerial knihovnu. Ta ma po instalaci Arduino IDE nastavený přijímací buffer na pouhých 64 byte! Pro správnou funkci knihovny je potřeba zvětšit přijímací buffer knihovny SoftwareSerial a to v head file SoftwareSerial.h a to u proměnné size _SS_MAX_RX_BUFF, doporučuji nastavit buffer na alespoň 128 byte (lépe 256 byte, ale zde pozor na omezenou velikost RAM, se kterou na ATmega328p pracujete). Je třeba si uvědomit, že SIM800L na nás třeba při příjmu SMS vysype jistě více, než 64 byte a pak dojde k přetečení bufferu, které se jen těžko indikuje a hlavně zpracovává.

Sekvence CR+LF za každým commandem

Někteří z Vás začali experimenty tím, že si nahráli transparentní terminál do svého UNA a začali posílat commandy do modulku SIM800L ... a modulek nereagoval jinak, než echem a žádná další aktivita nebyla patrná, člověk se nedočkal odpovědi na svůj příkaz. Ve všech případech, které jsme zde řešil byl problém v tom, že neodešla sekvence CR+LF za každým příkazem - modul SIM800L podle této ukončovací sekvence provádí svůj parsing a následné zpracování příkazů. Prosím, nezapomínejte tedy mít buď terminál nastavený vždy tak, aby za každým Vašim stisknutím "Enter" odeslal sekvenci CR+LF a pokud jste již pokročili do stavu, kdy modul SIM800L povelujete ze svého sketche, pak zásadně příkazy posílejte přes SIM800.println("ATH"); nikoliv SIM800.print("ATH"); - druhý příkaz opravdu nezpůsobí vůbec nic, SIM800L bude stále čekat, až mu někdo milostivě pošle CR+LF.

OVERVOLTAGE WARNING

Někteří z Vás si všimli, že se v terminálu objevuje hláška Overvoltage Warning. Ano, může být, je to dáno napájením modulku SIM800L, které mám na AGS vyřešeno na desce plošných spojů sice 2 diodami, ale ve skutečnosti osazuji jen jednu s úbytkem napětí 0,6V a místo druhé je drátová propojka. Empiricky (na vzorku asi 50 modulů SIM800L) jsem zjistil, že interní stabilizátor nefunguje úplně dobře při napětích na vstupu pod 4V. Zkrátka se SIM800L odmítá rozumně registrovat do sítě GSM, když je na něm katalogově povolených 3,8V. Od této chvíle budou AGS chodit se 2 diodami, jedna bude klasická usměrňovací se spádem 0,6V a druhá bude shottkyho se spádem 0,2V. Tím pádem se dostaneme na nějakých cca 4,1 až 4,2V pokud tedy napájíme SIM800L přes tyto diody z 5V stabilizátoru Arduino UNO a hláška o Overvoltage warning zmizne. Netřeba se ale obávat, že by SIM800L odešel jen proto, že je na něm o nějakou desteinku větší napětí. Z mého pohledu a zkušeností je tam jen trochu nešťastně nastavený trigger pro tu hlášku, jinak interní stabilizátor si s touto drobností poradí. S čím si ale radí hůř je právě zmíněné podpětí, tedy napájení pod 3,8V - ačkoliv dle datasheetu v toleranci, pak zjevně má s tímto problém a stává se, že se restartuje samovolně. Proto jsem raději volil to napájení trochu výše. 

Nečitelné schéma AGS

Zde ještě schéma AGS v lepším rozlišení, někteří jej nemohli dešifrovat, omlouvám se, klikněte, zvětší se:

Tento trubleshooting bude pokračovat tak, jak budou další ohlasy. Kdyby jste na cokoliv narazili v souvislosti se SIM800L obecně, dejte vědět, zveřejním zde i pro jiné bastlíře, aby neztráceli drahocenný čas vynalézáním kola - vím, že z toho dost bolí hlava.

 

PF

Přidat komentář

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

Přehled komentářů

  1. Internet v mobilu (ergo, 31.1.2016 17:57:05) Odpovědět

    Ptám se jesli nevydáte nějaký tutoriál o tom jak používat internet v mobile?
    Předem děkuji za odpoveď.

    Admin:
    Dobrý den,
    Tomuto dotazu nerozumím v souvislosti s tím, co prezentuji a čím se zabývám na mých stránkách. O internetu v mobilu bylo již řečeno mnoho , takže doporučuji vygooglit informace na méně náročných webech. Nebo máte na mysli něco jiného? Pokud se Vám jedná o datovou komunikaci, pak doporučuji přečíst X. díl seriálu o GSM, ten je vénován zákaldům pochopení GPRS komunikace.

    PF

  2. chyba v knihovne? (Vyvojar, 31.1.2016 22:18:40) Odpovědět

    Mám od vás modulek sim800. Použil jsem vámi vytvořenou knihovnu, ale když jsem volal na modul, tak volané číslo mi ukazovalo o jednu číslici posunuté doleva, tzn. např. když bych volal z čísla +420777012345 , tak se mi po sériové lince vypsalo: 077701234 . Nebyl problém to opravit v knihovně. Používám Arduino Uno, přijímací buffer mám zvětšen na 128B . Nevíte čím to je? To opravdu ostatním funguje dobře, nebo jsem si stáhl nějakou starší verzi s chybou?
    Mimojiné mám problémy s přihlášením do sítě, většinou musím držet anténu a to i přesto, že síla signálu bývá zpravidla kolem 29 (nikdy více než 30), což doufám eliminuji použitím externího napájení modulku (zatím používám napájení z Uno snížené jednou diodou a za tím několik kondenzátorů cca 1400uf, začínal jsem na méně, ale s méně se to nepřihlásilo vůbec).

    Admin:
    Dobrý den,
    S tím číslem je to divné, zkuste si ještě zvětšit buffer - předpokládám, že opravdu zvětšujete buffer SoftwareSerial, nikoliv buffer nativního UARTu. Od jiných uživatelů nemám informaci, že by to dělalo problém.
    Záležitost kolem registrace - předpokládám, že UNO samotné máte napájeno z externího zdroje 7 až 12V, který je dostatečně tvrdý na vykrytí proudových špiček u registrace. To, co popisujete je jednoznačně spojeno s napájením - pokud to živíte jen z USB portu, pak se Vám to málo kdy chytne, 0,5A u 5V je pramálo - tedy pokud Vám USBčko z PC nedá více.

  3. chyba v knihovne? (Vyvojar, 1.2.2016 13:06:29) Odpovědět

    Ano, skutečně jsem zvětšil buffer v software serial, dělalo to jen u hovorů u sms to bylo v pořádku, říkám, nebylo problém to opravit, jen mi to přijde divné, že to dělá jen mě, mám tedy nejnovější verzi Arduino IDE, tak třeba je to tím.
    Zdroj používám externí 12V, který je schopný dodat až 4,16A, to by mělo stačit. Spíš doufám, že je to tou diodou a při větším odběru je na ní větší úbytek. Myslíte, že tedy když použiji externí regulátor na 4,1V a tím budu napájet modulek, že se problém vyřeší?
    Ještě bych se rád zeptal, proč je v knihovně pro modul zakomentovaný řádek pro HW reset modulku? Byl s tím nějaký problém nebo to můžu odkomentovat? Dělám zabezpečovací zařízení a potřebuju ať je to spolehlivé. Stejně tak bych se chtěl zeptat, jestli byste doporučil použít watch dog (samozřejmě bych použil raději co největší čas), zatím jsem ho nikdy nepoužil, nevím jestli by paradoxně spíš nesnížil spolehlivost. Děkuji za odpovědi.

    Admin:
    Zdravím,
    Ano, ta nestabilita se jeví jako nějaký problém v napájecí větvi. Jiné příčiny zatím nemám zmapovány. Watchdog používám v podstatě mandatorně ve svých aplikacích. Zde na webu jej ale do příkladů nemíchám. Je potřeba si ale o tom dost důkaldně pročíst, protože zejména Arduino je dost náchylné na zastavování watchdogu a pak se lze dopracovat k pozoruhodným stavům. Také i z tohoto důvodu jsem tak nějak pomalu Arduino s AVR opustil a aplikace píšu teď už téměř výhradně nad ESP8266, zde je poněkud lépe propracovaná interakce s watchdogem. Jako watchdog na samotném AVR je v pořádku, jen pokud programujete v Arduino IDE, pak musíte počítat s množštvím omezení. Pravda v posledních verzích IDE tomu dali trochu lepší logiku, ale stále platí, že je potřeba si nastudovat co si můžete dovoli a co ne.
    Ten parsing ještě testnu, uvědomil jsem si, že jsem tam dělal nějakou úpravu a asi to pořádně netestnul...

    PF

  4. Už stabilní (Vyvojar, 9.2.2016 13:06:14) Odpovědět

    Tak jsem použil samostatné napájení a už to funguje spolehlivě. Mohl bych se prosím ještě zeptat na ten watchdog? Nikde jsem o tom nenašel info, že by bylo nějaké omezení. Jen že prostě nesmí trvat žádná část kódu mezi resety čítače déle než nastavený čas (což je logické). Děkuji.

    Admin:
    Zdravím, obecně s tím watchdogem není problém a jeho použití mohu jen doporučit. Ano, kód by měl být napsán s vědomím, že musíte resetnout čítač toho watchdogu v daném čase - od toho je ten watchdog takto navržen, že když se něco pokazí a program se dostane kam nemá, neumí se z toho zotavit, pak watchdog pŕi přetečení neudělá nic jiného, než že skočí na adresu 0 - tedy úplný záčátek, jinými slovy se zrestartuje. Tuším, že od IDE 1.6.5 je watchdog integrální součásti, v předchozích verzích bylo třeba pracovat přímo s registry AVRka.

  5. SIM900 (Michal, 10.2.2016 13:20:36) Odpovědět

    Dobrý den. Nebudu mlžit a přejdu rovnou k věci. Před několika měsíci jsem koupil UNO a k němu na laborování modul GSM s SIM900. Posléze jsem narazil na tyto články. Jsou perfektní.... Vše jsem pročetl,nastavil 900 na příjem SMS, změnil buffer z 64 na 128, pozléze až na 512. Nastavil SMS centrum apod... Na seriovém monitoru mě píše údaje o operátorovi,signálu apod... Komunikuje. Jenže po příjmu SMS modul nereaguje na povely.
    Zkoušel jsem to na skeči pro UNO SMS procesor pro Arduino UNO - upraveno Roman Simku , dále pak i s knihovnou <ArduinotechGSMShield.h> .
    Tel číslo jsem zadával ve formátě +420 , jen 420.. , i prostě 733.. Můžete mě prosím poradit jestli je nějaký podstatný rozdíl v příkazech mezi SIM800 a SIM900. Děkuji Michal

  6. Otevírač brány (Jarda, 22.12.2016 23:26:22) Odpovědět | Zobrazit odpovědi

    Dobrý den, super seriál. Mám dotaz, chtěl bych kombinací Arduina(Uno,Mega) s GSM nahradit otevírač brány(za cca 74USD), který na zavolání čísla z vnitřního seznamu zavěsí a sepne výstup. SIMku na tyto funkce nabízí O2 za 30kč/měsíc, volání ani SMS se neplatí, protože k žádným nedojde. Seznam čísel i historii volání lze editovat a číst přes USB,Ethernet.... Myslíte si, že je to s tímto modulem reálné?? Děkuji

    1. Re: Otevírač brány (Jarda, 22.12.2016 23:40:47) Odpovědět

      Tak se omlouvám, teď jsem si detailně pročetl díl VII a jsem doma. Děkuji.


TOP produkty

NodeMCU s ESP8266

NodeMCU s ESP8266
350 Kč s DPH

Arduino MEGA2560

Arduino MEGA2560
424 Kč s DPH

Kontakt

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