Moduł GPRS M590E
Moduł GPRS (General Packet Radio Service) firmy SHENZEN NEOWAY o oznaczeniu M590E jest układem elektronicznym mającym na celu zapewnić pakietową wymianę danych za poprzez sieć GSM (jest to tak zwana sieć 2.5G). Dane mogą być przesyłane za pośrednictwem wiadomości SMS lub przykładowo przez sieć Internet z wykorzystaniem protokołu TCP/IP. Moduł najczęściej znajduje zastosowanie w urządzeniach alarmowych, ruchomych terminalach płatniczych, stacjach monitorujących.
Rys.1. Neoway M590E
M590E cechują zadowalające parametry pracy, jest również opatrzony certyfikatem CE, CMIIT oraz CCC, projekt wykonano uwzględniając EMI / EMC (Elektromagnetyczne interferencje / Kompatybilność elektromagnetyczną )
Tabela 1. Specyfikacja układu M590E.
Częstotliwości | EGSM900/DCS1800 Dual Band |
Czułość odbiornika | -107dBm |
Maksymalna moc nadawcza |
EGSM900 – Klasa4 (2W) DCS1800 – Klasa1 (1W) |
Maksymalny pobór prądu |
2A |
Normalny pobór prądu |
210mA |
Pobór prądu w stanie uśpienia |
2,5mA |
Temperatura pracy | -40C do 85C |
Napięcie pracy | 3,3V do 4,5V (zalecane 3.9V) |
Protokoły komunikacyjne | Kompatybilność z GSM/GPRS Phase2/2, wbudowana obsługa; TCP/IP, UDP, FTP, DNS |
Wymiary | 27,6mm x 21,2mm x 2,6mm |
Waga | 5g |
Tabela 2. Wyprowadzenia układu M590E.
Pin | Nazwa | I/O | Opis | Uwagi |
1 | GND | PWR | Masa zasilania | |
2,3 | VBAT | PWR | VCC_MAIN zasilanie | |
4 | GND | PWR | Masa zasilania | |
5 | LED | O | Kontrolka LED | |
6 | VCCIO | O | 2,85V | |
7 | RXD | I | UART odbiór danych | <3,3V |
8 | TXD | O | UART wysyłanie danych | Stan wysoki 2,85V |
9 | DTR | I | Gotowość na odbiór danych | |
10 | RING | O | Połączenie przychodzące | Stan wysoki 2,85V |
11 | SIMIO | I/O | Wymiana danych z kartą SIM | Należy połączyć z kartą SIM przez rezystor podciągający do SIMVCC o wartości 10k |
12 | SIMCLK | O | Sygnał zegarowy komunikacji z SIM | |
13 | SIMRST | O | Reset SIM | |
14 | SIMVCC | PWR | Zasilanie SIM | |
15 | GND | PWR | Masa zasilania | |
16 | DCD | O | Data Carrier Detect | NIEZAIMPLEMENTOWANE, na wyjściu stan 0V |
17 | DSR | O | Gotowość modułu | NIEZAIMPLEMENTOWANE, na wyjściu stan 2,85V |
18 | EMERGOFF | I/O | Awaryjne wyłączenie | Podłączone wewnątrz układu do VCCRTC, nie należy przekraczać napięcia 2,0V |
19 | ON/OFF | I | Włączenie/Wyłączenie modułu | Aktywacja stanem niskim |
20 | GND | PWR | Masa zasilania | |
21 | RF_ANT | I/O | Wyprowadzenie antenowe |
Płytka testowa dla M590E
M590E można kupić wraz z płytką testową. Jest to zestaw przeznaczony do samodzielnego montażu, zawiera wszystkie podzespoły elektroniczne oraz prostą antenę. Dostępny jest w Chinach w cenie około 5zł. Zakupu można dokonać poprzez ALIEXPRESS. Niska cena związana jest z faktem, iż podzespoły pochodzą z recyclingu, jednak są one w pełni sprawne. Moduł powinien być zasilany napięciem 5V, port UART dostosowany jest do standardu TTL.
Rys.2. M590E wraz z płytką testową zakupiony w Chinach.
Tabela 3. Wyprowadzenia płytki testowej dla M590E.
Pin | Nazwa | I/O | Opis | Uwagi |
1 | GND | PWR | Masa zasilania | |
2 | RING | O | Połączenie przychodzące | Stan wysoki 2,85V |
3 | TXD | O | UART wysyłanie danych | |
4 | RXD | I | UART odbiór danych | |
5 | 5V | PWR | Zasilania | 5V, wydajność prądowa 2A |
6 | GND | PWR | Masa zasilania | |
7 | BOOT | I | Uruchomienie modułu | Podłączyć do GND celem uruchomienia układu |
Podłączenie płytki testowej M590E
Komunikacja z układem M590E odbywa się za pośrednictwem portu UART w który wyposażony jest większość mikrokontrolerów (w przypadku braku sprzętowego UART można obsłużyć go programowo). Również podłączenie do komputera PC jest możliwe poprzez port szeregowy (tak zwany port COM) pracujący w standardzie RS232. W takim przypadku należy zastosować np. układ scalony MAX232 konwertujący napięcia występujące na porcie COM komputera (12V) na standard TTL (5V). Podłączenie M590E do minikomputerów typu Raspberry Pi można dokonać za pośrednictwem portu UART którego wyprowadzenia znajdują się w GPIO.
Rys.3. Wyprowadzenia Rasperry Pi
Uniwersalnym rozwiązaniem zarówno przy podłączeniu układu do komputera PC jak i minikomputerów jest zastosowanie przejściówki USB/UART np. CP2102, jest ona po podłączeniu do komputera widoczna jako port COM. Stosując tego typu rozwiązanie należy jednak pamiętać o ograniczonej wydajności prądowej portu USB, która dla standardu USB3.0 wynosi 900mA a dla standardu USB1.1 i USB2.0 wynosi 500mA. Brak odpowiedniej wydajności prądowej może skutkować restartowaniem się układu, brakiem stabilności połączenia.
Rys.4. M590E na płytce testowej wraz z CP2102
Komunikacja z M590E
Ustawienia parametrów komunikacji mogą się różnić, w testowanym układzie prędkość transmisji (baud rate) wynosiła 9600bps, brak bitu parzystości (parity none), 8 bitów danych (data bits 8), jeden bit stopu (one stop bits). Spotykane są również układy pracujące domyślnie z prędkością transmisji wynoszącą 115200bps lub 38400bps. Po uruchomieniu układ powinien się zgłosić komunikatem:
MODEM:STARTUP
+PBREADY
Natomiast po wydaniu komendy AT układ odpowiada OK. Oznacza to poprawnie nawiązaną łączność z modułem.
AT
OK
ATI – Sprawdzenie wersji oprogramowania
Liczba dostępnych komend AT różni się w zależności od zainstalowanej wersji oprogramowania w module. Pełna lista dla wersji oprogramowania 01.30e została dołączona jako załącznik na końcu tej strony w pliku Neoway_M590_AT_Command_Sets_V3.0 .
Sprawdzenie wersji zainstalowanej w danym module można dokonać wydając polecenie ATI :
ATI
NEOWAY
M590
REVISION 01.30d
OK
Po uzyskanej odpowiedzi można wywnioskować iż część komend opisanych w instrukcji mogła zostać jeszcze niezaimplementowana w module, gdyż jest on starszy (01.30d) od tej opisanej w dokumentacji (01.30e). Z pewnością jednak kluczowe funkcje będą zgodne z dokumentem.
CREG – Sprawdzenie połączenia z siecią
Po uruchomieniu urządzenia jak i w trakcie jego pracy warto monitorować czy jest poprawnie połączone z siecią, zapytanie brzmi AT+CREG? :
AT_CREG?
+CREG: 0,1
OK
Zwrócona wartość 0,1 wskazuje poprawne zarejestrowanie urządzenia w sieci. W przypadku gdy liczba po przecinku jest inna niż jeden oznacza to iż nastąpiły inne scenariusze. Poszczególne kody i ich znaczenie przedstawiono w tabeli:
Kod | Znaczenie | Uwagi |
0 | niezarejestrowany | |
1 | zarejestrowany w sieci | urządzenie gotowe do pracy |
2 | sieć odrzuciła próbę rejestracji | prawdopodobnie występują problemy z SIM |
3 | niezarejestrowany, poszukiwanie stacji bazowej | możliwe problemy z zasięgiem, nieodpowiednia antena. Można użyć polecenia AT+CSQ by sprawdzić poziom sygnału. |
4 | kod nieznany | |
5 | zarejestrowany w trybie roamingu | urządzenie jest gotowe do pracy jednak karta SIM pochodzi od zagranicznego operatora, opłaty za usługi będą rozliczane zgodnie z cennikiem roamingu. |
CSQ – Sprawdzenie poziomu sygnału
W przypadku gdy występują problemy z połączeniem, jest ono zrywane lub istnieje konieczność monitorowania zasięgu sieci przydatnym zapytaniem jest AT+CSQ. Komunikacja przebiegła w sposób następujący:
AT+CSQ
+CSQ: 11,3
OK
Informacją o poziomie sygnału jest wartość 11, którą należy odnaleźć w tabeli i odczytać RSSI w dBm.
Kod | RSSI |
<4 | mniej niż -107dBm |
<10 | do -93dBm |
<16 | do -71dBm |
<22 | do -69dBm |
<28 | do -57dBm |
>=28 | powyżej -57dBm lub -57dBm |
Uzyskana wartość 11 oznacza poziom sygnału nieco lepszy od -93dBm i jest to wartość raczej mało zadowalająca. W takim przypadku należy zainstalować urządzenie w innym miejscu (lub zastosować antenę o większym zysku), by wartość była możliwie największa. Doświadczalny moduł pracował poprawnie wraz z dostarczoną w zestawie anteną gdy RSSI było na poziomie -69dBm w odległości 300m od stacji bazowej.
Druga wartość po przecinku (3) oznacza „channel bit error rate” i jest szerzej opisana w dokumentacji technicznej modułu.
Procedura wysłania SMS
Celem wysłania SMS o treści „test” pod numer telefonu 505000000 należy wybrać format wprowadzania wiadomości za pomocą instrukcji AT+CMGF. Wartość 1 oznacza format tekstowy. Możliwe jest również podanie wartości 2 oznaczającej format PDU. W następnej kolejności wybierany jest format kodowania znaków instrukcją AT+CSCS, tutaj wybrano zgodny z GSM03.38.6.2.1.
Powyższe instrukcje można wydać jednokrotnie np. w trakcie pierwszego połączenia z urządzeniem, jednak niebędą one zachowane po wyłączeniu zasilania.
Kluczową komendą wysyłającą SMS jest AT+CMGS po której podaje się numer odbiorcy i kończy znakiem \r (enter). Następnie podawana jest treść wiadomości a jej koniec zatwierdzany zostaje znakiem o kodzie ASCII 032.
AT+CMGF=1
AT+CSCS=”GSM”
AT+CMGS=”505000000″
test
\032
Kod programu dla systemu operacyjnego Linux Debian w języku Python wysyłający SMS:
#! /usr/bin/python import serial import time ser = serial.Serial( port='/dev/ttyUSB0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=2 ) ########################################################## try: ser.isOpen() except Exception, e: print "error open serial port: " + str(e) exit() if ser.isOpen(): try: ser.write("AT+CMGF=1\r") time.sleep(1) ser.write("AT+CSCS=\"GSM\"\r") time.sleep(1) ser.write("AT+CMGS=\"50500000\"\r") time.sleep(0.5) ser.write("test") ser.write("\032") ser.close() except Exception, e1: print "error communicating...: " + str(e1) else: print "cannot open serial port "
Powyższy kod należy rozwinąć o sprawdzenie połączenia z siecią / czy urządzenie jest w zasięgu sieci, w przeciwnym wypadku SMS może nie zostać wysłany.
Procedura nawiązania połączenia z siecią Internet
Przed rozpoczęciem połączenia z siecią Internet należy zdefiniować sposób obsługi stosu IP. Parametr 0 aktywuje wbudowaną w urządzenie obsługę stosu IP, 1 pozwala na obsługę stosu przez zewnętrzne urządzenie podłączone do modemu. W tym przykładzie włączono wbudowaną obsługę stosu poleceniem AT+XISP=0.
AT+XISP=0
OK
Kolejnym krokiem jest określenie protokołu danych (PDP) i konfiguracja połączenia. Pierwszym parametrem jest cid (identyfikator połączenia – wartość 1). Druga wartość określa protokoł danych (np. IP, IPV6, X.25 urządzenie obsługuje IP). Trzeci parametr nosi nazwę APN i jest on podawany przez dostawcę sieci. Lista dostawców i konfiguracja połączenia dostępna jest na stronie http://wiki.bez-kabli.pl/index.php?title=APN Dla sieci PLAY wartość APN to „INTERNET” i nie jest konieczne podawanie loginu oraz hasła do sieci.
AT+CGDCONT=1,”IP”,”INTERNET”
OK
Po dokonaniu konfiguracji możliwe jest nawiązanie połączenia instrukcją AT+XIIC=1
AT+XIIC=1
OK
Sprawdzenie poprawności połączenia można dokonać zapytaniem AT+XIIC? :
AT+XIIC?
+XIIC: 1, 10.158.189.49
OK
Pierwsza wartość po dwukropku informuje o statusie połączenia PPP (1-połączenie poprawne, 0-brak połączenia), druga wartość to uzyskany adres IP (w przypadku braku połączenia wynosi 0.0.0.0)
DNS
Serwery DNS zamieniają nawy domenowe na adresy IP które należy podawać w trakcie nawiązywania połączeń z danym serwerem. Sprawdzenie aktualnie używanych serwerów DNS (otrzymanych od dostawcy sieci) dokonuje się poleceniem AT+DNSSERVER?
at+dnsserver?
+DNSSERVER:dns1:89.108.195.20;dns2:89.108.202.20
W tym przypadku sieć PLAY przydzieliła dwa serwery DNS 89.108.195.20 i 89.108.202.20
Istnieje możliwość przypisania własnych serwerów DNS, np. serwera Google (8.8.8.8) poleceniem:
AT+DNSSERVER=1,8.8.8.8
+DNSSERVER:OK
W tym przypadku zastąpiono pierwszy serwer o adresie 89.108.195.20 przez 8.8.8.8, by zastąpić serwer zapasowy należy przed adresem IP podać wartość 2.
Zapytanie serwera DNS o adres IP danego serwera którego nazwę znamy w postaci domeny (np. noweenergie.org) dokonuje się poleceniem AT+DNS=”domena” np.
AT+DNS=”noweenergie.org”
OK
+DNS:46.4.33.72
+DNS:OK
W odpowiedzi uzyskano informację iż adres IP serwera noweenergie.org wynosi 46.4.33.72
FTP
By wysłać lub pobrać plik z serwera FTP należy nawiązać połączenie poleceniem AT+FTPLOGIN=ip,port,user,hasło
Gdzie:
ip – adres IP serwera
port – zwykle 21
user – nazwa użytkownika
hasło – hasło użytkownika
AT+FTPLOGIN=46.4.33.72,21,[email protected],bar
OK
+FTPLOGIN:User logged in
Pobranie pliku z serwera FTP następuje po poleceniu AT+FTPGET=filename,type,content
Gdzie:
filename – ścieżka do pliku na serwerze
type – 1 pobranie w ASCII, 2 pobranie w trybie Binarnym
content – 1 pobranie zawartości pliku, 2 pobranie informacji o pliku
AT+FTPGET=test.txt,1,2
rwerwerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrwerwerwerewrwer
+FTPGET:OK.total length is 100
Wysyłanie pliku na serwer FTP wykonuje się poleceniem AT+FTPPUT=filename,type,mode,size
Gdzie:
filename – ścieżka do pliku na serwerze
type – 1 wysłanie w ASCII, 2 wysłanie w trybie Binarnym
mode – 1 nadpisanie pliku, 2 dołączenie danych do pliku, 3 usunięcie pliku (parametr size 0)
size – długość danych (nie większa od 10240)
AT+FTPPUT=foo.txt,1,1,4
>test
+FTPPUT:OK,10
Uwaga po wydaniu polecenia układ odpowiada znakiem > i przechodzi w tryb odbioru danych (w tym przypadku 4 znaki), by następnie zwrócić komunikat o wyniku operacji.
Odnośniki
Dokumentacja techniczna:
- Neoway_M590_AT_Command_Sets_V3.0 – lista instrukcji AT
- Neoway-m590-hardware-design-manual-v1 – dokumentacja sprzętowa
Linki:
- Neoway.com – opis produktu na stronie producenta