Skip to content

系统设置

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

Settings

设置面板

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

General

General(通用)标签组包含网络及全局设置项。

Settings - 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时默认打开的页面。可选:CameraSettingsSD CardConsole

  • 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

    系统日志由串口输出。可选等级:InfoWarnErrorNone

  • 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内置功能的开关与设置。

Settings - Features
  • 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 NumADC Channel
    GPIO36ADC1_CH0
    GPIO37ADC1_CH1
    GPIO38ADC1_CH2
    GPIO39ADC1_CH3
    GPIO32ADC1_CH4
    GPIO33ADC1_CH5
    GPIO34ADC1_CH6
    GPIO35ADC1_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 Ratio49

    完成设置后,页面顶部导航栏会显示实时电量图标。

    电量显示

    Camera-1/M(Node-Matrix)模块内置用于电池监测的分压电路,通过焊盘跳线(默认断开)连接到GPIO33(ADC1_CH5)端口,短接该跳线可使采样电路生效。

  • I2C Driver - I2C驱动支持,默认关闭。

    该选项只对未将图像传感器I2C-SCCB端口引出的模块有效。若模块已经将图像传感器的I2C-SCCB端口引出,则Node-Camera直接使用该I2C端口,不需要再做配置。

    启用I2C驱动后,需要指定 SDASCL 端口。

    1. ESP32芯片的某些Strapping端口在系统启动时应保持特定电平。例如GPIO12端口在启动时应保持低电平,否则VDD_SDIO输出电压可能异常。因此,不能将GPIO12直接用作I2C端口(接上拉电阻)。关于GPIO12端口的处理,请参考附录GPIO12端口
    2. 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

Settings - Capture
  • Trigger - 触发端口选择。

    选择GPIO作为抓拍触发端口,触发方式(Trigger Type)可选:Rising EdgeFalling 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端口号。

Settings - Peripherals

Peripherals配置以JSON格式定义,模板形式如下:

json
{
    "gpio": {},
    "pwm": {},
    "pca9685": [ {} ]
}

其中 gpiopwmpca9685 属性分别定义了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视频控制台页面,用于设置页面方向键、摇杆对应的云台舵机、转向/驱动执行器,并支持将自定义按钮添加到控制台页面。

Settings - Console

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~8000值不变)。

    • reverse - 控制反转标志(0/1),默认0。设置是否反转页面控件或指令的方向逻辑。设置为0时,上/右键或方向指令增加PWM脉宽;下/左键或方向指令减小脉宽。设置为1时,反转以上控制逻辑。该标志用于配合电机安装方向,使其动作与页面或指令逻辑一致。

Console配置基于以上执行器的组合,定义视频控制台页面与实体舵机/直流电机的连接关系。Console配置中与执行器相关的JSON模板如下:

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)。摇杆输出控制左、右两轮的正/反转速。适用于左、右两轮驱动的小车或履带平台。选用该模式后,需要配置后续 leftright 执行器。

    • 2 - 转向驱动模式(Steering & Drive)。摇杆输出控制一个转向舵机,以及一个驱动轮的正/反转速。适用于前轮转向,后轮驱动的小车平台。选用该模式后,需要配置后续 steeringdrive 执行器。

  • 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样例如下:

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配置模板如下:

json
{
    "buttons": [
        {button},
        {button},
        {button}
    ],
    "rxd": 0/1
}

{button}代表一个具体的按钮配置对象。

  • buttons - {button}配置对象数组。按顺序定义添加到页面工具栏的按钮。

  • rxd - 是否显示串口透传RXD数据(0/1),默认否(0)。在Features标签组启用 UART Socket 后有效。设置为1时显示串口透传RXD数据,否则不显示。

配置样例

json
{
    "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串口透传连接。

Settings - Tools
  • 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(预置)标签组用于重置系统、备份当前配置,或将备份的配置导入系统。

Settings - Presets
  • Factory Reset - 重置Node-Camera为默认状态(清除系统配置)。

  • Settings - 配置选择,由下拉列表选择要操作的配置。列表包含系统配置(System)以及另存的备份配置。选中一个配置后,配置对应的JSON格式内容将显示在下方文本框内。可以直接编辑文本框内的配置并保存。

  • Delete - 删除按钮。删除当前选中的配置。系统配置(System)不允许删除。

  • Save As - 另存按钮。将当前文本框内的配置信息另存为指定名称的备份配置,指定的名称将显示在 Settings 下拉列表中。如果指定的目标名称为System,则会覆盖系统配置,可用于将备份的配置恢复为系统配置。

  • Save - 保存按钮。保存当前文本框内的配置,目标为当前选中的配置名称。