SPWF04SA: miniaturowy interfejs WiFi – przykłady aplikacji

SPWF04SA to jedna z gorących nowości w ofercie firmy STMicroelectronics – moduł spełnia rolę kompletnego, programowanego interfejsu WiFi. Na niewielkiej płytce modułu zintegrowano tor radiowy oraz kontroler z rodziny STM32F4 z zapisanym w pamięci Flash oprogramowaniem obsługującym stos protokołów oraz komunikację modułu z otoczeniem.

Fot. 1. Wygląd modułu SPWF04SA

Oprócz funkcji radiowych moduł SPWF04SA (fotografia 1) udostępnia użytkownikowi porty oraz interfejsy sprzętowe, takie jak przetworniki ADC, DAC, PWM, UART, SPI. Dzięki swojej budowie i oprogramowaniu, moduł może pracować autonomicznie lub poprzez jeden z interfejsów szeregowych może być sterowany przez urządzenie zewnętrzne.

Najważniejsze parametry modułu

Poniżej, zestawione zostały najważniejsze cechy i parametry modułu SPWF04SA:

  • 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.

Rys. 2. Budowa firmware SPWF04SA z podziałem na warstwy

Budowę oprogramowania z podziałem na warstwy pokazano na rysunku 2. 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.

Rys. 3. Diagram protokołów obsługiwanych przez programowy stos TCP/IP

Na rysunku 3 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

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 portem SPI

W tym przypadku 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óry zapisany jest w pamieci 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 4.

Rys. 4. Sprzęt wykorzystywany w testach modułu SPWF04SA

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
wyprowadzenie

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:

http://www.st.com/content/ccc/resource/technical/ document/user_manual/group0/69/ bf/26/08/53/62/49/af/DM00329655/files/DM00329655.pdf/ jcr:content/translations/en.DM00329655.pdf