Do budowy wykorzystano nowoczesny moduł GSM M95 firmy Quectel. Moduł współpracuje z portem UART Raspberry Pi. Modem M1 pracuje w minimalnej konfiguracji zalecanej przez producenta. Ze względu na znikomą użyteczność, zrezygnowałem z elementów odpowiedzialnych za transmisję głosową.
Aplikację modemu U1 uzupełnia układ stabilizatora LDO U1 typu MIC29302, odpowiedzialny za dostarczenie zasilania ok. 4 V przy obciążalności szczytowej do 2 A. Dzielnik złożony z rezystorów R14 i R15, oprócz ustalania napięcia wyjściowego, zapewnia też minimalny prąd obciążenia niezbędny dla poprawnej pracy U1. Ze względu na duży, chwilowy pobór prądu podczas nadawania, moduł ma własne gniazdo zasilania USB (micro). Do zasilania jest niezbędny zasilacz 5 V o wydajności rzędu 3 A, gdyż z gniazda modemu poprzez gniazdo GPIO jest zasilane także Raspberry Pi. Podane na schemacie wartości pojemności CE1, CE2 są wartościami minimalnymi, zapewniającymi poprawną pracę modemu M1 i układu U1. Można je zwiększyć do 2×470 mF, ale wymagane są kondensatory tantalowe o małym ESR. Ze względu na konieczność dopasowania poziomów napięcia pomiędzy UART Raspberry Pi a modem GSM włączone są rezystory R9…R11. Aplikację modemu uzupełniają LED STAT/NET z buforami Q2, Q3 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ą micro SIM, umieszczaną w gnieździe SIM. Sygnały z karty filtrowane są poprzez RP1, C3…C5. Układ uzupełnia opcjonalny kondensator Cx o pojemności z zakresu 0,1…0.22 F służący do podtrzymania zegara RTC modemu. Płytka jest wyposażona także w przycisk sprzętowego sterowania zasilaniem modemu „PWK”. Poprzez klucz Q1 przy zlutowanej zworze PW możliwe jest sterowanie programowe sygnału PWK. Układ jest wyposażony w dwa złącza (IO, I2C) kompatybilne z minimodułami opisywanymi w EP oraz GPIO zgodne z Arduino Bricks z wyprowadzonym zasilaniem. Złącze umożliwia wyprowadzenie pojedynczych sygnałów wraz z zasilaniem kablem SIP3 lub wszystkich ośmiu i zasilania kablem SIP10. Upraszcza to w większości aplikacji monitorowanie sygnałów zewnętrznych bez dodatkowej karty GPIO.
Układ zmontowany jest na niewielkiej dwustronnej płytce drukowanej.
Aby w praktyce jak 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 zmodyfikować plik cmdline.txt za pomocą polecenia $ sudo nano /boot/cmdline.txt i usunąć wpis dotyczące konsoli console=ttyAMA0,115200 kgdboc=ttyAMA0,115200. Należy zmienić też plik initab $ poleceniem sudo nano /etc/initab, komentując # w nim linię T0:23respawn:/sbin/getty -L ttyAMA0 115200 vt100. Po wprowadzeniu zmian, należy zrestartować Raspberry Pi.
Po tej operacji port szeregowy dostępny jest dla innych aplikacji. Aby wykorzystać modem 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 typowy sposób ($ sudo apt-get install minicom). Minicom jest uruchamiany z linii poleceń, a jego wywołanie może zawierać parametry pracy $ sudo minicom -b 9600 -o -D /dev/ttyAMA0. Po uruchomieniu jest możliwa zmiana konfiguracji za pomocą kombinacji CTRL+A oraz odpowiednich przycisków funkcyjnych. Warto sprawdzić ustawienia transmisji oraz wyłączyć ECHO terminala.