C语言做的物联网设备数据采集模拟器

物联网设备模拟器

一个用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

技术实现

核心知识点

  1. 随机数生成 : 使用rand()srand()生成模拟传感器数据
  2. 文件操作 : 使用fopen(), fprintf(), fclose()进行数据存储
  3. 时间处理 : 使用time()localtime()处理时间戳
  4. 条件判断: 实现温度阈值检测和报警触发
  5. 实时模拟 : 使用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库支持

扩展功能建议

  1. 多传感器支持: 添加光照、气压等传感器
  2. 网络通信: 实现数据上传到云端服务器
  3. 配置管理: 支持从配置文件读取参数
  4. 数据可视化: 添加实时图表显示
  5. 数据库存储: 使用SQLite等数据库存储历史数据
相关推荐
网易独家音乐人Mike Zhou1 小时前
【嵌入式模块芯片开发】LP87524电源PMIC芯片配置流程,给雷达供电的延时上电时序及API函数
c语言·stm32·单片机·51单片机·嵌入式·电源·毫米波雷达
小立爱学习1 小时前
ARM64 指令 --- CASP / CASPA / CASPL / CASPAL
linux·c语言
乘风!1 小时前
NSSM启动tomcat部署Java程序
java·服务器·后端·tomcat
代码无疆1 小时前
学点java字节码更易于理解一些特殊的java语法效果
java·后端
武汉唯众智创2 小时前
职业院校C语言程序设计(AIGC版)课程教学解决方案
c语言·开发语言·aigc·程序设计·c语言程序设计·c语言程序设计实训室
qq_401700412 小时前
C语言void*
c语言·开发语言
星浩AI2 小时前
AI 并不懂文字,它只认向量:一文搞懂 Embedding
后端
程序员博博2 小时前
这才是vibe coding正确的打开方式 - 手把手教你开发一个MCP服务
javascript·人工智能·后端
90后的晨仔2 小时前
阿里云服务器如何给子账号设置指定具体的那一台服务器?
后端
程芯带你刷C语言简单算法题2 小时前
Day28~实现strlen、strcpy、strncpy、strcat、strncat
c语言·c++·算法·c