Как стать автором
Обновить

Wi-Fi-лампочка на базе модуля WizFi250

Время на прочтение 4 мин
Количество просмотров 15K
Wi-Fi lamp

Пока лучшие мировые умы спорят о путях развития Интернета Вещей и обещают баснословные прибыли вовлеченным в этот процесс высокотехнологичным компаниям, мы решили тоже не сидеть сложа руки. Под катом – рассказ о макетировании устройства управления лампочкой на базе Wi-Fi-модуля WizFi250.

Сначала немного о самом Wi-Fi-модуле WizFi250. Внешний вид – на фото:

WizFi250



Модуль поддерживает стандарты IEEE 802.11b/g/n и управляется AT-командами через UART (или SPI) или через WEB-интерфейс. Полное описание AT-команд WizFi250 можно найти здесь.

У модуля есть PCB-антенна, но предусмотрено подключение и внешней антенны. Переключение между антеннами — автоматическое или командой AT+WANT. PCB-антенну можно отрезать (перфорация имеется) – тогда размеры модуля уменьшатся до 17 х 20 мм.

Проводные интерфейсы: UART, SPI, GPIO.

Производитель – WizNet, Корея, вот даташит модуля WizFi250.

Для тестирования есть платы в стиле Arduino UNO Wi-Fi шильд:



Но именно «в стиле», так как для совместного с Arduino использования их нужно немного доработать. Вот такую плату мы и будем использовать при макетировании в связке с платой Arduino UNO.

В целом, план такой: для связи по Wi-Fi использовать модуль WizFi250, для управления модулем и лампочкой – Arduino UNO, команды управления передавать с телефона или планшета по Wi-Fi в виде пакетов UDP или TCP.

Да, кстати, у модуля предусмотрены 2 полезных индикаторных вывода:

1) WiFi_STATUS: низкий уровень — Wi-Fi запущен, высокий уровень – Wi-Fi выключен.
2) MODE_STATUS: высокий уровень – режим команд (Command Mode), низкий уровень – режим данных (Data Mode).

На отладочной плате эти сигналы выведены на светодиоды “Wi-Fi” и “Mode” соответственно, что удобно при отладке.

Напряжение питания WizFi250 и входы-выходы – 3,3 В. Arduino UNO – пятивольтовый, т. е. для управления Wi-Fi модулем нужно согласовать уровни. На отладочной плате WizFi250 установлено две микросхемы четырехканальных преобразователей уровней TXS0104EPWR, одна из которых, IC4, используется для интерфейса SPI, другая, IC5 — для сигналов RESET и GPIO14 Wi-Fi модуля. А вот преобразование уровней интерфейса UART на отладочной плате WizFi250 почему-то не предусмотрено… Именно это я и имел ввиду, когда писал про небольшую доработку.

По идее для преобразования уровней линий Rx и Tx UART можно попробовать использовать оставшиеся два канала преобразователя IC5, но припаиваться к тонким ножкам микросхемы преобразователя уровней и модифицировать отладку не хотелось, поэтому мы воспользовались старым дедовским способом преобразования уровней сигналов при помощи пары транзисторов:



Схемы простые, может быть единственная хитрость — в использовании резистора 1кОм (R3) на выходе преобразователя 5В -> 3,3В. При использовании резистора большего номинала схема работает некорректно, всязано это с тем, что в одной точке встречаются два выхода: микросхемы FTDI FT232 и нашей самоделки. Не есть хорошо, но для макета вполне приемлемо.
В результате наша отладочная плата WizFi250 с самодельным Voltage Level Translator выглядела следующим образом:



Модуль может работать в двух режимах: точки доступа (AP, Access Point, когда к нему подключаются другие Wi-Fi-устройства) или клиента (STA, Station, когда он сам подключается к точке доступа).

Можно задавать разные настройки безопасности (шифрования), включать/выключать внутренний WEB-сервер.
Модуль поддерживает режимы UDP Server/Client, TCP Server/Client, TCP Secured Server/Client (используется SSL).
Может устанавливаться или режим данных (Data Mode, прозрачный режим, на UART модуля выдаются чистые данные, которые приходят по TCP или UDP, модуль команды управления не воспринимает), или командный режим (Command Mode, данные посылаются и выдаются на UART в «обертках», модуль продолжает воспринимать команды). Переход из режима данных в режим команд – с помощью традиционных +++.

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

Вот пара примеров инициализации модуля:

1. Если нам нужен режим точки доступа, UDP сервер и режим данных, последовательность команд инициализации будет такая:
  • AT+WSET=1,WizFi250 – задаем режим точки доступа с названием WizFi250
  • AT+WSEC=1,WPA2,12345678 – задаем режим безопасности и пароль
  • AT+WNET=0,192.168.10.1,255.255.255.0,0.0.0.0 – прописываем IP-адрес и маску подсети (в случае точки доступа первый и последний параметры игнорируются)
  • AT+WJOIN – запускаем Wi-Fi
  • AT+SCON=O,USN,,,7777,1 – запускаем UDP сервер, порт 7777, режим данных.


2. Если нужен режим клиента, TCP сервер и режим команд:
  • AT+WSCAN=WizFi250 – сканирование точки доступа с именем WizFi250
  • AT+WSET=0,WizFi250 – задаем режим станции, название точки доступа
  • AT+WSEC=0,WPA2,12345678 – прописываем режим безопасности, пароль
  • AT+WNET=0,192.168.10.2,255.255.255.0,192.168.10.1 – DHCP выключен, IP-адрес, маска подсети, шлюз
  • AT+WJOIN – соединяемся с точкой доступа
  • AT+SCON=O,TSN,,,7777,0 – запускаем TCP сервер, порт 7777, режим команд

После инициализации Wi-Fi-модуля нам остается только анализировать данные, поступающие от модуля по UART, и включать или выключать нашу лампочку в случае поступления соответствующих команд.
Ардуиновский скетч вряд ли имеет смысл здесь приводить: он максимально упрощенный и не думаю, что кому-то будет полезен/интересен.

Схема коммутации лампочки состоит из пятивольтового реле, транзисторного ключа и пары дискретных компонентов:



В качестве управляющего выхода Arduino использовался GPIO 13 (строка инициализации: pinMode(13, OUTPUT);)
В целом макет получился такой:



В черной коробочке – источник питания ~220В -> =9В.

Для быстрого тестирования управления лампочкой с планшета или смартфона под Android можно использовать готовые программы, способные отсылать пакеты TCP/UDP, например UDP Sender или TCP/UDP Server. Аналогично – для iOS.
В целом тестирование показало, что даже при использовании простейших алгоритмов можно добиться устойчивой работы системы.

Другие варианты – использование возможностей встроенного WEB-сервера модуля по управлению GPIO (5 шт.) и возможность кастомизации прошивки модуля производителем. Оба варианта интересны тем, что позволят обойтись без внешнего контроллера/процессора. Но это уже другая история.

*Небольшое видео — в комментариях.
Теги:
Хабы:
+15
Комментарии 9
Комментарии Комментарии 9

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн