Raspberry Pi B+ with Neoway GSM M590 module

Raspberry Pi oraz sieć GSM – wysyłamy SMS, łączymy się z Internetem (IoT)

Tym razem podłączymy do naszego Raspberry Pi moduł GSM. Dlaczego? Internet of Things, w skrócie IoT jak zauważył na krakowskim PLNOG17 Marcin Aronowski polega i zależy od sieci, które powinny być łatwo dostępne, a sama istota działania IoT musi odznaczać się małym kosztem energetycznym. Być może, stwierdził, 3G odejdzie ale 2G z tego powodu pozostanie. Nie potrzebujemy ogromnego pasma – wystarczą nam kilobity na sekundę. Podłączenie 2G jest dziś najtańsze w realizacji (również ze względu na koszt modułu i karty SIM z planem od operatora).

Dlatego postaram się pokazać Wam jak łatwo podłączyć bardzo tani moduł GSM Neoway M590. To proste urządzenie, które jest modemem GSM (2G).

Nauczymy się wysyłać SMS oraz będziemy się za jego pomocą łączyć z Internetem.

Czego będziemy potrzebować?

Software:

  • programy: picocom, gammu, ppp (znajdują się w repozytorium Raspbiana)
  • wyłączenie konsoli na porcie szeregowym Raspberry Pi

Hardware:

  • Raspberry Pi – 1B, 1A, 2B, 3B, Zero – właściwe dowolne z zainstalowanym Raspbianem (wystarcza wersja mini)
  • Moduł Neoway M590 – bez innych liter na końcu, polecam gotową wersję na płytce
  • Multimer do weryfikacji napięcia zasilania modułu GSM
  • Opcjonalnie: konwerter zasilania – DC-DC step down minimalnie o wydajności 2A, pozwalający z wejścia 5-24V stabilnie na wyjściu utrzymać 3,9V – do zasilania modułu GSM

    DC-DC step down module
    DC-DC step down module

Do dzieła!

Wybrałem moduł Neoway M590, ponieważ jest trochę niedoceniany – jedną z najważniejszych kwestii jest jego stabilne zasilanie. Być może przez to nie jest tak popularny jak serie SIM800/SIM900, ale – jego cena jest bardzo atrakcyjna, tak więc postanowiłem mu się przyjrzeć. Po kilkumiesięcznych testach dwóch modułów mogę stwierdzić, że jest to stabilne rozwiązanie.

Należy jednak pamiętać – w większości przypadków, zasilanie optymalne to stabilne 3,7-3,9V a zasilacz powinien mieć wydajność 2A.

Podłączenie do Raspberry Pi

Moduł Neoway GSM posiada port szeregowy – to za jego pomocą będziemy się z nim komunikować przez złącza TX,RX. Jednak domyślne port szeregowy Raspberry Pi jest jest okupowany przez konsolę systemową – a więc jeśli podłączymy nasz moduł to zalejemy go danymi, oczywiście nic też nie odczytamy. Należy więc na Raspberry Pi w pliku /boot/cmdline.txt usunąć część: console=/dev/ttyAMA0,115000. Po ponownym uruchomieniu możemy ją wreszcie wykorzystać.
Podłączamy konwerter zasilania – można też wykorzystać baterię z nieużywanego smartfona albo bateria typu 18650 – pod warunkiem, że ma rating 3,7V – Li Poly lub Li Ion. Jeśli używacie takiego konwertera jak mój – z potencjometrem ustawianym wkrętakiem – podłączcie bez obciążenia multimetr i kręćcie tak długo aż nagle napięcie zacznie spadać – ustawcie 3,9V. Następnie podłączcie moduł i zweryfikujcie zasilanie – czasami tanie moduły wcale nie pozwalają na stabilne zasilanie pod obciążeniem – w efekcie mamy spadek napięcia, który trzeba skorygować. Robimy to BARDZO ostrożnie, aby nie uszkodzić układu GSM. Oto schemat zasilania i podłączenia do Raspberry Pi. Na schemacie widzimy złącze 2×7 PIN płytki Neoway M590 od strony mocowania karty SIM:

Schema: RPI - Neoway M590
Schema: RPI connected to Neoway M590 GSM module

Połączenia od strony gniazda na kartę SIM:

Neoway M590 connection
Neoway M590 connection

Jak widać nie jest to skompilowane, proszę pamiętajcie o wspólnej masie. Neoway M590 aby uruchomić się potrzebuje stanu niskiego na pinie BOOT, stąd „extra” połączenie do masy układu.
Po zainstalowaniu karty GSM, uruchomieniu modułu pierwszy LED na module powinien się zapalić, natomiast drugi powinien cyklicznie mrugać sygnalizując połączenie z siecią GSM. Oto końcowy efekt:

The Raspberry Pi with GSM M590 module
The Raspberry Pi with GSM M590 module

Wysyłamy SMS

Aby lepiej poznać moduł – należy uruchomić konsolę i połączyć się z nim:

a następnie

Z picocom wychodzimy przez kombinację CTR+A następnie Q.
Na samym końcu, w linii 21, wpisałem komendę AT na co M590 odpowiedział mi OK. To oznacza, że mamy prawidłowo (nie pomyliliśmy TX z RX) podłączoną konsolę. Komendy AT wraz z parametrami to naturalny język modem ów. Jeśli zamiast tego mamy mnóstwo „krzaczków” to mamy złą prędkość, a jeśli widzimy co piszemy – to oznacza, że nie wyłączyliśmy przekierowania konsoli systemowej na port szeregowy (spójrz wyżej). Z modułem rozmawiamy przez komendy AT, które służą praktycznie do wszystkiego – jest to stara dobra szkoła komunikacji z modemami. Przypomnijmy więc sobie jakie to komendy w załączonym linku.

Zatem – wyślijmy SMS, najpierw przez picocom, konsolę, a za chwilę – „automatycznie” za pomocą gammu:

Krótkie wyjaśnienie – od AT zaczynają się komendy jakie wpisujemy w konsoli. Zamiast „601xxx555” podstaw numer na jaki wysyłasz SMS. Następnie po tej komendzie pojawi się znak zachęty – należy wpisać treść SMS oraz zlecić wysłanie przez CTRL+Z. Przez 3-4 sekundy nic się nie stanie, a potem przyjdzie odpowiedź: „+CMGS: 46” oraz „OK’. Sprawdź czy SMS doszedł!

Oczywiście jeśli chcemy wykorzystać to do czegoś bardziej użytecznego – należałoby użyć gammu, które pozwala na dość prostą wysyłkę SMS z linii komend:

Następnie edytujemy konfigurację gammu:

i umieszczamy w nim tylko:

Teraz możemy wysłać naszego SMS w taki sposób:

Proste, prawda ?

Łączymy się z Internetem

Nasz moduł pozwala na transmisję danych w trybie GPRS. Połączenie jakie z nim mamy to 115k, a więc wystarczające z nawiązką do takiego trybu jaki daje nam GSM. Pamiętamy – to raczej zadania IoT, a nie używanie przeglądarki w trybie graficznym (lynx, links czy elinks działają bez problemu)!
Instalujemy program do połączenia się z Internetem. Wynegocjuje połączenie używając modemu GSM, ustawi interfejs ppp0 oraz dopisze DNSy i domyślną trasę – po odpowiedniej konfiguracji:

W tym celu tworzymy plik:

o zawartości:

Sprawdźmy jeszcze co kryje się w pliku gprs z katalogu chatscripts – upewnijmy się, że ma następujące wpisy:

Jesteśmy gotowi! uruchamiamy połączenie z Internetem za pomocą:

Sprawdzamy logi na osobnej konsoli (np: tail -f /var/log/syslog)

Udało się! Zobacz jak wygląda wyjście z komendy ifconfig:

Jeśli chcesz wyłączyć – wystarczy wydać:

Logi pokażą:

To wszystko! Pamiętaj, że transmisja danych może być nadal bolesna jeśli nie masz odpowiedniego pakietu u operatora.