Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Podłączenie modułu SIM300D do mikrokontrolera AVR

Tranzystor_1992 23 Wrz 2010 18:06 38673 220
  • #152 23 Wrz 2010 18:17
    marenc
    Poziom 24  

    Nadal nic... wygląda jak by nie wychodził ze SLEEP. Jeżeli zrobię hard-reset(odłączę baterię i źródło zasilania), to przy pierwszym uruchomieniu mam FROM GHOST TO NORMAL, ale później nadal nie odpowiada na inne komendy, restart samego procesora nie daje już tego komunikatu. Raz udało się uzyskać w ten sposób CALL READY, ale też nie odpowiadał później na pozostałe komendy. Może to wina tego, że pewnie nadal jest w AutoBound?

  • #153 23 Wrz 2010 19:40
    rpal
    Poziom 27  

    kolego marenc jesteś pewien że wysyłasz poprawne komendy? Aby wstępnie zainicjowac SIM-a powinieneś wyslaś komendy:
    ATE0
    AT+CLIP=1
    AT+CMGF=1
    AT+CREG=1
    to wystarczy aby sim zaczął w miarę dobrze reagować
    AT+CREG? sprawdza status i na tej podstawie możesz ew. "wybudzić" moduł.
    Na marginesie to czy ty przypadkiem nie wysyłasz błednych znaków bo ze wczesniejszych postów widzę że komendy porzedzają i koncza jakieś znaki końca linii i powrotu karetki zupełnie niepotrzebnie.

    Cytat:
    US1_BufferTX[0] = 0x13;
    US1_BufferTX[1] = 0x10;
    US1_BufferTX[2] = 'A';
    US1_BufferTX[3] = 'T';
    US1_BufferTX[4] = '+';
    US1_BufferTX[5] = 'C';
    US1_BufferTX[6] = 'M';
    US1_BufferTX[7] = 'G';
    US1_BufferTX[8] = 'L';
    US1_BufferTX[9] = '=';
    US1_BufferTX[10] = '"';
    US1_BufferTX[11] = 'A';
    US1_BufferTX[12] = 'L';
    US1_BufferTX[13] = 'L';
    US1_BufferTX[14] = '"';
    US1_BufferTX[15] = 0x13;
    US1_BufferTX[16] = 0x10;

    te 0x13 i 0x10 jest tutaj zbędne bo masz wysłać tylko zawartość bufora od 2 do 14.
    Poza tym odbiór masz poprawnie zrealizowany może więc należy się przyjżeć poprawności połączeń pod kątem nadawania. Jak to jest u ciebie zrobione, poziomy napięc poprawnie masz zrealizowane ? Podaj jakie panuje napięcie na linii Rxd od modułu czyli Txd od modemu. Tam musi na stałe panować poziom wysoki bo transmisja rozpoczyna się podciągnięciem tej linii do masy .
    Poprawiam się bo się zagalopowałem, poprawnie wysłaną komende kończy znak chr(13) to ma być na samym końcu czyli od 2 do 15. napewno nie na początku :)

  • #154 23 Wrz 2010 21:17
    marenc
    Poziom 24  

    Jeżeli chodzi o komendy konfiguracyjne, to nie mają one kompletnie żadnego znaczenia, sprawdziłem - po prostu nie dostaje na nie odpowiedzi w formie określonej przez komendy AT, a tylko ich odbicie(echo).

    Jeżeli chodzi o poprawność komend, to w liście komend od firmy simcom jest podany przykład, że CR i LF powinny być na początku i końcu, więc nawet tego próbowałem.

    Odbiór mam przez DMA, więc nie ma mowy o pominięciu danych, a nadawanie sprawdziłem oscyloskopem - jest poprawne sprzętowo. Na oby liniach w idle jest stan wysoki. W dokumentacji jest maksymalne napięcie wejścia 3V2, a ja mam logikę 3V3, więc może go szlak trafił?

    Dodam jeszcze, że DTR i RTS jest fizycznie połączone do GND. Sprawdzi ktoś, czy w trybie CHARGING IN NORMAL linia STATUS jest LOW?

  • #155 23 Wrz 2010 22:16
    rpal
    Poziom 27  

    a czym tam te dane wysyłasz z pc-ta a jesli tak to przez co ? Myśle o dopasowaniu poziomów.

  • #156 23 Wrz 2010 22:28
    marenc
    Poziom 24  

    Mikrokontroler ARM, odbiór i nadawanie przez PDC całymi paczkami. Wydaje mi się, że to badzie bardziej problem z tymi trybami. Transmisję sprawdziłem oscyloskopem i dane dochodzące do modułu są w pełni prawidłowe. Poza tym echo by nie dochodziło, lub było by błędne.

    Power-Up: 3s do gnd na PWRKEY 3s odczekania po przejściu do HiZ

    Jeżeli wykonam następujące czynności w tej kolejności: podłączam baterię, podłączam zasilanie ładowania, wykonuje Power-Up; to otrzymuję od modułu FROM GHOST MODE TO NORMAL MODE, a po krótkiej chwili CALL READY. Po tym linia STATUS nie podnosi się, a z dokumentacji wynika, że powinna ...

  • #157 24 Wrz 2010 00:11
    xury
    Poziom 39  

    Hmm. Mi to wygląda tak, że masz zwarcie RX z Tx i dlatego masz echo. A komunikacja z simem nie działa.

  • #158 24 Wrz 2010 00:56
    rpal
    Poziom 27  

    W takim razie szukaj błędów w samej konstrukcji status musi mieć poziom 1. A czy jest zwarty z txd i Rxd to nie ma nic do rzeczy takim przypadku. Rozumiem że jak masz na statusie 0 to netlight nie błyska ci raz na 3 sekundy? Wygląda że on ci się od razu hibernuje. Nie będę się wymądrzał bo bez schematu nic sie nie poradzi ale najprędzej masz błędy w montażu bo zakładam że wzorowałeś się na schemacie podanego w nocie dla płytki prototypowej , tam sa gotowe rozwiązania i jak się do nich zastosujesz to moduł startuje od razu z pełną komunikacją rs232. Popsuć go wcale nie jest az tak łatwo. Przyjrzałbym się ponownie schematowi i ew. jakości połączeń. To echo to i ile się nie mylę jest domyślne dla fabrycznych ustawień i trzeba je specjalnie wyłączyć aby nie mieszało podczas wysyłania komend. Może przy jakiejś okazji zmieniłeś prędkośc transmisji i zapamiętałeś te ustawienia a teraz próbujesz sterować go przy zupełnie innej ?
    A w ogole to radzę koledze na początek kiedy jeszcze nie znasz tego ustrojstwa podobnie jak samych komend do eksperymentów użyć po prostu PC-ta. Już wcześniej to pisałem ale jakoś ten pomysł chyba mało kogo obchodzi. Kupujesz sobie kabel DKU-5 od nokii (koszt 20PLN) podłączasz go do SIM-a i masz sprawę załątwioną. Raz że prędkość transmisji ciebie nie interesuje bo DKU-5 sam się do SIM-a dopasowuje, poziomy napięc masz też zachowane to wcale nie jest 3,3V tylko trochę więcej, masz interface do PC-ta i pełną swobode w wysyłaniu i odbiorze danych bo wprost z okna terminala w PC-cie. Kiedy pierwszy raz odpalałem SIM-a od razu rozregulowałem mu domyślną wartośc transmisji i wkurzała mnie ciągła konieczno przeprogramowania uP. W końcu zrobiłem co trzeba z PC-ta spisałem na kartce niezbędne komendy a potem przeniosłem po prostu do uP i na tym zakończyły się eksperymenty z SIM-em.

  • #159 24 Wrz 2010 08:24
    wilk125
    Poziom 23  

    jesli port ma ustawiony na AutoBound to przed wysłaniem komendy, wyslij kilka razy samo AT, żeby dopasował swoją proędkossc portu do twojej, jak CI zwróci AT(echo) i OK to znaczy,że poprawnie się zsynchronizował i wtedy powinien odpowiadać na komendy.

  • #160 24 Wrz 2010 09:57
    marenc
    Poziom 24  

    Schemat bazowałem na konstrukcji Olimex'u. Zwarcie raczej wykluczam, gdyż w echo nie dostaje CR ani LF, więc moduł to przyjmuje i odsyła niepełne. Wysyłam 'A','T',13 a w odpowiedzi mam tylko 'A','T'. Tak jest z każdą instrukcją. Nie zapisywałem prędkości do modułu, a teraz zapis nie daje rezultatów.

    STATUS jest HIGH gdy odłączę VCHG - może nie można konfigurować modułu podczas ładowania?

    NETLIGHT jest ONLINE - dioda błyska raz na 3s.

    Zrobiłem pętlę do synchronizacji, i otrzymuję tylko "AT" w odpowiedzi, a po wielu pątlach dochodzi całe "AT\r"

    //Edit:
    Odłączyłem napięcie od VCHG i efekty są takie:
    -moduł poprawnie wykonuje PowerUp, PowerDown, Reset i powiadamia o tym przez odesłanie odpowiednich komunikatów tylko na prędkości 115200.
    -linia STATUS zaczęła poprawnie pracować.
    -moduł w dalszym ciągu nie odpowiada na komendy wysyłane przez mikrokontroler - sprawdziłem oscyloskopem, że do modułu napewno dociera "AT\r". Dodałem duże opóźnienia, aby wyeliminować ewentualne błędy. Odłączyłem DTR i RTS od masy: na RTS jest 0V, a na DTR jest 0V1. Zwarłem do masy.

  • #162 25 Wrz 2010 09:39
    marenc
    Poziom 24  

    Wymieniłem moduł na nowy i dodałem na RxD modułu mały dzielnik rezystancyjny. Wszystko ładnie działa. Podejrzewam, że zgodnie z dokumentacją zostało przekroczone napięcie wejściowe(w dokumentacji jest 3V21).

  • #163 26 Wrz 2010 08:01
    wilk125
    Poziom 23  

    max napiecie modulu to 4,5V, ja pracuje na 4,1 V i nigdy nie bylo zadnych problemów

  • #164 26 Wrz 2010 10:04
    marenc
    Poziom 24  

    Dokumentacja SIM300DZ, strona 41, tabela 12.

    Logic high input min 2.05V max 3.23V

    Linia szeregowa ma w stanie Idle napięcie 3V3 dla logiki 3V3, więc napięcie to przekracza tą granicę i jest ciągłe.

    Tak przynajmniej wynika z dokumentacji... Nowy moduł działa bez problemu... Projekt jest praktycznie gotowy...

    //Edit:
    Dokumentacja SIM300DZ, strona 57, tabela 26.

    Voltage at digit pins max 3.3V
    ...
    Voltage at digit/analog pins in POWER DOWN max 0.25V

    To drugie mogło też być powodem :) Najpierw inicjowałem UART, co dawało 3V3 na RxD, a następnie włączałem moduł przez POWERKEY.

  • #165 14 Lis 2010 16:51
    pawel129
    Poziom 16  

    pytane: jestem w fazie uruchamiania swojego modemu sim300d. Zasilanie 5V do VCHD, aku 3,7V od nokii do VBAT i równolegle 100uF/16V (elektrolit). ATmega8L podłączona róznież do VBAT tak jak aku.

    Uruchamiam układ, zwieram na chwilę PWRKEY do masy. Świeci się dioda STATUS oraz szybko miga NET STATUS.
    I teraz próbuję zalogowac się do sieci: wysyłam sekwencję:
    Print "AT"
    WaitMs 300
    Print "AT"
    WaitMs 300
    Print "ATE0"
    WaitMs 300
    Print "At+CREG=1"
    WaitMs 100


    i efektem jest zgaszenie na kilka sekund diody NET STATUS, następnie zgaszenie i znowu zaświecenie się diody STATUS (tak jakby modem zresetował się?).
    Modem nie zalogował się bo dioda NET STATUS nie mruga wogóle.

    Co może być przyczyną? kondensator na VBAT zwiększyłem do 1200uF LOW ESR i to samo.
    5V leci ze stabilizatora LM7805, a na stabilizator z aku 12V/7Ah

  • #167 14 Lis 2010 17:56
    pawel129
    Poziom 16  

    karta PLAY , pin wyłączony.
    Podczas komunikacji z kartą występuje napiecie rzędu 1,8V na VSIM

  • #168 14 Lis 2010 18:06
    Jaca
    Poziom 28  

    A jak wyślesz komendę AT+CPIN? to otrzymujesz +CPIN: READY ?

  • #169 14 Lis 2010 18:22
    pawel129
    Poziom 16  

    wysyłałem także komendę AT+CPIN=1647 ale to samo jest.
    Nie mam układu podłączonego do terminalu, windows 7 nie obsługuje mojej przejściówki USB-RS232. Jedynym ratunkiem diody STATUS i NET STATUS oraz dodatkowy LED podłączony pod pin atmegi.

    Czy jeszcze trzeba wykonać jakieś komendy aby układ tylko "złapał sieć" ?

  • #170 14 Lis 2010 18:33
    Jaca
    Poziom 28  

    Czy układ z modułem masz na PCB czy na "pająka" ? Moduł (nie wiem jak SIM300D) podczas transmisji może pobierać w impulsie do 2.5 A. Sprawdź ścieżki/przewody zasilające moduł. Jaką masz antenę i jakim przewodem (+długość) łączysz ją do modułu ?

  • #171 14 Lis 2010 18:43
    pawel129
    Poziom 16  

    Układ jest na płytce dwustronnej.
    Antena póki co samochodowa GSM (taka samoprzylepna od trackera GPS/GPRS, taka nawinęła mi się pod rękę:) ), przewód ok 2m, zapas ładnie zwinięty, koniec kabla przylutowany do płytki (czekam na przesyłkę z gniazdem SMA i anteną kilkucentymetrową).
    Szerokość ścieżki z +5V do VCHG ok 1,5mm
    Przy złączu VCHG modułu jest elektrolit 470uF/16V

  • #172 14 Lis 2010 18:51
    Jaca
    Poziom 28  

    Chodziło mi o szerokość ścieżki VBAT.

    Sprawdź poziom sygnału GSM za pomocą AT+CSQ. 99 - sieć nie rozpoznana, 31 - maksymalny sygnał. Podaj, jaki Ty otrzymujesz.

  • #173 14 Lis 2010 19:04
    pawel129
    Poziom 16  

    szerokość ścieżek do VBAT ok 1-1,5mm
    niestety nie mam możliwości podpiąć układu do terminalu i śledzić odpowiedzi na komendy... jedynie diody mogą wskazać mi aktualny stan modułu.

  • #174 14 Lis 2010 19:17
    Jaca
    Poziom 28  

    To zapisz CSQ do EEPROM'u i odczytaj programatorem. CSQ "powie" Ci, czy masz prawidłową instalację antenową.

  • #175 14 Lis 2010 19:41
    pawel129
    Poziom 16  

    No więc do programu dodałem takie coś:

    Print "AT+CSQ"
    WaitMs 100
    Input s
    WriteEE(1,s)
    End If
    Loop

    po odczytaniu hexa z eepromu:
    :10000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFE
    :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
    :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
    :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
    :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
    :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
    :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
    :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
    :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
    :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
    :1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
    :1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
    :1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
    :1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
    :1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
    :1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
    :10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    :10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
    :10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
    :10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
    :10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
    :10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
    :10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
    :10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
    :10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
    :10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
    :1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
    :1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
    :1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
    :1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
    :1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
    :1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
    :00000001FF


    w sumie nie wiem czy jest sens sprawdzać antenę, ponieważ gdy włożę kartę do telefonu mam full zasięgu, a antena, którą stosuję w układzie, wygląda tak:
    http://www.cyfronika.com.pl/t/product_info.php?products_id=17916

  • #176 14 Lis 2010 20:14
    Jaca
    Poziom 28  

    Odpowiedzią na AT+CSQ powinno być: +CSQ: 31,99 (jeśli masz maksymalny sygnał). Bez prawidłowej komunikacji uC z modułem nic nie zdziałasz. To co się zapisało w EEPROM'ie nijak się ma do prawidłowej odpowiedzi modułu. Zrób tak:

    Code:
    Dim Resp As String * 64
    
    Dim Test As Eram String * 64
    [...]
    Print "AT+CSQ"
    Waitms 100
    Input Resp
    Test = Resp


    Poza tym lepiej zrobić odbiór danych z modułu za pomocą przerwania od URXC + Timeout nadawanych do modułu danych na jakimś TIMER'ze.

    ps. Jaki masz kwarc podpięty do uC oraz jaką prędkość transmisji ?

  • #177 14 Lis 2010 21:10
    pawel129
    Poziom 16  

    prędkość 4800, kwarc 8MHz wewnętrzny.


    udało mi się zlepić połączenie SIM300D - przejściówka USB-RS232 (znalazłem sterowniki do win7)
    a więc:
    +CSQ: 28,0
    po wydaniu komendy At+CREG=1 dostaję komunikat OK ale dioda nadal szybko miga

  • #178 14 Lis 2010 21:23
    Jaca
    Poziom 28  

    Teraz, jak masz już komunikację, wpisz: AT+CPIN?

    ps. Jak szybkie są te mignięcia diody ?

  • #179 14 Lis 2010 21:28
    pawel129
    Poziom 16  

    co ok. 0,8s
    po wpisaniu AT+CPIN wyskakuje +CPIN: SIM ERROR

    edit:
    już działa pięknie:) co się okazało: czeski błąd, zamienione były pojemności 220n i 1n pomiędzy SIMIO oraz VSIM.
    No to jedziemy dalej z ta zabawką:)

  • #180 25 Lis 2010 01:27
    pawel129
    Poziom 16  

    szukam pomysłu na uniwersalne włączenie modułu SIM300d z chwilą podania napięcia.
    Mianowicie, gdy zasilę układ tylko z bateryjki i mam zwarty pin powerkey przez diodę do masy, wtedy modem włącza się automatycznie za każdym razem.
    Natomiast gdy włączę najpierw zasilanie VCHG a potem baterię, pali mi się tylko dioda status (układ zapewne jest w ghost mode i ładuje baterię). W jaki sposób dokończyć uruchamiania modułu automatycznie?

    Może podłączyć power key bezpośrednio do nózki uC? Tylko jaką sekwencję wtedy napisać coby na bank zadziałała i zawsze uruchomiła modem do trybu Normal ?