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

Arduino Uno + SIM900 – brak możliwości wysyłania i odbierania SMS, moduł w sieci

tomek59 19 Cze 2025 16:21 306 18
REKLAMA
  • #1 21583877
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Witam. Proszę o pomoc w następującej kwestii. Chciałbym wysyłać SMS za pomocą Arduino Uno oraz modułu komunikacyjnego SIM900. Niestety, mimo iż układ połączyłem i oprogramowałem zgodnie z pobranymi z netu tutorialami, wyposażyłem w kartę SIM bez PIN-u, nie mogę nic wysłać ani odebrać. Sam moduł SIM900 łączy się z siecią. Bardzo proszę o jakieś wskazówki w tej sytuacji.
    Załączniki:
    • Arduino Uno + SIM900 – brak możliwości wysyłania i odbierania SMS, moduł w sieci image.jpg (5.06 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 21583909
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Musisz wyświetlić co wysyłasz do modemu i co modem odpowiada. To pozwoli znaleźć przyczynę problemu.
    Jeśli karta jest bez pinu to modem sam nawiąże połączenie z siecią nawet jeśli nie będzie z nim żadnej komunikacji. Wystarczy aby miał zasilanie.
  • #3 21583925
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Po wysłaniu komendy AT+CPIN? Otrzymuję ERROR.
  • #4 21583951
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Szacunkowo po jakim czasie od włączenia zasilania wysyłasz ten rozkaz ?
    Czy jesteś pewien, że wysyłasz prawidłowy ciąg znaków ?
    Co modem wysyła sam z siebie po włączeniu zasilania ?
    Czy jesteś pewien, że modem loguje się do sieci czyli "widzi" kartę SIM ?
    Co modem odpowiada na wysłanie rozkazu "AT" ?
  • REKLAMA
  • #5 21583970
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Komendy wysyłam po uzyskaniu pewności, że modem nawiązał połączenie z siecią (spadek częstotliwości migania diody NET). Po wysłaniu komendy AT brak reakcji. Po włączeniu zasilania modem nie wysyła nic lub czasami ?. Podejrzewam, że modem nie widzi karty SIM lub Arduino nie widzi modemu. Jestem jednak początkujący w tych sprawach i dlatego zwracam się o pomoc.
  • #6 21583979
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Jeśli modem zalogował się do sieci to musi widzieć kartę SIM.
    Jeśli masz adapter USB-UART 3.3V to podsłuchaj przy jego pomocy co Arduino wysyła do modemu i co modem odpowiada.
    Pomiń modem i połącz w Arduino ze sobą piny RxD i TxD. Zobacz czy odbierasz to samo co wysyłasz.
  • #7 21583991
    tos18
    Poziom 42  
    Posty: 7069
    Pomógł: 1097
    Ocena: 1832
    Podejrzewam problem z zasilaniem modemu. Zasil modem przez gniazdo zasilania a nie z arduino.
  • #8 21583997
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Niestety, nie mam adaptera USB-UART. Modem zasilam z zasilacza 5 V DC, 2 A.
  • #9 21583999
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Pomiń modem i połącz w Arduino ze sobą piny RxD i TxD. Zobacz czy odbierasz to samo co wysyłasz.
  • REKLAMA
  • #10 21584017
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Bardzo przepraszam, ale po powtórnym sprawdzeniu zauważyłem, iż moduł po włączeniu wysyła cztery odwrócone znaki zapytania (nie umiem uzyskać takiego znaku z klawiatury).
  • REKLAMA
  • #11 21584058
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Zobacz w dokumentacji do modemu jaka jest domyślna prędkość portu szeregowego. Sprawdź czy taka jest ustawiona w Arduino.
    Pomiń modem i połącz w Arduino ze sobą piny RxD i TxD. Zobacz czy odbierasz to samo co wysyłasz.
  • #12 21584173
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Prędkość transmisji jest 9600 baud. Przy innych prędkościach moduł w odpowiedzi na AT nie wysyła nawet ERROR, a jakieś śmieci. Po połączeniu na Arduino RxD i TxD nie otrzymuję nic na monitorze portu.
  • #13 21584177
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    tomek59 napisał:
    Po połączeniu na Arduino RxD i TxD nie otrzymuję nic na monitorze portu.

    Rozumiem, że zwarłeś piny TxD i RxD idące do modemu. Jeśli coś wysyłasz a nic nie odbierasz to pomyliłeś piny, nie zainicjowałeś poprawnie UART itp.
    To jednak jest w sprzeczności z tym, ze wcześniej odebrałeś ERROR z modemu.
  • #14 21584210
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Zwarłem piny 7 i 8 ARDUINO idące do modemu. Tak też zadeklarowałem SoftwareSerial SIM900(7,8);
  • #15 21584220
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Nie znam Arduino. Nazwa "SoftwareSerial" sugeruje użycie programowego zamiast sprzętowego UART. Takie rozwiązanie może powodować problem z obsługą jednoczesnego nadawania i odbierania danych. To wyjaśnia z jakiego powodu nie odbierasz tego co nadajesz. Programowa realizacja UART nie wyklucza współpracy modemem ale ją utrudnia.
  • #16 21584247
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    Też nie mam wiedzy na temat Arduino. Wyobrażam sobie jednak, że komunikacja z monitorem portu musi się odbywać na innych pinach (pin 1, pin 2) niż komunikacja z modemem (piny 7, 8). W innym wypadku (gdy wykorzystamy te same piny) jest problem z wgraniem szkicu, o czym się przekonałem.
  • #17 21584356
    TvWidget
    Poziom 39  
    Posty: 4394
    Pomógł: 472
    Ocena: 694
    Na podstawie tego co napisałeś mogę jedynie podejrzewać, że użyłeś czysto programowej obsługi portu szeregowego. Nie odbierasz tego co nadajesz. To jest poważna wada rozwiązania lub skutek jakiegoś błędu. W tym przypadku może to bardzo utrudnić analizę komunikacji z modemem. Poza tym co nadajesz i co modem odpowiada pojawia się kolejny czynnik czyli czas w jakim zachodzi transmisja.
  • #18 21585076
    Zgoodie
    Poziom 26  
    Posty: 637
    Pomógł: 83
    Ocena: 80
    Myśle ze nie jest to dobry dział dla tego tematu. Proponuję dział Mikrokontrolery.
  • #19 21585961
    tomek59
    Poziom 9  
    Posty: 21
    Ocena: 1
    I w końcu się wyjaśniło. Przyczyną kłopotów był zarówno błąd w kodzie, jak i niewłaściwa konfiguracja monitora portu szeregowego. Za pomoc bardzo dziękuję.

Podsumowanie tematu

✨ Problem dotyczył braku możliwości wysyłania i odbierania SMS za pomocą Arduino Uno oraz modułu GSM SIM900, mimo że moduł łączył się z siecią. Przyczyną trudności były błędy w kodzie oraz niewłaściwa konfiguracja monitora portu szeregowego. W dyskusji zwrócono uwagę na konieczność monitorowania komunikatów wysyłanych do modemu i jego odpowiedzi, poprawne ustawienie prędkości transmisji (9600 baud), a także na potencjalne problemy z zasilaniem modułu i konfiguracją pinów RxD oraz TxD. Zasugerowano testowanie połączenia przez zwarcie pinów RxD i TxD Arduino, aby zweryfikować poprawność komunikacji szeregowej. Wskazano, że użycie programowego portu szeregowego (SoftwareSerial) może utrudniać jednoczesne nadawanie i odbieranie danych. Ostatecznie problem rozwiązano poprzez korektę kodu i konfiguracji monitora portu szeregowego, co umożliwiło prawidłową komunikację z modułem SIM900 i wysyłanie SMS.
Wygenerowane przez model językowy.
REKLAMA