Запускаем встраиваемый Wi-Fi с помощью модуля SPWF01SA.11

9 июня 2014

Необходимо организовать обмен данными между точками получения и обработки информации, т.е. так называемый «Интернет вещей», по сети Wi-Fi? Работающие в стандарте 802.11 b/g/n встраиваемые Wi-Fi-модули производства STMicroelectronics позволят сделать это даже в устройствах с маломощным процессором на борту.

Широкое распространение Wi-Fi-сетей делает эту технологию крайне привлекательной для использования в качестве «последней мили» для автоматизации как в повседневной жизни, так и в промышленности. Wi-Fi находит применение в таких приложениях как торговое оборудование, системы безопасности, медицинские приборы, промышленная телеметрия и бытовая техника.

Несмотря на то, что Wi-Fi-сеть работает на сравнительно небольших расстояниях 10…300 метров, передача данных возможна как на смартфон, расположенный рядом, так и на ПК на другом краю земного шара. Интернет-протоколы, естественным образом интегрированные в стандарт, делают возможной передачу данных с беспроводного Wi-Fi-устройства на любые современные гаджеты – персональные компьютеры, планшеты, ноутбуки и смартфоны – которыми сегодня пользуется большинство населения планеты. Растет число Wi-Fi-сетей на промышленных предприятиях – по данным IDC, в 2013 году рост рынка индустриальных Wi-Fi-сетей (Enterprise WLAN Market) составил около 15%.

До недавнего времени относительная дороговизна и сложность интеграции Wi-Fi-технологии ограничивала ее применение во встраиваемых приложениях. Новые Wi-Fi-модули SPWF01Sx производства компании STMicroelectronics кардинально меняют сложившийся порядок благодаря исключительной простоте интеграции и стоимости, соизмеримой со стоимостью радиомодулей Bluetooth и ZigBee.

SPWF01Sx – кратко о главном

Wi-Fi-модули SPWF01SA.11 и SPWF01SC.11 (рисунок 1) поддерживают стандарт 802.11 b/g/n и предназначены для создания приложений «Интернета вещей» (Internet of Things). Новые модули могут использоваться в промышленной телеметрии, системах безопасности, умном доме, медицине и интеллектуальном освещении. Модули могут работать в режимах Station, P2P (IBSS) и MiniAP, поддерживают различные протоколы безопасности – WEP, WPA-personal, WPA-2 Personal, WPA-Enterprise. Структурная схема модуля приведена на рисунке 2.

Рис. 1. Wi-Fi-модули SPWF01Sx.11

Рис. 1. Wi-Fi-модули SPWF01Sx.11

Рис. 2. Структурная схема модуля SPWF01Sx.11

Рис. 2. Структурная схема модуля SPWF01Sx.11

Интегрированный стек протоколов TCP/IP и встроенная файловая система позволяют с успехом применять модуль даже в тех устройствах, где на борту имеется относительно маломощный процессор. Для управления модулями используются обычные AT-команды, отправляемые по последовательному UART-интерфейсу. Набор текстовых команд позволяет использовать для управления модулем любую терминальную программу в процессе отладки (рисунок 3). Интересной особенностью модуля является возможность использовать его в качестве M2M WEB-сервера, для чего достаточно загрузить HTML-код страницы во FLASH- или RAM-память. Объем FLASH-памяти, отведенный под пользовательские файлы, равен 512 кбайт. Модуль может хранить и выдавать по запросу файлы любого типа – html, pdf, doc или jpg. Файлы можно размещать и в RAM-памяти, но тогда размер одного файла не может быть более 4096 байт. Файлы в RAM-память загружаются через UART, во FLASH – через Wi-Fi-сеть.

Рис. 3. Пример взаимодействия с модулем на ПК

Рис. 3. Пример взаимодействия с модулем на ПК

Взаимодействие как с UART, так и с портами GPIO может осуществляться через WEB-интерфейс любого браузера. Очень просто послать на выход UART-модуля текстовую строку, для чего достаточно обратиться к имеющейся в модуле странице cgi_demo.html (по IP-адресу модуля), напечатать в предложенном окне нужные символы и нажать кнопку «Submit» (рисунок 4). Можно управлять через Интернет портами ввода-вывода модуля – конфигурировать, задавать или считывать уровни, обратившись для этого к специальной странице remote.html.

Рис. 4. Отправка сообщения на SPWF01SA.11

Рис. 4. Отправка сообщения на SPWF01SA.11

Передача данных возможна через сокетные соединения TCP или UDP, при этом модуль выступает в качестве клиента. Можно одновременно открывать до восьми соединений. Модуль может работать в режиме прямого соединения с другим модулем или Wi-Fi-устройством без использования дополнительной точки доступа. Данный режим реализуется с помощью встроенного функционала MiniAP.

Технические характеристики

Производитель предлагает несколько вариантов исполнения модулей, отличающихся способом подключения антенны и установленным объемом FLASH-памяти (512 кбайт или 1,5 Мбайт).

Wi-Fi-модули SPWF01SA.11 и SPWF01SC.11 работают от единого источника с напряжением 3.1…3.6 В; потребление тока лежит в пределах от 25 мА в режиме сканирования до 250 мА в режиме передачи. Выходная мощность +18 дБм и чувствительность до -96 дБ позволяют оценить ожидаемую дальность связи в несколько сотен метров на открытом пространстве. Модули выполнены в SMD-исполнении с краевым расположением контактов, что делает возможной ручную пайку обычным паяльником. Модули работают в температурном диапазоне -40…85°C и отличаются только типом подключения радиочастотного выхода – на модуле SPWF01SA.11 установлена чип-антенна, в то время как к модулю SPWF01SС.11 через UFL-разъем должна подключаться внешняя антенна.

Технические характеристики модулей приведены в таблице 1.

Таблица 1. Технические характеристики SPWF01Sx.11

Стандарт 802.11 b/g/n (BSS Station & miniAP)
Выходная мощность, дБм TX power: +18.3 (63 мВт)
Чувствительность, дБм RX sensitivity: -96
Режимы безопасности None, WEP, WPA/WPA2-PSK, WPA-Enterprise
Встроенные стеки протоколов TCP/IP stack (IPv4); TCP/UDP — up to 8 clients; DHCP; DNS; Web Server/HTTP-client
Программный интерфейс AT-команды
Объем FLASH/RAM и драйвер на внешнем микроконтроллере Нет требований
Интерфейсы 16xGPIO, 3xUART, SPI, I2C
Режимы энергопотребления, мА 2.5 (Wakeup on event);15 (Standby, radio disabled);25 (Standby, WiFi Scanning); 92 (Connected, RX, Idle); 250 (Connected, TX)
Напряжение питания, В 3.1…3.6
Стабилизатор питания Встроенный
Низкочастотный LPO (32 кГц) Встроенный
Размеры, ШхДхВ, мм 26.92×15.24×2.35
Температурный диапазон, °C -40…85
Обновление прошивки UART/ по эфиру (OTA – Over the Air)
Сертификация FCC/IC/CE-certified; RoHS-compliant

 

Особенности интеграции SPWF01Sx

С точки зрения схемотехники подключение модуля к внешнему управляющему микроконтроллеру не представляет никакой сложности. Назначение выводов модуля описано в таблице 2. Схема подключения SPWF01SA.11 в минимальной конфигурации приведена на рисунке 5. Основной интерфейс управления – совместимый с уровнями 5 В полный UART с квитированием RTS/CTS и максимальной скоростью 921 кбит/с. При ограничении скорости обмена до 115 кбит/с можно ограничиться только линиями RXD1 и TXD1 (без подключения CTS1_DN, RTS1_DP), однако такое подключение производитель использовать не рекомендует. В будущих прошивках ожидается поддержка SPI c большей скоростью обмена данными.

Рис. 5. Подключение SPWF01Sx

Рис. 5. Подключение SPWF01Sx

Таблица 2. Назначение выводов

Имя сигнальной линии Тип Номер
вывода
Основная функция Альтернативная функция1 Примечание
GPIO-линии ввода-вывода общего назначения
GPIO[0] I/O 16 Порт ввода-вывода общего назначения; восстановление заводских настроек2 SPI MISO Вход подтянут к земле; вывод совместим с уровнем 5 В
GPIO[1] I/O 17 Порт ввода-вывода общего назначения SPI MOSI Вход подтянут к земле; вывод совместим с уровнем 5 В
GPIO[2] I/O 19 Порт ввода-вывода общего назначения SPI Chip Select Плавающий вход; выход совместим с уровнем 5 В
GPIO[3] I/O 1 Порт ввода-вывода общего назначения SPI Clock Вход подтянут к земле; вывод совместим с уровнем 5 В
GPIO[6] I/O 22 Порт ввода-вывода общего назначения; запрет режимов Wake Up/Sleep3 ADC 0 Вход подтянут к земле; вывод совместим с уровнем 5 В
GPIO[4] I/O 18 Порт ввода-вывода общего назначения Вход данных UART34
GPIO[5] I/O 20 Порт ввода-вывода общего назначения Выход данных UART34
GPIO[7] I/O 13 Порт ввода-вывода общего назначения; переключение режимов STA/Mini AP5 ADC 1
GPIO[8] I/O 4 Порт ввода-вывода общего назначения Выход данных UART24; ADC2
GPIO[9] I/O 7 Порт ввода-вывода общего назначения Вход данных UART24; ADC3
GPIO[11] I/O 11 I2C SCL
GPIO[12] I/O 12 Порт ввода-вывода общего назначения I2C SDA
GPIO[15] I/O 21 Порт ввода-вывода общего назначения DAC
Мониторинг состояния без альтернативных функций
GPIO[10] I/O 5 Светодиод Мигает в режиме RUN
GPIO[13] I/O 15 Светодиод
GPIO[14] I/O 14 Светодиод Отображение состояния питания
Выводы интерфейса управления UART1
RXD1 I 8 Вход приема данных UART1 Вывод совместим с уровнем 5 В
TXD1 O 6 Выход передачи данных UART1 Вывод совместим с уровнем 5 В
CTS1_DN I 9 Вход «Clear To Send» UART1 Активный низкий уровень; вывод совместим с уровнем 5 В
RTS1_DP O 10 Выход «Request to send» UART1 Активный низкий уровень; вывод cовместим в уровнем 5 В
Сброс
RESETn I 3 Вход сброса Для сброса требуется активный низкий уровень в течение 5 мс; вывод имеет внутреннюю подтяжку к 2,5 В и не совместим с уровнем 5 В
Линии питания и земли
3.3 V 24 Напряжение питания Развязывающий конденсатор 10 мкФ
Ground 23 Земля
Ground Paddle 25 Земляной полигон Необходимо предусмотреть достаточное количество переходных отверстий для отвода тепла на земляной слой печатной платы
Встроенный загрузчик (Boot loader)
BOOT0 I 2 Boot loader6

Примечание:

  1. Активирование альтернативной функции зависит от версии внутреннего программного обеспечения (FW) модуля и установок переменных конфигураций
  2. Для возврата к заводским установкам вывод GPIO[0] должен быть в высоком состоянии во время подачи питания
  3. Функции GPIO работают, когда переменная «low power mode» разрешена
  4. Начиная с версии FW 3.0 AT FULL STACK
  5. Начиная с версии FW 3.0 AT FULL STACK. Для разрешения управления режимом STAT/MiniAP на вывод GPIO[7] нужно подать низкий уровень одновременно с подачей аппаратного сигнала сброса
  6. Для разрешения загрузки FW вывод BOOT должен быть в высоком состоянии во время подачи питания. Линия RESETn должна быть притянута к земле в течение, по меньшей мере, 5 мс для запуска внутреннего загрузчика.

 

К трем портам GPIO-модуля можно подключить светодиоды, которые будут показывать текущее состояние:

  • GPIO[10] – светодиод индицирует режим RUN;
  • GPIO[13] – светодиод индицирует режим WiFi Link up;
  • GPIO[14] – светодиод показывает присутствие питания.

Сброс модуля производится нулевым уровнем длительностью не менее 5 мс по линии RESET, которая внутри модуля подтянута к источнику напряжения 2.5 В. Вывод RESET не совместим с напряжением 5 В (not 5V tolerant!).

Вывод BOOT0 позволяет активировать процесс обновления внутреннего программного обеспечения (Firmware Update) при подаче питания на модуль. Загрузка начинается в том случае, если при сбросе линия BOOT0 находится в высоком состоянии.

Модули SPWF01Sx имеют 30 краевых контактов с шагом 1.524 мм. Использована шестислойная печатная плата. В документации приводятся рекомендации по выбору профиля пайки.

Центральный полигон модуля Ground Paddle необходимо соединить с земляным полигоном платы с помощью достаточного количества переходных отверстий, т.к. он также выполняет функцию отвода тепла. В связи с тем, что центральный полигон модуля имеет относительно большой размер 10х8 мм, следует консультироваться с технологами при выборе размера переходных отверстий и геометрии паяльной маски.

Вокруг антенны желательно оставлять свободное пространство без элементов и сигнальных/земляных линий. Дополнительные рекомендации и диаграмму направленности можно найти в документации на установленную на модуле антенну A5839.

Управление Wi-Fi-модулем

Управление всеми возможностями модуля производится с помощью текстовых AT-команд и похоже на способ управления GSM-модемом со встроенным TCP-стеком. Перечень AT-команд приведен в таблице 3. Полный перечень интерфейсных сообщений, которые возможны между управляющим микроконтроллером и модулем, состоит из:

  • AT-команд;
  • конфигурационных переменных (configuration variables);
  • переменных статуса модуля (status variables);
  • асинхронных незапрашиваемых сообщений (unsolicited responses или WINDS).

На рисунке 6 показаны направления движения различных интерфейсных сообщений.

Рис. 6. Интерфейс управления

Рис. 6. Интерфейс управления

Асинхронные незапрашиваемые сообщения могут приходить в произвольные моменты времени и имеют следующий вид:

<cr><lf>+WIND:<номер>:<описательная часть><cr><lf>

где

<номер> – это уникальный номер для каждого типа сообщения

<описательная часть> – текстовое пояснение (может отсутствовать)

<cr><lf> – коды 0х13 и 0х10 (HEX)

После подачи питания модуль выдает несколько незапрашиваемых сообщений, которые отражают различные стадии инициализации аппаратной и программной части, например:

+WIND:1:Poweron (140128-caf4b79-SPWF01S)

+WIND:13:ST SPWF01SA IWM: Copyright (c) 2012-2014 STMicroelectronics, Inc. All rights Reserved.

+WIND:3:Watchdog Running

+WIND:0:Console active

+WIND:32:WiFi Hardware Started

+WIND:21:WiFi Scanning

+WIND:35:WiFi Scan Complete (0x0)

+WIND:19:WiFi Join: 6A:09:27:7C:98:D5

+WIND:25:WiFi Association with ‘iPhone POI’ successful

+WIND:51:WPA Handshake Complete

+WIND:24:WiFi Up: 172.20.10.3

Модуль готов принимать AT-команды только после появления сообщения +WIND:0:Console active

AT-команды управления имеют следующий вид:

AT<cd><cr> – посылается от управляющего МК в модуль SPWF

<пусто или несколько линий ответа> – посылается от SPWF к МК (опционально)

<cr><lf><код ответа><cr><lf> – посылается от SPWF к МК (опционально)

<код ответа> может иметь следующий вид:

OK

ERROR: <описательная часть>

Таблица 3. Примеры AT-команд управления модулем

Разные команды
AT Внимание (Attention)
AT+S.HELP Вывести страницу подсказки
AT+S.FWUPDATE Обновление встроенного ПО
AT+S.WIFI Разрешить/Запретить Wi-Fi
AT+CFUN Смена текущего режима работы (cброс)
AT+S.MFGTEST Тест для процесса производства
AT+S.PEMDATA Конфигурирование хранилища серитфикатов
AT+S.ECHO Возвращать «ЭХО» на последовательный порт
AT+S.HTTPDFSUPDATE Обновить файловую систему static HTTPD
Конфигурирование
AT+S.GCFG Прочитать текущее конфигурационное значение
AT+S.SCFG Установить переменную конфигурации
AT+S.SSIDTXT Установить текстовое значение SSID
AT+S.STS Получить текущие состояния/статистика
AT&V Отобразить все конфигурационные значения
AT&F Восстановить заводские настройки
AT&W Сохранить текущие настройки
AT+S.NVW Записать производственные настройки
Управление файлами
AT+S.FSC Создать файл
AT+S.FSA Добавить к существующему файлу
AT+S.FSD Удалить существующий файл
AT+S.FSL Показать список имен файлов
AT+S.FSP Распечатать содержимое файла
Сетевые команды
AT+S.PING Послать ping на определенный адрес
AT+S.SCAN Сканировать каналы
AT+S.HTTPGET Выдать запрос HTTP GET
AT+S.ROAM Переподключение к Wi-Fi

AT-команды можно вводить как в нижнем, так и в верхнем регистре. В аргументах команды прописные и строчные символы различаются (case sensitive). Максимальная длина команды не может превышать 127 символов. После отсылки первого символа AT-команды «A», выдача незапрашиваемых сообщений блокируется и разрешается вновь после завершения ввода команды.

Конфигурационные переменные – это набор значений, которые определяют режим работы модуля. Каждую переменную можно отдельно записывать командой AT+S.SCFG и считывать командой AT+S.GCFG. Пример чтения собственного IP-адреса модуля:

AT+S.SCFG=ip_addr<cr>

# ip_ipaddr = 192.168.240.111

OK

Для вывода списка всех переменных вместе с установленными значениями можно воспользоваться командой AT&V. Выдаваемый список зависит от версии firmware и может выглядеть, например, таким образом:

AT&V

# Dumping All Configuration Keys:

# nv_manuf = ST

# nv_model = SPWF01SA

# nv_serial = 3513D23094

# nv_wifi_macaddr = 00:80:E1:FF:92:7B

# blink_led = 1

# user_desc = anonymous

# localecho1 = 1

# console_uart = 1

# console1_speed = 115200

# console1_hwfc = 0

# console1_enabled = 1

# console2_speed = 115200

# console2_enabled = 0

# localecho2 = 1

# console3_enabled = 0

# console3_speed = 115200

# localecho3 = 1

# wifi_tx_msdu_lifetime = 0

# wifi_rx_msdu_lifetime = 0

# wifi_rts_threshold = 3000

# wifi_ssid = 69:50:68:6F:6E:65:20:50:4F:49:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_ssid_len = 10

# wifi_mode = 1

# wifi_auth_type = 0

# wifi_rssi_thresh = 0

# wifi_rssi_hyst = 0

# wifi_ap_idle_timeout = 120

# wifi_beacon_loss_thresh = 10

# wifi_priv_mode = 2

# wifi_wep_keys[0] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[2] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_keys[3] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

# wifi_wep_key_lens = 00:00:00:00

# wifi_wep_default_key = 0

# wifi_wpa_psk_raw = 38:E1:53:A7:F2:B0:6B:D6:7F:0D:95:4A:65:01:D3:24:62:F7:57:40:72:F9:7F:20:6E:24:E7:99:7B:6F:0D:06

# wifi_wpa_psk_text = oleglena

# ip_use_dhcp = 1

# ip_use_httpd = 1

# ip_mtu = 1500

# ip_hostname = iwm-FF-92-7B

# ip_apdomainname = captiveportal.net

# ip_ipaddr = 192.168.0.50

# ip_netmask = 255.255.255.0

# ip_gw = 192.168.0.1

# ip_dns = 192.168.0.1

# ip_http_get_recv_timeout = 2000

# ip_dhcp_timeout = 20

OK

После установки одной или нескольких конфигурационных переменных с помощью команды AT+S.SCFG<имя переменной>,<значение> их обязательно нужно сохранить в энергонезависимой памяти модуля с помощью команды AT&W. Новые значения будут применены только после перезагрузи модуля, что можно сделать как отключением-включением питания, так и по команде AT+CFUN=1<cr>

Переменные статуса можно только считывать, они отображают статистику и различные параметры текущего состояния модуля – причину последнего сброса, время работы с момента подачи питания, IP-настройки и другие (зависит от версии firmware), например:

AT+S.STS

# Status & Statistics:

# version = 140128-caf4b79-SPWF01S

# reset_reason = 0

# conf_flag = 5

# system_uptime = 2745

# system_sleeptime = 0

# gpio_enable = 0

# captiveportal = 0

# wifi_sup_ratemask = 0x003FFFCF

# wifi_bas_rate_mask = 0x00000540

# wifi_state = 10

# wifi_dtim_period = 3

# wifi_gf_mode = 0

# wifi_channelnum = 1

# wifi_chan_activity2 = 0x00003FFE

# wifi_max_tx_power = 18

# wifi_reg_country = TW

# wifi_num_assoc = 0

# ip_ipaddr = 172.20.10.3

# ip_netmask = 255.255.255.240

# ip_gw = 172.20.10.1

# ip_dns = 172.20.10.1

# free_heap = 25144

# min_heap = 23336

# current_time = 2745

OK

Описание всех AT-команд выходит за рамки данной статьи. Далее на основе реальных примеров рассмотрим порядок настройки и организацию передачи данных с помощью модуля PWF01SA.11 с заводскими настройками («из коробки»).

Сканирование сети

После подачи питания модуль сканирует эфир и пытается подключиться к сети, имя которой (SSID) и параметры шифрования заранее прописаны в модуль. На заводе в модуль заносятся значения по умолчанию. Нужные пользователю настройки можно сделать по UART с помощью команды AT+S.SSIDTXT и соответствующих команд установки конфигурационных переменных.

Посмотреть список окружающих Wi-Fi-сетей типа Infrastructure (AP) и IBSS (Ad-Hoc) позволяет команда AT+S.SCAN, которая отображает имя каждой сети, тип, канал, силу сигнала и т.п (рисунок 7).

Рис. 7. Значения параметров в списке найденных Wi-Fi-сетей

Рис. 7. Значения параметров в списке найденных Wi-Fi-сетей

Реальный список найденных сетей может выглядеть таким образом:

FOUND: BSS 00:0E:8F:F5:70:A4 CHAN: 01 RSSI: -65 SSID: ‘MGTS_GPON_5199’ CAPS: 0411 WPA: 0 WPA2: 20

FOUND: BSS 00:16:CA:F5:1B:E1 CHAN: 01 RSSI: -89 SSID: ‘Beeline_WiFi’ CAPS: 0421 WPA: 0 WPA2: 0

FOUND: BSS 00:16:CA:F5:1B:E2 CHAN: 01 RSSI: -89 SSID: ‘Beeline_WiFi_WPA’ CAPS: 0431 WPA: 22 WPA2: 24

FOUND: BSS 4C:60:DE:E3:61:F2 CHAN: 05 RSSI: -86 SSID: ‘netgear’ CAPS: 0411 WPA: 22 WPA2: 24

FOUND: BSS 00:1F:C6:27:F9:3D CHAN: 06 RSSI: -51 SSID: ‘WL500gP_UYME’ CAPS: 0411 WPA: 0 WPA2: 20

FOUND: BSS F8:C0:91:13:D1:07 CHAN: 09 RSSI: -82 SSID: ‘Akado458’ CAPS: 0411 WPA: 22 WPA2: 0

FOUND: BSS CC:5D:4E:4D:EE:4A CHAN: 11 RSSI: -87 SSID: ‘ZyXEL_KEENETIC_GIGA_4DEE4A’ CAPS: 0411 WPA: 0 WPA2: 24

Пример работы

После первого включения модуль постоянно сканирует сеть, но не может никуда подключиться, т.к. пользовательские настройки не введены:

+WIND:21:WiFi Scanning

+WIND:35:WiFi Scan Complete (0x0)

+WIND:21:WiFi Scanning

+WIND:35:WiFi Scan Complete (0x0)

Первые команды даем, когда модуль сам сканирует сеть, но пока не может никуда подключиться, т.к. настройки модуля по умолчанию не соответствуют найденным Wi-Fi-сетям. Подаем следующие команды:

  • Задаем SSID точки доступа: AT+S.SSIDTXT=WL500gP_UYME
  • Задаем пароль шифрования: AT+S.SCFG=wifi_wpa_psk_text,abcdef123
  • Задаем режим шифрования WPA2-Personal: AT+S.SCFG=wifi_priv_mode,2
  • Задаем режим работы – подключение к точке доступа (STA): AT+S.SCFG=wifi_mode,1
  • Задаем тип адреса – получать будет по DHCP: AT+S.SCFG=ip_use_dhcp,1
  • Сохраняем новые настройки в энергонезависимой памяти: AT&W
  • Перегружаем модуль, что бы новые настройки вступили в силу: AT+CFUN=1
  • Модуль перегружается:

+WIND:2:RESETð<0>

+WIND:1:Poweron (1203-121218_01-50-g511fab4-stm_demo)

+WIND:13:Sagrad IWM: Copyright (c) 2012 Sagrad, Inc. All rights Reserved.

+WIND:3:Watchdog Running

+WIND:0:Console active

+WIND:46:WPA: Crunching PSK…

+WIND:32:WiFi Hardware Started

+WIND:21:WiFi Scanning

+WIND:35:WiFi Scan Complete (0x0)

+WIND:19:WiFi Join: 00:1F:C6:27:F9:3D

+WIND:25:WiFi Association with ‘WL500gP_UYME’ successful

+WIND:51:WPA Handshake Complete

+WIND:24:WiFi Up: 192.168.1.9

Есть результат! Наш модуль успешно подключился к Wi-Fi-точке доступа и получил IP-адрес 192.168.1.9. Теперь при каждом включении модуль будет искать требуемую сеть и подключаться к ней автоматически. Процесс подключения занимает примерно 5…10 секунд.

Работа с файлами

Файловая система подразумевает манипулирование файлами как в RAM, так и во FLASH-памяти модуля SPWF01Sx. Загрузка файлов во FLASH-память производится по эфиру через внешний HTTP-сервер. Командой AT+S.HTTPDFSUPDATE отправляется запрос HTTP GET к удаленному HTTP-серверу. Полученный файл (или сразу набор файлов) сохраняется во FLASH-памяти. В нее можно загружать файлы любого типа (HTML, PDF, DOC, JPEG). Максимальная емкость файлов составляет 512 кбайт.

Файлы в RAM-память загружаются локально, через UART. Команда AT+S.FSC создает HTML-файл в RAM-памяти модуля. По этой команде файлу лишь присваивается имя и резервируется место в указанном в команде объеме. В связи с ограниченной емкостью RAM максимальная длина файла не может превышать 4096 байт. Создаваемый файл должен включать полноценный заголовок HTTP-ответа и собственно контент страницы, который будет отображаться в WEB-браузере клиента. В модуле есть несколько предустановленных статических файлов, которые нельзя удалить из памяти, но содержимое этих файлов можно менять путем перезаписи. Добавление данных в существующий файл производится с помощью команды AT+S.FSA, в которой указывается имя файла и число записываемых байтов. После подачи команды модуль принимает по UART указанное в команде количество байтов. Команда AT+F.FSD удаляет существующий файл (статический файл удалить нельзя). Просмотреть список всех файлов можно с помощью команды AT+S.FSL, например, он может выглядеть таким образом (зависит от версии firmware):

AT+S.FSL=

I 456 /input_demo.shtml

I 324 /cgi_demo.html

I 167 /message.shtml

I 547 /index.html

I 193 /config.shtml

I 174 /status.shtml

I 213 /404.html

I 2018 /firstset.html

I 2425 /remote.html

OK

Просмотреть содержимое любого файла, сохраненного в модуле, можно локально через UART командой AT+S.FSP. Например:

AT+S.FSP=/message.shtml

<html><head><title>Message</title></head><body bgcolor=«white» text=«black»><h1>Message for client from SPWF01S</h1><pre><!—#message—></pre></body></html>

OK

AT+S.FSP=/input_demo.shtml

<html><head><title>Power Demo</title></head><body bgcolor=«white» text=«black»> <p>Power load: <!—#input—> </p> <p> <br/><br/>Again?<br/> <form name=«CGI Uart» method=«GET» action=«/input.cgi»> <input type=«radio» name=«input» value=«on»/>Yes, one more time. Please<br/> <input type=«radio» name=«input» value=«off»/>No, thanks. Bring me to HomePage<br/> <input type=«submit» name=«submit» value=«Submit» > </form> </p></body></html>

OK

При обращении к главной странице модуля в браузере будет показано следующее (рисунок 8):

Рис. 8. Главная страница Wi-Fi-модуля

Рис. 8. Главная страница Wi-Fi-модуля

Работа с сокетами

Прием и передача данных возможна по протоколам TCP и UDP в качестве клиента. Команда AT+S.SOCKON открывает сокет по заданному IP-адресу и номеру порта. Одновременно можно открыть до восьми сокетов. Каждому открытому сокету присваивается числовой идентификатор (ID), по которому происходит обращение к сокету для записи/чтения данных. Прием и передача данных проходит с помощью AT-команд записи и чтения N-байт, т.е. работа идет не в прозрачном режиме. Для записи данных в сокет в AT-команде указывается ID открытого сокета и число отправляемых байтов. После подачи команды (после кода <CR>) модуль ожидает получения через UART заданного числа символов. Отправка данных через сеть начнется лишь после получения модулем объявленного числа отправляемых байтов.

О поступлении данных модуль уведомляет внешний микроконтроллер с помощью незапрашиваемого сообщения +WIND:55, где указывается ID сокета и число пришедших извне данных (рисунок 9).

Рис. 9. Индикация поступления данных

Рис. 9. Индикация поступления данных

Для выдачи данных по UART сначала можно запросить командой AT+S.SOCKQ число байтов в приемном буфере открытого сокета (по ID), а затем командой AT+S.SOCKR вычитать все или часть данных. Задание числа выдаваемых модулем байтов позволяет обрабатывать полученные данные частями, даже с помощью 8-битного управляющего микроконтроллера с ограниченным объемом ОЗУ. Для закрытия сокета c заданным ID предусмотрена команда AT+S.SOCK.

Дополнительные команды

Для проверки прохождения пакетов до конкретного узла используется команда AT+S.PING=192.168.1.1 (адрес может быть любой). Для получения HTML-страницы с какого-либо сайта необходимо сформировать команду HTTP GET с помощью AT-команды AT+S.HTTPGET=host.example.com,/index.html (адрес выбран произвольно). Через UART модуля выводится как отправляемый HTTP GET-запрос, так и полученный ответ – содержимое HTML-страницы или сообщение об ошибке. Следует понимать, что современные страницы имеют достаточно сложную структуру, и получить содержимое всех полей с помощью однократного запроса GET невозможно. Данная команда хорошо работает лишь с простыми страницами.

Режим MiniAP

Режим работы в качестве точки доступа (режим MiniAP) позволяет подключить к модулю другой SPWF01Sx-модуль или любого Wi-Fi-клиента даже вне зоны действия полноценной точки доступа или Wi-Fi-роутера. Этот режим позволяет осуществить прямое соединение модуля с конечным оборудованием. Работающий в режиме MiniAP модуль виден как обычная Wi-Fi-сеть, к которой можно произвести подключение. На момент написания статьи Firmware модуля позволяло подключать только одного клиента. Подключенный к модулю клиент может открывать сохраненные на модуле HTML-страницы, передавать данные на выход UART-интерфейса и управлять GPIO-портами на модуле.

Режим MiniAP можно использовать для настройки параметров модуля через WEB-браузер, как альтернативный вариант для отправки команд локально через UART. В этом случае конечное устройство со встроенным Wi-Fi-модулем может не иметь клавиатуры или иного пользовательского интерфейса управления для ввода SSID и пароля.

Управление GPIO-портами

Удаленное управление портами ввода-вывода возможно через статическую страницу remote.html. Здесь можно настроить направление порта (ввод-вывод), установить или считать значение (рисунок 10).

Рис. 10. Управление GPIO через WEB

Рис. 10. Управление GPIO через WEB

Локальные манипуляции с выводами GPIO можно производить по UART c помощью команды AT+S.GPIOC.

Обновление внутреннего ПО

Как и любой другой технически сложный продукт, Wi-Fi-модули производства компании STMicroelectronics имеют возможность обновления своего внутреннего программного обеспечения (firmware, прошивки), которое постоянно обновляется. Инженеру рекомендуется обновить имеющиеся у него на руках модули для того чтобы в разработке использовалось самое последнее доступное firmware.

Обновление прошивки производится через последовательный интерфейс UART или удаленно по эфиру, через WEB-сервер.

Для локального обновления через UART существует специальная Windows-утилита FLASH Loader Demonstrator, которую можно найти на сайте производителя. Для инициации процесса загрузки используется специальный вывод модуля «Boot», который нужно притянуть к 3.3 В и затем подать питание на модуль. При этом в модуле инициируется внутренний загрузчик, который взаимодействует с утилитой, запущенной на ПК. Файл прошивки имеет расширение .bin, его размер составляет примерно 420 кбайт. Еще один способ загрузки прошивки – использовать специальную консольную программу 123flash.exe. Файл прошивки можно получить, обратившись в компанию КОМПЭЛ. Разработчику рекомендуется предусматривать возможность локального обновления firmware в конечном изделии, хотя бы в качестве резервного варианта.

Процесс обновление Firmware c помощью утилиты Flash Loader приведен на рисунках 11а-11е.

а)

а)

б)

б)

в)

в)

г)

г)

д)

д)

е)

е)

Рис. 11.Обновление прошивки

Обновление прошивки по эфиру выполняется с помощью команды AT+S.FWUPDATE. В команде указывается путь к сайту, где должен быть выложен файл с новой прошивкой. Модуль формирует единичный запрос HTTP GET, получает файл, проверяет его валидность и сохраняет во временном хранилище в памяти. Для завершения обновления требуется перегрузить модуль.

 

Заключение

Разумеется, Wi-Fi не является универсальным беспроводным стандартом, который лучше всех подходит для любых приложений. Правильная технология – это всегда компромисс между такими параметрами как дальность, пропускная способность, энергопотребление, топология, цена и совместимость. Достоинства Wi-Fi – в отличной совместимости с существующим оборудованием, криптозащите, высокой скорости передачи данных и, благодаря таким модулям как SPWF01SC.11, простоте интеграции. Оборотной стороной является повышенный ток потребления, ограниченная дальность радиоканала и слабая поддержка спящих режимов, если речь идет о годах работы от батарей. Тем не менее, во многих случаях встроенный Wi-Fi будет лучшим решением, по сравнению с Bluetooth, ZigBee или фирменными протоколами отдельных производителей

Получение технической информации, заказ образцов, заказ и доставка.

ST_SPWF01Sx_NE_07_14_opt
•••

Наши информационные каналы

О компании STMicroelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее