В не столь далекие времена поддержка устройством 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.0rnrn";
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.
Продвинутые разработчики смогут использовать чип в качестве основного процессора в своих решениях с беспроводными датчиками, устройствами управления светом, водой и любыми другими «вещами», которые окружают каждого человека в его повседневной жизни.
Автор: webself