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.

Neoway M590E

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.

 

piny Raspberry Pi
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:

Linki:

  • Neoway.com – opis produktu na stronie producenta