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



Teraz jest 28 mar 2024, o 20:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 16 sty 2018, o 17:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

Mam problem z odbieraniem SMS od modułu SIM900 GSM Shield Arduino. Napisałem program na ATMega32, który odbiera SMS "=on" i zapala LED. Program działa. Sprawdziłem na UART-PC. Problem pojawia się gdy podłączam SIM900 do AVR przez RX->TX, TX->RX. Wysyłam SMS a dioda się nie zapala. Czy ktoś wie o co chodzi?

Schemat modułu SIM900:
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2018, o 17:25 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 759
Pomógł: 37

A podłączałeś moduł do terminala? Korzystałem z takiego modułu i działał bardzo dobrze. Zakładam ,ze masz zle napisany program komunikacji sim-avr. Ale to i tak pewnie w C wiec nie pomoge



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2018, o 17:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

Dziękuję za odpowiedź. Komunikacja komendami AT moduł<->PC działa prawidłowo. Mało tego jestem w stanie wysłać dane z uC do SIM900 (nadać SMS). Odbieranie SMS przez uC nie działa. Zrobiłem symulację. Przez terminal wysłałem dokładnie to samo co podaje SIM900 do procka. O dziwo dioda zapaliła się.

Podejrzałem na oscyloskopie wyjście TX SIM900. Sygnał podczas transmisji przypomina szum a nie zera i jedynki.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2018, o 19:29 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 759
Pomógł: 37

A jak wyślesz smsa przez terminal to tez nie masz odpowiedzi? Głownie chodzi mi o komunikacje sim - terminal.Najlepiej na początku wyeliminować własne błędy. Bo to one zazwyczaj są problemem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sty 2018, o 23:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

Sprawdzę czy przez terminal da radę. Czyli mam wysterować terminalem, moduł SIM900, tak aby "sam do siebie" wysłał wiadomość?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 09:52 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 759
Pomógł: 37

Nie. Ty żeby odczytać musisz wysłać komendę nakazująca sim900 odczytać smsa. Wtedy on sięga do pamięci i wysyła ci go przez RS232 i Ty go odczytujesz w terminalu. Wiec podłączasz go do terminala wysyłasz komendę "AT" i sim odpowie ci "OK" i to będzie znaczyc ,ze masz komunikacje poprawna. Nastepnie wysylasz sms na sim900 i komendami AT z terminala każesz mu ja odczytać. Sim900 wyśle ci ja do terminala. Jeśli to będzie działać to wtedy masz pewność ze komunikacja działa. Następnie musisz sobie tak napisać odbiór w avr żeby to on ci te komendy wysyłał i później pokazał na wyświetlaczu czy co tam innego z nim zrobił.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 11:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

No tak ale mam tak skonfigurowany SIM900, że od razu na terminalu pojawia się treść SMS. Procek nie widzi ramek z treścią. Na terminalu wyświetla się poprawnie SMS.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 11:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Draxter32 napisał(a):
No tak ale mam tak skonfigurowany SIM900, że od razu na terminalu pojawia się treść SMS. Procek nie widzi ramek z treścią. Na terminalu wyświetla się poprawnie SMS.

Jeżeli na terminalu pojawia się treść sms-a to moduł sim działa poprawnie. Przecież po podłączeniu Rx i Tx do procka zamiast do terminala to samo doleci do procesora i musisz zadbać o to żeby procesor prawidłowo zareagował na przychodzącego sms-a.
Pokaż ten fragment kodu odpowiedzialny za odbiór danych przez UART

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 15:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

mczarny napisał(a):
Pokaż ten fragment kodu odpowiedzialny za odbiór danych przez UART

W przerwaniu odbieram dane do volatile unsigned char buff[128];

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Inicjalizacja UART

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A tak napisałem parsowanie danych

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 16:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

To jeszcze zrób zrzut ekranu jak wygląda przychodzący sms w terminalu

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 19:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

mczarny napisał(a):
To jeszcze zrób zrzut ekranu jak wygląda przychodzący sms w terminalu

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 21:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

zrób może tak

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i wyślij sms o treści LEDON

oczywiście "bufor" musisz sobie zdefiniować, ale wiesz jak bo już masz to zrobione

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sty 2018, o 23:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

@mczarny, przedstawione rozwiązanie u mnie nie działa. Z terminala jak i przez SMS wysyłając treść, dioda się nie zapala.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2018, o 07:53 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A spróbuj:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2018, o 09:30 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Mam jeszcze pytanie
Bufor napełniasz w przerwaniu.
A kiedy parsujesz dane? W sensie co jest sygnałem do tego żeby rozpocząć parsowanie?
Czy może robisz to "cały czas w pętli głównej"?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2018, o 10:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Do bufora trafiają dwie linie danych więc jeżeli chcesz żeby program zareagował na "=on musisz programowo pominąć pierwszą linię czyli "+CMT............"
Jeżeli z terminala wpiszesz tylko "=on\r\n" to Twoja funkcja parsująca reaguje prawidłowo ale moduł SIM przesyła nie tylko treść sms-a.
Ja stosuję sposób przedstawiony w YB gdzie program analizuje kolejne linie ASCII zliczając znak "enter"
Myślę, że najpierw musisz zareagować na to że sms w ogóle się pojawił czyli na początek stringa +CMT, pominąć tą linię i parsować dopiero wtedy właściwą treść sms-a.
Tak czy inaczej polecam Ci YB gdzie masz podane wszystko na tacy łącznie z obsługą timeoutów, obsługą sms-ów w trybie tekstowym i UDP. Co ważne masz to wszystko zrobione w sposób nieblokujący.

pozdrawiam

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sty 2018, o 00:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

MirkoT napisał(a):
A spróbuj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Sprawdziłem. Nie działa, zarówno przez moduł SIM900 jak i przez terminal.
MirkoT napisał(a):
Mam jeszcze pytanie
Bufor napełniasz w przerwaniu.
A kiedy parsujesz dane? W sensie co jest sygnałem do tego żeby rozpocząć parsowanie?
Czy może robisz to "cały czas w pętli głównej"?

Parsowanie danych wykonuje się w pętli głównej programu.
mczarny napisał(a):
Do bufora trafiają dwie linie danych więc jeżeli chcesz żeby program zareagował na "=on musisz programowo pominąć pierwszą linię czyli "+CMT............"

No dobrze a jeśli wpiszę w terminal "+CMT +48xyz jakiś-tekst-sim-900 /r/n=on/r/n" czyli zrobię symulację to dioda zapala się. Zrobiłem test i zamiast "=on" wpisałem w programie "+CMT". Nie działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2018, o 00:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2015
Posty: 183
Pomógł: 10

Po przerwie wracam do tematu. Zauważyłem, że jak przy zestawionym połączeniu RX/TX moduł GSM<->AVR wpinam się równolegle przejściówką FTDI 2303 do PC wszystko zaczyna działać. Wypinam przejściówkę - działa. Reset zasilania. I znów nie działa.

Tak jakby FTDI "budziło" moduł UART w AVR. O co tu chodzi?

Obrazek



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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