Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

SIM900 początki uruchomienia

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:
SIM900 początki uruchomienia

Postautor: Sławek5 » 8 lut 2013, o 08:41

Mam do Was prośbę a w zasadzie pytanie.

Czy pomógłby mi ktoś uruchomić moduł GSM SIM900D.
Nie mam z nim doświadczenia i nie chcę go uszkodzić. Mam taki moduł na płytce uniwersalnej i jak się zabrać za jego uruchomienie? Jak go załączyć i jakich komend AT użyć do uruchomienia.
Tak w zasadzie to interesuje mnie tylko na początek odbiór i wysyłanie SMSów za TCP/IP nie chce się zabierać.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: SIM900 początki uruchomienia

Postautor: pajaczek » 8 lut 2013, o 12:45

Przejrzałeś tutoriale ze strony simcoma? Są tam 2 które powinny Cię zainteresować, sim300_hs - czyli wszystko o podłączaniu, oraz sim300_at_command_set - czyli komendy, wraz z kilkoma przykładami dla różnych zadań. Co prawda dotyczą one starszego brata: sim 300, ale wielkich różnic w prostych zadaniach nie będzie, sim900 jest kompatybilny wstecz, w razie czego masz też tutorial porównujący oba modele.

Ps. Możliwe że są już też wersje dedykowane dla sim900, gdy ostatnio tam zaglądałem ok rok temu to jeszcze nie było.

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Re: SIM900 początki uruchomienia

Postautor: Sławek5 » 9 lut 2013, o 07:57

Wiesz patrzyłem na te toturiale. Mnie natomiast interesują praktyczne opisy, których tam nie ma np.
1. Przesyłanie poleceń. Nie jest tam napisane czy między znakami wymagana sa jakieś przerwy jak w przypadku bluetootha. Wyczytałem w sieci że podczas inicjalizacji modułu pomiędzy komendami należy dać przerwę 100ms. Czy tak jest?
2. Jak sygnalizowane jest odebranie smsa i dzwonienie?
3. Czy możną smsa przesłać bezpośrednio do uC, czy koniecznie muszą one być zapisywanie na karcie sim?
4. Podobno te układy nie pracują z każdą kartą sim, dlaczego?
5. Jak wykryć zalogowanie do sieci i jak je potem badać czy nadal jest dostępne? Czy przed wysłaniem smsa należy sprawdzić zalogowanie?

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: SIM900 początki uruchomienia

Postautor: pajaczek » 9 lut 2013, o 13:14

Hmm... Poniższe tyczy się sim300, ale jak wspomniałem różnic wielkich być nie powinno.

U mnie układ modem był podpięty np. pod avr'ke, oczywiście pod uarta.

Ad 1. Nie przypominam sobie bym dawał jakieś przerwy, poza jedynie zwłoką przy inicjalizacji (modem musi się obudzić) i jest to o ile pamiętam do 8 sek dla pełnego resetu i chyba 3 sek przy samym włączeniu. Jak mi się uda, to może poszukam kodu pod AVR jaki dla pewnego projektu napisałem, to będę mógł więcej powiedzieć, ale generalnie zasadę brałem ze wspomnianych tutoriali.

Ad 2. Przecież to wszystko masz tam opisane, przejrzyj "AT Command Set" rozdział 10.8 ;)

Ad 3. Ja to nigdy nie zapisywałem na kartę, trochę nie wiem o jakim zapisaniu myślisz. SMS przychodzący siłą rzeczy znajdzie się na karcie.

Ad 4. Mi się to nie przytrafiło, używałem Orangów, Plusa, Playa i T-mobile.

Ad 5. Modem Ci odpowiada że się zalogował, lub nie. Jeżeli spróbujesz ustanowić połączenie nie będąc zalogowanym dostaniesz error, i sam sobie sprawdź komendami jaka jest jego przyczyna, Osobiście robiłem, i polecam automat stanów.

Jeśli mam Ci coś sugerować, to podłącz sobie ten moduł uartem do kompa (pamiętaj o interfejsie) i się po prostu pobaw. Wystarczy że do modułu podłączysz uart, zasilanie, podstawowe linie sterujące i jeśli chcesz testować połączenia to antenę.

Awatar użytkownika
Łukasz Krysiewicz
-
-
Posty:143
Rejestracja:8 cze 2011, o 20:03

Re: SIM900 początki uruchomienia

Postautor: Łukasz Krysiewicz » 9 lut 2013, o 14:03

ponieważ brak jest dokumentacji do sim900D to napiszę Ci ogólnie (bazując na doświadczeniu z pracy z innymi modelami modemów GSM )


Ad. 1.
czas odpowiedzi na polecenia należy sprawdzić w dokumentacji układu, każde polecenie może mieć inny czas reakcji, przykładowo zdarzało mi się że na polecenie ustawienia pinu odpowiedź mogła przyjść nawet po 30 sekundach, zalogowanie do sieci GPRS może trwać nawet 2 minuty,,, to są szczególne przypadki, na większość poleceń modem odpowiada dużo szybciej (przykładowo po 100 milisekunadach)
Ad. 2.
sms AT+CNMI
dzwonienie AT+CRC
Ad. 3.
polecenie AT+CPMS ( nie wiem jak jest w sim900D w innych modemach wiadomości SMS, mogłem zapisywać na karcie SIM, bądź w pamięci wewnętrznej modemu )
Ad. 4.
nie spotkałem się aby modem którego używałem nie chciał pracować z kartą SIM
Ad. 5.
tutaj sprawa jest bardziej skomplikowana istnieje wiele algorytmów i sposobów na sprawdzanie połączenia do sieci GPRS (każdy programista ma swoje własne triki, hehe ), najprościej to proponuję Ci użyć polecenia AT+CIPSTATUS żeby sprawdzać status zalogowania do sieci GPRS

przed wysłaniem SMS'a dobrze by było sprawdzić czy jesteś w GSM'ie , ale jeśli nie sprawdzisz i spróbujesz wysłać wiadomość nie będąc zalogowanym to po prostu modem zwróci Ci błąd i wiadomości nie wyśle, zalogowanie do GSM'u sprawdź używając polecenia AT+CREG?, dodaktowo korzystając z polecania AT+CSQ możesz sprawdzić moc sygnału GSM ,,, dodam że SMS'a można wysłać nawet przy minimalnym zasięgu tj. gdy CSQ wynosi zaledwie 2-3,

(reasumując zalogowanie do GPRSu sprawdzaj CIPSTATUSem, zalogwanie do GSMu CREGiem)

pozdrawiam
L.K.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: SIM900 początki uruchomienia

Postautor: pajaczek » 9 lut 2013, o 14:14

No tak, Łukasz Krysiewicz ma rację odnośnie 1), jeśli pytasz o zwłoki między komendą a odpowiedzią modemu, to faktycznie tutaj zwłoki są czasem nieprzewidywalne (wspomniane logowanie gprs mogło trwać kilka sek do ok 2 min), ale to są raczej kwestie złożone nie tylko ze zwłok komunikacji modem/sterownik, ale i stanu samej sieci (siła sygnału, obciążenie itp).
Ja zrozumiałem że pytasz o zwłoki pomiędzy znakami, a teraz widzę że raz użyłeś "między znakami" a zaraz "pomiędzy komendami"... Jeśli idzie o komendy, to czekasz za każdym razem na potwierdzenie od sima że komendę przyjął (a w niektórych przypadkach że przyjął, oraz że wykonał - bo to będą 2 odrębne komunikaty, np. polecenie połączenie z gprs). I na pewno nie można tu przyjmować że to będzie 100 czy 200ms.

Łukasz Do sim900D faktycznie nie widziałem odrębnej dokumentacji, ale jest ładna i obszerna do sim300 oraz dokument o różnicach pomiędzy sim300 i sim900... i tym można się podpierać przy projektowaniu.

Awatar użytkownika
Łukasz Krysiewicz
-
-
Posty:143
Rejestracja:8 cze 2011, o 20:03

Re: SIM900 początki uruchomienia

Postautor: Łukasz Krysiewicz » 9 lut 2013, o 14:51

dokładnie tak jak pisze kolega pajączek wysyłasz polecenie i czekasz na odpowiedź,
gdy modem nie odpowie w zdefiniowanym czasie to retransmisja polecenia
maksymalny czas oczekiwania na odpowiedź tak jak pisałem może być różny
należy sprawdzić w dokumentacji ile należy czekać na informacje zwrotne z modemu

podłącz modem do PC,
i wyślij takie polecenia:

ATE0 --- wyłączenie echa
AT+CPIN? --- sprawdzenie pinu, odpowiedź powinna być +CPIN:READY
AT+CMGF=1 --- sms'y w trybie tekstowym
AT+CREG=1 --- tryb prezentacji danych logowania do sieci
AT+CREG? --- stan zalogowania do sieci GSM, pytaj do momentu aż w odpowiedzi dostaniesz +CREG:1,1

.... w tym momencie jesteś w sieci GSM
proponuję zacząć ćwiczenia z SMS'ami

użyj poleceń:
AT+CPMS? --- sprawdzenie SMS'ów na kracie SIM
AT+CMGR=x --- odczytanie SMS o numerze x
AT+CMGD=x --- kasowanie SMS o numerze x
AT+CMGS --- wysyłanie SMS (tutaj polecenie jest bardziej złożone,,, poczytaj w dokumentacji)
(wszystkie SMS możesz odczytać poleceniem AT+CMGL?)

mój opis jest dość ogólny i bardzo okrojony, ale powinien wystarczyć do rozpoczęcia pracy z modemem,,, podczas wysyłania SMS możliwe że będziesz musiał ustawić centrum SMS operatora którego karty będziesz używać ( w 99% przypadków centrum zapisane jest na karcie SIM, ale nie jest to standard produkcyjny )

sprawdź również gdzie masz zapisywane SMS'y
czy na karcie SIM, czy też może w pamięci telefonu
(informację o tym znajdziesz w odpowiedzi na polecenie AT+CPMS)

do dzieła i udanych eksperymentów życzę,

Dodano po namyśle:
Łukasz Do sim900D faktycznie nie widziałem odrębnej dokumentacji, ale jest ładna i obszerna do sim300 oraz dokument o różnicach pomiędzy sim300 i sim900... i tym można się podpierać przy projektowaniu.
to prawda,,,

oni na tej swojej stronie mają spore "zamieszanie"
kilka dni temu pobierałem dokumentację do jednego z ich modułów GPS,
pobrałem zadowolony, a później zauważyłem że cała dokumentacja wszystkie naście pdfów
jest do całkiem innego modułu niż chciałem,,,
do nowej wersji modułu GPS wrzucili dokumentację od starszej wersji układu
ot taka mała zmyłka ;) niby wszytko pięknie dokumentacja jest ale nie od tego co trzeba hehe :)

czasami dochodzę do wniosku że w chinach tak szybko powstają nowe produkty,
że nie nadążają z tworzeniem do nich dokumentacji,,,

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Re: SIM900 początki uruchomienia

Postautor: Sławek5 » 20 lut 2013, o 14:24

Jeśli pozwolicie to Was trochę podręczę z tym układem.
Pytałem o to już wcześniej ale dla mojej pewności. Spotkałem taki opis dla uruchomienia:

Kod: Zaznacz cały

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
A pytanie dlaczego jest tu ta przerwa? Czy spotkaliście sie z koniecznością jej stosowania?
W dokumentacji nie spotkałem nic na ten temat?

I najważniejsza rzecz bo nie wiem jak do tego podejść. Modem odpowiada na polecenia AT lub przy ich pomocy informuje o smsie. Jak więc podejść do obsługi takich wiadomości? Np wysyłam "AT" i powinno przyjść "OK" w odpowiedzi, więc czy tworzyć procedurę przerwania i zapisywać w niej przychodzące dane do bufora a potem analizować co przyszło? Czy w pętli głównej analizować na bieżąco dane przychodzące? nie mam doświadczenia w takim analizowaniu danych, więc proszę o porady.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: SIM900 początki uruchomienia

Postautor: pajaczek » 20 lut 2013, o 15:19

Zwłoka jest ponieważ modem musi mieć czas na przyjęcie i wykonanie polecenia, oraz wysłanie odpowiedzi (potwierdzenie lub nie wykonania/przyjęcia). Osobiście mi się ta inicjalizacja nie podoba, ale na wczesną alfę (do testu) może być. O ile ATE0 czy ATH wykonują się szybko, to nie każda komenda jest w stanie się wykonać tak szybko, a może być (i często jest) że warunkiem wykonania jakiejś jest wcześniejsze zakończenie sukcesem poprzedniej. Jak wspomniałem... automat stanu tu jest rozwiązaniem.

Analiza na bieżąco w pętli głównej powoduje blokadę systemu... znów odpowiedzią jest automat stanu (ten sam) w pętli głównej (lub z niej wywołany), ale jak najbardziej dobrym kierunkiem jest:
tworzyć procedurę przerwania i zapisywać w niej przychodzące dane do bufora a potem analizować co przyszło

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Re: SIM900 początki uruchomienia

Postautor: Sławek5 » 21 lut 2013, o 07:47

Tak patrząc na tą podana "inicjację" modemu to teraz dopiero zauważyłem to dlaczego tak jest zrobiona. Po prostu jej autor nie zwraca uwagi na odpowiedzi, bo jakby czekał co przyleci z modemu to ta zwłoka nie byłaby potrzebna. Fakt dziwne, ja bym jednak chciał zobaczyć odpowiedź modemu.

Co do analizy danych przychodzących. Czy możesz i polecić jakiś przykład, na którym mógłbym się wzorować jak to zrobić. Tu znowu mam kilka możliwości, albo bufor kołowy, albo cała linia do znaków CR.
Nie jest to takie proste jakby się mi wydawało jednak.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: SIM900 początki uruchomienia

Postautor: pajaczek » 21 lut 2013, o 15:07

Po prostu jej autor nie zwraca uwagi na odpowiedzi, bo jakby czekał co przyleci z modemu to ta zwłoka nie byłaby potrzebna.
Dokładnie tak. Dodatkowo może się zdarzyć, że zwłoka będzie z jakiś względów w pojedynczym przypadku za krótka, i wówczas się cała procedura wyłoży...

Co do przykładu... musiałbym Ci pokazać całość z któregoś projektu, a to 1) jest sporo kodu, 2) jest w C, 3) nie było by dydaktyczne ;)

Z buforem kołowym chyba nie musisz się męczyć, przy odpowiednio dobranej wielkości bufora w najgorszym przypadku (przepełnienia) program z dobrze zaprojektowanym algorytmem się zrestartuje i wykona wszystko od początku.
Proponuję zwykły bufor (string) w który w przerwaniu ładujesz znak po znaku (i pilnujesz czy się nie przepełnia). Zaś w "wolnej chwili" z pętli głównej:
- sprawdzasz czy bufor się nie przepełnił, i ew. resetujesz maszynę stanów/bufor/modem względnie logujesz ten fakt (dla celów debugingu).
- sprawdzasz sobie czy odebrałeś pełną linię (CR), jeżeli tak przesuwasz następne znaki na początek bufora i ustawiasz wskaźniki (jeżeli korzystasz do ustalania pozycji w buforze) - ten krok faktycznie z buforem kołowym może być łatwiejszy ;) z drugiej strony sam bufor kołowy jest bardziej wymagający uwagi. jeżeli nie, kończysz test, a jeżeli tak to:
- sprawdzasz czy odebrana linia jest z sensowna odpowiedzią... jeżeli tak, to... odpowiednio interpretujesz, zmieniasz stan maszyny stanów,
- powtarzasz krok 2.

Awatar użytkownika
Łukasz Krysiewicz
-
-
Posty:143
Rejestracja:8 cze 2011, o 20:03

Re: SIM900 początki uruchomienia

Postautor: Łukasz Krysiewicz » 21 lut 2013, o 23:13

sławek,
pamiętaj jednak że modem zazwyczaj odpowiada w następujący sposób
<CR><LF>odpowiedź<CR><LF>

aby nie komplikować, to wychwytuj pierwszy <CR> ew. dodatkowo <LF>
analizuj odpowiedź modemu, steruj pracą modemu

z książek to poleciłbym Ci " Moduły GSM w systemach mikroprocesorowych" - Jacek Bogusz,

P.S.
ta twoja inicjalizacja to taka słabiutka troszkę jest
proponuje poeksperymentuj z tymi komendami które podałem Ci we wcześniejszym poście

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Re: SIM900 początki uruchomienia

Postautor: Sławek5 » 22 lut 2013, o 06:58

ta twoja inicjalizacja to taka słabiutka troszkę jest
Tzn? Nie zaskoczyłem. Nie żebym coś miał do tej uwagi ale nie zrozumiałem podtekstu.

Awatar użytkownika
Łukasz Krysiewicz
-
-
Posty:143
Rejestracja:8 cze 2011, o 20:03

Re: SIM900 początki uruchomienia

Postautor: Łukasz Krysiewicz » 22 lut 2013, o 14:54

ta twoja inicjalizacja to taka słabiutka troszkę jest
Tzn? Nie zaskoczyłem. Nie żebym coś miał do tej uwagi ale nie zrozumiałem podtekstu.
po kolei

1. ATH - przerwanie połączenia (odłożenie słuchawki) polecenia tego używasz gdy ktoś do modemu dzwoni a nie podczas inicjalizacji pracy modemu (inicjalizacja powinna być wykonana po włączeniu zasilania modemu, gdy modem jeszcze nie pracuje tzn. nie odbiera połączeń)
2. ATE0 - wyłączenie echa - to powinno być pierwsze polecenie wykonywane podczas inicjalizacji
3. AT+COLP=1 - włączenie identyfikacji parametrów zestawionego połączenia (nie każda sieć wspiera taką usługę, w zasadzie to nigdy nie korzystałem z takiej funkcji, więc nie będę się wypowiadał)
4. ATE0 - ponowne wyłączenie echa, to polecenie jest całkowicie zbędne bo echo już raz zostało wyłączone
5. AT+CLIP=1 wyłączenie prezentacji numeru osoby dzwoniącej (czasami dobrze jest wiedzieć kto do nas dzwoni, ale ok może taki był zamysł autora, że nie chciał wiedzieć kto do niego dzwoni , jego prawo)
6. AT+CFUN=1 włączenie obsługi SMS w trybie tekstowym (domyślnie jest włączone PDU), to polecenie jest jak najbardziej potrzebne

podsumowując na 6 poleceń zostawił bym tylko 2 (numer 2 i numer 6), pozostałe uznaję za niepotrzebne (pisałeś w pierwszym poście, że chcesz uruchomić modem i obsługiwać SMS, więc wykluczam opcję dzwonienia oraz transmisji GPRS )

proponuję Ci eksperymenty z poleceniami które opisałem w poście z dnia: "9 lut 2013, o 15:51" (podłącz modem do PC, uruchom terminal transmisji UART i do dzieła), dodatkowo odsyłam do książki Jacka

jak będziesz miał jakieś pytania to służę pomocą,

Sławek5
-
-
Posty:485
Rejestracja:15 sie 2003, o 16:40
Lokalizacja:Szczecin
Kontaktowanie:

Re: SIM900 początki uruchomienia

Postautor: Sławek5 » 25 lut 2013, o 08:54

Jestem po uruchomieniu modułu i testach z terminalem na PCta.
Mam parę pytań.
Nie mogę w dokumentacji znaleźć co modem przesyła do terminala w przypadku odebrania smsa, dzwonienia.
Jak przychodzi sms to w terminalu dostaję ciąg +CMTI: Czy dokumentacja nie powinna mówić cos na temat danych przychodzących po jakimś zdarzeniu? Tak samo jak włączam modem to dostaje na końcu ciąg Call Ready. nie znalazłem nic na ten temat co to może znaczyć?
Co z instrukcją mówiąca o lokalizacji smsa w pamięci +CPMS, czy można to zmienić i jak? A co rozbić z smsami lub informacjami sieciowymi typu stan konta lub te smsy sieciowe z reklamami?

Awatar użytkownika
Łukasz Krysiewicz
-
-
Posty:143
Rejestracja:8 cze 2011, o 20:03

Re: SIM900 początki uruchomienia

Postautor: Łukasz Krysiewicz » 26 lut 2013, o 22:19

Jestem po uruchomieniu modułu i testach z terminalem na PCta.
brawo o to chodziło !
Mam parę pytań.
Nie mogę w dokumentacji znaleźć co modem przesyła do terminala w przypadku odebrania smsa, dzwonienia.
Jak przychodzi sms to w terminalu dostaję ciąg +CMTI: Czy dokumentacja nie powinna mówić cos na temat danych przychodzących po jakimś zdarzeniu?
reakcję na przychodzące SMS'e konfigurujesz za pomocą polecenia
at+cnmi=...
poczytaj w dokumentacji o ustawieniach tego polecenia
standardowo zalecana się ustawienie parametrów
at+cnmi=1,2,0,0,0

odnośnie parametrów zgłaszanych podczas dzwonienia do modemu to poczytaj o poleceniu
at+crc=
Tak samo jak włączam modem to dostaje na końcu ciąg Call Ready. nie znalazłem nic na ten temat co to może znaczyć?
to oznacza nie mniej ni więcej to że możesz wykonywać połączenia głosowe tj. możesz dzwonić
Co z instrukcją mówiąca o lokalizacji smsa w pamięci +CPMS, czy można to zmienić i jak?
polecenia at+cpms=
standardowo aby zapisywać wiadomości przychodzące na karcie SIM ustaiwiamy
at+cpms="SM"

A co rozbić z smsami lub informacjami sieciowymi typu stan konta lub te smsy sieciowe z reklamami?
takie SMSy są traktowane w identyczny sposób jak "normalne" wiadomości,
odczytujesz taką wiadomość (at+cmgr=n) i po prostu ją kasujesz (at+cmgd=n)
gdzie n to numer SMS zapisanego na karcie SIM

Wróć do „Elektronika - tematy dowolne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 60 gości