系统设置
Settings页面用于系统设置,并提供测试工具。

设置面板
设置面板将设置项分类到不同标签组(以下分别说明)。点击 Save 按钮保存设置。设置修改后需要重启生效(Reboot按钮)。重启将释放网络资源,可能需要数秒时间。本节所涉及的指令将在接口与指令中详细说明。
General
General(通用)标签组包含网络及全局设置项。

Wi-Fi Mode - Wi-Fi模式,默认
SoftAP
。可选
SoftAP
(提供2.4GHz接入点服务)或STA
(作为客户端接入2.4GHz网络)。指定模式后,面板将切换对应配置项,用于设置SoftAP的广播SSID、密码,或STA的接入SSID、密码。SoftAP模式另可指定Wi-Fi信道(1
~13
),当网络环境干扰严重时,可尝试切换信道。在SoftAP模式下,Node-Camera的IP地址固定为
192.168.4.1
。在STA模式下,Node-Camera的IP地址由所连接的路由器分配,可以通过查看串口输出的启动信息,或访问路由器管理界面获悉。Home Page - 系统主页,默认
Camera
页面。设置访问Node-Camera时默认打开的页面。可选:
Camera
、Settings
、SD Card
、Console
。Access Control - 访问控制开关,默认关闭。
启用访问控制并设置访问密码(Access Code)后,在访问Node-Camera功能/接口时,系统将进行密码验证。
mDNS - 多播DNS开关,默认关闭。
启用mDNS并设置mDNS主机名(mDNS Hostname)后,在局域网内可使用
http://${hostname}.local
访问Node-Camera,而不必知道实际IP地址。假设主机名为cam
,则访问地址为http://cam.local
。该功能需要操作系统支持mDNS协议。SNTP Client - 网络时间客户端开关,默认关闭。
该功能只在Wi-Fi STA模式且可访问SNTP服务时有效。启用SNTP后,Node-Camera会自动获取网络时间作为系统时间。由此,在使用抓拍功能时,可以记录真实的抓拍时间。
Print FPS - 串口帧率输出开关,默认关闭。
开启后,串口将输出实时帧率信息。
Log Level - 系统日志等级,默认
Info
。系统日志由串口输出。可选等级:
Info
、Warn
、Error
、None
。Daemon Mode - 后台模式,默认关闭。
后台模式可选择将“人脸检测”或“二维码扫码”算法常驻后台运行,摄像头保持常开状态。当检测到人脸或识别到二维码时,串口实时输出结果。在后台模式下,Node-Camera会禁止访问Wi-Fi视频流。
Stream Socket - WebSocket视频流开关,默认关闭。
启用WebSocket视频流后,Node-Camera将通过WebSocket地址
ws://${host}:81/stream
提供视频接口,以替代默认的HTTP视频接口http://${host}:81/stream
。
Features
Features(特性)标签组包含Node-Camera内置功能的开关与设置。

SD Card - SD卡支持,默认关闭。
启用SD卡支持后,可以选择将抓拍照片保存到SD卡(最大支持4G)。SD卡占用GPIO2、GPIO14、GPIO15端口。
Flash LED - LED端口选择。
若系统带有LED灯(内置或外接),可以设置LED对应的GPIO端口。设置该端口后,flash指令能控制LED开关。
ESP32-CAM(Ai-Thinker)模块内置LED连接到GPIO4,此处可选择GIOP4。
Battery Monitor - 电池监测端口选择。
该选项只对引出了ADC1 GPIO端口的模块有效。ADC1端口包括:
GPIO Num ADC Channel GPIO36 ADC1_CH0 GPIO37 ADC1_CH1 GPIO38 ADC1_CH2 GPIO39 ADC1_CH3 GPIO32 ADC1_CH4 GPIO33 ADC1_CH5 GPIO34 ADC1_CH6 GPIO35 ADC1_CH7 指定端口后,需要设置电压采样点的分压百分比(Battery AD Ratio)。Node-Camera根据采样电压与分压比测算电池电压,由此估算剩余电量。可以使用简单的电阻分压电路对电池采样。
电阻分压 图中 BAT 为电池电压,SP 为采样电压。分压比为:
(SP / BAT) x 100%
(取两位有效数字)若,BAT电压为
4.16V
,SP电压为2.03V
,则:(2.03 / 4.16) x 100% ≈ 48.8%
取两位有效数字,应设置 Battery AD Ratio 为
49
。完成设置后,页面顶部导航栏会显示实时电量图标。
电量显示 Camera-1/M(Node-Matrix)模块内置用于电池监测的分压电路,通过焊盘跳线(默认断开)连接到GPIO33(ADC1_CH5)端口,短接该跳线可使采样电路生效。
I2C Driver - I2C驱动支持,默认关闭。
该选项只对未将图像传感器I2C-SCCB端口引出的模块有效。若模块已经将图像传感器的I2C-SCCB端口引出,则Node-Camera直接使用该I2C端口,不需要再做配置。
启用I2C驱动后,需要指定 SDA、SCL 端口。
- ESP32芯片的某些Strapping端口在系统启动时应保持特定电平。例如GPIO12端口在启动时应保持低电平,否则VDD_SDIO输出电压可能异常。因此,不能将GPIO12直接用作I2C端口(接上拉电阻)。关于GPIO12端口的处理,请参考附录GPIO12端口。
- Camera-1/M(Node-Matrix)模块已将图像传感器I2C-SCCB端口引出,不需要设置。
UART Baud Rate - 串口(UART0)波特率设置,默认
115200
。UART CMD - 串口指令支持,默认关闭。
开启后,串口接收到的数据将作为指令解析并执行。
UART Socket - 串口透传开关,默认关闭。
启用串口透传后,串口将映射到WebSocket地址:
ws://${host}/socket/uart
客户端通过该地址与Node-Camera建立WebSocket连接后,客户端向WebSocket发送的数据将透传到Node-Camera串口输出(TXD),Node-Camera串口接收到的数据(RXD)将由WebSocket发送给客户端。
Capture
Capture(抓拍)标签组控制抓拍的触发方式,以及如何存储抓拍照片。Node-Camera支持由硬件端口(外部中断)、网络/串口指令,或周期定时触发的抓拍。抓拍照片可保存到SD卡或(且)上传到FTP服务器。照片文件名按序号(SEQ)循环递增,最大序号9999
。文件名格式IMG_${SEQ}.JPG
Trigger - 触发端口选择。
选择GPIO作为抓拍触发端口,触发方式(Trigger Type)可选:
Rising Edge
、Falling Edge
。Command Trigger - 指令触发开关,默认关闭。
开启指令触发后,可由网络或串口发送指令触发抓拍。
Timing Trigger - 定时触发开关,默认关闭。
开启定时触发后,可以设置定时间隔(Timing Interval sec)。在系统运行时,可通过指令启动/停止抓拍定时器。当定时器启动后,系统将以设置的间隔(秒)为周期触发抓拍。
Save to SD Card - 抓拍照片是否保存到SD卡,默认否。
该选项需启用SD卡支持。
Upload to Server - 抓拍照片是否上传到FTP服务器,默认否。
开启该功能后,可以设置服务器IP地址(FTP Server)、用户名(FTP User)、密码(FTP Password),以及相对用户根目录的保存路径(FTP Path)。FTP服务设置参考附录FileZilla Server。
Peripherals
Peripherals(外设)标签组用于配置可用的GPIO端口、PWM端口,以及I2C总线上的设备。标签组底部的GPIOs提示当前可用的GPIO端口号。

Peripherals配置以JSON格式定义,模板形式如下:
{
"gpio": {},
"pwm": {},
"pca9685": [ {} ]
}
其中 gpio、pwm、pca9685 属性分别定义了GPIO端口、PWM端口,以及挂载于I2C总线上的PCA9685模块(16通道PWM扩展模块)。各属性值分别为对应的JSON配置对象,以下分别说明:
gpio - GPIO端口设置。
用于配置GPIO端口,使GPIO端口可以通过指令读/写。JSON样例如下:
json"gpio": { "input": [27], "output": [23, 33], "pull_up": [23, 33], "pull_down": [27], "analog": [32] }
属性说明:
input - 配置为输入的端口号列表,整型数组。
output - 配置为输出的端口号列表,整型数组。
pull_up - 需要内部上拉电阻的端口号列表,整型数组。
pull_down - 需要内部下拉电阻的端口号列表,整型数组。
analog - 配置为模拟输入的端口号(必须为ADC1 GPIO端口)列表,整型数组。
GPIO端口可同时配置为输入和输出(既能被指令读取也能被指令设置)。
pwm - PWM端口设置。
用于配置PWM端口,PWM端口可通过指令控制脉宽(Duty)输出。JSON样例如下:
json"pwm": { "pwm_freq": 100, "gpio_num": [21, 22] }
属性说明:
pwm_freq - PWM输出频率,整数。
gpio_num - 配置为PWM输出的端口号列表,整型数组。
pca9685 - PCA9685模块配置。
PCA9685 16通道PWM扩展模块 若系统引出了图像传感器I2C端口,或配置了I2C Driver,Node-Camera支持在I2C总线上挂载多个PCA9685模块,并通过指令控制各模块的端口脉宽(Duty)输出。该配置项为数组形式,数组元素表示一个具体的PCA9685模块。JSON样例如下:
json"pca9685": [ { "id": 0, "i2c_addr": 64, "pwm_freq": 100, "osc_freq": 25000000 } ]
属性说明:
id - 设备序号,整数。用于区分不同的PCA9685设备,后续配置或指令以该序号引用对应设备。
i2c_addr - 设备I2C地址,十进制整数。多个模块应区分不同地址。
pwm_freq - PWM输出频率,整数。
osc_freq - 晶振频率,整数,可选项。用于校准PCA9685内置振荡器频率。
Console
Console(控制台)标签组配合Node-Camera视频控制台页面,用于设置页面方向键、摇杆对应的云台舵机、转向/驱动执行器,并支持将自定义按钮添加到控制台页面。

Console配置以JSON格式定义,包含不同类型的配置对象,用于描述执行器、功能按钮等独立元素。以下,首先说明各配置对象的JSON定义,再介绍如何将配置对象组合成完整的Console配置。
执行器
控制页面可操作两种类型的执行器:1、舵机(servo);2、直流电机(motor)。
舵机(servo)
舵机由PWM信号控制转角或转速(360°舵机)。可以选择Peripherals标签中配置的PWM GPIO端口,或PCA9685模块的PWM通道作为舵机信号源。JSON样例如下:
json// PWM GPIO信号源 { "actuator": "servo", "using": "pwm", "gpio_num": 2, "low_us": 550, "high_us": 2400, "transition": 5, "reverse": 1 } // PCA9685信号源 { "actuator": "servo", "using": "pca9685", "id": 0, "channel": 0, "low_us": 550, "high_us": 2400, "transition": 5, "reverse": 1 }
属性说明:
actuator - 执行器类型,字符串。舵机取值
"servo"
。using - 信号源选择,字符串。可选信号源:
"pwm"
- 使用PWM GPIO端口。"pca9685"
- 使用PCA9685模块的PWM通道。
gpio_num - PWM GPIO端口号,整数。信号源为
"pwm"
时有效。id - PCA9685设备序号,整数。信号源为
"pca9685"
时有效。channel - PCA9685模块的PWM通道序号,整数。信号源为
"pca9685"
时有效。取值范围0
~15
。low_us - PWM脉宽下限,微秒整数值,默认
500
。用于控制舵机转角下限,或360°舵机反向最大转速。high_us - PWM脉宽上限,微秒整数值,默认
2500
。用于控制舵机转角上限,或360°舵机正向最大转速。transition - 扫掠时长,秒整数值,默认
1
。表示舵机连续转向时,从下限角转到上限角需要的时长,用于控制舵机平滑转向速率。reverse - 控制反转标志(
0
/1
),默认0
。设置是否反转页面控件或指令的方向逻辑。设置为0
时,上/右键或方向指令增加PWM脉宽(对应360°舵机正向增速);下/左键或方向指令减小脉宽(对应360°舵机反向增速)。设置为1
时,反转以上控制逻辑。该标志用于配合舵机安装方向,使其动作与页面或指令逻辑一致。
直流电机(motor)
直流电机(如N20直流减速电机)通过两路PWM信号控制转速及正/反转。可选择Peripherals标签中配置的PWM GPIO端口,或PCA9685模块的PWM通道作为直流电机信号源。JSON样例如下:
json// PWM GPIO信号源 { "actuator": "motor", "using": "pwm", "gpio_num": [21, 22], "map": [100, 800], "reverse": 1 } // PCA9685信号源 { "actuator": "motor", "using": "pca9685", "id": 0, "channel": [1, 2], "map": [100, 800], "reverse": 1 }
属性说明:
actuator - 执行器类型,字符串。直流电机取值
"motor"
。using - 信号源选择,字符串。可选信号源:
"pwm"
- 使用PWM GPIO端口。"pca9685"
- 使用PCA9685模块的PWM通道。
gpio_num - PWM GPIO端口号列表,整型数组。信号源为
"pwm"
时有效。PWM调速电机需要两路PWM信号控制,以数组形式指定两路PWM端口。id - PCA9685设备序号,整数。信号源为
"pca9685"
时有效。channel - PCA9685模块的PWM通道序号列表,整型数组。信号源为
"pca9685"
时有效。PWM调速电机需要两路PWM信号控制,以数组形式指定两路PWM通道。序号取值范围0
~15
。map - PWM脉宽(Duty)映射表,整型数组,可选项。Node-Camera将调速电机的脉宽参数归一化到整数范围
0
~1000
。在使用中可能出现脉宽较小时电机不转,而脉宽较大时转速过高的情况。为了避免此类现象,可以利用 map 将脉宽参数映射到合适的区间。由两个整数值分别指定目标区间的下限与上限。例如,[100, 800]
表示将参数范围0
~1000
映射到目标区间100
~800
(0
值不变)。reverse - 控制反转标志(
0
/1
),默认0
。设置是否反转页面控件或指令的方向逻辑。设置为0
时,上/右键或方向指令增加PWM脉宽;下/左键或方向指令减小脉宽。设置为1
时,反转以上控制逻辑。该标志用于配合电机安装方向,使其动作与页面或指令逻辑一致。
Console配置基于以上执行器的组合,定义视频控制台页面与实体舵机/直流电机的连接关系。Console配置中与执行器相关的JSON模板如下:
{
"pan": {actuator},
"tilt": {actuator},
"joy_mode": 1/2,
"left": {actuator},
"right": {actuator},
"steering": {actuator},
"drive": {actuator}
}
{actuator}
代表一个具体的执行器配置对象,根据实际情况定义。
属性说明:
pan - 云台水平舵机执行器,
{actuator}
配置对象。必须为舵机。tilt - 云台垂直舵机执行器,
{actuator}
配置对象。必须为舵机。joy_mode - 摇杆模式,整数。指定控制台摇杆工作模式,模式取值:
1
- 两轮模式(Dual-Wheels)。摇杆输出控制左、右两轮的正/反转速。适用于左、右两轮驱动的小车或履带平台。选用该模式后,需要配置后续 left、right 执行器。2
- 转向驱动模式(Steering & Drive)。摇杆输出控制一个转向舵机,以及一个驱动轮的正/反转速。适用于前轮转向,后轮驱动的小车平台。选用该模式后,需要配置后续 steering、drive 执行器。
left - 左驱动轮执行器,
{actuator}
配置对象。joy_mode =1
时有效。可以是直流电机或360°舵机。right - 右驱动轮执行器,
{actuator}
配置对象。joy_mode =1
时有效。可以是直流电机或360°舵机。steering - 转向舵机执行器,
{actuator}
配置对象。joy_mode =2
时有效。必须为舵机。drive - 驱动轮执行器,
{actuator}
配置对象。joy_mode =2
时有效。可以是直流电机或360°舵机。
自定义按钮
Console配置通过一个 buttons 数组将自定义按钮添加到控制台页面工具栏中。数组元素为自定义按钮配置对象,JSON样例如下:
{
"char": "☀",
"act": "cmd",
"on": "flash=1",
"off": "flash=0"
}
工具栏支持两类按钮,以是否定义了 off 属性来区分。未定义 off 属性的按钮为普通按钮,普通按钮只有一个点击动作。定义了 off 属性的按钮为自锁按钮,自锁按钮能在on/off两个状态间切换(toggle),并执行对应的动作。
属性说明:
char - 按钮上显示的字符,单字符。工具栏按钮尺寸为38x38px,用一个Unicode字符来标识按钮。
act - 按钮动作类型,字符串。可选类型:
"cmd"
- 按钮发送指令。所发送指令在后续 on/off 属性中配置。"txd"
- 按钮通过WebSocket透传字符串到Node-Camera串口输出(TXD)。该动作需要在Features标签组启用 UART Socket。所发送字符串在后续 on/off 属性中配置。
on - 点击普通按钮,或切换自锁按钮到on状态时,发送的指令或透传的字符串。
off - 切换自锁按钮到off状态时,发送的指令或透传的字符串。该属性同时标识按钮是否为自锁按钮,定义该属性的按钮为自锁按钮,否则为普通按钮。
buttons 数组中的按钮将按顺序添加到页面工具栏中。Console配置同时提供了一个控制串口透传RXD数据显示的开关项 rxd。相关的JSON配置模板如下:
{
"buttons": [
{button},
{button},
{button}
],
"rxd": 0/1
}
{button}
代表一个具体的按钮配置对象。
buttons -
{button}
配置对象数组。按顺序定义添加到页面工具栏的按钮。rxd - 是否显示串口透传RXD数据(
0
/1
),默认否(0
)。在Features标签组启用 UART Socket 后有效。设置为1
时显示串口透传RXD数据,否则不显示。
配置样例
{
"joy_mode": 2,
"steering": {
"actuator": "servo",
"using": "pwm",
"gpio_num": 21,
"low_us": 600,
"high_us": 2400
},
"drive": {
"actuator": "servo",
"using": "pwm",
"gpio_num": 22,
"low_us": 600,
"high_us": 2400
},
"buttons": [
{
"char": "☀",
"act": "cmd",
"on": "flash=1",
"off": "flash=0"
},
{
"char": "A",
"act": "txd",
"on": "hello"
}
],
"rxd": 1
}
样例定义摇杆为转向驱动模式("joy_mode": 2
),并配置转向舵机("steering"
)与驱动舵机("drive"
)。按钮数组("buttons"
)定义了两个按钮。第一个自锁按钮(☀
),通过指令控制LED开关。第二个普通按钮(A
),点击将透传字符串"hello"到Node-Camera串口输出(TXD)。页面显示串口透传RXD数据("rxd": 1
)。
对应视频控制台页面如下:

工具面板
工具面板提供测试、系统信息查看、配置管理等功能。
Tools
Tools(工具)标签组提供抓拍、串口透传、网络指令的功能测试,以及I2C扫描、系统信息查看等辅助功能。在启用 UART Socket 后,页面将自动建立WebSocket串口透传连接。

Capture - 照片抓拍测试。启用 Command Trigger 后有效。点击按钮将发送抓拍指令,触发一次抓拍动作。
Reset SEQ - 重置抓拍照片文件名的循环递增序号为
0
。Timing - 抓拍定时器开关。启用 Timing Trigger 后有效。控制抓拍定时器的启动/停止。定时器启动后,Node-Camera以 Timing Interval sec 设置的间隔定时抓拍。
I2C Scan - I2C地址扫描。系统引出了图像传感器I2C端口,或配置了 I2C Driver 后有效。点击按钮将扫描I2C总线,获取挂载设备的地址。
System Info - 查看系统信息。系统信息包括:固件名称、版本、MAC地址、IP地址、RSSI(STA模式信号强度)、内存信息等。
Socket RXD - 启用 UART Socket 后有效。显示Node-Camera串口接收到的数据。
Socket TXD - 启用 UART Socket 后有效。通过WebSocket发送数据,数据将透传至Node-Camera串口输出。
HTTP Command - 用于测试HTTP指令接口。指令如
flash=1
(打开LED灯)。
Presets
Presets(预置)标签组用于重置系统、备份当前配置,或将备份的配置导入系统。

Factory Reset - 重置Node-Camera为默认状态(清除系统配置)。
Settings - 配置选择,由下拉列表选择要操作的配置。列表包含系统配置(
System
)以及另存的备份配置。选中一个配置后,配置对应的JSON格式内容将显示在下方文本框内。可以直接编辑文本框内的配置并保存。Delete - 删除按钮。删除当前选中的配置。系统配置(
System
)不允许删除。Save As - 另存按钮。将当前文本框内的配置信息另存为指定名称的备份配置,指定的名称将显示在 Settings 下拉列表中。如果指定的目标名称为
System
,则会覆盖系统配置,可用于将备份的配置恢复为系统配置。Save - 保存按钮。保存当前文本框内的配置,目标为当前选中的配置名称。