Głównym elementem urządzenia jest płytka Arduino Mega. Wersja "Mega" ma tę ważną cechę, że wyposażono ją w 4 sprzętowe interfejsy szeregowe UART (wersja Uno ma tylko 1).
Pierwszy interfejs zarezerwowano dla komunikacji poprzez USB, dzięki czemu jest możliwe śledzenie pracy układu oraz programowanie płytki Arduino. Drugi UART służy do komunikacji z modułem GSM, pozostałe są nieużywane.
Do płytki Arduino dołączono moduły rozszerzające AVT1633 oraz AVT1615 udostępniające szereg złączy śrubowych na wyprowadzeniach Arduino oraz nieskomplikowany interfejs użytkownika w postaci wyświetlacza 2×16 i 4 przycisków.
Drugim ważnym elementem urządzenia jest moduł GSM. Na płytce znajduje się układ SIM900A oraz peryferia niezbędne do jego prawidłowej pracy. Należy tylko dołączyć zasilanie oraz interfejs szeregowy UART, jak pokazano na fotografii 1.
Pozostałe elementy urządzenia to regulowany stabilizator napięcia AVT1066 z dodatkowym zasilaczem 12 V oraz moduł wykonawczy z przekaźnikiem AVT1656 z mała modyfikacją - wykorzystuje styki NO przekaźnika a nie NC, dzięki czemu sterowany obwód jest załączony nawet gdy urządzenie nie działa.
SIM900 a SIM900A
W zastosowanym module GSM zamontowany jest układ SIM900A - jedna z wersji popularnego układu SIM900. Różnica pozornie niewielka, ale można stracić wiele godzin, próbując zmusić wersję z literka "A" do zalogowania się do naszych sieci GSM. Jest to wersja przygotowana na rynek azjatycki i przystosowana do tamtejszych sieci. Aby układ działał z sieciami europejskich operatorów, należy zmienić oprogramowanie układu, tzw. firmware.
Do przeprowadzenia tej operacji potrzebne będą: aplikacja do zmiany firmware'u układu SIM900, plik firmware'u, konwerter USB-UART np. AVTMOD09 oraz źródło zasilania dla modułu. Aplikację można pobrać ze strony http://goo.gl/JaG5iZ.
Zbiór różnych wersji firmware do układów SIM900 znajduje się na tej stronie http://goo.gl/0nMQEZ. Należy wybrać najnowszą wersję dla układu SIM900 (bez żadnej literki na końcu), na tę chwilę jest to: 137B15SIM900M64_ST.
Po pierwsze należy połączyć konwerter do komputera i sprawdzić, który port COM został mu przydzielony. Następnie należy połączyć konwerter z modułem (RX, TX oraz GND zgodnie z oznaczeniami) oraz przygotować źródło zasilania, jak na rysunku 2.
W tym przypadku jest to regulowany stabilizator AVT1066 z ustawionym napięciem na wyjściu 5,0 V. Na razie nie należy dołączać zasilania do modułu. W drugim etapie należy uruchomić pobraną aplikację Simcom - sim900 Customer flash loader V1.01.exe.
Zostanie wyświetlone okno, jak na rysunku 3. Należy wskazać plik firmware z rozszerzeniem .cla, wskazać port COM konwertera USB-UART i kliknąć przycisk START. Teraz należy dołączyć zasilanie modułu, rozpocznie się wtedy aktualizacja, może potrwać kilka-kilkanaście minut. Po zakończeniu należy odłączyć na chwilę zasilanie modułu i gotowe.
Zasilanie SIM900
Bardzo ważnym czynnikiem, który wpływa na poprawną pracę modułu jest jego zasilanie. Sam układ SIM900 wymaga zasilania napięciem z przedziału 3,4...4,5 V, na płytce modułu dodatnia linia zasilania poprowadzona jest poprzez diodę prostowniczą na której następuje spadek napięcia ok 0,7 V, zatem moduł można bezpiecznie zasilać napięciem 5 V.
Moduł w stanie czuwania pobiera niewielki prąd, kilkanaście...kilkadziesiąt mA ale w trakcie komunikacji z siecią GSM może pobierać chwilowo nawet 2...3 A. Dlatego nie ma sensu zasilanie modułu ze złącza USB czy z płytki ARDUINO, czy nawet z ładowarki USB.
Musi być zasilacz o napięciu 5 V i wydajności ok 1,5 A a dodatkowo, blisko modułu, na szynach zasilania musi być zamontowany kondensator typu LOW ESR (do pracy impulsowej) o pojemności min 1500 µF.
Prezentowane urządzenie było zasilanie zasilaczem 12 V/1,5 A z dołączonym regulowanym stabilizatorem AVT1066 z ustawionym nap na wyjściu 5,0 V i dodatkowym kondensatorem 1500 µF/6,3 V low esr.
Komunikacja z SIM900
Komunikacja z modułem odbywa się poprzez dwu-przewodowy interfejs UART (RX i TX). Domyślne ustawienia komunikacji to: 19200, 8, n, 1. Za pomocą konwertera USB-UART i programu typu terminal można w sterować modułem GSM. Sterowanie odbywa się komendami AT.
Aby przetestować komunikację można wysłać komendę AT<CR> (symbol <CR> oznacza znak końca linii, zwykle odpowiada mu przyciśnięcie klawisza Enter). Moduł w odpowiedzi wyśle <CR><LF>OK<CR><LF>. Symbol <LF> oznacza początek nowej linii).
Treść odpowiedzi modułu zwykle ma właśnie taką strukturę: <CR><LF>odpowiedź modułu<CR><LF>. W dalszej części artykułu, dla lepszej czytelności pomijane będą <CR> i <LF>. Inną pomocną komendą jest AT+GSV w odpowiedzi moduł wyśle informacje o typie zastosowanego układu SIM900 oraz o wersji firmware.
Po zainstalowaniu karty sim, można sprawdzić czy moduł zalogował się do sieci GSM. Uwaga - kartę SIM należy instalować tylko przy wyłączonym zasilaniu modułu. Ponadto, karta musi być aktywna (aktywowana wcześniej w telefonie) i dla ułatwienia powinna mieć wyłączone żądanie kodu PIN. Najpierw należy wysłać komendę A T + C R E G = 1 , a następnie, gdy po wysłaniu AT+- CREG=? otrzymamy odpowiedź +CREG= 1,1 to znaczy, że moduł jest zalogowany.
Działanie programu
Program wykonano za pomocą środowiska Arduino. Pierwsze zadania, które wykonuje, to inicjowanie zasobów sprzętowych - ustawienie kierunku wyprowadzeń, rozruch wyświetlacza, uruchomienie portów szeregowych i na koniec wyświetlenie komunikatu Hello (listing 1).
Następny etap polega na skonfigurowaniu modułu GSM, a gdy moduł zaloguje się do sieci, to z kary sim odczytywana zostaje nazwa operatora i wyświetlona na wyświetlaczu (listing 2). Potem program w pętli sprawdza na zmianę dwie rzeczy: poziom sygnału GSM czyli tzw. zasięg, który również jest prezentowany na wyświetlaczu oraz próbuje odczytać SMS (listing 3).
Wiadomości tekstowe zapisywane są w pamięci kary sim, pod na pierwszej wolnej pozycji. Program zawsze odczytuje wiadomość na pozycji 1, jeśli zawiera jakąś treść to sprawdza i ewentualnie wykonuje komendy a na koniec kasuje tę wiadomość. W ten sposób kolejna wiadomość zostanie zapisana na tej pozycji (listing 4).
Urządzenie akceptuje 3 komendy (smsy o takich treściach): Out off - powoduje wyłączenie wyjścia, Out on - powoduje załączenie wyjścia oraz Out res - powoduje rozłączenie wyjścia na ok 2 s a następnie automatyczne załączenie, czyli restart odbiornika dołączonego poprzez moduł wykonawczy. Jeżeli SMS zawiera poprawną komendę to urządzenie wykonuje zadanie a następnie wysyła potwierdzenie - smsa o treści OK, pod numer nadawcy (listing 5).
Pełne źródło programu jest dostępne w materiałach dodatkowych do projektu.
KS