logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

SIM300CZ + Atmega8: Nie wysyła SMS mimo poprawnego logowania do sieci

bipolunipol 11 Paź 2012 21:11 2268 7
REKLAMA
  • #1 11402037
    bipolunipol
    Poziom 19  
    Posty: 476
    Pomógł: 2
    Ocena: 76
    Witam.
    Planuję zrobić układ, wysyłający SMS z powiadomieniem do danego odbiorcy. W tym celu zamówiłem moduł GSM SIM300CZ. Podłączyłem do niego ATMEGĘ8 - zgodnie z notą katalogową
    podłączona karta sim i inne elementy. Całość jest zasilana 1 napięciem 4V. Ponieważ używam tylko do przesyłania danych końcówek rxd i txd -- pin RTS podłączyłem, zgodnie z dokumentacją (Note: The RTS PIN must be connected to the GND in the customer circuit when only TXD and RXD are used in the Serial Port communication) do masy.

    Po włączeniu, moduł poprawnie loguje się do sieci. (prędkość została ustalona na stałe - 9600bodów, zatem sekwencji startowej, dzięki której moduł wykrywa prędkość połączenia nie ma). Wysyła przez RS232 ciąg komunikatów, zakończonych słowem: Call Ready - zatem loguje się poprawnie..

    Gdy z innego telefonu dzwonię na numer SIM-a, ten wysyła komendę Ring.

    Próbowałem następnie wysłać za pomocą modułu wiadomość SMS. Do tego użyłem takiego kodu:
    
    Sub Sms()
    Cls
     Lcd "Powiadomienie sms"
     Wait 2
     Print "AT+CMGS=" ; "xxxxxxxxx" ; Chr(13);
     Waitms 200
     Print "Powiadomienie " ; Chr(26);
     Cls
     Lcd "koniec"
     Wait 20
    End Sub


    gdzie xxxxxxxxx to numer telefonu.
    Jednak wiadomość nie zostaje wysłana.

    Próbowałem też takiego kodu:
    Pr3:
     Cls
     Lcd "sms"
     Print "at+cmgf=1" ; Chr(13);
     Wait 2
     Print "at+cmgs=" ; Chr(34) ; "608xxxxxx" ; Chr(34) ; Chr(13);
     Print "tekst do wysłania" ; Chr(26)
     Cls
    Return 


    jednak także nic nie wysyła.


    Co może być problemem?
  • REKLAMA
  • #2 11402999
    kozak_sc
    Poziom 23  
    Posty: 752
    Pomógł: 25
    Ocena: 117
    Czemu kolega nie sprawdza odpowiedzi z modułu tylko na siłę pcha kolejne komendy rozdzielając je delay-ami ? Po wysłaniu komendy należy najpierw sprawdzić odpowiedź modułu a dopiero potem odpowiednio reagować w przypadku powodzenia luz wystąpienia błędu.
  • REKLAMA
  • #3 11405756
    bipolunipol
    Poziom 19  
    Posty: 476
    Pomógł: 2
    Ocena: 76
    A czy podane sekwencje wysyłania sms są całkowicie poprawne?
  • #4 11412013
    bipolunipol
    Poziom 19  
    Posty: 476
    Pomógł: 2
    Ocena: 76
    Pr3:
     Cls
     Lcd "sms"
     1 . Print "at+cmgf=1" ; Chr(13);
     Wait 2
    2.  Print "at+cmgs=" ; Chr(34) ; "608xxxxxx" ; Chr(34) ; Chr(13);
     Print "tekst do wysłania" ; Chr(26)
     Cls
    Return 


    odpowiedzi:
    OK - po miejsu 1
    CMS Error 515
    - po miejscu 2

    Dodano po 1 [godziny] 19 [minuty]:

    Cały czas przy próbie wysłania sms otrzymuję w odpowiedzi:


    at+cmgf=1
    OK
    at+cmgs="+48xxxxxxxxx"
    > text
    +CMS ERROR: 515





    ------------------------------------------------------------
    Nie wiem jak, ale moduł zaczął wysyłać wiadomości. Zastanawiam się tylko co przestawiłem wysyłając do niego komendy, zatem umieszczam cały log, i proszę o informację, dlaczego zaczął wysyłać sms?

    WŁĄCZENIE 1
    //////
    
    at
    OK
    at+cmgf=1
    OK
    at+cmgs="+48xxxxxxxxx"
    > test
    +CMS ERROR: 515
    at+cmgf=1
    OK
    at+cmgs="xxxxxxxxx"
    > test
    +CMS ERROR: 515
    at+cmgda="del all"
    OK
    at+cmgf=1
    OK
    
    ------------------------------------------------------------------------------
    WŁĄCZENIE 2
    
    
    +CFUN: 1
    
    +CPIN: READY
    
    Call Ready
    ath
    OK
    at+colp=1
    OK
    at+clip=1
    OK
    at+cmgf=1
    OK
    at+cmgf=1
    OK
    at+cmgs="+48xxxxxxxxx"
    > test
    +CMS ERROR: 515
    
    'tutaj dzwoni zewn. numer
    
    RING
    
    +CLIP: "+48xxxxxxxxx",145,"",,"",0
    
    NO CARRIER
    
    -----------------------------------------------------------------------------------
    WŁĄCZENIE 3
    
    RDY
    
    +CFUN: 1
    
    +CPIN: READY
    
    Call Ready
    
    at+cusd=1,"*101#"
    +CUSD: 1,"Stan konta: x.93 zl. Konto wazne do 14-11-2012 +1 miesiac na odbierani
    e
      1. Promocyjne jednostki",0
    PLEASE SELECT
    
    OK
    at
    
    AT+CMGF=1
    OK
    AT+CMGR=1
    OK
    AT+CMGS="+48XXXXXXXXX"
    > TEST
    +CMGS: 21
    'tu wysłał sms !!!!!!!!!!!!!!!!!
    
    --------------------------------------------------------------------------------------
    WŁĄCZENIE MODEMU 4
    
    
    
    OK
    
    RDY
    
    +CFUN: 1
    
    +CPIN: READY
    
    Call Ready
    
    'I TU WYSYŁA NORMALNIE SMS
    
    AT+CMGF=1
    OK
    AT+CMGS="+48XXXXXXXXX"
    > TEST
    +CMGS: 22
    
    OK
    at+cmgf=1
    OK
    at+cmgs="+48xxxxxxxxx"
    > t
    >
    +CMGS: 23


    Dodano po 1 [godziny] 14 [minuty]:

    Za co odpowiada owy błąd +CMS ERROR: 515?
  • REKLAMA
  • #6 11414788
    bipolunipol
    Poziom 19  
    Posty: 476
    Pomógł: 2
    Ocena: 76
    Czytałem... i nie znalazłem odp.
  • REKLAMA
  • #7 11414960
    Krauser
    Poziom 26  
    Posty: 508
    Pomógł: 124
    Ocena: 12
    Zawsze sprawdzaj czy moduł zarejestrował się do sieci, a potem wysyłaj SMS.
    Komenda: AT+CREG?
    Odpowiedź: +CREG: 0,1 lub +CREG: 0,5 oznacza zarejestrowanie w sieci GSM
  • #8 11416052
    bipolunipol
    Poziom 19  
    Posty: 476
    Pomógł: 2
    Ocena: 76
    Tak zrobię.
    Jestem bardzo ciekawy jednego.
    W programie napisanym w bascomie, na początku, przeprowadzam inicjację modułu.

    Print "ATH"
    Waitms 100
    Print "ATE0"
    Waitms 100
    Print "AT+COLP=1"
    Waitms 100
    Print "ATE0"
    Waitms 100
    Print "AT+CLIP=1"
    Waitms 100
    Print "AT+CMGF=1"
    Waitms 100


    Jeżeli nie dam przed tą inicjacją Wait 10 lub więcej, to przy późniejszym wysyłaniu SMS - procesor się zawiesza i ciągle się restartuje, oraz wykonuje przypadkowe fragmenty kodu (zmiana wartości zmiennych w EEPROM). Nim wpadłem na pomysł, aby przed inicjacją modułu dać opóźnienie, odpinałem Końcówkę nadawczą Txd i odbiorczą Rxd z modułu do procesora - gdy jakaś była odpięta, tj. procesor nie miał jak nadawać informacji do modułu lub zeń odbierać - program przeszedł procedurę wysyłania SMS (podana wcześniej) bez problemu i procesor się nie zawieszał.

    Dlaczego takie coś wystąpiło?

    Informacje:
    1. Do modułu nie miałem podłączonej baterii, ale dałem duże kondensatory o małym ESR koło SIM300. Źródło zasilające miało też dość dużą wydajność, zastosowano też kondensatory odkłócające przy procesorze.
    2. Sprawdzano oscyloskopem - nie był znacznych wahań napięcia zasilającego przy pracy modułu - zatem odpada restart z powodu złej jakości zasilania procesora.
    3. Sprawdzono zasilanie z różnych źródeł zasilania.
    4. Port wejsciowy w procesorze jest buforowany: Config Serialin = Buffered , Size = 20

    Dlaczego tak jest? Jak dam opóźnienie przed inicjacją sim - procesor przy wysyłaniu sms nie zawiesza się, natomiast bez opóźnienia - takie coś występuje.

    Dodano po 1 [godziny] 3 [minuty]:

    Podobny efekt jest, gdy zewrę końcówkę procesora - TXD z RXd (bez podł. SIMA). Czyżby procesor nie moze odbierać danych w czasie ich nadawania przez RS, bo się zawiesza?

Podsumowanie tematu

✨ Użytkownik planuje stworzyć układ do wysyłania SMS-ów z użyciem modułu GSM SIM300CZ i mikrokontrolera ATmega8. Po poprawnym zalogowaniu się do sieci, napotkał problem z wysyłaniem wiadomości SMS, otrzymując błąd +CMS ERROR: 515. Użytkownicy sugerują, aby sprawdzić odpowiedzi modułu po wysłaniu komend oraz upewnić się, że moduł jest zarejestrowany w sieci za pomocą komendy AT+CREG?. Dodatkowo, zaleca się dodanie opóźnień między komendami, aby uniknąć zawieszania się procesora. Po pewnych modyfikacjach, użytkownik zauważył, że moduł zaczął wysyłać SMS-y, ale nie jest pewien, co dokładnie spowodowało tę zmianę.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA