附录
模块
Camera-1 (Node-Matrix)

Camera-M (Node-Matrix)

ESP32-CAM (Ai-Thinker)

GPIO12端口
ESP32芯片的GPIO12是Strapping管脚。在系统复位过程中,Strapping管脚的电平会改变系统启动模式或配置。GPIO12管脚的电平在复位时决定VDD_SDIO管脚的输出电压。按ESP32数据手册的描述,系统复位时GPIO12为低电平,则VDD_SDIO输出3.3V;为高电平,则VDD_SDIO输出1.8V。
若模块使用VDD_SDIO输出作为外部Flash或PSRAM芯片的电源,则不正确的GPIO12电平会导致芯片无法工作。例如,ESP32-CAM (Ai-Thinker)模块的GPIO12在复位时必须保持低电平。因此,不能将GPIO12直接用作I2C引脚(接上拉电阻)。
通过改写ESP32芯片熔丝位(eFuse),可以设置VDD_SDIO输出固定电压,从而使GPIO12成为普通的GPIO端口。改写熔丝位需要用到esptool,安装方法见官方文档:
https://docs.espressif.com/projects/esptool/en/latest/esp32/
改写熔丝位操作:
通过USB串口连接模块,复位模块为BOOT模式(在复位时保持GPIO0低电平)。
查看当前eFuse数据,使用
espefuse.py命令(修改COMx为实际串口号):espefuse.py --port COMx summaryVDD_SDIO determined by GPIO12 设置VDD_SDIO固定输出3.3V:
espefuse.py --port COMx set_flash_voltage 3.3Vset_flash_voltage 3.3V espefuse.py在改写eFuse前会提示输入BURN(大写)确认。修改成功后,再次查看eFuse数据(summary):
VDD_SDIO set to 3.3V by efuse
熔丝位修改后不可恢复,请谨慎操作。
FileZilla Server
FileZilla Server是Windows平台下的免费FTP/FTPS服务器。
安装与配置:
下载安装程序并执行。在安装过程的 Server settings 界面选择服务启动方式,测试用途可选手动方式,并在下一页选择控制台为手工启动(start manually)。

服务启动方式 完成安装后,开始菜单FileZilla Server程序组如下图。Start FileZilla Server(启动服务)与Stop FileZilla Server(停止服务)需要以管理员身份运行(右键 > 更多 > 以管理员身份运行)。
FileZilla Server程序组 以管理员身份运行Start FileZilla Server。之后运行Administer FileZilla Server打开控制台,并连接到FileZilla Server。

连接FileZilla Server 在控制台界面点击菜单Server > Configure...,打开Settings for server对话框。依次操作:

FTP Server配置 - 选择页面:Rights management > Users
- 点击Add按钮添加FTP用户(node)。
- 选中添加的用户,设置FTP访问密码。
- 给用户添加FTP本地路径。
- 设置路径读写权限。
设置完成后,请检查Windows防火墙规则:TCP 21准入,TCP 20准出。
保存视频流
ffmpeg工具可以将Node-Camera输出的MJPEG视频流编码为H.264格式保存。
从ffmpeg.org下载ffmpeg工具。这里只需用到
ffmpeg.exe,确认其可由命令行访问。(添加到Path环境变量或复制ffmpeg.exe到工作目录)在工作目录执行以下指令(替换
${host}为实际IP):ffmpeg.exe -f mjpeg -use_wallclock_as_timestamps 1 -i http://${host}:81/stream -c:v libx264 -crf 23 node.avi以上指令将视频流保存为
node.avi文件。选项-crf调整视频压缩质量,取值范围0~51(小值高质量)。
ffmpeg参考:https://ffmpeg.org/ffmpeg.html
错误代码
系统错误代码对照表:
| Code | Description |
|---|---|
| 0x50001 | ERR_UNAUTHORIZED |
| 0x50002 | ERR_INVALID_SETTINGS |
| 0x50003 | ERR_INVALID_PRESETS |
| 0x50004 | ERR_BAD_DATA |
| 0x50005 | ERR_BUF_INSUFFICIENT |
| 0x50006 | ERR_CRC_FAILED |
| 0x50007 | ERR_BAD_REQUEST |
| 0x50008 | ERR_INTERNAL_ERROR |
| 0x50009 | ERR_SESSION_EXCEEDED |
| 0x5000A | ERR_INVALID_SOCKET |
| 0x5000B | ERR_SD_DISABLED |
| 0x5000C | ERR_SD_NOT_INIT |
| 0x5000D | ERR_SD_FS |
| 0x5000E | ERR_NO_FILE |
| 0x5000F | ERR_NO_PATH |
| 0x50010 | ERR_ACT_NOT_INIT |
| 0x50011 | ERR_ACT_QUEUE_BUSY |
| 0x50012 | ERR_CMD_DISABLED |
| 0x50013 | ERR_CMD_UNDEFINED |
| 0x50014 | ERR_CMD_BAD_PARAM |
| 0x50015 | ERR_INVALID_IO |
| 0x50016 | ERR_INVALID_CHANNEL |
| 0x50017 | ERR_I2C_NOT_CONFIGURED |
| 0x50018 | ERR_INVALID_DEVICE |
| 0x50019 | ERR_INVALID_ACTUATOR |
| 0x5001A | ERR_DUTY_EXCEEDED |
| 0x5001B | ERR_SERVO_NOT_INIT |
| 0x5001C | ERR_SERVO_END_POINT |