# stm32-camera
**Repository Path**: lantsang/stm32-camera
## Basic Information
- **Project Name**: stm32-camera
- **Description**: 通过移远EC600S和ESP32-CAM来实现远程拍照抄表的功能。这套方案针对的是对现有传统燃气表、水表和其他仪表的智能化改造,在不需要更换表的前提下实现远程抄表功能。
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 21
- **Forks**: 7
- **Created**: 2021-05-24
- **Last Updated**: 2025-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 前言
本文的主要说明如何通过移远EC600S和ESP32-CAM来实现远程拍照抄表的功能。这套方案针对的是对现有传统燃气表、水表和其他仪表的智能化改造,在不需要更换表的前提下实现远程抄表功能。
- **[硬件平台](#jump_1)**
- **[连接图](#jump_2)**
- **[架构图](#jump_3)**
- **[运行环境](#jump_4)**
- **[实拍照片](#jump_4)**
- **[未完待续](#jump_5)**
- **[参考链接](#jump_6)**
## 1 硬件平台
代码分别运行在移远的EC600S和ESP32-CAM上,ESP32-CAM负责拍照和发送图片数据,EC600S负责接收数据并将数据转发给软件平台,软件平台最终负责将各部分图片数据合成一张照片,合成后的照片再调用百度图片识别服务进行识别。嵌入式平台的开发语言分别是QuecPython和MicroPython,由于QuecPython派生自MicroPython,所以实际开发的时候差别并不大。


## 2 连接图

| EC600S | ESP32-CAM | 备注 |
| :-----: | :--: | :------------: |
| MISO | GPIO14 | 串口接收-发送 |
| MOSI | GPIO13 | 串口发送-接收 |
以上是串口线的连接,EC600S和ESP32-CAM还需要分别接入5V电源和地。
## 3 架构图

1. 由定时器或者软件后台下发指令给EC600S;
2. EC600S通过MQTT接收到拍照指令以后再将指令通过串口发送给ESP32-CAM;
3. ESP32-CAM接收到指令后开始拍照,并将照片存储到本地FLASH上;
4. ESP32-CAM以1024个字节为一个单位将图片数据通过串口分包发给EC600S;
5. EC600S将接收到的数据包发给软件后台;
6. EC600S发送结束指令给软件后台,软件后台以a附加的形式向文件中写入;
7. 软件后台接收到结束指令以后开始调用百度云服务进行图片识别;
8. 保存识别结果备用。
## 4 运行环境
### 4.1 EC600S
具体代码导入步骤参考[移远EC600 SmartDtu 说明文档](https://gitee.com/lantsang/smart-dtu)
### 4.2 ESP32-CAM
#### 4.2.1 安装esptool
```bash
pip install esptool
```
#### 4.2.2 引导模式
将USB转TTL串口转换器连接到ESP32-CAM开发板上,并将IO0和地连接起来,这样就可以进入引导模式
#### 4.2.3 格式化ESP32-CAM
按一下RST键,然后执行如下命令来擦除ESP32-CAM的Flash
```bash
esptool.py --port COM27 erash_flash
```
> 注:Windows下COM27要根据实际端口号替换,Linux下为/dev/ttyUSB0
#### 4.2.4 刷入固件
进入固件所在的目录,然后按一下RST按钮,之后执行如下命令:
```bash
esptool.py --chip esp32 --port COM27 --baud 460800 write_flash -z 0x1000 ESP32CAM_fireware.bin
```
现在固件已经刷入ESP32-CAM开发板上了,断开IO0与地之间的连接,然后再按一次RST按钮
#### 4.2.5 安装ampy工具
```bash
pip install adafruit-ampy
```
#### 4.2.6 下载应用代码
```bash
git clone https://gitlab.lantsang.cn/bluestone/bs-stm32-camera.git
```
#### 4.2.7 将应用代码下载到ESP32-CAM开发板
```bash
ampy --port COM27 put boot.py
ampy --port COM27 put main.py
ampy --port COM27 put bluestone_camera.py
ampy --port COM27 put bluestone_common.py
ampy --port COM27 put bluestone_uart.py
```
#### 4.2.8 启动应用程序
直接再按一次RST键,ESP32-CAM上的应用程序就会自动开始运行
#### 4.2.9 下发指令
打开软件后台,找到注册上来并在线的设备,然后选择UART1,在消息窗口输入:
```json
{"capture": 1}
```
然后点击发送即可
## 5 实拍照片
服务器接收到照片以后会保存在public/images目录下,照片示例如下:

## 6 未完待续
服务器端需要继续接入百度图像识别服务来得到图片上的数字,并将数据存储到数据库中。
## 7 参考链接
[移远EC600S SmartDtu](https://gitee.com/lantsang/smart-dtu)
[将ESP32-CAM变成微型摄像头](https://github.com/KipCrossing/Micro-Camera)
[ESP32 rst:0x10 (RTCWDT_RTC_RESET)](https://blog.csdn.net/toopoo/article/details/98793848)
[json二进制传输方案](https://blog.csdn.net/qq_43203949/article/details/113184314)
[ESP32快速参考手册](https://docs.micropython.org/en/latest/esp32/quickref.html)
[ESP32基础教程](http://www.1zlab.com/wiki/micropython-esp32/)