Pull to refresh
0

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

Reading time 4 min
Views 341K


В не столь далекие времена поддержка устройством 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.

Продвинутые разработчики смогут использовать чип в качестве основного процессора в своих решениях с беспроводными датчиками, устройствами управления светом, водой и любыми другими «вещами», которые окружают каждого человека в его повседневной жизни.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+70
Comments 83
Comments Comments 83

Articles

Information

Website
coolrf.com
Registered
Employees
2–10 employees
Location
Россия
Representative