基于物联网的冻保鲜运输智能控制系统
基于物联网的冻保鲜运输智能控制系统设计文档
1. 项目开发背景
随着全球化贸易的发展,冷链物流在现代运输行业中扮演着日益重要的角色。尤其是冻品、食品、药品等对运输环境有着严格要求的货物,其运输过程中温度、湿度等环境参数必须严格控制,以确保货物的品质不受损害。为了解决这一问题,开发一个基于物联网技术的冻保鲜运输智能控制系统变得尤为重要。该系统可以实时监控运输环境中的温度、湿度、震动等参数,并根据预设的阈值进行自动调节,同时通过无线传输将数据上传至云端平台,进行实时监控和历史数据分析,确保运输过程中的货物处于最佳环境状态。
该系统的主要应用场景是冷链物流行业中的冻品运输,系统通过嵌入式硬件和物联网通信技术实现了对运输环境的实时监控、数据采集、设备控制、预警报警等多项功能。本项目通过STM32F103C8T6单片机作为核心控制单元,采用温湿度传感器、震动传感器、GPS定位模块等硬件,通过Wi-Fi模块实现数据上传,并借助MQTT协议与华为云物联网平台进行数据存储与分析。
2. 设计实现的功能
2.1 温度监测与控制
系统通过温度传感器实时采集运输环境的温度数据,当温度超过设定阈值时,自动启动制冷风机进行降温,以确保运输环境温度处于适宜范围。
2.2 湿度监测与控制
系统通过湿度传感器实时监控运输环境中的湿度,当湿度低于设定值时,自动启动加湿器进行加湿,维持运输环境中的湿度在合理范围内。
2.3 震动监测与报警
通过震动传感器检测运输过程中是否发生剧烈震动,当震动强度超过设定值时,系统通过蜂鸣器报警,提醒司机减少行驶速度,确保货物不受损害。
2.4 数据显示与手动设置
系统通过显示屏实时展示当前的温度、湿度、震动等环境数据,司机可通过按键设置温度和湿度的预警阈值,便于进行手动调整。
2.5 无线数据传输与远程监控
通过Wi-Fi模块,系统将采集到的环境数据上传至华为云物联网平台,用户可通过手机APP或PC端查看实时数据,同时也可查看历史数据和趋势分析。
2.6 GPS定位与实时位置监控
通过GPS定位模块获取车辆当前位置的经度和纬度,并将位置数据上传至云端平台,用户可以实时查看车辆的位置。
2.7 数据上云与历史记录存储
系统将通过MQTT协议将数据上传至华为云物联网平台,进行数据存储和历史记录分析,便于后期查阅和数据趋势分析。
3. 项目硬件模块组成
本系统由多个硬件模块组成,涉及环境监测、设备控制、数据传输、位置跟踪等功能。具体硬件模块包括:
3.1 主控芯片:STM32F103C8T6
STM32F103C8T6是STMicroelectronics公司推出的32位ARM Cortex-M3内核的单片机,具有较高的处理能力和丰富的外设接口,适合应用于嵌入式控制系统中。该芯片提供了足够的GPIO口、串口、定时器等外设,能够满足温湿度传感器、震动传感器、GPS模块、Wi-Fi模块等外设的控制需求。
3.2 温度传感器:DHT22
DHT22是一款常用的数字温湿度传感器,能够同时提供温度和湿度的测量结果。其温度测量范围为-40°C至80°C,湿度测量范围为0%-100%,精度较高,适合用于冷链运输中的温湿度监测。
3.3 湿度传感器:DHT22(与温度传感器共用)
由于DHT22传感器同时具备温度和湿度测量功能,因此可以使用同一个传感器进行环境湿度的监测。
3.4 震动传感器:SW-420
SW-420是一款震动传感器模块,可以检测物体的震动。当震动强度超过设定的阈值时,模块输出一个高电平信号,系统可根据此信号进行报警或采取其他处理。
3.5 制冷风机与加湿器控制模块
系统通过继电器控制模块实现对制冷风机和加湿器的控制。当温度超过设定阈值时,系统启动制冷风机;当湿度低于设定阈值时,系统启动加湿器。
3.6 蜂鸣器
蜂鸣器用于震动监测报警,当运输过程中发生剧烈震动时,蜂鸣器将发出警报,提醒司机注意。
3.7 显示屏:LCD1602
LCD1602是一款常用的液晶显示屏,能够显示温度、湿度、震动等环境数据,司机可以通过该屏幕查看当前的环境参数。
3.8 按键模块
按键模块用于设置温度和湿度的预警阈值,司机可以根据需要调整阈值。
3.9 Wi-Fi模块:ESP8266
ESP8266是一个低成本的Wi-Fi模块,支持Wi-Fi通信,可以将采集到的数据通过无线网络传输到云平台,支持MQTT协议,与华为云物联网平台进行数据交互。
3.10 GPS定位模块:NEO-6M
NEO-6M是一款高精度的GPS模块,可以提供车辆的经度、纬度和时间信息,用于实时监控车辆位置。
4. 设计思路
4.1 系统架构
本系统的整体架构包括嵌入式硬件系统、无线数据传输系统、云端平台与用户端三个部分。系统通过传感器实时采集运输环境中的数据,STM32F103C8T6主控芯片负责数据处理与控制。当某一参数超过设定阈值时,控制模块将触发对应的控制动作(如启动制冷风机、加湿器或报警)。同时,数据通过Wi-Fi模块上传到华为云物联网平台,用户可以在手机APP或PC端实时查看数据并进行远程监控。
4.2 数据采集与处理
- 温湿度监测: 温湿度传感器定期向系统提供温度和湿度数据,STM32F103C8T6通过定时器定时读取传感器数据。
- 震动监测: 震动传感器监测运输过程中的震动情况,当震动超过设定的阈值时,STM32F103C8T6通过蜂鸣器模块发出警报。
- GPS定位: GPS模块提供实时的车辆经度和纬度信息,STM32F103C8T6定期读取GPS模块的数据并通过Wi-Fi模块上传至云平台。
4.3 设备控制
- 制冷风机与加湿器: 当温度或湿度不在预设范围内时,控制模块将触发继电器,启动或停止制冷风机与加湿器。
- 报警机制: 当震动传感器检测到剧烈震动时,蜂鸣器发出警报,提醒司机注意。
4.4 数据上传与云端监控
- Wi-Fi上传: ESP8266 Wi-Fi模块将采集的数据通过MQTT协议上传至华为云物联网平台。数据通过云端存储,并可通过手机APP或PC端查看。
- 数据存储与分析: 云平台存储历史数据,用户可以查看历史数据图表,进行趋势分析。
4.5 用户界面与操作
- 显示界面: LCD1602显示屏实时展示温度、湿度、震动等环境数据,便于司机现场监控。
- 按键操作: 司机可以通过按键调整温湿度的预警阈值。
5. 系统功能总结
功能模块 | 描述 |
---|---|
温度监测与控制 | 实时监测运输环境温度,超标时启动制冷风机 |
湿度监测与控制 | 实时监测运输环境湿度,低于设定阈值时启动加湿器 |
震动监测与报警 | 检测运输过程中的震动,超过设定阈值时通过蜂鸣器报警 |
6. 使用的模块的技术详情介绍
6.1 STM32F103C8T6
STM32F103C8T6是基于ARM Cortex-M3核心的32位单片机,具有高性能和低功耗的特点。它内置了丰富的外设接口,包括UART、SPI、I2C、GPIO等,能够满足各种外设的控制需求。其主频为72MHz,性能足以应对温湿度采集、震动监测、GPS定位等实时任务。
6.2 DHT22温湿度传感器
DHT22是一款数字式温湿度传感器,采用单总线通信方式,与MCU通信非常方便。其温度测量范围为-40°C至80°C,湿度测量范围为0%-100%。它适合用于精确的环境监测,且具有较高的稳定性。
6.3 SW-420震动传感器
SW-420震动传感器是一款基于机械开关的震动感应模块,当传感器感应到震动时,其输出引脚会输出高电平信号。系统可以根据此信号进行报警或其他处理。
6.4 ESP8266 Wi-Fi模块
ESP8266是一个低成本、高效能的Wi-Fi模块,内置了TCP/IP协议栈,支持Wi-Fi通信。它能够与MCU通过串口进行通信,发送和接收数据。其支持MQTT协议,适合用于物联网应用。
6.5 NEO-6M GPS模块
NEO-6M是一款高精度的GPS模块,能够提供经度、纬度、高度、时间等信息。它支持多个卫星系统,包括GPS和GLONASS,具有较高的定位精度。
7. 总结
本系统基于STM32F103C8T6单片机,结合温湿度传感器、震动传感器、GPS模块、Wi-Fi模块等硬件,实现了对冻品运输环境的实时监控与智能控制。系统通过无线数据传输将采集到的数据上传至华为云物联网平台,便于用户进行远程监控和数据分析。通过合理的硬件选型和数据处理算法,系统能够保证运输过程中货物处于最佳环境中,同时提供了可靠的预警报警机制,保障了运输安全。
此外,本系统具有较强的扩展性,未来可以增加更多传感器或控制模块,如光照传感器、空气质量传感器等,以实现更加精细的环境管理。
8. STM32代码设计
以下是完整的 main.c
代码,用于实现基于STM32F103C8T6的“冻保鲜运输智能控制系统”。
在该代码中,系统会通过采集温度、湿度、震动等数据并进行实时控制,如超标时启动加湿器、风机等设备。此外,数据通过Wi-Fi上传到云端,便于远程监控。
main.c
示例代码:
#include "stm32f10x.h"
#include "DHT22.h" // 温湿度传感器头文件
#include "SW420.h" // 震动传感器头文件
#include "Buzzer.h" // 蜂鸣器控制头文件
#include "GPS.h" // GPS模块头文件
#include "WiFi.h" // Wi-Fi模块头文件
#include "LCD1602.h" // LCD显示屏头文件
#include "RelayControl.h" // 继电器控制头文件
// 设置温度和湿度阈值
#define TEMP_THRESHOLD_HIGH 10 // 温度上限10°C
#define TEMP_THRESHOLD_LOW 5 // 温度下限5°C
#define HUMIDITY_THRESHOLD_LOW 40 // 湿度下限40%
#define HUMIDITY_THRESHOLD_HIGH 60 // 湿度上限60%
#define VIBRATION_THRESHOLD 500 // 震动阈值
// 当前传感器数据存储
float current_temperature = 0.0f;
float current_humidity = 0.0f;
int vibration_level = 0;
float latitude = 0.0f;
float longitude = 0.0f;
// 系统初始化函数
void System_Init(void) {
// 初始化LCD显示屏
LCD_Init();
// 初始化蜂鸣器
Buzzer_Init();
// 初始化温湿度传感器
DHT22_Init();
// 初始化震动传感器
SW420_Init();
// 初始化GPS模块
GPS_Init();
// 初始化Wi-Fi模块
WiFi_Init();
// 初始化继电器控制(制冷风机、加湿器)
RelayControl_Init();
}
// 传感器数据采集函数
void Collect_Sensor_Data(void) {
// 获取温湿度传感器数据
current_temperature = DHT22_Read_Temperature();
current_humidity = DHT22_Read_Humidity();
// 获取震动传感器数据
vibration_level = SW420_Read_Vibration();
// 获取GPS定位数据
latitude = GPS_Get_Latitude();
longitude = GPS_Get_Longitude();
}
// 控制设备(如风机、加湿器)和报警
void Control_Devices(void) {
// 检查温度是否超标
if (current_temperature > TEMP_THRESHOLD_HIGH) {
RelayControl_StartCooling(); // 启动制冷风机
} else if (current_temperature < TEMP_THRESHOLD_LOW) {
RelayControl_StopCooling(); // 停止制冷风机
}
// 检查湿度是否超标
if (current_humidity < HUMIDITY_THRESHOLD_LOW) {
RelayControl_StartHumidifier(); // 启动加湿器
} else if (current_humidity > HUMIDITY_THRESHOLD_HIGH) {
RelayControl_StopHumidifier(); // 停止加湿器
}
// 震动检测,如果震动值超过阈值,触发报警
if (vibration_level > VIBRATION_THRESHOLD) {
Buzzer_On(); // 开启蜂鸣器报警
} else {
Buzzer_Off(); // 关闭蜂鸣器
}
}
// 数据上传至云端(使用MQTT协议)
void Upload_Data_To_Cloud(void) {
// 将数据上传到云平台
char message[256];
// 构造消息内容
sprintf(message, "Temperature: %.2f, Humidity: %.2f, Vibration: %d, Latitude: %.6f, Longitude: %.6f",
current_temperature, current_humidity, vibration_level, latitude, longitude);
// 发送数据到MQTT服务器
WiFi_MQTT_Publish("frozen_transport/data", message);
}
// 显示数据到LCD屏幕
void Display_Data(void) {
// 清除LCD屏幕
LCD_Clear();
// 显示温度、湿度和震动值
LCD_SetCursor(0, 0);
LCD_Printf("Temp: %.2f C", current_temperature);
LCD_SetCursor(1, 0);
LCD_Printf("Humidity: %.2f %%", current_humidity);
LCD_SetCursor(2, 0);
LCD_Printf("Vibration: %d", vibration_level);
LCD_SetCursor(3, 0);
LCD_Printf("Lat: %.6f Lon: %.6f", latitude, longitude);
}
int main(void) {
// 系统初始化
System_Init();
// 主循环
while (1) {
// 1. 采集传感器数据
Collect_Sensor_Data();
// 2. 控制设备(如风机、加湿器)并触发报警
Control_Devices();
// 3. 上传数据至云端
Upload_Data_To_Cloud();
// 4. 显示数据到LCD
Display_Data();
}
}
// 延时函数
void delay_ms(uint32_t ms) {
uint32_t i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 8000; j++) {
__NOP(); // 空操作,等待时间
}
}
}
代码解析
- 系统初始化 (
System_Init
):- 进行各个硬件模块的初始化,包括LCD显示、蜂鸣器、传感器(温湿度、震动、GPS)、Wi-Fi模块和继电器控制(风机、加湿器)。
- 传感器数据采集 (
Collect_Sensor_Data
):- 从温湿度传感器、震动传感器和GPS模块读取数据,并将其存储到相应的变量中。
- 设备控制与报警 (
Control_Devices
):- 根据采集的温湿度数据,控制风机和加湿器的启停。如果温度高于设定阈值,则启动制冷风机;如果湿度低于设定阈值,则启动加湿器。
- 检测震动传感器的输出,当震动超出预设阈值时,触发蜂鸣器报警。
- 数据上传至云端 (
Upload_Data_To_Cloud
):- 将温度、湿度、震动、GPS位置等数据通过Wi-Fi模块上传到云平台。使用MQTT协议进行数据传输。
- 显示数据到LCD (
Display_Data
):- 在LCD显示屏上显示当前的温度、湿度、震动值以及GPS经纬度。
- 模块与功能
- DHT22:温湿度传感器,支持数字信号输出,提供温度和湿度数据。
- SW420:震动传感器,当震动超过一定阈值时,输出信号。
- Buzzer:蜂鸣器,用于在震动过大时发出警报。
- GPS:GPS模块,用于实时获取经度和纬度数据。
- Wi-Fi (ESP8266):Wi-Fi模块,通过MQTT协议将数据上传到云端。
- RelayControl:继电器控制模块,用于控制制冷风机和加湿器的开关。
该代码实现了冻保鲜运输智能控制系统的核心功能:环境监控(温度、湿度、震动)、设备控制(制冷风机、加湿器)、报警系统(蜂鸣器)、数据展示(LCD)和无线数据上传(Wi-Fi)。系统能够实时监控运输环境,保证货物在运输过程中处于最佳状态。