站内搜索
发作品签到
专业版

老化架监测模块

工程标签

29
0
0
0

简介

实现了电流监测和报警

简介:实现了电流监测和报警
复刻成本:15

开源协议

GPL 3.0

创建时间:2026-03-31 10:39:26更新时间:2026-03-31 17:26:00

描述

B站演示视频:https://www.bilibili.com/video/BV1iyXqBaEu8/

# ESP32-C3 INA219 智能电流监测仪 - 功能说明

## 📋 项目概述

基于 ESP32-C3 和 INA219 传感器的智能电流监测设备,具备实时电流采集、智能报警、BLE 蓝牙通信等功能。

**核心特性:**
- ✅ INA219 高精度电流/电压/功率测量
- ✅ 智能电流报警系统(带迟滞比较)
- ✅ BLE 5.0 蓝牙通信
- ✅ 多色 LED 状态指示
- ✅ 蜂鸣器声音报警
- ✅ 2 秒平均采样输出
- ✅ 待机模式自动检测

---

## 🎯 核心功能模块

### **1. INA219 传感器模块**

#### **测量参数:**
- **分流电压** (Shunt Voltage):mV 级别
- **母线电压** (Bus Voltage):0-32V
- **电流** (Current):0-2000mA
- **功率** (Power):mW 级别

#### **采样策略:**
```cpp
采样频率:每 40ms 一次(25Hz)
平均周期:2 秒(50 次采样)
输出频率:每 2 秒输出一次平均值
```

#### **数据验证:**
```cpp
有效数据范围:
- 电压:0 < V < 32.0V
- 电流:0 < I < 2000mA
- 功率:自动计算
```

---

### **2. 智能报警系统**

#### **电流阈值:**
```cpp
默认设置:
- 最小电流:130mA(低于此值报警)
- 最大电流:180mA(高于此值报警)
- 迟滞窗口:±2mA(防止抖动)
```

#### **报警逻辑(迟滞比较器):**

**状态 1:正在报警时**
```cpp
解除报警条件:
- 电流 > (130 - 2)mA 且 电流 < (180 + 2)mA
- 即:128mA < 电流 < 182mA
```

**状态 2:未报警时**
```cpp
触发报警条件:
- 电流 < 130mA 或 电流 > 180mA
```

**优势:**
- ✅ 防止临界值抖动
- ✅ 避免频繁切换报警状态
- ✅ 提高稳定性

---

### **3. LED 状态指示系统**

#### **三色 LED 指示灯:**

| 状态 | 红灯 | 黄灯 | 蓝灯 | 说明 |
|------|------|------|------|------|
| **待机** | 灭 | 闪烁 | 闪烁 | 电流 < 10mA,等待负载 |
| **偏低正常** | 灭 | 亮 | 灭 | 130mA ≤ 电流 < 155mA |
| **理想区间** | 灭 | 灭 | 亮 | 155mA ≤ 电流 ≤ 180mA |
| **略低预警** | 灭 | 闪烁 | 灭 | 电流略低于 130mA(迟滞窗口) |
| **略高预警** | 灭 | 灭 | 闪烁 | 电流略高于 180mA(迟滞窗口) |
| **报警状态** | 闪烁 | 灭 | 灭 | 电流 < 128mA 或 > 182mA |

#### **LED 闪烁频率:**
- 待机提示:500ms 间隔
- 预警提示:500ms 间隔
- 报警提示:500ms 间隔(同时蜂鸣器)

---

### **4. 蜂鸣器报警**

#### **工作模式:**
```cpp
报警状态:
- 蜂鸣器响 500ms
- 蜂鸣器停 500ms
- 循环往复
```

#### **关闭条件:**
- 电流回到正常范围(128-182mA)
- 待机状态(电流 < 10mA)

---

### **5. BLE 蓝牙通信**

#### **服务与特征值:**

**服务 UUID:** `0000FFE0-0000-1000-8000-00805F9B34FB`

**特征值:**
1. **设备状态** (0000FFE4)
   - 格式:`min,max,curr`
   - 示例:`130,180,155.5`
   - 方向:ESP32 → 手机

2. **传感器数据** (0000FFE5)
   - 格式:`voltage,current,power`
   - 示例:`12.34,156.7,1935`
   - 方向:ESP32 → 手机

3. **控制命令** (0000FFE6)
   - 格式:`CL,CH`
   - 示例:`130,180`
   - 方向:手机 → ESP32

#### **数据更新频率:**
- 设备状态:每 2 秒
- 传感器数据:每 2 秒
- 控制命令:实时响应

#### **连接提示:**
- 蓝灯闪烁 3 次(每次 150ms)表示接收到数据

---

### **6. 数据采集与处理**

#### **采样流程:**
```
开始
  ↓
每 40ms 触发采样
  ↓
读取 INA219 数据
  ↓
验证数据有效性
  ↓
有效?→ 累加到总和
  ↓
检查电流报警
  ↓
满 2 秒(50 次)?
  ↓
是 → 计算平均值
  ↓
发送到蓝牙/MQTT
  ↓
重置累加器
```

#### **统计信息:**
```
========== [2 秒统计] ==========
有效采样数:48 / 50
================================
```

---

## 🔧 配置参数

### **电流阈值配置**

#### **全局变量:**
```cpp
float CURRENT_MIN_MA = 130.0;  // 最小电流
float CURRENT_MAX_MA = 180.0;  // 最大电流
```

#### **修改方式:**

**方式 1:通过蓝牙**
```
发送格式:CL,CH
示例:130,180
```

**方式 2:修改代码**
```cpp
// main.cpp 第 8-9 行
float CURRENT_MIN_MA = 130.0;
float CURRENT_MAX_MA = 180.0;
```

---

### **LED 引脚配置**

```cpp
#define LED_YELLOW_PIN 8   // 黄灯
#define LED_BLUE_PIN 10    // 蓝灯
#define LED_ALARM_PIN 11   // 红灯(报警)
#define BUZZER_PIN 9       // 蜂鸣器
```

**触发方式:** 低电平触发(硬件设计)

---

### **INA219 I2C 配置**

```cpp
#define INA219_ADDRESS 0x40  // I2C 地址
#define SDA_PIN 6            // I2C 数据线
#define SCL_PIN 7            // I2C 时钟线
```

---

## 📊 工作流程

### **启动流程:**
```
上电
  ↓
初始化串口 (115200)
  ↓
初始化 LED 和蜂鸣器
  ↓
初始化 INA219 传感器
  ↓
检查 INA219 是否存在
  ↓
初始化 BLE 蓝牙
  ↓
(可选)初始化 WiFi/MQTT
  ↓
进入主循环
```

### **主循环流程:**
```
loop() {
  1. 处理 BLE 连接
  2. 处理 MQTT(已禁用)
  3. 每 40ms 采集 INA219 数据
  4. 检查电流报警
  5. 每 2 秒发送平均值
  6. 每秒打印状态
}
```

---

## 🎯 使用场景

### **场景 1:待机电流监测**
```
状态:电流 < 10mA
LED:黄蓝灯交替闪烁
蜂鸣器:关闭
说明:设备处于待机,等待负载接入
```

### **场景 2:正常工作(理想区间)**
```
状态:155mA ≤ 电流 ≤ 180mA
LED:蓝灯常亮
蜂鸣器:关闭
说明:设备工作正常,处于最佳状态
```

### **场景 3:电流偏低**
```
状态:130mA ≤ 电流 < 155mA
LED:黄灯常亮
蜂鸣器:关闭
说明:电流偏低但可接受
```

### **场景 4:电流异常(报警)**
```
状态:电流 < 128mA 或 > 182mA
LED:红灯闪烁
蜂鸣器:间歇鸣叫
说明:电流异常,需要检查电路
```

---

## 📱 手机 App 连接

### **连接步骤:**

1. **打开蓝牙助手 App**
2. **搜索设备**
   - 名称:`INA219_BLE`
   - MAC:自动生成
3. **连接设备**
4. **订阅特征值**
   - 0000FFE4(设备状态)
   - 0000FFE5(传感器数据)
5. **发送控制命令**
   - 写入特征值:0000FFE6

### **数据格式:**

**接收(从设备):**
```
设备状态:130,180,155.5
传感器数据:12.34,156.7,1935
```

**发送(到设备):**
```
设置阈值:130,180
```

---

## ⚠️ 注意事项

### **1. INA219 接线**
```
正确接线:
- VCC → 5V 或 3.3V
- GND → GND
- SDA → GPIO 6
- SCL → GPIO 7
- VIN+ → 电源正极
- VIN- → 负载正极
- GND → 负载负极(共地)
```

### **2. 电流测量范围**
```
INA219 量程:
- 最大电压:32V
- 最大电流:3.2A(取决于分流电阻)
- 本项目:0-2A
```

### **3. 报警阈值设置**
```
建议:
- 不要设置过低的阈值(避免误报)
- 不要设置过高的阈值(失去保护意义)
- 迟滞窗口保持 2mA 左右
```

---

## 🔍 故障排查

### **问题 1:INA219 未找到**
```
现象:
- 串口输出 "INA219 sensor not found"
- 所有读数为 0

解决:
1. 检查 I2C 接线
2. 检查电源
3. 测量 I2C 地址
```

### **问题 2:电流读数异常**
```
现象:
- 读数为负值
- 读数波动大

解决:
1. 检查接线方向(VIN+ → VIN-)
2. 检查共地
3. 增加采样次数
```

### **问题 3:蓝牙无法连接**
```
现象:
- 搜索不到设备
- 连接后立即断开

解决:
1. 重启 ESP32
2. 清除手机蓝牙缓存
3. 检查天线
```

---

## 📈 性能指标

### **采样精度:**
- 电压分辨率:±0.1V
- 电流分辨率:±0.1mA
- 功率分辨率:±1mW

### **响应时间:**
- 采样周期:40ms
- 平均输出:2 秒
- 报警响应:实时

### **通信速率:**
- 串口波特率:115200
- BLE 更新频率:0.5Hz(每 2 秒)

---

## 🛠️ 扩展功能

### **已预留功能:**
- ❌ WiFi 连接(已禁用)
- ❌ MQTT 联网(已禁用)
- ✅ 可通过蓝牙修改阈值
- ✅ 待机模式检测

### **可扩展功能:**
- 添加 OLED 显示屏
- 添加 SD 卡数据记录
- 添加 WiFi 重新启用
- 添加 Web 服务器
- 添加 OTA 升级

---

## 📝 版本历史

**v1.0 - 2026-03-30**
- ✅ 基础 INA219 数据采集
- ✅ 智能报警系统
- ✅ BLE 蓝牙通信
- ✅ LED 状态指示
- ✅ 待机模式检测
- ❌ WiFi 功能禁用(硬件故障)

---

## 🎓 技术栈

- **硬件:** ESP32-C3 + INA219
- **框架:** Arduino / PlatformIO
- **通信:** BLE 5.0 / UART
- **传感器:** I2C 协议
- **IDE:** VSCode + PlatformIO

---
APP功能截图
 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航