Wifi модуль ESP8266

Автор: Мясіщев Олександр Анатолійович

Дата публікації: 3 листопада 2015 р. 14:17:47 GMT / Категорія: Сучасні розробки

Wifi модуль ESP8266

      Миниатюрный WiFi модуль на базе новейшей микросхемы ESP8266 со встроенным стеком протокола TCP/IP и управлением AT-командами. Чип создан для использования в умных розетках, mesh-сетях, IP-камерах, беспроводных сенсорах, носимой электронике и так далее. Одним словом, ESP8266 появился на свет, чтобы стать мозгом грядущего «Интернета вещей».

Предусмотрено два варианта использования чипа: 1) в виде моста UART-WIFI, когда модуль на базе ESP8266 подключается к существующему решению на базе любого другого микроконтроллера и управляется AT-командами, обеспечивая связь решения с инфраструктурой Wi-Fi; 2) реализуя новое решение, использующее сам чип ESP8266 в качестве управляющего микроконтроллера.

Характеристики:

1. Поддерживаемые стандарты WI-FI: 802.11 b / g / n.
2. Поддерживаемы типы шифрования:WEP, WPA, WPA2.
3 .Поддерживаемые режимы работы: Клиент(STA), Точка доступа(AP), Клиент+Точка доступа(STA+AP).
4. Напряжение питания 1.7..3.6 В.
5. Потребляемый ток: до 215мА в зависимости от режима работы.
6. Количество GPIO: 16 (фактически до 10). Доступно на модулях: ESP-01 - 4, ESP-03 - 7+1, влючая UART. Существуют и другие варианты модулей.
7. Внешняя Flash память размером 512кб.
8. RAM данных  80 кб, RAM инструкций - 32 кб.
9. Спецификация чипа ESP8266_Specifications_v4.pdf

Выводы модуля:

1. Vcc - питание, +3,3В (максимально 3,6В)
2 .GND - общий
3. TXD - передача данных (уровень 3,3В)
4. RXD - приём данных (уровень 3,3В)
5. CH_PD - выключение модуля (низкий уровень активный, для включения
    модуля следует подать Vcc)
6. GPIO0 - вывод общего назначения 0
7. GPIO2 - вывод общего назначения 2
8. RST - сброс модуля (низкий уровень активный)

Примечание: GPIO 1 соотвествует вывод TXD. GPIO 3 - RXD. 

 

      Среда разработки Arduino (Arduino IDE) для ESP8266 позволяет создавать прошивки и прошивать их в ESP8266 точно так же, как это делается с Arduino. При этом никаких плат Arduino не требуется, это не тот случай, когда ESP8266 используется в качестве WiFi шилда для Arduino. Кроме того,  можно использовать практически все Arduino библиотеки с ESP8266 после небольшой доработки. В настоящее время уже достаточно много библиотек адаптировано для использования с ESP8266. Arduino IDE для ESP8266 поддерживает все существующие на сегодняшний день модули ESP8266 (потому что они особо и не отличаются), включая модули с флеш большего, чем 512k объема. В учебном плане студентов нашей специальности предусмотрены занятия для создания систем управления через Интернет с использованием микросхемы ESP8288 и смартфона на Androide.

Ниже показано, как сделать простейший wifi web server на модуле ESP8266(версия ESP01). Этот сервер  по команде с браузера будет включать и выключать единственный светодиод. Описание далее следует из источника на английском языке. Подключение модуля к компьютеру для его прошивки из среды Arduino IDE выполняется через любой USB to TTL преобразователь.

Wifi web server

Shopping list
– 1 ESP8266 (for example version ESP01)
– 1 led (I use a red one)
– 1 USB to TTL (I use FT232RL)
– 2 push buttons
– 10 wires
– 1 breadboard
– a 3.3V power source (I use an battery in this example, power from your USB TTL will most likely might NOT work)

Hardware

 

USB TTL ESP8266 ESP-01
—————————
GND — GND
TX — RX
RX — TX

———————–
+3.3V — CH_PD
pushbutton — GPI0
resetbutton — RST
battery – — GND
battery + — VCC
led,longleg — GPIO2
led,shortleg — GND

Coding

Copy this code. Change ssid into your wifi accesspoint, and change the password into yours.
and compile.

ledPin = 2 means that we are using GPIO2.

The programm for Arduino IDE

#include <ESP8266WiFi.h>
const char* ssid = "your-ssid"; // SSID Вашей точки доступа
const char* password = "your-password";  // Пароль доступа к Вашей точки доступа
int ledPin = 2; // GPIO2
WiFiServer server(80); 
void setup() {
  Serial.begin(115200);
  delay(10);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  // Start the server
  server.begin();
  Serial.println("Server started");
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
  // Match the request
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  } 
// Set ledPin according to the request
//digitalWrite(ledPin, value); 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.print("Led pin is now: ");
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>");
  client.println("</html>");
  delay(1);
  Serial.println("Client disonnected");
  Serial.println(""); 
} 

Uploading
Press reset button while holding flash button pressed. In other words. Press flash button, keep the flash button pushed while you once click on reset. You may now release the flash button. The ESP8266 is now in flash mode. You are able to upload the sketch.
Press upload in the Arduino IDE, arduino will compile and upload. After the sketch is uploaded, the led will blink for one second on and off.

Testing
Open the serial monitor from the menu tools. You will see the URL

The strange characters on the first line after a reset is normal.
Copy the URL from the serial monitor into your browser.

Try to click on and the light will go on (or off)

When you have uploaded the sketch, you may remove all the wires required for uploading.
This is what is left.

 

Построение более сложных wifi web server-в, которые управляют через Интернет  3-мя устройствами, считывают данные с температурного датчика , рассматривается на лабораторных и практических занятиях нашей кафедры. Т.е. наши студенты на занятиях практически изготавливают Интернет WiFi розетки с датчиком температуры.