ESP8266: Революция в мире интернета вещей

77d94c3980ce4359ad101db18635a5d7.pngВ не столь далекие времена поддержка устройством Wi-Fi-соединения была дорога, громоздка и не энергоэффективна. Разработчики вынуждены были использовать радиоинтерфейсы на базе различных конкурирующих решений. Выдумывали свои «велосипеды» на уровне протоколов. И попадали в заветный Wi-Fi только с использованием дополнительных устройств, реализующих функционал моста. Стоивших весьма заметные деньги.

Но жизнь идет. Технологии стремительно развиваются. Термин «Интернет вещей» все чаще на слуху. Многим производителям микросхем, большим и не очень, наконец-то стало актуальным решить извечную проблему интеграции Wi-Fi в небольшие и недорогие устройства. Чтобы иметь возможность подключить их напрямую в инфраструктуру, уже имеющуюся почти в каждом жилище. Чтобы отъесть как можно больший кусок грядущего нового рынка подключаемых к сети простых устройств.

В 2014 году сразу несколько производителей объявили о выпуске соответствующих наборов микросхем. Сегодня речь пойдет о чипе ESP8266 китайской компании Espressif. Модулями UART-WIFI на базе этого чипа уже наводнен весь Китай и стоят они всего от $4,5 (с бесплатной международной доставкой).7e96c453d25345f1950eacdedd37a2a5.jpg

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

#include #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©; 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; } } 5411cf703e8741baa30126207935f9b8.jpg

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

ddef272be0d74c2eacafd2bf01cc75a0.jpg

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

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

© Habrahabr.ru