本帖最后由 爱酱丶 于 2020-5-16 21:45 编辑
我做了一个UNO+8266+DHT11的方案,想通过UNO获取温湿度然后传数值到8266上,8266再反馈数值到BLINKER上,但是我分别烧录代码后,8266一会连到WIFI一会断开,一直这样重复
这是UNO端代码:
#include <SoftwareSerial.h>
#include"dht11.h"
#define DHT11PIN 8
SoftwareSerial softSerial(5,6);
dht11 DHT11;
String device_h = "Humidity:";
String device_t = "Tempeature:";
String h = String();
String t = String();
String device_A_String = "";
void setup() {
// UNO的硬串口波特率
Serial.begin(9600);
// UNO的软串口波特率
softSerial.begin(115200);
// UNO的软串口启用监听
softSerial.listen();
// UNO的设定D8针口,DHT11
pinMode(DHT11PIN,OUTPUT);
}
void loop() {
int chk = DHT11.read(DHT11PIN);
int tem = (float)DHT11.temperature; //将温度值赋值给tem
int hum = (float)DHT11.humidity; //将湿度值赋给hum
char humi1[10],temp1[10],test[100],tes[100];
itoa(hum, humi1, 10);
h=device_h+humi1;
strcpy(test,h.c_str());
itoa(tem, temp1, 10);
t=device_t+temp1;
strcpy(tes,t.c_str());
softSerial.println(test);
delay(2);
softSerial.println(tes);
delay(2);
}
这是8266端的:
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "43e708cefce9";// 软件密钥
char ssid[] = "123";// 需连接WIFI的名字
char pswd[] = "123";// 需连接WIFI的密码
BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");
String device_C_String = "";
int humi_read=0,temp_read=0;
String string = "";
void heartbeat()
{
HUMI.print(humi_read);
TEMP.print(temp_read);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
}
void loop()
{
Blinker.run();
int i=0;
char espread[100],hum[100],tem[100];
while(Serial.available()){ //如果8266通过D10,D11软串口发来命令
char inChar = Serial.read(); //定义inchar字符为软串口的字符
device_C_String += inChar;
}
strcpy(espread,device_C_String.c_str());
if(device_C_String.startsWith("Humi")){ //判断是温度还是湿度
for(i = 0; i < strlen(espread); i++){
if(espread >= '0' && espread <= '9'){ //读取字符串数值
string +=espread;
}
}
strcpy(hum,string.c_str());
humi_read=atoi(hum);
}
else if(device_C_String.startsWith("Temp")){
for(i = 0; i < strlen(espread); i++){
if(espread >= '0' && espread <= '9'){
string +=espread;
}
}
strcpy(tem,string.c_str());
temp_read=atoi(tem);
}
string = ""; //清空string
device_C_String="";
Blinker.delay(2000);
}
请各位大佬帮帮忙看看,搞得快疯了。
|