我已经为3个传感器数据创建了3个字段(gsr传感器,dht22温度和湿度传感器)。但是这些值不会同时更新到它们各自的字段中。我已经写了如下代码,如果有人能帮助我就太好了。谢谢你!
#include
# include < SoftwareSerial.h >
dht dht;
#define dht11_pin 12.
#define rx 2.
#define tx 3.
const int gsr = a2;
int sensorvalue = 0;
int gsr_average = 0;
String AP = "XXXXXXXXXXX";/ /美联社的名字
字符串通过=“xxxxxxxxxxxxx”;// ap密码
String API = "YYYYYYYYYYYY";//写入API KEY
String HOST = "api.thingspeak.com";
String PORT = "80";
//字符串字段= "field1";
int countTrueCommand;
int countTimeCommand;
Boolean found = false;
// int valsensor = 1;
Softwareserial ESP8266(RX,TX);
void setup(){
Serial.begin (9600);
esp8266.begin (115200);
Sendcommand(“AT”,5,“OK”);
sendcommand(“+ cwmode = 1”,5,“确定”);
sendcommand(“+ cwjap = \”“+ ap +”\“,\”+ pass +“\”“,20,”确定“);
}
无效循环(){
/ / valSensor = getSensorData ();
sendtoServer ();
}
字符串getTemperatureValue () {
int chk = DHT.read22(DHT11_PIN);
float t = dht.temperature;
系列。打印(“温度(C) = ");
serial.println(dht.temperature);
延迟(50);
返回字符串(t);
}
字符串getHumidityValue () {
// int chk = DHT.read22(DHT11_PIN);
浮动h = DHT.humidity;
Serial.print(“湿度=”);
以DHT.humidity);
延迟(50);
返回字符串(h);
}
字符串getGSRValue () {
长= 0;
for(int i=0;i<10;i++) //对10个测量值进行平均,以消除故障
{
sensorValue = analogRead (GSR);
+ = sensorValue总和;
延迟(5);
}
gsr_average =总和/ 10;
serial.println(gsr_average);
返回字符串(gsr_average);
}
空白sendtoServer () {
String getData = "GET /update? "api_key="+ API +"&field1="+ getGSRValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData.length() + 4), 4,“>”);
esp8266.println (getData);延迟(1000);countTrueCommand + +;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
String getData2 = "GET /update? "api_key="+ API +"&field2="+ getTemperatureValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData2.length() + 4), 4,“>”);
esp8266.println (getData2);延迟(500);countTrueCommand + +;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
String getData3 =“get /更新?api_key =”+ API +“&Field3 =”+ GethumityValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData3.length() + 4), 4,“>”);
esp8266.println(getdata3);延迟(250); counttruecommand ++;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
}
void sendCommand(String command, int maxTime, char readReplay[]) {
serial.print(counttruecommand);
并同时”。在命令=> ");
并同时(命令);
系列。打印(" ");
而(countTimeCommand < (maxTime * 1))
{
esp8266.println(命令);/ / + cipsend
如果(esp8266.find (readReplay)) / /好吧
{
发现=真;
打破;
}
counttimecommand ++;
}
如果(发现== true)
{
以“OYI”);
countTrueCommand + +;
countTimeCommand = 0;
}
如果发现= = false)
{
以“失败”);
countTrueCommand = 0;
countTimeCommand = 0;
}
发现= false;
}