Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino ESP 8266程序问题_Arduino_Arduino Ide_Esp8266 - Fatal编程技术网

Arduino ESP 8266程序问题

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.

说明:

我正在ESP-8266(01)上制作一个Web服务器,它将使用Arduino Mega控制3个锁

锁将由蓝牙、ESP 8266(从手机获取方法)和我的笔记本电脑浏览器控制

-我可以用蓝牙HC-05(轻松地)完成这一切

我面临的问题是我的ESP-8266 wifi模块

我需要从ESP发送3个不同的字符串供arduino读取。 如果它的“AAAA”arduino将读取并解锁一号门,如果它是BBBB,则为2号门,等等

所以我使用了下面的代码:

#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