Moduł rozszerzenia do poprawnej pracy musi być połączony z Raspberry Pi rev. 2 o przyporządkowaniu sygnałów GPIO-P1 umieszczonym w tabeli 1. Jako pierwszorzędny kanał transmisyjny jest wykorzystywany interfejs UART.
Płytka rozszerzenia jest oparta o popularny moduł GSM typu SIM900. Moduł jest kontrolowany i dane są przesyłane za pomocą UART komputera Raspberry PI.
Schemat ideowy płytki rozszerzającej pokazano na rysunku 1. Moduł GSM (oznaczony na schemacie U1) pracuje w typowej konfiguracji zalecanej przez producenta.
Ze względu na znikomą użyteczność zrezygnowałem z elementów odpowiedzialnych za transmisję głosową, tj. interfejsu mikrofonu i głośnika, gdyż z założenia moduł będzie transmitował dane przez sieć GSM.
Zasilenie modemu U1 jest uzyskiwane za pomocą układu stabilizatora LDO (U3) typu MIC29302 odpowiedzialny za dostarczenie zasilania ok. 4 V przy szczytowej wydajności prądowej do 2 A.
Płytka GSM wymaga zewnętrznego źródła zasilania +5 V o wydajności minimum 2,5 A, gdyż z gniazda PWR jest zasilane także Raspberry PI, aby uniknąć konieczności stosowania dwóch zasilaczy.
Obecność zasilania sygnalizuje dioda świecąca LD1. Podane na schemacie wartości pojemności CE1 oraz CE2 są wartościami minimalnymi, zapewniającymi poprawną pracę modułu U1 i stabilizatora U3. Można je zwiększyć, ale wymagane są kondensatory o niskim ESR.
Ze względu na konieczność dopasowania poziomów napięciowych, pomiędzy UART Raspberry PI a modem GSM jest włączony konwerter poziomów U2. Aplikację modemu uzupełniają dwie diody LED wraz z buforami Q1 i Q2 sygnalizujące stan pracy modemu.
Sygnał antenowy jest doprowadzony do złącza SMA, a stąd do typowej, zewnętrznej anteny GSM. Moduł współpracuje z kartą SIM pełnego wymiaru, umieszczaną w gnieździe SIM_Card. Układ uzupełnia opcjonalny kondensator C2 "SuperCap" o pojemności 0,22 F służący do podtrzymania zegara RTC.
Płytkę wyposażono również w dwa przyciski umożliwiające zerowanie (RES) i sterowanie zasilaniem modemu (PWK). Ich funkcje mogą być sterowane opcjonalnymi kluczami tranzystorowymi Q3 i Q4 poprzez GPIO Raspberry.
Układ zmontowano na niewielkiej, dwustronnej płytce drukowanej. Rozmieszczenie elementów przedstawia rysunek 2. Montaż nie wymaga opisu, należy tylko zwrócić uwagę na prawidłowe przylutowanie dość drogiego modemu.
Stabilność mocowania płytki zapewnia kołek M3×8 pomiędzy płytkami Raspberry, a GSM. Aby w praktyce najszybciej sprawdzić działanie modułu konieczne są drobne zmiany konfiguracji PI. W pierwszej kolejności musimy uzyskać dostęp do portu szeregowego, który jest domyślnie zablokowany przez terminal SSH. W tym celu należy poddać edycji plik cmdline.txt:
$sudo nano /boot/cmdline.txt
i usunąć wpisy dotyczące konsoli
console=ttyAMA0,115200
kgdboc=ttyAMA0,115200
Następnie trzeba zmienić zawartość pliku initab.txt:
$ sudo nano /etc/initab
Umieszczając znak komentarza "#" w linii
T0:23respawn:/sbin/getty -L ttyAMA0 115200 vt100.
Po edycji powinna ona wyglądać następująco:
#T0:23respawn:/sbin/ getty -L ttyAMA0 115200 vt100.
Po wprowadzeniu zmian, należy zrestartować Raspberry.
Po tej operacji port szeregowy jest dostępny dla innych aplikacji. Aby użyć modemu GSM, konieczna jest jeszcze instalacja programu terminala, ponieważ najłatwiej sprawdzić jego działanie poprzez komendy AT. Najbardziej popularnym programem terminalowym jest minicom. Instalacja przebiega w sposób typowy. Do połączeniu się z Internetem należy wydać komendę:
$ sudo apt-get install minicom.
Minicom jest uruchamiany jest z linii poleceń, podobnie jak komendy służące do jego skonfigurowania. W celu poprawnej współpracy Raspberry PI z modemem należy wydać komendę:
$ sudo minicom -b 19200 -o -D /dev/ttyAMA0.
Po uruchomieniu możliwa jest też zmiana konfiguracji przy pomocy klawiszy CTRL+A oraz odpowiednich klawiszy funkcyjnych. Konfigurację używaną do sprawdzenia modemu przedstawia rysunek 4 i rysunek 5. Warto sprawdzić ustawienia oraz wyłączyć ECHO terminala. Aby sprawdzić funkcjonowanie modemu (nie należy zapominać o aktywnej karcie SIM, włożonej do gniazda SIM_Card, koniecznie przed włączeniem Raspberry PI!) należy załączyć zasilanie poprzez naciśnięcie na sekundę klawisza PWK. Po włączeniu zasilania i zalogowaniu się modemu do sieci, co jest sygnalizowanie krótkim zaświeceniem się diody NET - raz na 3 sekundy - modem jest gotowy do pracy.
Wykaz elementówRezystory: (SMD 0805) Kondensatory: Półprzewodniki: Inne: |
Pierwszym poleceniem jest AT+GSV czyli odczyt wersji modemu SIM900. Następnie na numer karty należy wysłać SMSa testowego z innego telefonu. Warto przełączyć modem w tryb TEXT, w którym można kontrolować wysyłanie i odbieranie SMSów za pomocą czytelnych i łatwych do zrozumienia komend. Przełączenie modemu w tryb tekstowy następuje za pomocą komendy AT+CMGF=1.
W tym trybie SMSy są odczytywane poprzez komendę AT+CMGR=nr SMS w pamięci. Na przykład, odczyt z pamięci o adresie 2 jest wykonywany po odebraniu przez modem komendy AT+CMGR=2. Aby wysłać SMS, należy wykorzystać komendę AT+CMGS="+48 numer telefonu odbierającego".
Po naciśnięciu ENTER jest wyświetlany znak zachęty ">", po którym należy wpisać do 160 znaków treści wiadomości (bez polskich liter, tylko znaki ASCII) i zakończyć kombinację CTRL+Z. Prawidłowo wydana komenda jest potwierdzona komunikatem OK. Po kilku sekundach SMS powinien zostać dostarczony na wpisany wcześniej numer. Na rysunku 5 pokazano przebieg testu modemu.
Jeżeli wszystko funkcjonuje poprawnie - modem może zostać użyty we własnej aplikacji, sterowanie w zależności od upodobań, może być wykonane w Pythonie lub C.
Adam Tatuś, EP