C++ 每隔一次HTTP Post请求,Esp32就会陷入恐慌

C++ 每隔一次HTTP Post请求,Esp32就会陷入恐慌,c++,http,post,esp32,panic,C++,Http,Post,Esp32,Panic,正如标题所示,我的Esp32每收到一次HTTP Post请求就会惊慌失措。第一次运行正常,第二次出现400错误,Esp陷入恐慌,然后重新启动 如果Esp没有为任何其他东西供电,那么这个问题就不会那么严重,不管它是怎么做的。其结果是,它供电的传感器工作不正常,并提供错误的完整数据。下面我已经包括了错误代码 Verbonden met WiFi, met Ip adres: myip Distance: 35 cm Temperatuur: 19.70 Luchtvochtigheid: 74.00

正如标题所示,我的Esp32每收到一次HTTP Post请求就会惊慌失措。第一次运行正常,第二次出现400错误,Esp陷入恐慌,然后重新启动

如果Esp没有为任何其他东西供电,那么这个问题就不会那么严重,不管它是怎么做的。其结果是,它供电的传感器工作不正常,并提供错误的完整数据。下面我已经包括了错误代码

Verbonden met WiFi, met Ip adres: myip
Distance: 35 cm
Temperatuur: 19.70
Luchtvochtigheid: 74.00
Grondvochtigheid: 4095
Lichsterkte sensor 1: 432.00
Lichsterkte sensor 2: 288.00
Lichsterkte sensor 3: 0.00
HTTP Response code: 200
Test: {"Log":{}}
Distance: 35 cm
Temperatuur: 19.70
Luchtvochtigheid: 74.00
Grondvochtigheid: 4095
Lichsterkte sensor 1: 480.00
Lichsterkte sensor 2: 290.00
Lichsterkte sensor 3: 0.00
HTTP Response code: 400
Test: "Missing values"
Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0xc000e82e  PS      : 0x00060430  A0      : 0x800d3002  A1      : 0x3ffb1d90
A2      : 0x3ffb1f10  A3      : 0xc000e82e  A4      : 0x00000001  A5      : 0x0000ff00
A6      : 0x00ff0000  A7      : 0xff000000  A8      : 0x8015dd02  A9      : 0x3ffc11dc
A10     : 0x3ffba818  A11     : 0x3f401763  A12     : 0x00000002  A13     : 0x0000ff00  
A14     : 0x00ff0000  A15     : 0xff000000  SAR     : 0x0000000a  EXCCAUSE: 0x00000014
EXCVADDR: 0xc000e82c  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xffffffff

Backtrace: 0x4000e82e:0x3ffb1d90 0x400d2fff:0x3ffb1db0 0x400d3071:0x3ffb1dd0 0x400d1c4e:0x3ffb1df0 
0x400d6625:0x3ffb1fb0 0x40088f69:0x3ffb1fd0

Rebooting...
ets Jun  8 2016 00:22:57
<>我的C++代码如下:

// Includen van alle benodigde libraries
#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <DHT.h>

// Definen van alle datapins van alle componenten
#define DHTPIN 14
#define DHTTYPE DHT11
#define echoPin 26
#define grondPin 33
#define trigPin 27
#define lichtPin1 32
#define lichtPin2 35 
#define lichtPin3 34
//#define redPin 2
//#define greenPin 4

// magic number handlers
const int procentHulpwaarde = -1;
const int nulWaarde = 0;
const int potDiepte = 31;
const int grensWaardepostUpdate = 10;
const int procentRekenwaarde = 100;
const int sensorRekenwaarde = 4095;
const int timerDelaywaarde = 1000;

// Declaratie variabeles
String strluchtvochtigheid;
String strtemperatuur;
String strgrondvochtigheid;
String strlichtsterkte1;
String strlichtsterkte2;
String strlichtsterkte3;
String strwaterniveau;

double dblluchtvochtigheid = nulWaarde;
double dbltemperatuur = nulWaarde;
double lichtSterkte1;
double lichtSterkte2;
double lichtSterkte3;

int distance;
int sensorValueGrond; 
int postCounter;

long duration;
unsigned long lastTime = nulWaarde;
unsigned long timerDelay = timerDelaywaarde;

// Aanroepen van benodigdheden voor miscellaneous functies binnen de code
DHT dht(DHTPIN, DHTTYPE);
StaticJsonDocument<200> doc;

// Declaratie van WiFi netwerken die gebruikt kunnen worden

//const char* ssid = "12connect";
//const char* password = "";

// Declaratie van de eindbestemming
const char* serverName = "my target";


void setup() 
{
  Serial.begin(115200);

  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  //pinMode(redPin, OUTPUT);
  //pinMode(greenPin, OUTPUT);

  dht.begin();

  WiFi.begin(ssid, password);
  Serial.println("Connecting");

  while(WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Verbonden met WiFi, met Ip adres: ");
  Serial.println(WiFi.localIP());
}

void loop()
{
  // Ultrasonic sensor
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  // Natuurkundige berekening voor de hoeveelheid water in het reservoir
  distance = duration * 0.034 / 2; 

 if ((millis() - lastTime) > timerDelay) 
  {

    if(WiFi.status()== WL_CONNECTED)
    {

  //Lees alle sensoren uit

  // DHT sensor
  dblluchtvochtigheid = dht.readHumidity();
  dbltemperatuur = dht.readTemperature();

  // Grondvochtigheids sensor
  sensorValueGrond = analogRead(grondPin); 

  // Ultrasonic sensor
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  // Natuurkundige berekening voor de afstand
  distance = duration * 0.034 / 2; 

  // Lichtsterkte sensoren
  lichtSterkte1 = analogRead(lichtPin1);
  lichtSterkte2 = analogRead(lichtPin2);
  lichtSterkte3 = analogRead(lichtPin3);

  // Print alle waardes uit (voor debugging)
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  Serial.print("Temperatuur: ");
  Serial.println(dbltemperatuur);
  Serial.print("Luchtvochtigheid: ");
  Serial.println(dblluchtvochtigheid);
  Serial.print("Grondvochtigheid: ");
  Serial.println(sensorValueGrond);
  Serial.print("Lichtsterkte sensor 1: ");
  Serial.println(lichtSterkte1);
  Serial.print("Lichtsterkte sensor 2: ");
  Serial.println(lichtSterkte2);
  Serial.print("Lichtsterkte sensor 3: ");
  Serial.println(lichtSterkte3);

  HTTPClient http;
  http.begin(serverName);

  //procentuele omrekening van alle getallen
  sensorValueGrond = ((((sensorValueGrond  - sensorRekenwaarde) * 
  procentHulpwaarde) * procentRekenwaarde) / sensorRekenwaarde);
  distance = ((distance * procentRekenwaarde) / potDiepte) - 
  procentRekenwaarde;
  lichtSterkte1 = (lichtSterkte1 * procentRekenwaarde) / sensorRekenwaarde;
  lichtSterkte2 = (lichtSterkte2 * procentRekenwaarde) / sensorRekenwaarde;
  lichtSterkte3 = (lichtSterkte3 * procentRekenwaarde) / sensorRekenwaarde;

  
  // Omzetten van alle getallen naar strings, zo kunnen ze worden 
  meegegeven in de JSON string
  strtemperatuur = strtemperatuur + dbltemperatuur;
  strluchtvochtigheid = strluchtvochtigheid + dblluchtvochtigheid;
  strwaterniveau = strwaterniveau + distance;
  strgrondvochtigheid = sensorValueGrond + strgrondvochtigheid;
  strlichtsterkte1 = strlichtsterkte1 + lichtSterkte1;
  strlichtsterkte2 = strlichtsterkte2 + lichtSterkte2;
  strlichtsterkte3 = strlichtsterkte3 + lichtSterkte3;

  
  // Toevoegen van headers aan de HTTP Post, zo kunnen we gebruik maken van 
  gebruikersnamen en wachtwoorden
  http.addHeader("Content-Type", "application/json");
  http.addHeader("X-AUTH-TOKEN", "TEST");
  http.addHeader("X-AUTH-ID", "wajdhlawkjhdlawjkdhawkjdh");
  http.addHeader("Temperatuur", strtemperatuur);
  http.addHeader("Luchtvochtigheid", strluchtvochtigheid);
  http.addHeader("Grondvochtigheid", strgrondvochtigheid);
  http.addHeader("Waterniveau", strwaterniveau);
  http.addHeader("Lichtsterkte1", strlichtsterkte1);
  http.addHeader("Lichtsterkte2", strlichtsterkte2);
  http.addHeader("Lichststerkte3", strlichtsterkte3);
  
  // HTTP Post
  int httpResponseCode = http.POST("{\"Temperatuur\" : "+strtemperatuur+" , 
  \"Luchtvochtigheid\" : "+strluchtvochtigheid+" , \"Grondvochtigheid\" : 
  "+strgrondvochtigheid+" , \"Waterniveau\" : "+strwaterniveau+" , 
  \"Lichtsterkte1\" : "+strlichtsterkte1+" , \"Lichtsterkte2\" : 
  "+strlichtsterkte2+" , \"Lichtsterkte3\" : "+strlichtsterkte3+"}");
  String response = http.getString();
  Serial.print("HTTP Response code: ");
  Serial.println(httpResponseCode);
  Serial.print("Test: ");
  Serial.println(response);

    
  // Schoon alles op
  
  strtemperatuur = "";
  strluchtvochtigheid = "";
  strgrondvochtigheid = "";
  strlichtsterkte1 = "";
  strwaterniveau = "";
  strlichtsterkte1  = "";
  postCounter = nulWaarde;
  http.end();
}

else 
{
  Serial.println("WiFi Disconnected");
}   
lastTime = millis();


   }
   } 

   }

enter code here
//Includen van alle benodigde库
#包括
#包括
#包括
#包括
#包括
//定义van alle数据管脚van alle组件
#定义DHTPIN 14
#定义DHT类型DHT11
#定义echoPin 26
#定义grondPin 33
#定义trigPin 27
#定义lichtPin1 32
#定义lichtPin2 35
#定义lichtPin3 34
//#定义redpin2
//#定义绿针4
//幻数处理程序
const int procentHulpwaarde=-1;
纽瓦德常数=0;
常数int potDiepte=31;
常数int grenswaardepostate=10;
常数int PROCENTREKENWARDE=100;
const int sensorRekenwaarde=4095;
常数int timerDelaywaarde=1000;
//变化无常
字符串strluchtvochtighide;
串温器;
字符串strgrondvochtighide;
字符串strlichtsterkte1;
字符串strlichtsterkte2;
字符串strlichtsterkte3;
字符串strwarterniveau;
双DblluchtVochtighide=纽瓦德;
双dbltemperatuur=努尔瓦德;
双lichtSterkte1;
双lichtSterkte2;
双lichtSterkte3;
整数距离;
int-sensorValueGrond;
整数后计数器;
持续时间长;
无符号长lastTime=nulWaarde;
无符号long-timerDelay=timerDelaywaarde;
//Aanroepen van Benodigheden voor杂项功能代码
DHT-DHT(DHTPIN,DHTTYPE);
静态文件;
//WiFi网络声明
//const char*ssid=“12connect”;
//const char*password=“”;
//埃因德贝斯特明酒店
const char*serverName=“我的目标”;
无效设置()
{
序列号开始(115200);
引脚模式(trigPin,输出);
pinMode(echoPin,输入);
//引脚模式(红色引脚,输出);
//引脚模式(绿色引脚,输出);
dht.begin();
WiFi.begin(ssid,密码);
Serial.println(“连接”);
while(WiFi.status()!=WL_已连接)
{
延迟(500);
连续打印(“.”);
}
Serial.println(“”);
串行打印(“Verbonden met WiFi,met Ip地址:”);
Serial.println(WiFi.localIP());
}
void循环()
{
//超声波传感器
数字写入(trigPin,低电平);
延迟微秒(2);
数字写入(trigPin,高);
延迟微秒(10);
数字写入(trigPin,低电平);
持续时间=脉冲强度(echoPin,高);
//het水库中的Natuurkundige berekening voor de hoeveelheid水
距离=持续时间*0.034/2;
如果((毫秒()-lastTime)>timerDelay)
{
如果(WiFi.status()==WL_已连接)
{
//所有传感器电路
//DHT传感器
dblluchtvochtighide=dht.read湿度();
dbltemperatuur=dht.readTemperature();
//Grondvochtighides传感器
传感器值Grond=模拟读数(grondPin);
//超声波传感器
数字写入(trigPin,低电平);
延迟微秒(2);
数字写入(trigPin,高);
延迟微秒(10);
数字写入(trigPin,低电平);
持续时间=脉冲强度(echoPin,高);
//纳图尔肯迪格·贝雷肯宁·沃德·阿弗斯坦德(Natuurkundige berekening voor de afstand)
距离=持续时间*0.034/2;
//利希特斯特克特传感器
lichtSterkte1=模拟读取(lichtPin1);
lichtSterkte2=模拟读取(lichtPin2);
lichtSterkte3=模拟读取(lichtPin3);
//打印所有waardes uit(voor调试)
串行打印(“距离:”);
串行打印(距离);
序列号。打印号(“cm”);
串行打印(“Temperatuur:”);
串行打印LN(dbltemperatuur);
连载打印(“Luchvochtighide:”);
序列号println(dblluchtvochtighide);
连续打印(“Grondvochtighide:”);
Serial.println(sensorValueGrond);
串行打印(“Lichtsterkte传感器1:”;
序列号println(lichtSterkte1);
串行打印(“Lichtsterkte传感器2:”);
序列号println(lichtSterkte2);
串行打印(“Lichtsterkte传感器3:”);
序列号println(lichtSterkte3);
HTTPClient-http;
http.begin(serverName);
//奥姆雷克宁·范阿勒·盖塔伦教授
sensorValueGrond=(((sensorValueGrond-sensorRekenwaarde)*
procentHulpwaarde)*procentRekenwaarde)/sensorRekenwaarde);
距离=((距离*procentRekenwaarde)/potDiepte)-
普罗森特肯瓦德;
lichtSterkte1=(lichtSterkte1*procentRekenwaarde)/sensorRekenwaarde;
lichtSterkte2=(lichtSterkte2*procentRekenwaarde)/sensorRekenwaarde;
lichtSterkte3=(lichtSterkte3*procentRekenwaarde)/sensorRekenwaarde;
//Omzetten van alle getallen naar strings,zo kunnen ze worden
deJSON字符串中的meegegeven
strtemperatuur=strtemperatuur+dbltemperatuur;
strluchtvochtighide=strluchtvochtighide+dblluchtvochtighide;
strwarterniveau=strwarterniveau+距离;
strgrondvochtigheid=传感器值grond+strgrondvochtigheid;
strlichtsterkte1=strlichtsterkte1+lichtSterkte1;
strlichtsterkte2=strlichtsterkte2+lichtSterkte2;
strlichtsterkte3=strlichtsterkte3+lichtSterkte3;
//Toevoegen van headers和HTTP Post,zo kunnen we gebruik maken van
瓦赫特伍尔登酒店
addHeader(“内容类型”、“应用程序/json”);
addHeader(“X-AUTH-TOKEN”,“TEST”);
http.addHeader(“X-AUTH-ID”,“wajdhlawkjhdlawjkdhawkjdh”);
addHeader(“Temperatuur”,strtemperatuur);
addHeader(“LuchtVochtighide”,strluchtVochtighide);
addHeader(“grondvochtighide”,strgrondvochtighide);
http.addHeader(“Waterniveau”,Strwarterniveau);
addHeader(“Lichtsterkte1”,strlichtsterkte1);
addHeader(“Lichtsterkte2”,strlichtsterkte2);
addHeader(“lichtsterkte3”,strlichtsterkte3);
//HTTP Post
int-httpResponseCode=http.POST(“{\”Temperatuur\”:“+strtemperatuur+”,
\“Luchtochtighide\”:“+strluchtochtighide+”,“Grondvochtighide\”:
“+strgrondvochtigheid+”,“Waterniveau\”:“+Strwarterniveau+”,
\“Lichtsterkte1\”:“+strlichtsterkte1+”,“Lichtsterkte2\”:
“+strlichtsterkte2+”,\“Lichtsterkte3\”:“+strlichtsterkte3+”}”