MÌnh đang làm 1 project nhỏ tạo web server để điều khiển LED dựa vào module ESP8266 và Arduino UNO
Mình có đọc và làm theo hướng dẫn của 1 anh bên Arduino.vn như link: http://arduino.vn/bai-viet/1226-web-server-voi-arduino-va-esp8266
Nhưng kết quả là mạch không phát wifi theo đúng SSID của mình và khi truy cập vào wifi phát ra thì không vào được cũng như không thể làm gì. Mong các bác giúp đỡ
link:http://arduino.vn/bai-viet/1226-web-server-voi-arduino-va-esp8266
Mình sử dụng Module Esp 8266 NodeMcu Lua CH340
Code của mình:
#include <SoftwareSerial.h>
#define DEBUG true
SoftwareSerial esp8266 (10,11); // 10-RX, 11-TX
char x;
void setup() {
Serial.begin(9600);
esp8266.begin(9600);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
// Gui tap lenh AT cho ESP 8266 de cai dat cac tham so cho wifi
guidulieu("AT+RST\r\n",2000,DEBUG); // Reset module
guidulieu("AT+CWMODE=1\r\n", 1000,DEBUG); // Chon chuc nang client cho ESP
guidulieu("AT+CWJAP=\"ESP-7873D5\",\"0905201891\"\r\n",1000,DEBUG); // Ket noi voi wifi
guidulieu("AT+CIFSR\r\n", 1000,DEBUG); // Xem ip la bao nhieu
guidulieu("AT+CIPMUX=1\r\n", 1000, DEBUG); // Configure for multiple connection
guidulieu("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // Mo cong 80
}
void loop () {
// Day la giao die web page viete duoi dang html ... de co the de dang edit
while (esp8266.available()) {
IncomingChar(esp8266.read());
}
if (x) {
String html = "<HTML>"
"<HEAD><TITTLE>PRO_VIP</TITTLE>"
"<form action=\"\" method=\"get\">"
"<input type=\"radio\" name=\"LED\" value=\"RED_ON\"> LED_ON"
"<input type=\"radio\" name=\"LED\" value=\"RED_OFF\"> LED_OFF<br>"
"<input type=\"submit\" value=\"Submit\">"
"</form>"
"</BODY></HTML>";
String cipsend = "AT+CIPSEND=0,"; // Gui chuoi data qua wifi
cipsend +=html.length();
cipsend +="\r\n";
guidulieu(cipsend,1000,DEBUG);
guidulieu(html,1000,DEBUG);
guidulieu("AT+CIPCLOSE=0\r\n",1000,DEBUG);
x = 0;
}
}
void IncomingChar (const byte InChar) {
static char InLine[300]; // Han che ky tu
static unsigned int Position = 0;
switch (InChar) {
case '\r': // Cai nay la xuong dong ... cho linux
break;
case '\n': // Xuong dong cho window
InLine[Position] = 0;
ProcessCommand(String(InLine));
Position = 0;
break;
default:
InLine[Position++] = InChar;
}
}
void ProcessCommand(String InLine) {
Serial.println("InLine: " +InLine);
if (InLine.startsWith("+IPD,")) {
x = 1;
}
// Lenh String.indexOf (Ky tu) Tra ve vi tri cua ky tu torng chuoi String. Neu gia tri do la -1 thi ky tu khong xuat hien
if (InLine.indexOf("RED_OFF") != -1) {
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
if (InLine.indexOf("RED_ON") != -1) {
digitalWrite(13,HIGH);
}
}
String guidulieu (String lenh, const int thoigian, boolean debug) {
String chuoigiatri = "";
esp8266.print(lenh); // Send the read character to the esp8266
long int time = millis();
while ((time + thoigian) > millis()) {
while (esp8266.available()) {
// The esp has data so display its output to the serial window
char c = esp8266.read();// read the next character
chuoigiatri +=c;
}
}
if (debug) {
Serial.print(chuoigiatri);
}
return chuoigiatri;
}