【个人作品】无线网络图传模块

news/2024/5/18 11:52:24 标签: udp, 网络, 网络协议

一个学习硬件四层板设计的小作品,目前看还是非常受欢迎的,购买链接:

https://x.jlc.com/platform/detail/55fee4af9a464fe1848dc9988446860a

一、作品简介

一款可通过命令行自行适配多种摄像头且支持 HTTP 、UDP 传输视频流的无线网络图传模块。 

二、应用场景

  1. 玩具场景,如遥控车上,实时传输视频流,便于观察小车所在环境。
  2. 视频监控,可以安装在室内或室外,实时监控室内室外的状态。
  3. 图像识别,可以进行人脸识别、行人识别、车牌识别等等。

三、作品功能

网络配置、摄像头配置、网络视频流配置均通过串口命令行控制台配置。

  1. 指示灯,闪烁表示尚未联网,常亮表示联网成功。
  2. 看门狗,出现某些意外异常,会自行重启并恢复配置。
  3. 网络配置,支持串口配置无线网络,支持 STA 和 AP 模式。
  4. 自动配置,系统启动时会根据上一次设置的配置信息,自动配置模块。
  5. 网络视频流,支持 UDP、HTTP 视频流,其中 UDP 需上位机、 HTTP 只需要浏览器即可。
  6. 图像效果可配置,根据摄像头模组 Sensor 手册,可通过串口指令在线实时调试图像效果。
  7. 摄像头模组可配置,模块采用通用的引脚顺序,可以替换不同的摄像头模组,再通过串口动态配置。
  8. 持久化存储配置信息,网络配置、网络视频流配置、摄像头模组配置均可存储在模块上的 Flash 上。
  9. 提供 udp 图传上位机源码,内含非常简单的只需要十几行代码的 udp 组包功能,非常容易移植到其它程序中。

主控采用的是芯之联 XR872,官方SDK深度开放,拥有丰富的应用级示例代码和文档,有兴趣的话可以进行二次开发。

四、硬件参数

  1. 供电范围:3.3V ~ 5.5V。
  2. 串口参数:波特率:115200 数据位:8 停止位:1 校验位:无。
  3. 采用 DVP 接口,输出码流为 YUV422 或 JPEG 的摄像头模组。
  4. 支持非常规的分辨率,需要摄像头模组也支持,当然也支持常规分辨率。
  5. 分辨率和帧率:640x480@60、1280x720@40,最大支持分辨率为 1920x1088。

五、使用说明

初级玩法:使用配套摄像头模组 gc0308,简单配置即可使用。

首次拿到模块之后,按照如下配置,启动上位机即可完成初始配置。

  • 网络配置命令,例如要连接名称为 dream、密码为 12345678
net sta disable
net sta config dream 12345678
net sta enable
  • 开启 udp 视频推流,指定上位机的 IP 地址和端口号
video udp start,192.168.123.110:8080

配置完成后,配置信息会记录到 flash 中,重启或重上电自动配置。

高级玩法:调整摄像头的默认配置,或自行适配新的摄像头模组。

  • 配置摄像头模组的芯片地址为 0x21、分辨率为 320x240、压缩质量为 64(1~99)
cam cfg 0x21,320,240,64
  • 读取摄像头模组的寄存器,如读取 gc0308 的 0x00 寄存器得到 chip id
cam get 0x00
  • 读取摄像头模组的多个寄存器
cam get 0x00,0x12,0x23,0x55...
  • 写入多组寄存器,用于初始化摄像头模组,也可以启动视频流时在线调试视频效果
cam set FE=00,01=0A,02=0C,E3=7D,E4=02,E5=71...
  • 保存寄存器配置序列,便于上电自动配置生效
cam save clear
cam save add FE=00,01=0A,02=0C,E3=7D,E4=02,E5=71...
cam save add ......
cam save submit

当需要一次性操作的寄存器过多时,命令行缓冲区不足以处理,则可以省略掉 0x 符号,如上述 cam set 指令的示例。

自行适配新的摄像头模组需核对原理图引脚顺序和供电,如果引脚刚好顺序颠倒,可以选用支持上下接的前插后压座子。

更多玩法:可以通过执行 help、cam help、video help 帮助指令查看其它指令的示例。

六、备注说明

自行适配条件:

  1. 摄像头模组供电电压可以支持 2.8V\1.8V。
  2. 摄像头模组输出格式为 YUV422 或 JPEG。
  3. 摄像头模组引脚顺序必须与本模块一致,顺序颠倒的可以采用前插后压的座子,可正反插。
  4. 摄像头模组可用的寄存器初始化列表,一般商家都会提供,然后通过串口命令进行下发配置即可。

注意事项说明:

  1. HTTP 视频流为试验性功能,建议使用 360 极速浏览器体验。
  2. HTTP 目前最佳的体验分辨率是 320x240(或提高分辨率降低质量也行),UDP 分辨率则是 640x480。
  3. 看产品热度,会考虑后续在产品中增加新功能,如自适应不同摄像头模组、二维码识别、串口图传等。

附件包含如下:

  1. 深度开放的 SDK 源码以及相关开发文档链接地址。
  2. 包含本模块所需的固件、烧录软件、烧录文档。
  3. 包含本模块所需的摄像头模组购买地址。
  4. 包含本模块的电子元器件位置图。
  5. udp 视频流上位机源码和可执行程序。

七、演示视频

无线网络图传模块演示视频

  1. 演示时,使用 xshell 的快速命令栏的功能,节省输入指令的时间。
  2. 演示了网络配置、HTTP 推流、UDP 推流、在线实时切换分辨率等功能。
  3. 在视频的最后,为了演示可以在线调试摄像头,做了两次切换分辨率的动作,可以看到视频流也随之变化。

八、固件更新记录

v1.0.2(net_image_transmission_v1.0.2_20220519.img)

  1. 修复:调整错误的分辨率配置,仍会将配置信息保存到 flash 的问题
  2. 新增:支持检测网络断开15秒后自动重连的功能

v1.0.1(net_image_transmission_v1.0.1_20220515.img)

发布的首个版本,支持本文描述的所有功能。

九、硬件更新记录

  • V1.3:新增支持某些需要 DVDD 1.8V 的摄像头模组(如 GC2145)
  • V1.2:发布的首个版本

十、已调试的摄像头模组列表

  1. GC0308:系统默认配置的模组
  2. GC2145:请使用附件 GC2145_640x480.txt 的命令更新一下即可

若你有更优或者点亮了其它类型的摄像头模组命令参数,也可以在评论区一起分享出来喔。


http://www.niftyadmin.cn/n/830905.html

相关文章

Git 修改已提交的邮箱和用户信息

实际过程中有的时候本地配置信息邮箱有误,导致git commit 提交作者的信息有误,这个时候就需要进行修改 git config --list user.emailxxx user.namexxx修改git 配置信息 git config --global user.email xxxxxx.com修改已经提交的作者信息 网上给出答…

【分析笔记】Linux input 子系统原理分析

一、input 子系统简介 输入子系统主要用于支持各种输入设备,可大大简化这类设备驱动的开发难度。以下为个人的理解,可能不同的内核版本会略有差异,在这里分析的内核为 linux-4.9。 无论在 Linux 是什么子系统,其目的都是为了将硬…

Git 提交缺少Change-Id

Git 提交时时候提示如下:主要提示你的提交缺少了Change-Id,主要之前进行了几次git rebase -i 错删了Change-Id导致的 可以看到提交1和提交2的区别 解决办法 如果缺失 Change-Id , 使用以下命令即可解决问题:1 git rebase -i previous co…

【分析笔记】全志平台 gpio-keys 驱动应用和 stack crash 解决

内核配置 内核版本&#xff1a;Linux version 4.9.56 make ARCHarm64 menuconfig Device Drivers --->Input device support ---> [*] Keyboards ---><*> GPIO Buttons配置文件 sys_config.fex ;------------------------------------------------…

嵌入式软件中如何验证麦克风的好坏?

实现项目量产过程中&#xff0c;要测试一些外设&#xff0c;比如智能音箱的麦克风测试&#xff0c;测试麦克风的步骤比较复杂&#xff0c;比如验证麦克风的一致性&#xff0c;降噪算法等等&#xff0c;这里只是初步验证下麦克风的好坏&#xff0c;验证麦克风的好坏无非就是录音…

Ubuntu下查看电脑相关信息

经常编译源代码&#xff0c;硬件的配置决定了编译的速度&#xff0c;下面通过一些命令查看CPU相关参数 CPU参数 cpu的参数通过cat /proc/cpuinfo查看&#xff0c;主要计算公式 总核数 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程…

【随笔记】全志平台 gpio-leds 驱动应用

硬件信息 内核版本&#xff1a;Linux 4.9 硬件原理&#xff1a; GPIO 通过一颗 MOS 管(2N7002ET1G)&#xff0c;接到 LED 负极&#xff0c;LED 正极接电源。GPIO 通过拉高导通 MOS &#xff0c;将 LED 接地&#xff0c;实现点亮 LED。 内核配置 配置内核驱动&#xff1a;make…

嵌入式Linux中tmp目录大小修改

嵌入式项目过程中有的时候需要扩展下/tmp目录的大小&#xff0c;如何实现: 通过df -h可以查看到/tmp目录的大小&#xff0c;文件类型 Filesystem Size Used Available Use% Mounted on tmpfs 116.5M 1.2M 115.3M 1% /tmp可以…