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

[avr c] SIM900 - nie wysyła sms z większą ilością znaków

Pawel_1985 18 Sie 2017 22:04 1191 7
  • #1 16649753
    Pawel_1985
    Poziom 4  
    Posty: 197
    Pomógł: 5
    Ocena: 13
    Witam!

    Układ zbudowany z kontrolera Atmega8 i modemu SIM900 nie wysyła wiadomości sms, która zawiera większą liczbę znaków.

    Chciałbym otrzymywać wiadomość o takiej treści:

    Sms nr 0
    Drzwi otwarte
    Licznik 24
    Alarm

    Układ działa w sposób losowy w przypadku takiej treści raz wyśle, a raz nie (czesciej niestety nie wyśle). Jeżeli ograniczę liczbę znaków to na przykład prostej treści w stylu "Sms 1" to wtedy układ bez problemu wyśle taki sms.

    Przy każdej próbie wyłania smsa modem prawidłowo loguję się do sieci (lampka mruga prawidłowo), ale smsa nie wysyła. Wydaję mi się, że mam gdzieś problem z przepełnieniem bufora, lub wysyłanie danych wtedy gdy modem ich nie może pobrać.

    Czy dobrym pomysłem jest wykorzystanie pinu CTS do kontroli czy modem jest gotowy otrzymywać kolejne informacje?

    Poniżej przesyłam kod programu oraz funkcje sterowania transmisją UART.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 16650197
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16656031
    Pawel_1985
    Poziom 4  
    Posty: 197
    Pomógł: 5
    Ocena: 13
    Witam!

    Poniżej przesyłam poprawioną wersję wysyłania wiadomości, którą póki co testuję. Program pisałem wczoraj wieczorem, ustawiłem go tak, aby co 2 godziny wysyłał wiadomość i póki co wygląda to obiecująco, na 5 wiadomości z dużą ilością znaków wszystkie dotarły. Zobaczymy do końca dnia.

    W programie dodałem opcję sprawdzającą odpowiedzi z modemu GSM. Obecnie sprawdzam status podłączenia do sieci oraz znak ">" po którym wysyłam wiadomość.

    Jedynie czego nie udało mi się zrobić to uzyskać odpowiedzi od modemu po wysłaniu smsa. Do układu mam podłączony wyświetlacz LCD, na którym wyswietlam odpowiedzi modemu, ale po poleceniu CTR+Z żadnej odpowiedzi nie otrzymuję, pomimo tego, że sms jest prawidłowo wysłany.

    R-Mik -> wybrałem modem SIM900 bo ten akurat miałem na stanie.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 16656072
    Konto nie istnieje
    Konto nie istnieje  
  • #5 16657536
    Pawel_1985
    Poziom 4  
    Posty: 197
    Pomógł: 5
    Ocena: 13
    Już wyjaśniam. Układ zasilany jest z baterii, stąd ze względu na oszczędzanie energii modem GSM jest całkowicie wyłączony.

    Urządzenie ma na celu tylko wysyłanie wiadomości, więc odbieraniem wiadomosci nie zawracam sobie głowy.

    Modem GSM załączany jest raz na tydzień, za pomocą jednego tranzystora połączonego pomiędzy piny PWR a PWR_KEY - podłączenie zaczerpnięte z dokumentacji SIM900. Stąd też sekwencja załączania i wyłaczania wygląda w taki sposób:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Po załączeniu modemu czekam około 2 minut i dopiero po tym czasie wysyłam dane po RS232 - ten czas wziąłem również z dokumentacji.

    Zalogowanie do sieci sprawdzane jest poleceniem "AT+CREG?".

    Debugera nie używałem, ale miałem podłączony wyświetlacz LCD na którym wyświetlałem otrzymywane znaki z modemu GSM.

    Po całonocnych i całodziennych testach wszystkie wiadomości zostały dostarczone prawidłowo.

    Acha _delay_ms zostały usunięte tam gdzie ich nie powinno być.
  • #6 16657662
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16657728
    Pawel_1985
    Poziom 4  
    Posty: 197
    Pomógł: 5
    Ocena: 13
    W dokumentacji jest napisane aby odczekać 2-3 sekundy od włączenia zanim wyśle się komendy AT.

    Ja czekam dłużej, aby jeszcze modem zalogował się do sieci... w moim przypadku patrząc na miganie diody zajmuję to mniej niż minutę. Mogę to zmienić i po prostu cały czas odpytywać modem poleceniem "AT+CREG".

    W chwili obecnej jestem zadowolony z działania programu, choć mam świadomość, że można napisać go inaczej / lepiej.

    Co do Watchdoga to na pewno będzie ustawiony.
  • #8 16657787
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ Użytkownik zbudował układ z kontrolera Atmega8 i modemu SIM900, który ma problemy z wysyłaniem wiadomości SMS zawierających dużą liczbę znaków. Problemy te mogą wynikać z braku odpowiedniego oczekiwania na potwierdzenia od modemu oraz z potencjalnego przepełnienia bufora. Po wprowadzeniu poprawek, takich jak dodanie sprawdzania statusu połączenia i oczekiwania na znak ">", użytkownik zauważył poprawę w wysyłaniu wiadomości. Modem jest zasilany z baterii i włączany raz na tydzień, co wymaga odpowiedniego zarządzania czasem oczekiwania na zalogowanie do sieci. Użytkownik planuje również wdrożenie Watchdoga, aby zapobiec zawieszaniu się programu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA