0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

合宙Air系列开发板官方demo学习(二):camera-摄像头:(1)-capture

medlarking 来源:medlarking 作者:medlarking 2022-12-05 14:33 次阅读

基础资料

基于Air105开发板:Air105 - LuatOS 文档

上手:开发上手 - LuatOS 文档

探讨重点

对官方camera - 摄像头demo中capture功能的复现,进行相关内容的学习及探讨。

实现功能

功能1:捕捉图片并存入SPI接口外置sd卡;

功能2:捕捉图片并通过Serial 串口接收数据存入电脑

硬件准备

Air105开发板1块,面包板1块,TFTLCD 屏幕,Micro SD卡模块(SPI)接口1个,摄像头GC032A(SPI) , USB转TTL串口模块,导线若干。

Air105开发板

TFTLCD 屏幕

SD卡模块(SPI),摄像头GC032A(SPI)

CH340G-USB转TTL串口模块

软件版本

AIR105:LuatOS@AIR105 base 22.10 bsp V0011

软件使用

接口文档可参考:camera摄像头

接线示意图

功能1:捕捉图片并存入SPI接口外置SD卡

lcd初始化

spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,4810001000,spi.MSB,1,1) --debug信息:显示芯片类型st7735

log.info("lcd.init", --SHPI接口管脚对应连接
lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))

摄像头初始化

--GC032A输出rgb图像初始化命令
local GC032A_InitReg =
{
zbar_scan = 0,--是否为扫码
draw,开发板未引出_lcd = 1,--是否向lcd输出
i2c_id = 0,
i2c_addr = 0x21,
pwm_id = 5;
pwm_period = 1210001000,
pwm_pulse = 0,
sensor_width = 640,
sensor_height = 480,
color_bit = 16,
init_cmd ="/luadb/GC032A_InitReg.txt"--此方法将初始化指令写在外部文件,支持使用 # 进行注释
}

local camera_pwdn = gpio.setup(pin.PD06, 1, gpio.PULLUP) -- PD06 camera_pwdn引脚,开发板上未引出
local camera_rst = gpio.setup(pin.PD07, 1, gpio.PULLUP) -- PD07 camera_rst引脚,开发板上未引出
camera_rst(0)

-- 拍照, 自然就是RGB输出了
local camera_id = camera.init(GC032A_InitReg)--屏幕输出rgb图像
camera.start(camera_id)--开始指定的camera
log.info("摄像头启动")

/luadb/是开发板的虚拟地址。GC032A_InitReg.txt在烧写主程序时一并烧写入开发板,和main()文件同级。PS:GC032A_InitReg.txt内容为摄像头模组GC032A的初始化的命令(寄存器操作指令及参数),后期另外撰文分析。GC032A芯片硬件手册的最新版本为:GC032A DataSheet_Release_V1.1_20170314。

GC032ADataSheet-Release-V1.1-20170314(GC032ADataSheet-Release)-单片机文档类资源-CSDN文库

指定capture按钮

gpio.setup(pin.PA10, function() --BOOT键
sys.publish("CAPTURE", true) --点击后系统释放"CAPTURE",并由sys.waitUntil处理
end, gpio.PULLUP,gpio.FALLING)

SD卡初始化

local spiId = 2
local result = spi.setup(
    spiId,--串口id
    255, -- 不使用默认CS脚,通过gpio.setup(TF_CS, 1)重新指定
    0,--CPHA
    0,--CPOL
    8,--数据宽度
    400*1000  -- 初始化时使用较低的频率
)
local TF_CS = pin.PB3
gpio.setup(TF_CS, 1)
--fatfs.debug(1) -- 若挂载失败,可以尝试打开调试信息,查找原因
fatfs.mount("SD", spiId, TF_CS, 24000000)
local data, err = fatfs.getfree("SD")
if data then
    log.info("fatfs", "getfree", json.encode(data))
else
    log.info("fatfs", "err", err)
end

图片存储

result, data = sys.waitUntil("CAPTURE", 30000)  --capture捕获周期为30s
    if result==true and data==true then  --获取到数据
        log.debug("摄像头捕获图像")
        os.remove("/sd/temp.jpg")
        camera.capture(camera_id, "/sd/temp.jpg", 1)   --存储在SD上

功能2:捕捉图片并通过Serial 串口接收数据存入电脑

串口初始化

local uartid = 1 -- 根据实际设备选取不同的uartid
--初始化
local result = uart.setup(
uartid,--串口id
115200,--波特率
8,--数据位
1--停止位
)

官方demo本段代码注释状态,运行前需取消注释,并将SD卡存储部分代码进行注释,不能同时运行。

串口数据接收

demo中选用U1_RX,U2_TX端口

点击板载BOOT键进行截图后,串口接收到截图信息,api已封装摄像头截图并输出JPEG格式的相关功能。

端口收到的原始数据

串口数据处理

后期可以对HEX 16进制数据解码,采用HEX 16进制数据格式转换为JPEG格式。

HEX 16进制JPG文件信息

提示:JPG文件正常以FF D8开头,FF D9结尾,可以用来辅助判断串口接收信息是否完整。

HEX数据转换为jpeg格式文件

HEX(16进制数据)先转存在txt文档中,再通过Python的binascii库输出为jpeg文件(由十六进制字符串即十六进制数据,转换为二进制数据JPG文件)。

转换效果如下:

HEX转JPG

HEX转JPG代码示例(Python)

import binascii

十六进制字符串,如:“ff d8 ff e1 11 e0 45 78 69...”;存入TXT文件。经过如下代码转换,可将pic存储为图片形式并可以正常打开

o_file=r"G:jpg数据.txt"
filepath=r"G:jpg数据.jpg"
f = open(o_file,"r")
payload=f.read()
f.close()
f=open(filepath,"ab") # filepath为你要存储的图片的全路径
pic = binascii.a2b_hex(payload.replace(' ', '').strip())
f.write(pic)
f.close()

验证完成!

测试LOG数据分析

LOG数据分析

后续

介绍功能3:捕捉图片存入SPI接口外置sd卡,副本同步通过Serial 串口输出jpg文件存入电脑。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    59

    文章

    4837

    浏览量

    95607
  • Capture
    +关注

    关注

    0

    文章

    19

    浏览量

    15563
  • 开发板
    +关注

    关注

    25

    文章

    5035

    浏览量

    97384
  • AIR
    AIR
    +关注

    关注

    0

    文章

    18

    浏览量

    2973
收藏 人收藏

    评论

    相关推荐

    Air820开发板免费试用】上电烧录demo&功能体验

    首先感谢论坛和合举办的活动,本次开发板分为底板和扩展板,如下图所示:开发板小巧紧凑,板子采用高端工艺制造:赠送塑料螺丝,十分用心:一、
    发表于 11-05 21:43

    Air820开发板试用体验】I.开箱报告_zmj

    本帖最后由 卿小小_9e6 于 2021-11-22 13:46 编辑 【Air820开发板试用】+I.开箱报告_zmj1.鸣谢感
    发表于 11-21 20:34

    MCU系列Air105开发板免费试用

    Air105开发板支持LuatOS、RTT开发demo丰富易用;支持UART、GPIO、S
    发表于 03-15 11:06

    Air105开发板试用体验】+初识Air105开发板

    体积小巧,但在性能上却异常的强大,其硬件资源的配置见图1所示。图1 硬件资源更令人感到惊奇的是其性价比还非常的高,它不但随开发板配有2排插针,还配有一个30W像素的针孔摄像头,简直是太
    发表于 05-22 19:41

    Air105开发板试用体验】Ari105开发板开箱,及摄像头使用

    ON,然后连接USB,识别后,设备信息如下:2. 摄像头驱动:摄像头驱动使用的和“Cat.1模块PC 端 ”同样的USB驱动:断开
    发表于 05-22 21:41

    Air105开发板试用体验】开箱体验运行官方demo:流水灯+摄像头

    demo。其次,开发板可接外设特别多,我可能主要是利用其中的充电模块,计划的18650电池进行充电实验。最好,也可支持摄像头、ADC、屏幕等等外设,他的开发环境也特别好,调试起来比较容
    发表于 05-23 19:39

    Air105开发板试用体验】Air105开发板入门体验

    一.开发板简介 Air105核心基于Air105芯片设计而来,尺寸比较小,可以快速的实现个
    发表于 05-23 20:47

    Air105开发板试用体验】+摄像头

    数据传输的,所以要先安装usb驱动,Cat.1模块PC 端 USB 驱动下载官方提供的固件:1开发
    发表于 06-25 13:49

    Air系列开发板官方demo学习(一):ADC功能

    基础资料基于Air103开发板Air103 - LuatOS 文档上手:开发上手 - LuatOS 文档探讨重点对官方
    发表于 11-23 09:37

    Air系列开发板官方demo学习):camera - 摄像头:(1)-capture

    基础资料基于Air105开发板Air105 - LuatOS 文档上手:开发上手 - LuatOS 文档探讨重点对官方
    发表于 12-05 14:24

    Air105开发板试用体验】AIR105开箱体验及摄像头demo含软件及工具

    东西装了3个防静电袋,排针一个,摄像头一个, 开发板 一个 组装起来进行简单的功能测试 需要先下载luatool方便下载soc及lua脚本 测试摄像头demo需要安装驱动。   win
    的头像 发表于 12-02 11:06 614次阅读
    【<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>105<b class='flag-5'>开发板</b>试用体验】<b class='flag-5'>AIR</b>105开箱体验及<b class='flag-5'>摄像头</b><b class='flag-5'>demo</b>含软件及工具

    Air105开发板试用体验】Ari105开发板开箱,及摄像头使用

    之前使用产品的经验,很快就上手了。 零、开箱 首先来看一看Air105: 发的 开发板
    的头像 发表于 12-05 10:31 5369次阅读
    【<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>105<b class='flag-5'>开发板</b>试用体验】Ari105<b class='flag-5'>开发板</b>开箱,及<b class='flag-5'>摄像头</b>使用

    Air105开发板试用体验】+初识Air105开发板

    配有2排插针,还配有一个30W像素的针孔摄像头,简直是太超值了!   图2 开发板及配件 在焊接好排针及接好摄像头后,其效果如
    的头像 发表于 12-05 10:33 2056次阅读
    【<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>105<b class='flag-5'>开发板</b>试用体验】+初识<b class='flag-5'>Air</b>105<b class='flag-5'>开发板</b>

    Air700E新品开发板

    Air700E新品开发板EVB-Air700
    的头像 发表于 04-07 10:20 2918次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700E新品<b class='flag-5'>开发板</b>

    Air001开发板——支持Arduino开发,国产MCU新热潮

    包装炸裂、价格便宜、支持Arduino开发——点燃国产MCU新热潮的Air001,开发板补货终于到了!!!
    的头像 发表于 08-01 00:12 5397次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>001<b class='flag-5'>开发板</b>——支持Arduino<b class='flag-5'>开发</b>,国产MCU新热潮