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

[ATmega16] [ATmega16][C] - Jak podłączyć moduł GSM MC55i do wysyłania SMS?

mopsiok 31 Sie 2012 10:21 3504 10
  • #1 11264101
    mopsiok
    Poziom 14  
    Witam
    Dostałem od kolegi moduł MC55i firmy Cinterion. Chciałbym wysyłać z niego SMSy. Mam w planach także połączenie z internetem, ale to później. Na chwilę obecną muszę ten moduł w ogóle podłączyć ^^. I tutaj pojawia się problem. Już sporo czasu próbuję wygooglać przykładowy schemat podłączenia, ale - o ironio - wszędzie znajduję tylko komendy AT lub w najlepszym wypadku opis wyprowadzeń pinów. Kolega od którego dostałem moduł mówił, że wystarczy podpiąć zasilanie, kartę SIM, odpowiednio obsłużyć 2 piny i podłączyć się pod UART. Ma to podobno wystarczyć zarówno do wysyłania SMSów, jak i połączenia z internetem. Niestety do dyspozycji mam tylko datasheet, a kolega już sam nie pamięta jak dokładnie to podłączał. Chciałbym zatem dopytać się Was czy sposób podłączenia jest prawidłowy. Nie dlatego że jestem leniem i nie chce mi się sprawdzić... po prostu moduł trochę kosztuje, a ja nie chcę go uszkodzić. Oto co zaprojektowałem według DS z załącznika:
    [ATmega16] [ATmega16][C] - Jak podłączyć moduł GSM MC55i do wysyłania SMS?

    Po włączeniu zasilania pin IGT musi zostać zwarty do masy na co najmniej 100ms, co spowoduje włączenie modułu. Komunikacja UART odbywać się będzie poprzez linie RXD0 i TXD0. Podłączenie karty SIM wygląda następująco: [ATmega16] [ATmega16][C] - Jak podłączyć moduł GSM MC55i do wysyłania SMS?
    1 - CCVCC
    2 - CCRST
    3 - CCCLK
    4 - CCGND
    5 -
    6 - CCIO
    Natomiast pin CCIN będzie nie będzie podłączony do karty, tylko do 3.3V.

    Wszystko to wywnioskowałem z DS, więc pojawia się pytanie - czy moduł jest podłączony dobrze? To znaczy czy przy takim podłączeniu nie uszkodzę go i będzie hulać? :D Mam jeszcze wątpliwości co do mojego konwertera UART <-> USB, który działa na logice 5V - sygnały z MC55i powinien złapać (3.3V podchodzi już pod stan wysoki), ale czy 5V na wejściu modułu zasilanego z 3.3V nie uszkodzi go?

    Wiem że pytania mogą wydawać się trywialne, ale nigdzie nie znalazłem na nie odpowiedzi...

    Pozdrawiam,
    mopsiok
  • #2 11264860
    Krauser
    Poziom 26  
    1. Zdajesz sobie sprawę, że w specyfikacji są piny dla modułu i ty w swojej aplikacji musisz umieścić wyprowadzenia niejako lustrzanie
    2. Wykorzystaj wyprowadzenie SYNC, które przez tranzystor może sterować LED informując o stanie połączenia GSM/GPRS
    3. Nie możesz podawać większego napięcia niż 3,3V i żadnego napięcia, gdy moduł jest wyłączony. Jak nie masz innego pomysłu to linie RS232 podłącz przez rezystory 1k.
    4. Czy wiesz,że, że linia RXD0 to wyjście, a TXD0 to wejście (tutaj nie krzyżujemy linii)
    5. Linią IGT steruje się przez wyjście OC (może być przycisk do masy)
    6. Na linii VDD pojawia się napięcie, gdy moduł jest włączony i ta liną powinieneś sterować bufor np. LVC125 / LVC245
  • #3 11265467
    mopsiok
    Poziom 14  
    1. Tak jest, od strony połączenia wszystko przemyślałem.
    2. Docelowo planuję podpiąć pod wszystkie wyprowadzenia goldpiny, właśnie w celu wykorzystania przydatnych ale nieobowiązkowych pinów.
    3. Mógłbyś mi nieco wyjaśnić tę kwestię z napięciami przy wyłączonym module? Chodzi Ci o to że gdy moduł jest wyłączony, to wszystkie napięcia wejściowe (od UARTa, IGT i CCIN) muszą być równe 0V? Rozumiem że nie tyczy się to zasilania, które jest niezbędne do włączenia.
    4. Hm... no tutaj to mnie nieco zbiłeś z tropu. Dzięki za info, Bóg jeden wie ile bym się męczył gdybym tego nie wiedział.
    5. Tak jest, pisze o tym wyraźnie w DS. W takim razie IGT ma normalnie wisieć w powietrzu? Mam na myśli że ma być tylko zwarcie tranzystorem do masy, a poza tym żadnego pull-upa?
    6. Czy mógłbyś mi jeszcze wyjaśnić w jakim celu powinienem zastosować tutaj bufor? Jeśli do konwersji danych przychodzących z 5V na 3.3V, to czy nie da rady tego połączyć tak jak napisałeś przez zwykły rezystor?
  • #4 11265553
    Krauser
    Poziom 26  
    2. Akurat ten LED na SYNC uważam za obowiązkowy przy pierwszych testach. Możesz na początku nie mieć komunikacji, a LED zasygnalizuje od razu, że moduł pracuje.
    3. CCIN podłącz do CCVCC, a nie 3V3. IGT jest sterowane przez tranzystor. Przez diody ochronne wejść popłynie prąd do zasilania dlatego jest ten wymóg (str. 69)
    4. Tak jest (str. 49)
    5. Tak jest wewnętrznie podciągnięty.
    6. Wybór należy do ciebie. Rezystor to rozwiązanie najprostsze, a bufor eleganckie. Możesz jeszcze zdobyć przejściówkę na FT232R z przestawianym poziomem IO na 3V3.
  • #5 11267180
    mopsiok
    Poziom 14  
    Dzięki za odpowiedź, teraz już wiem co i jak (mniej więcej). Zatem aktualnie moim celem jest wytrawienie płytki pod to maleństwo. Później podłączę całość tak jak radzisz i dam znać co i jak.
    Rozumiem że FT232RL złapie 2.9V jako stan wysoki?
    A, mam jeszcze takie pytanko. Widzę że ogarniasz temat - obsługiwałeś kiedyś ten moduł? Jak wrażenia?

    Pozdrawiam
    mopsiok
  • Pomocny post
    #6 11267407
    Krauser
    Poziom 26  
    mopsiok napisał:
    Rozumiem że FT232RL złapie 2.9V jako stan wysok

    Tak.
    mopsiok napisał:
    A, mam jeszcze takie pytanko. Widzę że ogarniasz temat - obsługiwałeś kiedyś ten moduł? Jak wrażenia?

    Cinterion mi nie płaci za reklamę ;) MC55i to już rozwinięty produkt.
    Z praktycznego punktu widzenia, lepiej lutować złącze (ale doradzam zakup topnika ze względu na raster 0,5mm) niż cały moduł, bo po pierwsze zawsze możesz wykorzystać gdzie indziej, a po drugie LGA ciężko się lutuje. Drugi plus to gniazdo U.FL na module, więc wystarczy podpiąć kabelek RF i dobrze działa natomiast w innym przypadku trzeba już myśleć o szerokościach ścieżek typie laminatu itd.
  • #7 11267936
    mopsiok
    Poziom 14  
    Krauser napisał:
    Z praktycznego punktu widzenia, lepiej lutować złącze

    Pewnie że tak, nawet mi nie przeszło przez myśl żeby się bawić w LGA - jeszcze nie ten poziom :D. Poza tym i tak dysponuję jedynie wersją ze złączem. Planuję wykonać jedną płytkę ("przejściówkę" ze złącza na 50 goldpinów), wpiąć w nią moduł i więcej go nie wypinać. Tak mi doradził kolega, bo podobno te złącza się szybko psują jeśli się często wpina/wypina. Myślę że takie podejście jest praktyczniejsze i przede wszystkim przyjemniejsze - wszystko wyprowadzone na pinach z rastrem 2.54 mm, a nie 0.5. Można lutować ile wlezie ;).
  • #8 11284980
    mopsiok
    Poziom 14  
    Witam ponownie. Ku mojemu zdziwieniu udało mi się uruchomić moduł :). Niestety pojawił się dość dziwny problem.
    Całość podłączyłem tak:
    [ATmega16] [ATmega16][C] - Jak podłączyć moduł GSM MC55i do wysyłania SMS?
    Po zasileniu całości z zasilacza ATX napięciem 3.3V i wciśnięciu przycisku pod IGT zapala się dioda podłączona pod wyprowadzenie VDD, czyli wszystko ok. Z modułem komunikuję się przez Bray's Terminal (9600 baud). Przestawiłem wyprowadzenie SYNC na sygnalizację LED (AT^SSYNC=1<CR>) i od tamtej pory po włączeniu modułu dioda podpięta pod SYNC miga z okresem 1.2s i wypełnieniem 50% (według DS oznacza to że: karta SIM nie jest podpięta, PIN nie jest podany, następuje szukanie sieci albo trwa uwierzytelnianie lub logowanie do sieci). No ale przejdźmy do problemu. Otóż wpisując komendę AT+CPIN?<CR> otrzymuję spodziewaną odpowiedź że moduł chce dostać PIN (+CPIN: SIM PIN). Pysznie. Podaję zatem PIN: AT+CPIN=xxxx<CR>, moduł po jakiejś sekundzie-dwóch zwraca OK. W porządku. Dla pewności jeszcze raz sprawdzam AT+CPIN?<CR>, i otrzymuję to co powinienem otrzymać, czyli "ready". No i niestety nagle okazuje się że mniej więcej 7-8 sekund po tym jak wpiszę pin, gasną obie diody (tak jakby moduł się wyłączył). Rzecz jasna dalsza komunikacja nie ma sensu. Z ciekawości sprawdziłem czy po podaniu PINu mogę wykonać dowolną komendę wymagającą jego wcześniejszego podania (nie znam się na komendach AT, ale wyczytałem że ta poniżej sprawdza centrum usług, cokolwiek to znaczy):
    AT+CPIN=xxxx$0D%DLY5000AT+CSCA?$0D
    Jeśli ktoś nie zna terminalu Bray'a to wytłumaczę, że oznacza to: AT+CPIN=xxxx<CR><czekaj 5 sekund>AT+CSCA?<CR>
    Po wysłaniu całości terminal odbiera dane o pomyślnym uwierzytelnieniu, a po 5 sekundach pojawia się to, co pojawić się powinno (karta SIM jest w Play): +CSCA: "+48790998250",145
    Ogólnie rzecz biorąc mam pewność że moduł działa i poprawnie odczytuje dane z karty SIM. Problem w tym że po podaniu PINu wyłącza się po krótkiej chwili. Nie mam pojęcia dlaczego tak się dzieje... Może jest to prosty problem, ale na swoje usprawiedliwienie powiem że jestem totalnym laikiem w temacie GSM.

    Pozdrawiam,
    mopsiok
  • #10 11287830
    mopsiok
    Poziom 14  
    Zanim zacząłem kombinować z samym <CR>, używałem <CR><LF>. Efekt taki sam. To coś normalnego (coś źle przypiąłem, nie wysłałem wcześniej jakiejś komendy, czy coś takiego), czy jest to wina modułu?

    Wpisałem przed chwilą komendę AT^SSYNC=0. Dosłownie chwilę przed wyłączeniem zapaliła się dioda podpięta pod SYNC, co według DS ma sygnalizować przyszłe chwilowe zwiększenie zapotrzebowania prądowego. Jednak to zwiększenie jest związane z transmisją danych, a póki co niczego nie transmituję. Czy problem może leżeć po stronie zasilania? Zasilacz ATX, od niego przewody po około 30 cm o średnicy 0.5-0.7 mm. Po podłączeniu amperomierza widać jednak, że układ pobiera jedynie pojedyncze mA, a wyżej opisany większy prąd wynosi coś koło 2A (o ile dobrze kojarzę). Wszystko podłączyłem tak jak na schemacie - czy brakuje jakiegokolwiek elementu, który mógłby takie zachowanie powodować?

    //Edit
    Przeprowadziłem kolejny test. Wysłałem komendę wpisującą pin, i gdy otrzymałem OK, odłączyłem od modułu przewody idące do komputera (TX, RX i połączenie masy zasilacza z masą komputera). Po chwili dioda SYNC pomigała kilkakrotnie, po czym zgasła. Dioda VDD świeciła dalej. Zgasła po dłuższym czasie (coś koło pół minuty od wysłania PINu).

    Dodano po 5 [godziny] 16 [minuty]:

    Witam
    Przepraszam za podwójny post, ale wygląda na to że rozwiązałem problem. Między CCRST a CCGND wpiąłem kondensator 1nF, a między CCVCC a CCGND - 200nF. Do tego jako kabli zasilających użyłem jakichś grubasów (strzelam na 1.7mm średnicy) i już nie ma żadnych problemów. To znaczy póki co nic nie wywaliło ;).
    Dzięki temu udało mi się wysłać SMSa, co było moim celem. O dziwo najwięcej problemów sprawiło mi zakończenie ramki danych (wszędzie pisze o znaku "ctrl+z", i dopiero po dłuższym czasie wyczytałem że tak naprawdę chodzi o znak SUB (numer 1A w tablicy ASCII).
    Dziękuję Panom za pomoc i pozdrawiam!
  • #11 11290437
    kriss68
    Poziom 20  
    Źródłem Twoich problemów był zwiększony pobór prądu w trakcie łączenia z siecią, co przy braku filtracji zasilania (wstaw spory elektrolit przy samym układzie tak na przyszłość bo przy połączeniach sieciowych a nie daj boże głosowych te moduły ciągną spore prądy impulsowe) i nie zbyt gruch kablach skutkowało wyłączeniem modułu przez zabezpieczenie podnapięciowe, sam przeżywałem to przy modułach ZTE.
REKLAMA