Trong bộ KIT TỰ HỌC LẬP TRÌNH ESP8266 NÂNG CAO BẰNG ARDUINO UNO R3 ĐƯỢC TẶNG KÈM THEO TÀI LIỆU HƯỚNG DẪN VÀ FILE CODE CHI TIẾTcó rất nhiều bài học hay bổ ích như: Điều khiển esp8266 bằng điện thoại, hiển thị giá trị cảm biến lên Web,...Trong bài viết này shop xin đề cập đến vấn đề điều khiển led hay 1 thiết bị điện bất kì bằng web thông qua module esp8266 V1.
Một số thành phần linh kiện trong bộ tự học lập trình ESP8266 Nâng Cao như sau:
ESP8266 là một chip tích hợp cao - System on Chip (SoC), có khả năng xử lý và lưu trữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho các hệ thống khác hoặc đóng vai trò như một giải pháp độc lập. ESP8266 cung cấp khả năng kết nối mạng wifi đầy đủ và khép kín, bạn có thể sử dụng nó để tạo một web server đơn giản hoặc sử dụng như một access point.
ESP8266 là một chip tích hợp cao - System on Chip (SoC), có khả năng xử lý và lưu trữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho các hệ thống khác hoặc đóng vai trò như một giải pháp độc lập.
Module wifi ESP8266 v1 cung cấp khả năng kết nối mạng wifi đầy đủ và khép kín, bạn có thể sử dụng nó để tạo một web server đơn giản hoặc sử dụng như một access point.
Đối tượng hướng đến
Ở đây tôi sử dụng trực tiếp LED nối với chân D13 được tích hợp sẵn trên board Arduino.
Arduino Uno nạp code bằng bootloader sử dụng USB UART. Arduino Uno gửi lệnh điều khiển (tập lệnh AT) cho ESP8266 cũng bằng giao tiếp UART. Tuy nhiên board Arduino chỉ có 1 chân RX và 1 chân TX cho phép thực hiện giao tiếp UART. Điều đó dẫn đến 2 sự lựa chọn:
Ở ví dụ dưới đây tôi chọn phương án thứ nhất và chọn thời gian delay là 5s để kết nối chân TX và RX của Arduino với chân RX và TX của ESP8266 ngay sau khi nạp code thành công.
........................................................................................................................................................
#define LED_PIN 13
#define CMD_SEND_BEGIN "AT+CIPSEND=0"
#define CMD_SEND_END "AT+CIPCLOSE=0"
#define TDHshop_PROTOCOL_HTTP 80
#define TDHshop_PROTOCOL_HTTPS 443
#define TDHshop_PROTOCOL_FTP 21
#define TDHshop_PROTOCOL_CURRENT TDHshop_PROTOCOL_HTTP
#define TDHshop_CHAR_CR 0x0D
#define TDHshop_CHAR_LF 0x0A
#define TDHshop_STRING_EMPTY ""
#define TDHshop_DELAY_SEED 1000
#define TDHshop_DELAY_1X (1*TDHshop_DELAY_SEED)
#define TDHshop_DELAY_2X (2*TDHshop_DELAY_SEED)
#define TDHshop_DELAY_3X (3*TDHshop_DELAY_SEED)
#define TDHshop_DELAY_4X (4*TDHshop_DELAY_SEED)
#define TDHshop_DELAY_0X (5*TDHshop_DELAY_SEED)
bool hasRequest = false;
void setup()
{
delay(TDHshop_DELAY_0X);
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
initESP8266();
}
void loop()
{
while(Serial.available())
{
bufferingRequest(Serial.read());
}
if(hasRequest == true)
{
String htmlResponse = "<!doctype html>"
"<html>"
"<head>"
"<title>TDHshop.com.vn</title>"
"</head>"
"<body>"
"<h1>TDHshop.com.vn ESP8266 DEMO</h1>"
"<form action='' method='GET'>"
"<input type='radio' name='LED' name='TDHshop' value='TDHshop_ON' /> LED ON<br/>"
"<input type='radio' name='LED' name='D2K' value='TDHshop_OFF' /> LED OFF<br/>"
"<input type='submit' value='Submit' />"
"</form>"
"</body>"
"</html>";
String beginSendCmd = String(CMD_SEND_BEGIN) + "," + htmlResponse.length();
deliverMessage(beginSendCmd, TDHshop_DELAY_1X);
deliverMessage(htmlResponse, TDHshop_DELAY_1X);
deliverMessage(CMD_SEND_END, TDHshop_DELAY_1X);
hasRequest = false;
}
}
void initESP8266()
{
deliverMessage("AT+RST", TDHshop_DELAY_2X);
deliverMessage("AT+CWMODE=2", TDHshop_DELAY_3X);
deliverMessage("AT+CWSAP=\"TDHshop.com.vn\",\"123456789\",1,4", TDHshop_DELAY_3X);
deliverMessage("AT+CIFSR", TDHshop_DELAY_1X);
deliverMessage("AT+CIPMUX=1", TDHshop_DELAY_1X); // để cho phép các kết nối TCP
deliverMessage(String("AT+CIPSERVER=1,") + TDHshop_PROTOCOL_CURRENT, TDHshop_DELAY_1X); //để tạo 1 TCP server
}
void bufferingRequest(char c)
{
static String bufferData = TDHshop_STRING_EMPTY;
switch (c)
{
case TDHshop_CHAR_CR:
break;
case TDHshop_CHAR_LF:
{
TDHshopProcedure(bufferData);
bufferData = TDHshop_STRING_EMPTY;
}
break;
default:
bufferData += c;
}
}
void TDHshopProcedure(const String& command)
{
hasRequest = command.startsWith("+IPD,");
if(command.indexOf("TDHshop_OFF") != -1)
{
digitalWrite(LED_PIN, LOW);
}
else if(command.indexOf("TDHshop_ON") != -1)
{
digitalWrite(LED_PIN, HIGH);
}
}
void deliverMessage(const String& msg, int dt)
{
Serial.println(msg);
delay(dt);
}
.............................................................................................................................
+ Tiếp đến trên máy tính hay điện thoại ta kết nối với Wifi có tên TDHshop.com.vn và nhập pass cho nó "123456789" .
+ Tiếp theo mở trình duyệt Web lên và gõ địa chỉ mặc định của ESP8266 là : 192.168.4.1 hiển thị như sau: