红外追踪arduino:远程多点测温实现智能控制
红外追踪arduino:远程多点测温实现智能控制测试输出结果杜邦线连接控制器和面包机(总线连接2个DS18B20设备)4)开发环境:arduino 1.8.13二、测试代码(主要核心代码)/* *********************** * DS18B20温度传感器(可级联)最大并联8个 * 精度9(分辨率0.5) * 总线处于低电平时 电容供电 寄生电源模式 VDD接地 * ************************/ void getDS18B20() { if((millis() - dht_times)<10*1000)return;//采取非阻塞方式,每10秒读取一次数据 dht_times=millis(); // Serial.print("总线上DS18系列设备数量为:"); // Serial.println(sensors.getDS18Count())
一、设备及配件:
1)JIUAI远程控制器(4路)集成无线WIFI模块(基于ESP8266)
2)DSB18B20(准备模块2个,最大支持8个)
3)杜邦线9根,面包板1个
4)开发环境:arduino 1.8.13
二、测试代码(主要核心代码)
/* ***********************
* DS18B20温度传感器(可级联)最大并联8个
* 精度9(分辨率0.5)
* 总线处于低电平时 电容供电 寄生电源模式 VDD接地
* ************************/
void getDS18B20()
{
if((millis() - dht_times)<10*1000)return;//采取非阻塞方式,每10秒读取一次数据
dht_times=millis();
// Serial.print("总线上DS18系列设备数量为:");
// Serial.println(sensors.getDS18Count()); //setup()初始化时已修改
Serial.print("总线是否需要寄生供电(1-true; 0-false):");
Serial.println(sensors.isParasitePowerMode());
Serial.print("总线上设备数据最大分辨率为:");
Serial.println(sensors.getResolution());
Serial.print("总线上DS18..系列设备数量为:");Serial.println(ds18b20_max);
sensors.requestTemperatures(); //DS18B20发送命令获取温度
delay(10);
float temp_sum=0.0;
for(int r=0;r<ds18b20_max;r )
{//循环读取设备总线的每个设备的温度
ds_temp[r]=sensors.getTempCByIndex(r);//索引从0开始
Serial.print(datetime);Serial.print(" >> ");Serial.print(r);Serial.print(")= ");
if (ds_temp[r] != DEVICE_DISCONNECTED_C){
Serial.println(ds_temp[r]);
temp_sum =ds_temp[r];//所有设备温度之和
}
delay(2);
}
dx_temp_avg=temp_sum/ds18b20_max;//计算平均温度
Serial.print(" >>>average temperature= ");Serial.print(dx_temp_avg);
sprintf(dht_str dht_json chipsn ((float)dx_temp_avg) ((float)0) myclientid times "ds18b20");
MQTTClient.publish(pub_topic_name3 dht_str 0);//通过MQTT发布出去
}
三、接线图及测试结果
杜邦线连接控制器和面包机(总线连接2个DS18B20设备)
测试输出结果
原理图
手机查看(wx公众号查看测试数据)基于mqtt数据上报
读取到的数据为平均温度
ps:
控制器目前支持多种传感器,其中支持DHT11/DHT22/DS18B20温度传感器
根据需要DIY属于自己的宝贝。更多信息欢迎关注交流。