SPWF04SA: interfejs WiFi programowany za pomocą AT+ i MicroPythona
SPWF04SA to jedna z gorących nowości w ofercie firmy STMicroelectronics – ten miniaturowy (26,92 x 15,24 x 2,35 mm) moduł jest kompletnym, programowanym interfejsem WiFi z możliwością programowania za pomocą poleceń AT+ oraz skryptów w języku MicroPython.
Oprócz funkcji radiowych moduł SPWF04SA (fotografia 1) udostępnia aplikacji użytkownika porty cyfrowe i analogowe oraz interfejsy sprzętowe, takie jak przetworniki ADC, DAC, PWM, UART, SPI.
Poniżej, zestawione zostały najważniejsze cechy i parametry modułu SPWF04SA (schemat blokowy pokazano na rysunku 2):
- interfejsy komunikacyjne: UART, SPI, współpraca z zewnętrzną kartą SD
- interfejsy sprzętowe: 19 linii GPIO w tym 3 z funkcją wejścia przetwornika ADC, 1 z funkcją wyjścia PWM i 1 z funkcją wyjścia DAC, niektóre z tolerancją na napięcie +5V
- sterowanie rozkazami AT lub językiem skryptowym MicroPython
- tryby pracy: stacja, miniAP, web serwer ze stronami statycznymi lub generowanymi dynamicznie
- programowa obsługa stosu TCP/IP w tym protokołów: TCP, UDP, HTTPS
- czułość odbiornika do -96,0 dBm
- maksymalna moc nadajnika 18,3 dBm
- minimalny pobór prądu w trybie standby 43 μA
- średni pobór prądu w trybie nadawania 260 mA dla mocy 10 dBm
- napięcie zasilania +3,3V
- wymiary modułu: 26,92 x 15,24 x 2,35 mm
- temperatura pracy: -40°C do +85°C
- certyfikaty: FCC/CE/IC
Firmowe oprogramowanie modułu SPWF04SA zarządza wszystkimi funkcjami związanymi z obsługą części radiowej, programowego stosu TCP/IP, obsługą protokołów i interfejsów służących do komunikacji z układami zewnętrznymi.
Budowę oprogramowania z podziałem na warstwy pokazano na rysunku 3. Warstwa najniższa Radio & Lower MAC zawiera procedury odpowiedzialne bezpośrednio za sterowanie radiową częścią modułu. Poprzez warstwy pośrednie dochodzimy do procedur związanych z obsługą stosu TCP/IP. Wszystko opakowują procedury służące do wymiany danych ze światem zewnętrznym (interfejsy konsoli UART i SPI) oraz procedury do obsługi skryptów MicroPython gdy moduł pracuje w trybie autonomicznym.
Na rysunku 4 pokazano blokowy diagram protokołów obsługiwanych przez programowy stos TCP/IP zaimplementowany w module.
Pracą modułu SPWF04SA można sterować na kilka różnych sposobów:
- poprzez port UART tekstowymi rozkazami AT,
- poprzez port SPI,
- przy pomocy skryptów MicroPythona.
Transmisja rozkazów AT portem UART
Zalecana konfiguracja interfejsu komunikacyjnego została pokazana na rysunku 5.
Ogólna składnia tak wysyłanych rozkazów jest następująca:
AT+S.<rozkaz><parametry><CR>[dane]
gdzie:
- <rozkaz> jest nazwą przesyłanego rozkazu np. AT+S.HELP<cr>
- <parametry> opcjonalnie zależnie od typu rozkazu przesyłany jest parametr, np. nazwa rejestru lub wartość liczbowa
- <CR> kod końca rozkazu (heksadecymalnie 0x0D)
- [dane] opcjonalnie zależnie od typu rozkazu przesyłane są dodatkowe dane
Transmisja rozkazów przez SPI
W przypadku konfiguracji interfejsu pokazanej na rysunku 6 moduł pracuje jako slave.
Ogólna składnia rozkazów jest następująca:
0x02<rozmiar.przeslania><kod.roz><ile_param><rozmiar.1param><1.param>…<rozmiar.n.param><n.param>
gdzie:
- 0x02 bajt startu (heksadecymalnie 0x02)
- <rozmiar.przeslania> 2 bajty określające łączną długość kodu rozkazu
- <kod.roz> bajt kodu rozkazu odpowiadający rozkazowi typu AT
- <ile_param> bajt ilości parametrów rozkazu
- <rozmiar.1param> bajt określający długość (ilość bajtów) 1-go parametru
- <1.param> bajty 1 parametru
- … itd. dla kolejnych parametrów
Przykład
Rozkaz AT: AT+S.SCAN=d,/scan.txt przesyłany portem SPI
0x02 0x00 0x0D 0x33 0x02 0x01 d 0x09 (/scan.txt)
Skrypty
W tym trybie pracą modułu sterują polecenia skryptu MicroPythona, którego interpreter jest zapisany w pamięci Flash kontrolera. Skrypt może być uruchamiany z poziomu rozkazów AT lub automatycznie. Uruchamianie automatyczne po włączeniu zasilania wymaga wskazania położenia skryptu do uruchomienia (ustawianego w zmiennej python_script opisanej w dokumencie en.DM00329655.pdf – na stronie www.st.com) i ustawienia wyprowadzenia GPIO(8) w stanie wysokim podczas inicjacji pracy modułu.
Testowanie modułu w trybie AT
Żeby przetestować sterowanie modułu SPWF04SA rozkazami AT, potrzebna będzie konfiguracja sprzętowa pokazana na rysunku 7.
Do portu UART modułu należy podłączyć konwerter USB<>UART. Do testów wystarczy zasilanie modułu z portu USB. Ponieważ USB dostarcza napięcia 5V a moduł pracuje przy zasilaniu +3,3V, potrzebny będzie stabilizator (na wejściu i wyjściu stabilizatora należy zamontować kondensatory odsprzęgające o wartości 1-10µF). Do wyprowadzeń SPI modułu warto podłączyć złącze dla karty SD lub microSD. Zestawienie niezbędnych połączeń przygotowano w tabeli 1.
Tab. 1. Zestawienie połączeń podczas testowania modułu SPWF04SA
SPWF04SA |
Sygnał | Podłączenie |
24 | VCC +3,3V | Z wyjścia stabilizatora |
23 | GND | Masa |
8 | RxD | Z wyjścia TxD konwertera (tolerowane poziomy 0-5V) |
6 | TxD | Z wejścia RxD konwertera (tolerowane poziomy 0-5V) |
1 | SPI_CS (GPIO.3) | Karta SD pin 1 (CD/DAT3) Karta microSD pin 2 |
31 | SPI_CLK | Karta SD pin 5 (CLK) Karta microSD pin 5 |
32 | SPI_MISO | Karta SD pin 7 (DAT0) Karta microSD pin 7 |
33 | SPI_MOSI | Karta SD pin 2 (CMD) Karta microSD pin 3 |
Karta SD pin 4 (+3,3V) Karta SD pin 3,6 (GND) Karta microSD pin 4 (+3,3V) Karta microSD pin 6 (GND) |
Do testów potrzebny będzie jeszcze uruchamiany na komputerze program typu terminalowego np. Br@y. Jest to prosty terminal tekstowy który pozwoli na przesyłanie łączem UART modułu rozkazów AT oraz odbieranie z modułu wysyłanych odpowiedzi i komunikatów.
Pełna lista rozkazów AT dla obecnej wersji oprogramowania modułu, zamieszczona jest w dokumencie en.DM00329655.pdf do pobrania: