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.

Fot. 1. Wygląd modułu SPWF04SA

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.


Rys. 2. Schemat blokowy modułu SPWF04SA

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.

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

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.

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

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.

Rys. 5. Konfiguracja interfejsu 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 przez SPI

W przypadku konfiguracji interfejsu pokazanej na rysunku 6 moduł pracuje jako slave.

Rys. 6. Konfiguracja interfejsu SPI

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.

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

O autorze