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.
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.
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:

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:
Na razie tyle, na koniec:
Garść przydatnych linków
Bardzo dobre opracowanie o NEOWAY M590 | KLIK! |
Dobre opracowanie o modułach GSM | KLIK! |
Dyskusja na ELEKTRODZIE | KLIK! |
Dobry opis podłączenia Arduino z M590 | KLIK! |
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ć.
W jaki sposób resetujesz m590 ? Reset masz podłączony do masy przez rezystor ?
Tak, PIN 19 podłączam do masy przez tranzystor; tranzystor jest sterowany z Arduino (reset następuje w razie wykrycia anomalii w działaniu modemu).
Na stronie 14 manuala (http://abc-rc.pl/templates/images/files/995/1455184431-neoway-m590-hardware-design-manual-v1.pdf) jest schemat zalecanego połączenia.
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 ?
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.
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.
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.
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.
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.
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?