Zapraszam na prezentację ciekawej płytki IoT, która łączy w sobie potężny mikrokontroler ESP32 znany z łączności Wi-Fi/Bluetooth z możliwościami sieci komórkowych. Została ona wyposażona dodatkowo w zintegrowany modem GSM i slot na kartę SIM, co czyni ją dobrym wyborem do projektów wymagających zdalnej komunikacji bez dostępu do Wi-Fi.
Płytka LilyGO Blynk V1.4
Ta prezentacja opiera się o płytkę LilyGO TTGO T-Call (oznaczaną często jako Blynk V1.4). Można ją zasilać bateryjnie na wejściu z 3.7V lub przez port USB-C napięciem 5V. Dzięki wbudowanemu konwerterowi USB na UART CP2104 można programować ją bezpośrednio przez złącze USB.
Sercem tej płytki jest moduł ESP32-WROVER-F MGN4R8. Oznaczenie N4R8 mówi nam dokładnie, jakimi zasobami dysponujemy: układ posiada 4 MB pamięci Flash (na nasz program) oraz dodatkowe 8 MB zewnętrznej pamięci PSRAM. Moduł oferuje pełne wsparcie interfejsów UART, SPI, SDIO, I2C, PWM, I2S, IRGPIO, ADC i DAC, oraz możliwość programowania w środowiskach ArduinoIDE, ESP-IDF, MicroPython, FreeRTOS.
LilyGO Blynk V1.4 wyposażona jest w moduł SIM800L. SIM800L to popularny i tani układ komunikacyjny działający w sieciach 2G (GSM/GPRS), który pozwala na wysyłanie SMS-ów i prostą transmisję danych, wykorzystując przy tym powszechną obsługę komend AT. Nie wspiera niestety 4G, co moim zdaniem jest jego zasadniczą wadą, ale o tym pod koniec.
Na pokładzie nie zabrakło również najważniejszych złącz. Do komunikacji z komputerem i zasilania służy port USB-C. Z kolei do zastosowań przenośnych przewidziano bardzo przydatne złącze bateryjne JST (raster 2.0 mm) dla ogniw Li-Po, nad którym pieczę sprawuje wbudowany układ ładowania (często IP5306). Oczywiście znajdziemy też slot na kartę Nano SIM zlokalizowany na odwrocie laminatu, złącze IPEX / U.FL do wpięcia zewnętrznej anteny GSM, oraz rzędy klasycznych goldpinów wyprowadzających wolne piny GPIO układu ESP32. Całość sprzętu została upakowana na laminacie o wymiarach 79 mm x 29 mm x 8 mm.
Płytkę można sprowadzić z Chin za około 80 zł.
Użyte środowisko i biblioteka
Do stworzenia i kompilacji kodu posłużyło mi PlatformIO. Jest to zaawansowane, profesjonalne środowisko dla systemów wbudowanych, które zazwyczaj działa jako wtyczka do edytora Visual Studio Code. Automatyzuje pobieranie bibliotek i ułatwia zarządzanie projektem - moim zdaniem lepiej niż w standardowym Arduino IDE.
Główną biblioteką odpowiadającą za komunikację z modemem SIM800L jest TinyGSM: https://github.com/vshymanskyy/TinyGSM.
Poniżej umieszczę dla niej dwa przykłady.
Użyta karta SIM
Niestety wysyłanie SMS-ów nie jest darmowe. Trzeba mieć aktywny pakiet SMS, więc do tego celu użyłem karty prepaid z sieci Plus. Włączyłem na niej również transmisję danych (GPRS) do późniejszych testów z zapytaniami HTTP. Kartę umieściłem w slocie:
Demonstracja - wysyłka SMS
Poniższy kod pokazuje podstawową inicjalizację. Najpierw konfigurujemy układ ładowania IP5306 przez I2C, żeby zapewnić SIM800L odpowiednią wydajność prądową. Następnie uruchamiamy modem podając odpowiednie stany logiczne na pin PWKEY. Kiedy modem zarejestruje się w sieci, biblioteka TinyGSM wysyła testowego SMS-a na wskazany numer.
Code: C / C++
PlatformIO ini:
Code: Ini
Rezultat:
Działa, SMS dotarł natychmiastowo.
Demonstracja - zapytanie HTTP
Drugi przykład to zwykłe zapytanie GET po GPRS. Kluczowa różnica polega tu na skonfigurowaniu APN operatora (zazwyczaj wystarczy słowo 'internet'). Po nawiązaniu sesji GPRS, klasa HttpClient wykonuje zapytanie do serwera testowego, po czym odbiera plik oraz zrzuca nagłówki i treść bezpośrednio do konsoli UART.
Code: C / C++
Testujemy:
Działa, chociaż... strona chce przekierować na wersję z HTTPS. To dość często spotykane w dzisiejszych czasach, a jednocześnie ujawnia to pewną wadę tego modułu. HTTPS już nie udało mi się uruchomić. Zatem przydatność SIM800 jest malutka, jeśli chodzi nam o Internet, a nie o SMSy.
Podjąłem jeszcze próbę z HTTPS ale program utyka na wysyłaniu.
Podsumowanie
Prosta i wygodna w uruchomieniu płytka, choć moim zdaniem już nieco przestarzała. Wspiera tylko 2G, co do którego mam obawy, ile jeszcze będzie dostępne? Zresztą, nie chodzi tu tylko o SMSy - do współczesnych zastosowań, tam gdzie jest wymagany HTTPS, trzeba też raczej użyć czegoś innego. Zajmę się tym w osobnym temacie. Na razie jednak płytka daje radę i można bez problemu wysłać powiadomienie np. o tym, że kwiatki na ogródku potrzebują podlania lub wręcz przeciwnie - że czujnik zalania wskazuje niebezpiecznie wysoki stan wody. Wystarcza karta SIM w trybie prepaid i nie potrzeba nawet Internetu mobilnego.
W kolejnym temacie pokażę nowsze rozwiązanie wspierające sieci 4G i porównam je z tu pokazaną płytką.
Jakie widzicie zastosowania dla łączności komórkowej w module z ESP?
Cool? Ranking DIY Helpful post? Buy me a coffee.