物联网设备模拟器
一个用C语言实现的物联网设备模拟器,模拟温湿度传感器数据采集、存储和报警功能。
功能特性
- 🌡️ 温湿度传感器模拟: 随机生成温度(15-35℃)和湿度(30-80%)数据
- 💾 数据存储 : 将传感器数据保存到CSV文件(
sensor_data.csv
) - 🚨 超标报警: 当温度超过30℃时触发报警并记录到日志文件
- ⏰ 实时模拟: 每2秒采集一次数据,模拟真实传感器工作
- 📊 统计信息: 每10次采集显示统计信息
文件结构
bash
.
├── iot_simulator.c # 主程序源代码
├── README.md # 项目说明文档
├── sensor_data.csv # 传感器数据文件(运行时生成)
└── alerts.log # 报警日志文件(运行时生成)
编译和运行
编译程序
使用GCC编译器编译程序:
bash
# 推荐编译命令(启用警告和优化)
gcc -Wall -Wextra -std=c99 -O2 -o iot_simulator iot_simulator.c
# 简单编译命令
gcc -o iot_simulator iot_simulator.c
# 调试版本编译
gcc -g -Wall -Wextra -std=c99 -o iot_simulator iot_simulator.c
运行程序
bash
./iot_simulator
程序输出示例
makefile
=== 物联网设备模拟器 ===
模拟温湿度传感器数据采集和存储
温度报警阈值: 30.0℃
数据文件: sensor_data.csv
报警日志: alerts.log
按 Ctrl+C 退出程序
[14:30:15] 温度: 23.5℃ | 湿度: 45.2%
[14:30:17] 温度: 28.3℃ | 湿度: 52.1%
[14:30:19] 温度: 31.2℃ | 湿度: 38.7% ⚠️
🚨 高温报警! 温度: 31.2℃ (超过阈值 30.0℃) - 时间: Mon Jan 15 14:30:19 2024
[14:30:21] 温度: 26.8℃ | 湿度: 41.3%
数据文件格式
sensor_data.csv
csv
时间戳,温度(℃),湿度(%)
1705302615,23.5,45.2
1705302617,28.3,52.1
1705302619,31.2,38.7
alerts.log
yaml
高温报警! 温度: 31.2℃ (超过阈值 30.0℃) - 时间: Mon Jan 15 14:30:19 2024
高温报警! 温度: 32.1℃ (超过阈值 30.0℃) - 时间: Mon Jan 15 14:30:25 2024
技术实现
核心知识点
- 随机数生成 : 使用
rand()
和srand()
生成模拟传感器数据 - 文件操作 : 使用
fopen()
,fprintf()
,fclose()
进行数据存储 - 时间处理 : 使用
time()
和localtime()
处理时间戳 - 条件判断: 实现温度阈值检测和报警触发
- 实时模拟 : 使用
sleep()
实现定时数据采集
数据结构
c
typedef struct {
float temperature; // 温度 (℃)
float humidity; // 湿度 (%)
time_t timestamp; // 时间戳
} SensorData;
主要函数
generate_temperature()
: 生成随机温度数据generate_humidity()
: 生成随机湿度数据save_data_to_file()
: 保存数据到CSV文件check_and_alert()
: 检查报警条件log_alert()
: 记录报警信息
系统要求
- C编译器 (GCC推荐)
- POSIX兼容系统 (Linux, macOS, Windows with WSL)
- 标准C库支持
扩展功能建议
- 多传感器支持: 添加光照、气压等传感器
- 网络通信: 实现数据上传到云端服务器
- 配置管理: 支持从配置文件读取参数
- 数据可视化: 添加实时图表显示
- 数据库存储: 使用SQLite等数据库存储历史数据
