AI_Charging_Station/NEWREADME.md
2025-07-11 22:52:55 +08:00

184 lines
5.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 7.11升级
## 升级内容
**一、*****\*新增消防控制功能\****
摄像头硬件升级后增加5路IO输出、1路IO报警输入的功能。
1-4路IO输出为电磁阀控制
5路为水泵电源控制和充电设备断电控制
1路输入为消防水箱液位报警输入
| ***\*IO口\**** | ***\*GPIO\**** | ***\*控制\**** |
| -------------- | -------------- | -------------- |
| 1 | 116 | 电磁阀1 |
| 2 | 18 | 电磁阀2 |
| 3 | 19 | 电磁阀3 |
| 4 | 103 | 电磁阀4 |
| 5 | 102 | 水泵、电源控制 |
***\*GPIO控制指令\****
cd /sys/class/gpio
echo 18 > export // 导出gpio
echo out > gpio18/direction // 设置gpio输出
echo 0 > gpio18/value // 设置gpio输出0 (关闭)
echo 1 > gpio18/value // 设置gpio输出1 (打开)
***\*报警处理:\****
1、摄像头监测到区域报警调用摄像头IO输出控制相应区域消防喷淋先打开报警区域对应电磁阀开关、再打开水泵开关。
2、1-4检测报警区域对应1-4号IO口。如1号区域报警则将1号IO口116输出1打开1号电磁阀同时打开5号IO口水泵电源。5秒内没有再出现报警则关闭电磁阀。
***\*处理流程:\****
设置一个全局数组保存5个IO口的状态int state[5] = {0,0,0,0,0}
1、摄像头区域报警时开启喷淋控制
先判定对应区域状态如果区域状态为0则打开区域对应IO口输出1同时将区域状态置为6区域状态不为0则直接将区域状态置为6
再判定5号IO口水泵状态如果水泵状态为0则打开水泵对应5号IO口输出1同时将水泵状态置为6水泵状态不为0则直接将水泵状态置为6
2、开启一个线程处理IO状态和IO关闭处理。
监听所有IO状态当IO状态不为0时每间隔1秒状态值减1
状态值为1时关闭对应IO口并将状态值置为0。
## 注意事项:
时间0秒区域1报警 → state[0] = 6 电磁阀1打开
时间1秒监控线程 → state[0] = 5 还剩5秒
时间2秒监控线程 → state[0] = 4 还剩4秒
时间3秒监控线程 → state[0] = 3 还剩3秒
时间4秒监控线程 → state[0] = 2 还剩2秒
时间5秒监控线程 → state[0] = 1 还剩1秒准备关闭
时间6秒监控线程 → state[0] = 0 关闭电磁阀1
发现问题:
增加成上述内容步骤后,启动线程控制台打印报警信息,接收器没有接收到报警信息并输出
判断:
1.请求的URL地址是否出错
2.测试接收器是否能接收到该网段的信息
结果:
1.强制指定部分URL地址例如http://192.168.1.23:9527/device/alarm23 IO口 可以接受信息更换45无法接收
修正:
如何让各个通道都能接收到信息
最终定义:
地址类型转换错误
原1631-1632行
// curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.23:9527/device/alarm");
curl_easy_setopt(curl, CURLOPT_URL,ALARM_URL);
因为ALARM_URL是需要std::string类型定义地址所以使用c_str即可
curl_easy_setopt(curl, CURLOPT_URL, ALARM_URL.c_str());
# 5.26修改
## 本串口协议必备要求:先发送在接收
## 注本项目已经通过串口测试传感器为115200摄像头为9500每次报警前会识别设备名称序号然后反馈到串口输出序列中
# rknn_yolo_EAI_pic
#### 简要说明
用于跑EAI提供仓库训练出来的yolov5模型的视频检测例程。
集成了从串口读取红外温度数据到达阈值后报警并运行rknn模型
需注意运行该例程需要将npu驱动更新为1.7.3版本
本项目只适用于EAI-YOLOV5
详情请参考EAI官网https://www.easy-eai.com/document_details/3/342
## 准备工作
根据EAI给出的教程训练、转化得到rknn模型
有两类检测模型:火焰检测和烟雾检测
## 安装(install)
通过adb连接设备并将编译结果推送至板端执行以下命令推送这里板端默认使用/userdata路径
```
adb push install/rknn_yolo_demo /userdata/
```
将前面准备好的RKNN模型推送至板端这里假设模型名字为 yolov5s_u8.rknn
```
adb push ./yolov5s_u8.rknn /userdata/rknn_yolo_demo/model/yolov5s_u8.rknn
```
## 单图测试执行
详情请了解官网9.模型部署实例
进入EAI环境之后编译将编译文件放置到可执行程序假设是first_yolov5_detect_demo
用下列命令将可执行程序推送到开发板端
```
cp first_yolov5_detect_demo/ /mnt/userdata/ -rf
```
进入办卡运行环境
```
adb shell
```
定位到指定位置后,运行程序
```
./rknn_yolo_EAI
```
## 编译(build)
在项目文件中,根据设备,调整 GCC_COMPILER 参数,终端执行下面命令进行编译
```
./build.sh
```