Arduino ESP 8266程序问题
说明: 我正在ESP-8266(01)上制作一个Web服务器,它将使用Arduino Mega控制3个锁 锁将由蓝牙、ESP 8266(从手机获取方法)和我的笔记本电脑浏览器控制 -我可以用蓝牙HC-05(轻松地)完成这一切 我面临的问题是我的ESP-8266 wifi模块 我需要从ESP发送3个不同的字符串供arduino读取。 如果它的“AAAA”arduino将读取并解锁一号门,如果它是BBBB,则为2号门,等等 所以我使用了下面的代码:Arduino ESP 8266程序问题,arduino,arduino-ide,esp8266,Arduino,Arduino Ide,Esp8266,说明: 我正在ESP-8266(01)上制作一个Web服务器,它将使用Arduino Mega控制3个锁 锁将由蓝牙、ESP 8266(从手机获取方法)和我的笔记本电脑浏览器控制 -我可以用蓝牙HC-05(轻松地)完成这一切 我面临的问题是我的ESP-8266 wifi模块 我需要从ESP发送3个不同的字符串供arduino读取。 如果它的“AAAA”arduino将读取并解锁一号门,如果它是BBBB,则为2号门,等等 所以我使用了下面的代码: #include <ESP8266WiFi.
#include <ESP8266WiFi.h>
const char* ssid = "Do-Not-Ask-For-Password";
const char* password = "ITISMYPASSWORD";
//const char* ssid = "`STAR-NET-Azhar-32210352";
//const char* password = "ITISMYPASSWORD";
int ledPin = 2; // GPIO2
WiFiServer server(80);
// Update these with values suitable for your network.
IPAddress ip(192,168,8,128); //Node static IP
IPAddress gateway(192,168,8,1);
IPAddress subnet(255,255,255,0);
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);
WiFi.config(ip, gateway, subnet);
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() {
ESP.wdtDisable();
// 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);
// }
if(!client.available()){
delay(1);
client.flush();
}
// Read the first line of the request
String request = client.readStringUntil('\r');
//Serial.println(request);
client.flush();
// Match the request
int value1 = LOW;
int value2 = LOW;
int value3 = LOW;
if (request.indexOf("/LOCK=ON1") != -1) {
//digitalWrite(ledPin, HIGH);
value1 = HIGH;
Serial.println("AAAA");
}
if(request.indexOf("/LOCK=ON2") != -1){
value2 = HIGH;
Serial.println("BBBB");
}
if(request.indexOf("/LOCK=ON3") != -1){
value3 = HIGH;
Serial.println("CCCC");
}
// 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.println("<br><br>");
client.print("LOCK ONE IS NOW: ");
if(value1 == HIGH) {
client.print("UNLOCKED");
// Serial.println("A");
} else {
client.print("LOCKED");
}
client.println("<br><br>");
client.print("LOCK TWO IS NOW: ");
if(value2 == HIGH) {
client.print("UNLOCKED");
// Serial.println("B");
} else {
client.print("LOCKED");
}
client.println("<br><br>");
client.print("LOCK THREE IS NOW: ");
if(value3 == HIGH) {
client.print("UNLOCKED");
//Serial.println("C");
} else {
client.print("LOCKED");
}
client.println("<br><br>");
client.println("CLICK <a href=\"/LOCK=ON1\">HERE</a> TO UNLOCK THE LOCK ONE<br>");
client.println("CLICK <a href=\"/LOCK=ON2\">HERE</a> TO UNLOCK THE LOCK TWO<br>");
client.println("CLICK <a href=\"/LOCK=ON3\">HERE</a> TO UNLOCK THE LOCK THREE<br>");
client.println("</html>");
delay(100);
//Serial.println("client disconnected");
// Serial.println("");
}
#包括
const char*ssid=“不要询问密码”;
const char*password=“ITISMYPASSWORD”;
//const char*ssid=“`STAR-NET-Azhar-32210352”;
//const char*password=“ITISMYPASSWORD”;
int-ledPin=2;//GPIO2
WiFiServer服务器(80);
//使用适合您的网络的值更新这些值。
ip地址(192168,8128)//节点静态IP
IP地址网关(192168,8,1);
IP地址子网(255255,0);
无效设置(){
序列号开始(115200);
延迟(10);
引脚模式(LED引脚,输出);
数字写入(ledPin,低电平);
//连接到WiFi网络
Serial.println();
Serial.println();
串行打印(“连接到”);
序列号println(ssid);
WiFi.begin(ssid,密码);
WiFi.config(ip、网关、子网);
while(WiFi.status()!=WL_已连接){
延迟(500);
连续打印(“.”);
}
Serial.println(“”);
Serial.println(“WiFi连接”);
//启动服务器
server.begin();
Serial.println(“服务器已启动”);
//打印IP地址
打印(“使用此URL连接:”);
Serial.print(“http://”);
Serial.print(WiFi.localIP());
Serial.println(“/”);
}
void循环(){
尤其是wdtDisable();
//检查客户端是否已连接
WiFiClient=server.available();
如果(!客户端){
返回;
}
//等待客户端发送一些数据
//Serial.println(“新客户”);
//而(!client.available()){
//延迟(1);
// }
如果(!client.available()){
延迟(1);
client.flush();
}
//阅读请求的第一行
字符串请求=client.readStringUntil('\r');
//Serial.println(请求);
client.flush();
//符合要求
int值1=低;
int值2=低;
int值3=低;
if(request.indexOf(“/LOCK=ON1”)!=-1){
//数字写入(ledPin,高电平);
值1=高;
序列号。打印号(“AAAA”);
}
if(request.indexOf(“/LOCK=ON2”)!=-1){
值2=高;
序列号。打印号(“BBBB”);
}
if(request.indexOf(“/LOCK=ON3”)!=-1){
值3=高;
序列号:println(“CCCC”);
}
//根据要求设置ledPin
//数字写入(ledPin,值);
//返回响应
client.println(“HTTP/1.1200ok”);
client.println(“内容类型:text/html”);
client.println(“”;//不要忘记这个
客户。println(“”);
客户。println(“”);
client.println(“
”);
client.print(“锁1现在是:”);
如果(值1==高){
客户。打印(“解锁”);
//序列号。打印号(“A”);
}否则{
客户。打印(“锁定”);
}
client.println(“
”);
print(“锁2现在是:”);
如果(值2==高){
客户。打印(“解锁”);
//序列号。打印号(“B”);
}否则{
客户。打印(“锁定”);
}
client.println(“
”);
print(“锁三现在是:”);
如果(值3==高){
客户。打印(“解锁”);
//序列号。打印号(“C”);
}否则{
客户。打印(“锁定”);
}
client.println(“
”);
client.println(“单击以解锁锁一
”;
client.println(“单击以解锁锁2
”;
client.println(“单击以解锁锁三
”;
客户。println(“”);
延迟(100);
//Serial.println(“客户端断开”);
//Serial.println(“”);
}
我在浏览器上得到的结果是(这正是我所需要的):
问题:
现在的问题是,有时它会丢失我发送的串行数据,例如,如果我单击“解锁门1”,它会发送数据,而我单击“解锁门2”,它不会执行任何操作,当我重置时,它会发送所有3个数据,但会发送两到3次,然后模块会自行重置它
这是我从串行监视器得到的:
现在,我已经搜索了很多信息,并找出了我在代码中犯的错误
以下是我的ESP的连接方式:
vcc和CHPD至3.3V断路器
电源供电系统的接地和arduino接地
GP 0------->3.3v,带2.2k电阻器(非闪烁状态)
Rst------->3.3v带电阻器
接收到发送
发送到接收
有没有办法解决这个问题
是否有其他方法控制ESP 8266模块的Arduino引脚(6个衍射引脚)
我已经试了很多天了,请帮忙 好的,我是为那些面临同样问题的人发的!!我以Hello ESP为例,将其修改为打印序列 在Mega上,我的序列号是在9600开始的,在ESP上也是在9600开始的:|这是代码。。。。服务器速度慢和WDT问题几乎消失了
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
//const int RELAY_PIN = 2; //RELAY
const char* ssid = "Do-Not-Ask-For-Password";
const char* password = "AeDrki$32ILA!$#2";
MDNSResponder mdns;
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/plain", "hWelcome To Door Unlock Project By Haziq Sheikh");
}
void handleNotFound(){
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void setup(void){
// pinMode(RELAY_PIN, OUTPUT);
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
//digitalWrite(RELAY_PIN, 1);
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
// digitalWrite(RELAY_PIN, 0);
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.on("/lock1", [](){
server.send(200, "text/plain", "Okay Door One Unlocked");
Serial.println("AAAA");
});
server.on("/lock2", [](){
server.send(200, "text/plain", "Okay -- Door 2 Unlocked");
Serial.println("BBBB");
});
server.on("/lock3", [](){
server.send(200, "text/plain", "Okay -- Door 3 is Unlocked");
Serial.println("CCCC");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
#包括
#包括
#包括
#包括
//常数int继电器_引脚=2//转发
const char*ssid=“不要询问密码”;
const char*password=“AeDrki$32ILA!$#2”;
mdnsrresponder-mdns;
ESP8266Web服务器(80);
void handleRoot(){
发送(200,“文本/普通”,“哈兹克·谢赫的hWelcome上门开锁项目”);
}
void handleNotFound(){
String message=“找不到文件\n\n”;
消息+=“URI:”;
message+=server.uri();
消息+=“\n方法:”;
message+=(server.method()==HTTP\u GET)?“GET”:“POST”;
消息+=“\n消息:”;
message+=server.args();
消息+=“\n”;
对于(uint8_t i=0;i