
В не столь далекие времена поддержка устройством Wi-Fi-соединения была дорога, громоздка и не энергоэффективна. Разработчики вынуждены были использовать радиоинтерфейсы на базе различных конкурирующих решений. Выдумывали свои «велосипеды» на уровне протоколов. И попадали в заветный Wi-Fi только с использованием дополнительных устройств, реализующих функционал моста. Стоивших весьма заметные деньги.
Но жизнь идет. Технологии стремительно развиваются. Термин «Интернет вещей» все чаще на слуху. Многим производителям микросхем, большим и не очень, наконец-то стало актуальным решить извечную проблему интеграции Wi-Fi в небольшие и недорогие устройства. Чтобы иметь возможность подключить их напрямую в инфраструктуру, уже имеющуюся почти в каждом жилище. Чтобы отъесть как можно больший кусок грядущего нового рынка подключаемых к сети простых устройств.
В 2014 году сразу несколько производителей объявили о выпуске соответствующих наборов микросхем. Сегодня речь пойдет о чипе ESP8266 китайской компании Espressif. Модулями UART-WIFI на базе этого чипа уже наводнен весь Китай и стоят они всего от $4,5 (с бесплатной международной доставкой).

UART-WIFI мост на ESP8266
Модуль уже можно купить на Taobao, AliExpress и во множестве других мест. Доступной документации мало, но руководство по работе через AT-команды можно свободно скачать уже даже не только на китайском языке. В сети начинают появляться примеры работы с модулем для Arduino:

#include <SoftwareSerial.h> #define SSID "xxxxxxxx" #define PASS "xxxxxxxx" #define DST_IP "220.181.111.85" //baidu.com SoftwareSerial dbgSerial(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(57600); Serial.setTimeout(5000); dbgSerial.begin(9600); //can't be faster than 19200 for softserial dbgSerial.println("ESP8266 Demo"); //test if the module is ready Serial.println("AT+RST"); delay(1000); if(Serial.find("ready")) { dbgSerial.println("Module is ready"); } else { dbgSerial.println("Module have no response."); while(1); } delay(1000); //connect to the wifi boolean connected=false; for(int i=0;i<5;i++) { if(connectWiFi()) { connected = true; break; } } if (!connected){while(1);} delay(5000); //print the ip addr /*Serial.println("AT+CIFSR"); dbgSerial.println("ip address:"); while (Serial.available()) dbgSerial.write(Serial.read());*/ //set the single connection mode Serial.println("AT+CIPMUX=0"); } void loop() { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += DST_IP; cmd += "\",80"; Serial.println(cmd); dbgSerial.println(cmd); if(Serial.find("Error")) return; cmd = "GET / HTTP/1.0\r\n\r\n"; Serial.print("AT+CIPSEND="); Serial.println(cmd.length()); if(Serial.find(">")) { dbgSerial.print(">"); }else { Serial.println("AT+CIPCLOSE"); dbgSerial.println("connect timeout"); delay(1000); return; } Serial.print(cmd); delay(2000); //Serial.find("+IPD"); while (Serial.available()) { char c = Serial.read(); dbgSerial.write(c); if(c=='\r') dbgSerial.print('\n'); } dbgSerial.println("===="); delay(1000); } boolean connectWiFi() { Serial.println("AT+CWMODE=1"); String cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; dbgSerial.println(cmd); Serial.println(cmd); delay(2000); if(Serial.find("OK")) { dbgSerial.println("OK, Connected to WiFi."); return true; }else { dbgSerial.println("Can not connect to the WiFi."); return false; } }

Интересная схемотехника, сравнение с конкурентами
Из пресс-релизов Espressif заметно, что производитель гордится степенью интеграции компонентов своего чипа. Действительно, типовая обвязка микросхемы состоит всего из семи элементов. Плата модуля практически пуста, компонентов — мизерное количество. Все это естественно будет сказываться на стоимости конечных устройств в сторону удешевления.
Если взглянуть на продукцию конкурентов, выигрыш минимизации штатной обвязки становится еще более очевидным. Так выглядит типовой модуль на базе MT7681, конкурирующего решения от Mediatek:

Вот модуль на базе чипсета от Marvell, «a highly cost-effective, flexible and easy-to-use hardware/software platform to build a new generation of connected device»:

В чем революция?
С появлением таких недорогих решений даже у домашних разработчиков различных arduino-решений «умных домов» появляется недоступная до сих пор возможность подключения своих устройств в Wi-Fi-сети. ESP8266 уже называют в интернете «убийцей NRF24LE1». При даже меньшей стоимости модули на базе ESP8266 сулят гораздо больше возможностей. Теперь в устройствах на Arduino можно будет просто и недорого реализовать и полноценный веб-интерфейс, и удобный JSON API.
Продвинутые разработчики смогут использовать чип в качестве основного процессора в своих решениях с беспроводными датчиками, устройствами управления светом, водой и любыми другими «вещами», которые окружают каждого человека в его повседневной жизни.
