ESP32结合防水温度传感器实现远程监测温度
扫描二维码
随时随地手机看文章
每10秒读取一次温度读数,并将其上传到Arduino云端。
该项目旨在解决软质水果农场所面临的挑战,冷藏储藏室的温度对于保持水果的质量和新鲜度至关重要。停电或制冷系统故障可能导致温度升高,从而可能导致腐败。为了降低这种风险,该项目利用基于物联网的解决方案来远程监测温度并及早发现潜在故障。以下是项目组成部分的详细细分:硬件:ESP32微控制器系统的核心是一个ESP32板,一个功能强大的多功能微控制器,内置Wi-Fi功能。
ESP32通过连接在ESP32上的兼容温度传感器DHT22,负责监控冷冻室的温度。ESP32定期收集温度数据,然后将数据传输到云端进行进一步分析和监控。Wi-Fi连接性ESP32连接到本地Wi-Fi网络*,允许它将收集到的温度数据发送到云端。这确保了即使农场位于偏远地区,只要有互联网接入,温度数据也可以远程访问和监控。数据上传到Arduino Cloud一旦ESP32采集到温度数据,就上传到Arduino Cloud**。Arduino Cloud是一个允许用户实时存储和管理物联网设备数据的平台。ESP32通过API或MQTT协议与Arduino云通信,定期发送温度读数。
Arduino Cloud dashboard是一个中央界面,显示冰箱房间的温度读数。仪表板可以从任何具有互联网连接的设备(如智能手机、平板电脑或计算机)远程访问。仪表板提供存储室内温度的实时视图,具有图形,仪表或数字显示等可视化表示,便于监控。监控和预警该系统的主要目的是及早发现任何温度异常,如制冷系统故障或停电。在这种情况下,冰箱内的温度会超过安全阈值,这表明存在潜在问题。如果温度超过预定义的阈值,系统可以配置为发送警报或通知(通过电子邮件,短信或其他方法),允许农场经理或运营商迅速采取行动,防止水果变质。故障早期发现通过对温度的连续远程监测,系统可以早期发现制冷系统的故障。
这意味着即使在半夜停电,农场经理也会立即得到通知,使他们能够采取纠正措施,例如恢复电力或切换到备用发电机,以免对水果造成重大损害。云存储和历史数据Arduino云不仅提供实时数据,还存储历史温度数据,这对于跟踪趋势、识别模式和评估制冷系统的性能很有用。
这些数据可以用于报告、审计或分析,以改进未来的存储实践。可扩展性该系统是可扩展的,这意味着它可以扩展到监控多个冰箱室甚至农场的不同区域。
可以根据需要添加额外的ESP32板和传感器,并且可以定制Arduino Cloud仪表板以显示来自所有监控位置的数据。-实时监测:连续跟踪温度,确保任何问题都可以立即发现。-远程访问:农场操作员可以远程监控系统,即使远离物理站点。-防止水果变质:通过及早发现温度问题,将由于冷藏故障而导致水果变质的风险降至最低。-成本效益:使用价格合理的物联网硬件(如ESP32)和免费云平台(如Arduino cloud)使该解决方案具有成本效益。-数据洞察:历史温度数据有助于在存储条件和制冷维护方面做出明智的决策。总而言之,该项目为冷藏库的温度监测和早期故障检测提供了一种创新的低成本解决方案,确保水果保持新鲜,防止变质。
代码
#include
#include
#include "thingProperties.h"
/*
Sketch generated by the Arduino IoT Cloud Thing "Untitled"
l
Arduino IoT Cloud Variables description
The following variables are automatically generated and updated when changes are made to the Thing
float tempSens2;
*/
const int oneWireBus = 4;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(115200);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
sensors.begin();
/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
void loop() {
// Your code here
delay(100);
sensors.requestTemperatures();
tempSens2 = sensors.getTempCByIndex(0);
Serial.println(tempSens2);
ArduinoCloud.update();
delay(5000);
}
本文编译自hackster.io