Modem GSM M590 – układ i informacje ogólne

Budowę mojego projektu CyberHome rozpoczynam od stworzenia modułu komunikacyjnego. Moduł będzie umieszczony w urządzeniu centralnym i komunikował się poprzez GPRS z serwisem REST. Więcej o software w drugiej części wpisu, tutaj skupmy się ma samym M590.

Modem NEOWAY GSM M590 jest idealnym urządzeniem, którego poszukuje większość elektroników – pasjonatów; ma wszystkie zalety sprzętu (prawie) idealnego:

  • Jest tani
  • Ma bezpośredni interfejs UART
  • Mały, lekki, umiarkowanie energooszczędny

Gdzie kupić?

Odpowiedź jest jedna: najtaniej na Alliexpress.  Jak widać ceny rozpoczynają się od 1,5$ wraz z przesyłką do Polski. Bezpieczną płatność umożliwia platnosci.pl

Jakie ma funkcje:
  • Wysyłanie i odbieranie SMS
  • Dzwonienie i odbieranie połączeń – bez fonii, mamy tylko opcję wybrania numeru, nie mamy możliwości transmisji i odbierania dźwięku.
  • Możliwość nawiązywania połączeń GPRS (UDP, TCP/IP (mixed/client/server), FTP(!), DNS)
  • Plus podstawowe opcje jak obsługa PIN, CID i większość potrzebnych.
  • Możliwość współpracy z zewnętrzną anteną RF

Elektronika:

Opis hardware’u znajdziemy tutaj.

Opis komend AT z przykładami znajdziemy tutaj.

Modem powinien być zasilany napięciem 3,9V z tolerancją 3,3-4,5V, źródło prądowe powinno umożliwić pobieranie chwilowego prądu do 250mA (takie skoki występują rzadko np. podczas inicjalizacji połączenia z siecią GSM), pobierany prąd w trybie uśpienia to ~3mA.
Modem często sprawia problemy przy niestabilnym zasilaniu dlatego zaleca się dodatkowe tłumienie pulsacji, np. za pomocą kondensator 1000uF.

Modem pracuje z logiką 3,3V, to bardzo ważna informacja – przy komunikacji z Arduino musimy użyć dwukierunkowego konwertera poziomów logicznych.

Modem często dostarczany jest wraz z płytką drukowaną znacznie ułatwiającą hobbistyczne użycie urządzenia. Często dostępne jest także jako zestaw do samodzielnego montażu – nie ma się czego obawiać, lutowanie SMD naprawde nie jest trudne.

Wyprowadzenia:

Najczęściej spotykane płytki mają podlutowane tylko kilka wyprowadzeń, zobaczcie, że pin od RESETU trzeba było dolutować bezpośrednio z modemu.

NEOWAY M590

 

 Koniecznie należy pamiętać, że komunikacja interfejsem UART odbywa się w oparciu o model reciever-transmiter, czyli podłączamy:

  • RX w M590 do TX w drugim urządzeniu (np. Arduino, Raspberry PI, komputer),
  • TX w M590 do TX w drugim urządzeniu.

Podłączenie:

Komputer PC

Do testów najlepiej użyć prostego konwertera USB-UART podłączanego do komputera, ja posiadam wg nomenklatury chińskiej PL2303 USB To RS232 TTL Converter Adapter Module with Dust-proof Cover PL2303HX, mimo początkowych problemów ze sterownikami (Win 10 x64) jestem z niego bardzo zadowolony:

PL2303 USB To RS232 TTL

UWAGA:
Podłączamy TX w konwerterze do RX w modemie i RX do TX.

Do testów polecam któryś z wygodnych programów do obsługi portu szeregowego, np.:

O komendach i obsłudze będzie w kolejnym artykule. 🙂

Arduino:

Podłączamy podobnie. Najczęściej Arduino posiada sprzętowo obsługiwany UART (np. MEGA 2560 ma ich aż 4 ), jeśli nie – możemy z powodzeniem wykorzystać programowy UART (używam go choćby w Attiny – działa bezproblemowo).

UWAGA:
Przypominam o konwerterze poziomów logicznych 3,3<=>5V!

U mnie wraz z podłączonym multimodułem zasilacza własnej produkcji wygląda to tak:

 

Działający układ z Arduino UNO

Na razie tyle, na koniec:

Garść przydatnych linków

Bardzo dobre opracowanie o NEOWAY M590KLIK!
Dobre opracowanie o modułach GSMKLIK!
Dyskusja na ELEKTRODZIEKLIK!
Dobry opis podłączenia Arduino z M590KLIK!

W kolejnych częściach napiszę o programie do obsługi M590 na Arduino i wysyłaniu powiadomień via SMS oraz o komunikacji z REST API poprzez GPRS (niskopoziomowa obsługa HTTP).


Artykuł w ukazuje się w ramach projektu CyberHome tworzonego w ramach akcji DajSięPoznać.


 

 

11 przemyśleń nt. „Modem GSM M590 – układ i informacje ogólne

  1. Rozumiem, że anomalie wykrywasz sam? Np. wysyłasz do modułu polecenie AT i czekasz na jego odpowiedź. Jeżeli moduł nie odpowie OK to robisz reset wysyłając polecenie AT+CFUN=0 i AT+CFUN=1.

    Pytanie? Czy z pinu 6 (VCCIO) modułu M590 mogę zasilić konwerter stanów logicznych? Z pinu 6 wychodzi napięcie 2.85V ?

  2. Tak, anomalie wykrywam sam. Zasadniczo: każdą komendę ponawiam X razy i daję modemowi X czasu na reakcję, jeśli nie otrzymam spodziewanej odpowiedzi robię RESTART sprzętowy (napisze o tym więcej w kolejnym artykule).

    Reset programowy robisz poprzez AT+CFUN=16, jednak u mnie nie zawsze się to sprawdzało, zdecydowanie bardziej niezawodny był restart sprzętowy.

    Z VCCIO możesz pobierać maksymalnie 3mA. Zasilanie z niego konwertera poziomów logicznych to dobry pomysł!
    (Druga i ostatnia możliwość jego praktycznego wykorzystywania to sygnalizacja pracy modemu – gdy modem jest wyłączony wyjście VCCIO nie jest zasilane).

    Pamiętaj, że VCCIO nie jest dodatkowo chronione – uważaj aby nie obciążyć go prądem większym niż 3mA.

  3. Z niecierpliwością czekam na drugą część artykułu, aby zobaczyć Twój sposób RESTART sprzętowy modułu.

    Cyt.: „VCCIO nie jest dodatkowo chronione – uważaj aby nie obciążyć go prądem większym niż 3mA.”

    Jeżeli zastosuję konwerter do którego podałeś wyżej linka to muszę VCCIO w jakiś sposób dodatkowo zabezpieczyć, aby nie przekroczyć 3mA? Chciałbym tylko z VCCIO zasilić konwerter napięciem 2.85V. Do konwertera z drugiej strony podłącze zasilanie z arduino 3.3V lub 5V.

  4. Artykuł pojawi się niebawem! 🙂

    Konwerter podłączasz w bardzo prosty sposób:
    1. Napięcie niskie (LV) np. 3.3
    2. GND napięcia niskiego (LGND)
    3. Napięcie wysokie (HV) np. 5V
    4. GND napięcia wysokiego (HGND)

    Żadnego dodatkowego zasilania nie potrzeba: ja zasilam urządzenie z Arduino (ma wyjścia 3.3 i 5V), docelowo – po przeniesieniu na ATMege skorzystam z AMS1117-3.3 i AMS1117-5.

    Dlaczego koniecznie chcesz zasilać konwerter z M590?

    BTW: Układ powinien dać radę, jednak ja bym tak nie robił – dodatkowy pobór prądu o dużej częstotliwości teoretycznie może wprowadzić dodatkowe zakłócenia w pracy układu.

  5. W specyfikacji m590 podają, że napięcie I0 nie może przekraczać 3.3V. Od grudnia jeden m590 mam podłączony do arduino pro mini 3.3V przez dzielnik napięcia. Linię odbioru (rx) ustawiłem na 2.7V, a na linii nadawania (tx) dałem rezystor 1Kom. Taka konfiguracja działa jak marzenie, ale w przyszłości chciałbym wywalić dzielnik i podłączyć konwerter. Konwerter chcę zasilić z pinu VCCIO napięciem 2.85V, aby nie przekraczać 3.3V.

    M590 kupiłem na aliexpress kilka sztuk, ale pierwszy z nich padł po kilkudniowych testach. Dokładnie uszkodziły się w nim linie tx i rx, które były podłączone do I0 3.3V, ale bez dzielnika napięcia. Dlatego teraz podłączając m590 lub sim800l do I0 3.3V zawsze obniżam napięcie.

    W związku z powyższym pomyślałem, że najprostszym rozwiązaniem będzie zasilenie konwertera z VCCIO.

  6. 3,3V to napięcie wysokiego poziomu logicznego w układach CMOS, jeśli podasz 3,3V ze sprawnego Arduino (zakładając, że nie trafiła Ci się chińska podróba najgorszej sorty) z M590 na pewno nic się nie stanie (sprawdzone! ;-)).

    Układy M590 pochodzą ze starej serii, która miała być wykorzystana w chińskich produktach – produkcja urządzeń nie doszła do skutku i teraz można kupić modemy za bezcen.

    Niestety ich wadą jest jakość – często zachowują się nieprzewiadywanie (trzeba to przewidzieć i obsługiwać), może trafił Ci się wadliwy egzemplarz…

    Niemniej – IMHO – można wykorzystać VCCIO w Twoim przypadku.

  7. Kupiłem dziś karty Virgin Mobile żeby używać z M590.
    Niestety jedyne co modem się odzywa to MODEM:STARTUP. Karta nie loguje się do sieci. Mam takie dwie karty i obie zachowują się identycznie. Bez najmniejszych problemów działają w telefonach a odmawiają współpracy z M590.
    AT+CGSN odczytuje IMEI kart.
    Jakiś pomysł jak zmusić M590 do pracy z kartą Virgin Mobile?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *