Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 14 lip 2025, o 10:12


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
    Autor Wiadomość
    PostNapisane: 31 paź 2015, o 21:21 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam,
    robię sobie mały projekcik z wykorzystaniem modułu GSM SIM900, coś w stylu centralka alarmowa.
    Dodam, że jest to początek mojej przygody z modułami GSM.
    Ale do rzeczy. Wysyłając SMS do SIM900, modem zwraca odpowiedź +CMTI: "SM",x - gdzie x to nr SMS.
    Do odczytania tego SMS wysyłam rozkaz AT+CMGR=x, x to nr SMS tego który otrzymałem w +CMTI.

    No i tutaj od czasu do czasu zdarza się, że modem nie zwraca treści SMS. W załączniku zrzut ekranu w czasie testów właśnie z takim przypadkiem.

    Obrazek

    Zrobiłem sobie podgląd lini Tx i Rx w RS232. Więc widzę co wysyłam do SIM900 i widzę co zwraca.
    Wysyłane znaki oglądam również jako hex aby widzieć czy przypadkiem gdzieś nie zjadło mi ENTERA po rozkazie CMGR,
    wtedy modem czekałby aż dostanie ten znak aby móc wykonać owy rozkaz. Ale takiej sytuacji nie było, więc przesył rozkazu jest OK co widać na zdjęciu.

    Czy mieliście już takie przypadki??? Nie rozumiem takiego zachowania:(
    Może coś robię nie tak?? może za szybko wysyłam rozkaz CMGR w stosunku do odebrania CMTI??

    Szukałem wątków na tym forum związanych z tym tematem, ale nie znalazłem.

    Z góry dziękuję za wszystkie sugestie i porady.

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 paź 2015, o 22:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 20 sie 2013
    Posty: 795
    Lokalizacja: Poznań
    Pomógł: 59

    O ile dobrze pamiętam za pomocą polecenia AT+CNMI=1,1,0,0,0 (chyba takie parametry) można ustawić sim, by zaraz po odebraniu sms treśc sms była wyświetlana w terminalu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 06:30 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Witam.
    Ja co prawda nie znam SIMa, w swoim projekcie używam leciwego wavecoma,
    ale wydaje mi się, że komenda CMTI nie podaje wcale nr SMSa,
    tylko łączną ilość wiadomości w danym "buforze" pamięci, a to wcale nie to samo.
    Dlatego jeśli masz taką możliwość, to tak jak kolega wyżej pisał ustaw podawanie pełnej
    treści odebranej wiadomości.
    Ja regularnie sprawdzam stan pamięci, a jeśli mam jakieś nie odebrane to uruchamiam funkcję, która po kolei odpytuje cały bufor.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 09:37 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam:)

    icer_cmg napisał(a):
    O ile dobrze pamiętam za pomocą polecenia AT+CNMI=1,1,0,0,0 (chyba takie parametry) można ustawić sim, by zaraz po odebraniu sms treśc sms była wyświetlana w terminalu.


    Tego rozkazu nie używałem i chętnie go wypróbuję, bo faktycznie w tym urządzeniu to nawet lepiej by było od razu uzyskać treść, a nie jeszcze marnować czas na wysyłanie rozkazu CMGR.


    icer_cmg napisał(a):
    wydaje mi się, że komenda CMTI nie podaje wcale nr SMSa,
    tylko łączną ilość wiadomości w danym "buforze" pamięci, a to wcale nie to samo.


    Jeśli chodzi o odpowiedź "CMTI" z modemu, to w tej postaci : +CMTI: "SM",x (+CMTI: <mem>,<index>)
    jak w moim przypadku, zwraca następujące rzeczy:
    "SM" - wskazuje na pamięć w karcie SIM, no a ten numer to faktycznie ilość SMS w tej pamięci (niefortunnie użyłem nr SMS).
    Rozkazem AT+CMGR=x odczytuję konkretny SMS o podanym indeksie. Czyli jeśli do modemu przyjdzie SMS i modem zwróci
    +CMTI: "SM",16 to wysyłając rozkaz AT+CMGR=16 moduł zwraca mi ostatnio odebrany SMS.

    I właśnie w takim przypadku mój modem nie zawsze zwraca treść odebranego SMS i nie wiem dlaczego. Zaznaczam, że zawsze na końcu rozkazu mam znak ENTER, bo bez tego modem nie wykona rozkazu.

    Przy odczycie starszych wiadomości nie ma takiego problemu, występuje on tylko przy próbie odczytu ostatniego SMS :((

    Po odebraniu CMTI, wyłuskuję z niego index, następnie sklejam go z rozkazem CMGR i wysyłam do modemu.
    Próbowałem opóźnić trochę (100ms) wysłanie tego rozkazu względem odebrania CMTI i sklejenia rozkazu, ale to nic nie dało:(

    Może jednak jest jakieś logiczne wyjaśnienie tego tematu.

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 13:18 
    Offline
    Użytkownik

    Dołączył(a): 02 lut 2014
    Posty: 60
    Pomógł: 1

    Z ilościadomości w danej pamięci wcale nie wynika numer odebranej wiadomości.
    Wcale nie muszą być ułożone kolejno, mogą występować puste miejsca po usuniętych wcześniej Smsach.
    To że jest ich 16 a Ty próbując odczytać tą z pod adresu/index 16 nie dostajesz tego co się spodziewasz, raczej potwierdza moją teorię.
    Spróbuj odczytać sąsiednie indexy, a najlepiej pokolei całą pamięć, bo jeśli dostajesz CMTI to modem odebrał SMSa i zapisał go w obszarze SM, czyli jak piszesz na karcie SIM.
    A tak z ciekawości modem nie zwraca przypadkiem błędu, gdy niemożesz odczytać Smsa?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 15:27 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam:)
    Artur_26 napisał(a):
    A tak z ciekawości modem nie zwraca przypadkiem błędu, gdy niemożesz odczytać Smsa?


    W tym przypadku nie dostaję błędu, żadnej odpowiedzi. Dlatego załączyłem PrintScrn aby było widać co przysyła modem i co nadaję do modemu. Ten przykład co podałem to w kolejności wygląda tak:
    1. Modem mówi CMTI
    2. uC stwierdza : o jest nowa wiadomość
    3. Z +CMTI: "SM",16 wyciągam "16"
    4. Sklejam ten nr z rozkazem "AT+CMGR="
    5. Wysyłam cały rozkaz AT+CMGR=16 do modemu

    I teraz zdarza się co nie jest regułą, że modem nic nie odpowiada, ani jednego znaku. Właśnie po to robię sobie podsłuch
    lini Tx i Rx, które mam podłączone do dwóch portów RS232 w kompie. Dzięki temu widzę na bieżąco jak ze sobą rozmawia uC z modemem:)

    A normalnym zachowaniem było, że jak wysyłałem SMSy do mojego modemu to układ odczytywał je normalnie.
    Np dostałem CMTI z nr10 wysłałem CMGR z nr 10 i OK mam odczyt, za chwilę wysłałem kolejny SMS i otrzymałem CMTI z nr 11 i po wysłaniu CMGR z nr 11 poprawna odpowiedź. No to następny SMS wysyłam. Modem mówi CMTI z nr 12, wysyłam CMGR z nr 12 a modem milczy:(

    Jeśli chodzi o kasowanie wiadomości to usuwam na raz wszystkie wiadomości z pamięci, więc wydaję mi się, że nie ma pustych miejsc. Twoja uwaga odnośnie występowania pustych miejsc jest bardzo cenna i na pewno sprawdzę co się dzieję jeśli skasuję środkową wiadomość. Do tej pory tego nie robiłem i zawsze kasowałem wszystkie wiadomości na raz:)

    Bawiąc się komunikacją z modem z poziomu terminala PC, odbierając SMSy , odczytując "ostatni" zawsze odczytałem to co wysłałem przed otrzymaniem CMTI.

    Po braku odpowiedzi, przełączam się na terminal PC i wysyłając komendę CMGR z "ostatnim" nr modem milczy:(
    dopiero po resecie modemu i ponownym wysłaniu CMGR modem zwraca ostatnio wysłany prze zemnie SMS

    Wysyłając CMGR z numerem większym od ostatniej wiadomości modem zwraca OK.

    Wniosek nasuwa mi się jeden, że będę musiał wrócić do zabawy tym modemem z poziomu PC i terminala.

    Acha jeśli wyśle błędnie jakieś komendy a są zakończone enterem to modem zwraca ERROR, bo takie przypadki ćwiczyłem na PC i terminalu.

    Hmmm może uda mi się dojść za Twoją i innych pomocą do przyczyny takiego zachowania, bo podsuwacie dobre pomysły:), które warto sprawdzić.

    Pozdrawiam

    _________________
    Artur



    Ostatnio edytowano 1 lis 2015, o 19:59 przez Artur_26, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 19:56 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam:)

    icer_cmg napisał(a):
    O ile dobrze pamiętam za pomocą polecenia AT+CNMI=1,1,0,0,0 (chyba takie parametry) można ustawić sim, by zaraz po odebraniu sms treśc sms była wyświetlana w terminalu.


    Sprawdziłem tą komendę i fajnie działa, ale żeby jednocześnie była odwiedź z treścią SMS to trzeba dać:

    AT+CNMI=2,2,0,0

    Dzięki za podpowiedź.

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 20:59 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam ponownie:)

    Zrobiłem ponownie test czy modem nic nie odpowie. Wysłałem 21 SMSy pod rząd i za każdym razem poprawne działanie.
    Po 21 skasowałem wszystkie wiadomości i wysłałem jeszcze jeden i również poprawna odpowiedź.

    Nic w kodzie nie zmieniałem, po prostu włączyłem i zrobiłem test.
    nie rozumiem wcześniejszego zachowania modemu.

    Na zdjęciu wynik komunikacji pomiędzy uC a modemem.

    Obrazek

    Może jednak znajdę przyczynę, dlaczego modem nie odpowiedział:)

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 21:02 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    trudno wyczuć ... dlaczego tak się stało
    ale z doświadczenia ci powiem ze br@y nie jest dobrym terminalem
    czesto mu się zdarzają dziwne zachowania , np nie wysyłanie i nie odbieranie treści
    mimo że wygląda że wszystko działa ..

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 21:26 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam,

    SunRiver terminale w tym przypadku służą jako podsłuchy nie wysyłam z nich niczego.
    Dzięki nim widzę jak uC gada z modemem.

    Wtedy kiedy modem "nie odpowiadał" uC też niczego nie odebrał. Właśnie o to mi chodzi.

    A jaki terminal polecasz?? szczerze mówiąc to z br@y nie miałem jeszcze problemów, więc dzięki za uwagę będę miał się na baczności:)

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2015, o 21:48 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Artur_26 napisał(a):
    A jaki terminal polecasz?? szczerze mówiąc to z br@y nie miałem jeszcze problemów, więc dzięki za uwagę będę miał się na baczności:)

    no to gratuluję ... niestety mnie zawiódł kilka razy , w związku z czym szukałem czegoś lepszego czegoś co nie wywali się
    przy dużych ilościach danych i takich tam .... Puttiego nie lubię , spełnił i spełnia swoją rolę świetnie sprzetowy terminal VT240 no ale
    czasem potrzebuję skorzystać na kompie żeby nie nosić sprzetowego więc napisałem w końcu swój ...

    czasem to najlepsze rozwiązanie

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 lis 2015, o 20:00 
    Offline
    Użytkownik

    Dołączył(a): 25 maja 2014
    Posty: 92
    Lokalizacja: Krosno
    Pomógł: 0

    Witam,
    SunRiver napisał(a):
    czasem potrzebuję skorzystać na kompie żeby nie nosić sprzetowego więc napisałem w końcu swój ...


    Zainspirowałeś mnie:) Też się zanosiłem z zamiarem napisania własnego terminala i nawet zrobiłem przymiarki do tego. Niestety lenistwo zwyciężyło :) hihi i zaniechałem ten pomysł.
    Zrobię sobie od razu obsługę dwóch portów, to będę mógł podsłuchiwać komunikację urządzeń między sobą:) tak jak to teraz robię pomiędzy uC a modemem.

    A wracając do mojego problemu z brakiem odpowiedzi modemu, to na razie się przestraszył i działa normalnie.
    Zmieniłem też sposób odbierania SMS, czyli skorzystałem z propozycji kolegi icer_cmg.

    Jak na razie temat zamykam. Ale jeśli znajdzie się ktoś kto ma duże doświadczenia z tymi modułami to proszę o dorzucenie swoich "pięciu groszy":))

    Pozdrawiam

    _________________
    Artur



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO