Wi-Fi в любительском проекте? Нет ничего проще!

в 8:05, , рубрики: diy или сделай сам, uart, wi-fi, микроконтроллеры, метки: , ,

Всем здравствуйте!
В этом посте я постараюсь убедить вас в том, что добавить поддержку Wi-FI к своему устройству на микроконтроллере можно абсолютно без проблем. И для этого не надо ни курочить свой любимый роутер и подпаиваться к выводам отладочного uart'а, ни ставить переходник usb-uart (что, конечно выход).
Я расскажу о двух модулях фирмы WizNet: WizFi220.

Вместо предисловия

Компания WizNet основана в 1998 в Корее и занимается производством сетевых решений. Спектр того, что компания производит, широк. Это и микроконтроллеры на ядре 8051 со встроенный PHY-контроллером, и отдельные SPI-управляемые контроллеры Ethernet, и модули Wi-FI, и макетки почти к каждой микросхеме.
Про первые два вида я мало чего знаю, поскольку с ними не работал. А про Wi-Fi довольно много.
Кому интересно — прошу под кат.

WizFi220

Wi Fi в любительском проекте? Нет ничего проще!
Отличается от WizFi210 более высокой мощностью сигнала и, как следствие, повышенным энергопотреблением.
Эта небольшая штука размером 32х24.5 мм имеет следующие характеристики:

  • Вся настройка — через UART
  • Время старта — 20 мс
  • Относительно малое потребление: 34 мкА в режиме ожидания, 125 мА — приём, 250 мА — передача
  • Поддерживает стандарты 802.11b/g/n.
  • Поддержка следующих типов шифрования: WEP, WPA/WPA2-PSK, Enterprise EAP-FAST, EAP-TLS, EAP-TTLS, PEAP
  • Температурный диапазон: -40℃… 85℃
  • Напряжение питания — 3.3В
Распиновка модуля

Wi Fi в любительском проекте? Нет ничего проще!
Легко видеть, что в сам модуль много чего понапихано: SPI, UART, GPIO, I2C, ADC, JTAG. Но что из этого списка можно использовать — другой вопрос.

Простейшая схема подключения модуля

Wi Fi в любительском проекте? Нет ничего проще!
Здесь все предельно просто. Выводы CTS2, RX2, RTS2, TX2 идут к контроллеру. Если нет желания выделять какой-либо пин микроконтроллера под управление сбросом модуля, то EXT_RESETN можно подтянуть к питанию через резистор 10К или бросить в воздухе.
Вывод №25 (GPIO_21/CLK_11MHz) нужен для того, чтобы применить одну из двух стандартных настроек WizFI220.

  1. Два раза опустить в ноль на 300 мс с паузой между импульсами в 300 мс — включение режима Limited AP (максимум 3 клиента)
  2. Три раза опустить в ноль — включение ad-hoc

Светодиоды нужны для индикации происходящих в модуле процессов.

Начнём эксперименты

Все эксперименты будем проводить с помощью макетки WizFi220-EVB.
Wi Fi в любительском проекте? Нет ничего проще!
Которая для оценки возможностей WizFi220 — самое то.
Для включения модуля потребуется mini-USB кабель и переходник USB-RS232. После подачи питания синие светодиоды (что в правом нижнем углу) весело моргнут три раза. Это свидетельство того, что WizFi220 успешно запустился. Открываем любимый терминал и подключаемся к порту. Конфигурация порта: скорость 115200, 8 бит, 1 стоп-бит, контроль четности отключен.
И вводим туда первое, что в голову пришло AT.
Замечание: каждая команда должна заканчиваться символом CR (carriage return, 0x0D) иначе она не будет обработана.
Модуль должен весело отрапортовать

AT
[OK]

Те две буквы, которые сейчас были приняты модулем, назваются AT-командой. WizFi220 понимает множество AT-команд, описание к которым (порой весьма скудное) содержится в мануале.
Давайте теперь поднимем Limited AP. Сделать это можно небольшим числом команд.

AT+WD
[OK]
AT+WM=2
[OK]
AT+WAUTH=0
[OK]
AT+NDHCP=0
[OK]
AT+NSET=192.168.55.1,255.255.255.0,192.168.55.1
[OK]
AT+WA=MyCoolFreeAP,,8
        IP            SubNet            Gateway
  192.168.55.1:   255.255.255.0:   192.168.55.1
[OK]
AT+NSTCP=2345
[OK]

Пройдемся по каждой команде.

  1. AT+WD — разрываем все соединения, если они были.
  2. AT+WM=2 — модуль будет работать в режиме Limited AP.
  3. AT+WAUTH=0 — отсутствует шифрование.
  4. AT+NDHCP=0 — отключен DHCP. Поэтому необходимы статические параметры при подключении к этой точке доступа.
  5. AT+NSET=192.168.55.1,255.255.255.0,192.168.55.1 — задаём адрес модуля, маску подсети и адрес шлюза.
  6. AT+WA=MyCoolFreeNet,,8 — задаём имя сети и канал, на котором она будет работать. Две запятые подряд означают то, что между ними стоит необязательный параметр.
  7. AT+NSTCP=2345 — поднимаем TCP — сервер на 2345 порту.

Всё, мы подняли точку доступа. Видите, как всё просто!
А помните tcp-сервер на 2345 порту? Мы ведь его не просто так поднимали. Подключитесь к сети MyCoolFreeNet, откройте браузер и введите в адресной строке 192.168.55.1:2345.
Вопрос: что делает браузер, когда пользователь вводит что-то подобное? Правильно, посылает GET-запрос. А что делает наш умный WizFi220? Он кидает текст запроса в UART. Если не верите, то можно легко убедиться в этом самостоятельно. Поэтому с помощью этого модуля и МК можно сделать что-нибудь, управляемое через Wi-Fi с собственной админкой.
WizFi220, равно как и WizFi210, имеет встроенную web-админку. Но она слабая и хилая. Вот её общий вид.

Wi Fi в любительском проекте? Нет ничего проще!

Резюме

WizFi220/210 хороший и недорогой (примерно $38) модуль для тех, кто хочет попробовать поработать с Wi-FI. И встроить его куда-нибудь. К примеру, в радиоуправляемую машинку.
С этим модулем я работаю около трех месяцев и могу сказать про него следующее.
Плюсы: малые габариты, малое энергопотребление, простая схема включения, простота настройки и работы, дешевизна.
Минусы: не очень хорошая документация, некоторые непредвиденные сюрпризы при работе.

Берите, работайте, получайте удовольствие!

Автор: argz

Поделиться

* - обязательные к заполнению поля