没有得到从thingspeak读取多个senaors数据

22日视图(30天)
我用arduino兆和esp 01。我阅读连续监测。但thingspeak显示0 5传感器数据字段。这段代码的问题在哪里,请帮助我。
Esp - 01代码
# include“ThingSpeak。h”# include ESP8266WiFi.h
字符名称[]= " xxxxxxx”;/ /这里SSID char[] =通过“xxxxxxxx”;/ /这里Passowrd
无符号长Channel_ID = xxxxxx;/ /通道ID const char * myWriteAPIKey =“xxxxxxxx”;/ /写API键
const int Field_Number_1 = 1;const int Field_Number_2 = 2;const int Field_Number_3 = 3;const int Field_Number_4 = 4;const int Field_Number_5 = 5;字符串值= " ";int value_1 = 0, value_2 = 0, value_3 = 0, value_4 = 0, value_5 = 0;WiFiClient客户;
无效的设置(){Serial.begin (115200);WiFi.mode (WIFI_STA);ThingSpeak.begin(客户端);互联网();}
无效循环(){互联网();如果(Serial.available() > 0){延迟(100);而(Serial.available () > 0) {value = Serial.readString ();如果(值[0]= =‘*’){如果(价值[11]= = ' # '){value_1 =((价值[1]- 0 x30) * 10 +(价值[2]- 0 x30));value_2 =((价值[3]- 0 x30) * 10 +(价值[4]- 0 x30));value_3 =((价值[5]- 0 x30) * 10 +(价值[6]- 0 x30));value_4 =((价值[7]- 0 x30) * 10 +(价值[8]- 0 x30));value_5 =((价值[9]- 0 x30) * 10 +(价值[10]- 0 x30));}
}
}
}
上传();
}
无效的网络(){如果(WiFi.status () ! = WL_CONNECTED){虽然(WiFi.status () ! = WL_CONNECTED) {WiFi。开始(ssid,通过);延迟(5000);}}}
空间上传(){ThingSpeak。writeField (Channel_ID Field_Number_1、value_1 myWriteAPIKey);延迟(15000);ThingSpeak。writeField (Channel_ID Field_Number_2、value_2 myWriteAPIKey);延迟(15000);ThingSpeak。writeField (Channel_ID Field_Number_3、value_3 myWriteAPIKey);延迟(15000);ThingSpeak。writeField(Channel_ID, Field_Number_4, value_4, myWriteAPIKey); delay(15000); ThingSpeak.writeField(Channel_ID, Field_Number_5, value_5, myWriteAPIKey); delay(15000); value = ""; }
arduino代码-
# include dht.h #定义soilWet 56 #定义soilDry 50
const int LM35 = A0;/ /土壤温度
/ /最低和最高传感器读数(雨检测)const int sensorMin = 0;/ /传感器最小const int sensorMax = 1024;/ /传感器最大
#定义sensorPower 5 / /汽车销
int obstaclePin = 10;/ /红外传感器销7 int hasObstacle =高;/ /高意味着没有障碍
const int触发= 34;const int回声= 35;长T;浮动distanceCM;
dht dht;#定义DHT11_PIN 30 int humi温度;
无效的设置(){pinMode (sensorPower、输出);/ /开始把汽车从digitalWrite (sensorPower、高);
pinMode (obstaclePin、输入);
pinMode(触发、输出);pinMode(呼应,输入);Serial.begin (9600);}
无效循环(){int水分= (100 - ((analogRead (A1) / 1023.00 * 100));
digitalWrite(触发、低);延迟(10);digitalWrite(触发、高);delayMicroseconds (10);digitalWrite(触发、低);T = pulseIn(呼应,高);distanceCM = T * 0.034;distanceCM = distanceCM / 2;
int ADC;浮动临时工;ADC = analogRead (LM35);临时工= (ADC * 4.88);临时工=(临时工/ 10);
int sensorReading = analogRead (A2);/ /雨检测销A2 int范围=地图(sensorReading, sensorMin sensorMax 0 3);/ /雨检测
开关(范围){0:/ /传感器湿系列。println(“雨状态: 雨* * * *”);打破;案例1:/ /传感器湿系列。println(“雨状态: *雨警告 *”);打破;案例2:/ /传感器干——关闭这个删除”系列。println(“不下雨”);”下面。以"Rain Status : 不下雨 ”);打破;}
DHT.read11 (DHT11_PIN);humi = DHT.humidity;temp = DHT.temperature;
系列。打印("空气温度= ");并同时(临时);以"°C "); Serial.print("Air Humidity = "); Serial.print(humi); Serial.println(" %"); Serial.print("Distance = "); Serial.print(distanceCM); Serial.println("cm"); Serial.print("Soil Temperature = "); Serial.print(tempS); Serial.println("°C"); Serial.print("Soil Moisture = "); Serial.print(moisture); Serial.println(" %");
如果(水分< soilWet){系列。println(状态:土壤太湿);}else if (> = soilWet & &水分< soilDry){系列。println(“状态:土壤水分是完美的”);其他}{系列。println(“状态:土壤过于干燥,时间水!”);}
如果(水分< 35){digitalWrite (sensorPower、高);/ /打开电机系列。println(“电机”);}如果(水分> 35 & &水分< 37){digitalWrite (sensorPower、高);/ /打开电机系列。println(“电机”);}如果(水分> 38){digitalWrite (sensorPower、低);/ /关闭电机系列。println(“电机”);}
hasObstacle = digitalRead (obstaclePin);/ /读取传感器的输出障碍的7日销arduino的数字部分
如果(hasObstacle = =低)/ /低的意思是提前
{
“是吧! ! !”);
}
其他的{
“道路是明确”);
}
以”- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”);以(" ");
延迟(3000);}

答案(2)

克里斯托弗Stapels
克里斯托弗Stapels 2021年3月22日
我先试着写一个数据从ESP。
只是硬编码,确保它ThingSpeak写道。所有其他的写出。
ThingSpeak。writeField (Channel_ID Field_Number_2 123, myWriteAPIKey);
移动延迟上传后循环函数所以不被调用过于频繁。
上传();
延迟(15000);
当你准备把五读回去,看看写多个字段的例子(arduino库的例子),这样你就可以使用ThingSpeak, writeFields ThingSpeak.addField后()。你不会需要你上传的所有延迟函数。你可以写8领域一个命令。(只要它们在相同的频道。

BEHNAM MOBARAKI。
BEHNAM MOBARAKI。 2021年5月24日
编辑:BEHNAM MOBARAKI。 2021年5月24日
嗨。
我发送温度数据从2传感器安装在NODEMCU ESP8266。(我使用I2C沟通)。每个传感器数据被发送到一个字段channnel。的问题是这两个字段显示的温度传感器。请检查下面的代码,让我知道问题?
/ /连接接地HC05 Arduino的接地
/ /连接VCC HC05 Arduino的5 v
/ /连接TXD Arduino的HC05销10
/ /连接RXD Arduino的HC05销11
# include < SPI。h > / /负载SPI图书馆沟通
# include < Arduino.h >
# include < Wire.h >
# include < Adafruit_MLX90614.h >
# include < SoftwareSerial。h > / /导入序列库
# include < ESP8266WiFi.h >
Adafruit_MLX90614 mlx1 = Adafruit_MLX90614 ();
Adafruit_MLX90614 mlx2 = Adafruit_MLX90614 ();
Adafruit_MLX90614 mlx3 = Adafruit_MLX90614 ();
字符串apiKey =“S9GZAP184MGDRTJKKGX”;/ /输入您写从ThingSpeak API密匙
const char *名称=“ijgxsdta”;/ /替换为您的无线网络名称和wpa2的关键
const char *通过=“dfasfee55”;
const char *服务器= " api.thingspeak.com ";
#定义TCAADDR0 0 x5a / /你需要conec什么都没有
WiFiClient客户;
/ /打开第一MUX港口
空白tcaselect (uint8_t i) {
如果(我> 7)返回;
Wire.beginTransmission (TCAADDR0);
电线。写(1 < <我);
Wire.endTransmission ();
}
/ / / / / / / / / / / /关闭第一个MUX港口
空白endtcaselect () {
Wire.beginTransmission (TCAADDR0);
Wire.write (0);/ /不通道选择
Wire.endTransmission ();
}
无效的设置(){
/ /把你设置代码,运行一次:
以"Adafruit MLX90614 test");
Serial.begin (115200);
以"Connecting to ");
以(ssid);
WiFi。开始(ssid,通过);
而(WiFi.status () ! = WL_CONNECTED)
{
延迟(500);
并同时(“。”);
}
以(" ");
以"WiFi connected");
/ / * * * * * * * * * * * * *初始化第一传感器MUX1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
endtcaselect ();
tcaselect (0);
mlx1.begin ();
endtcaselect ();
/ / * * * * * * * * * * * * *初始化第二传感器MUX1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
tcaselect (1);
mlx2.begin ();
endtcaselect ();
}
无效循环(){
/ / tcaselect (3);
/ /发送一周中的第几天
系列。打印(“供应商之一——6”);
如果(client.connect(服务器,80))/ /“184.106.153.149”或api.thingspeak.com
{
字符串postStr = apiKey;
field1 postStr + =“=”;
postStr + =字符串(浮动(mlx1.readAmbientTempC ()));
field2 postStr + =“=”;
postStr + =字符串(浮动(mlx2.readAmbientTempC ()));
postStr + = " \ r \ n \ r \ n ";
客户端。打印(“发布/更新HTTP / 1.1 \ n”);
客户端。打印(主持人:api.thingspeak.com \ n”);
客户端。打印(“连接:紧密\ n”);
客户端。打印(“X-THINGSPEAKAPIKEY:”+ apiKey +“\ n”);
客户端。print(“内容类型:应用程序/ x-www-form-urlencoded \ n”);
客户端。内容长度打印(“:”);
client.print (postStr.length ());
client.print (“\ n \ n”);
client.print (postStr);
/ / * * * * * * * * * * * * *初始化第二传感器MUX1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
endtcaselect ();
tcaselect (0);
系列。打印(" Amb-1 = ");
并同时mlx1.readAmbientTempC ());
endtcaselect ();
tcaselect (1);
系列。打印(" Amb-2 = ");
并同时mlx2.readAmbientTempC ());
}
client.stop ();
以“等待…”);
延迟(60000);/ /延时1分钟
}
2的评论
BEHNAM MOBARAKI。
BEHNAM MOBARAKI。 2021年5月25日
编辑:BEHNAM MOBARAKI。 2021年5月25日
亲爱的克里斯多夫。感谢响应。我使用I2C通信连接的两个传感器NODEMCU ESP8266。因此,我利用多路复用器TCA9548和连接两个传感器的针数(0)和多路复用器(1)。NODEMCU的最后几行代码(两个粗线)我定义密码传感器连接(见下面的几行代码请)。在串行监控Arduini IDE的一切都很好,两个传感器的输出是显而易见的。但没有领域的通道。我不确定的两个字段ThingSpeak distingush这两个传感器吗? ! ! !
endtcaselect ();
tcaselect (0);
系列。打印(" Amb-1 = ");
并同时mlx1.readAmbientTempC ());
endtcaselect ();
tcaselect (1);
系列。打印(" Amb-2 = ");
并同时mlx2.readAmbientTempC ());
}

登录置评。

社区

更多的答案ThingSpeak社区

类别

找到更多的在REST API帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!