目录

基础资料

探讨重点

实现功能

硬件准备

软件版本

软件使用

接线示意图

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

lcd初始化

摄像头初始化

指定capture按钮

SD卡初始化

图片存储

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

串口初始化

串口数据接收

串口数据处理

HEX数据转换为jpeg格式文件

HEX转JPG代码示例(Python)

测试LOG数据分析

后续:捕捉图片存入SPI接口外置sd卡,副本存入电脑


基础资料

基于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,48*1000*1000,spi.MSB,1,1)   --debug信息:显示芯片类型st7735log.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  = 12*1000*1000,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 = 2local result = spi.setup(spiId,--串口id255, -- 不使用默认CS脚,通过gpio.setup(TF_CS, 1)重新指定0,--CPHA0,--CPOL8,--数据宽度400*1000  -- 初始化时使用较低的频率)local TF_CS = pin.PB3gpio.setup(TF_CS, 1)--fatfs.debug(1) -- 若挂载失败,可以尝试打开调试信息,查找原因fatfs.mount("SD", spiId, TF_CS, 24000000)local data, err = fatfs.getfree("SD")if data thenlog.info("fatfs", "getfree", json.encode(data))elselog.info("fatfs", "err", err)end

图片存储

        result, data = sys.waitUntil("CAPTURE", 30000)  --capture捕获周期为30sif 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,--串口id115200,--波特率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数据分析

后续:捕捉图片存入SPI接口外置sd卡,副本存入电脑

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

合宙Air105|摄像头|capture|SPI|Serial串口|TFTLCD|Micro SD卡|串口输出|jpg|官方demo|学习(2-2):摄像头camera:功能3:串口输出.jpg_Medlar_CN的博客

合宙Air105|摄像头|capture|SPI|Serial 串口|TFTLCD|Micro SD卡|GC032A|USB转TTL|官方demo|学习(2-1):摄像头camera-capture相关推荐

  1. 合宙Air105|CRYPTO|加密与解密|算法|RSA|HASH函数| BASE64|MD5|SHA1|SHA256|CRC|官方demo|学习(4):CRYPTO(加密与解密)

    基础资料 基于Air105开发板:Air105 - LuatOS 文档 上手:开发上手 - LuatOS 文档 探讨重点 对官方CRYPTO(加密与解密) 功能的复现,进行相关内容的学习及探讨. 实现 ...

  2. nRF52832学习记录(十二、SPI接口的应用 Micro SD卡读写测试)

    目录 1.nRF52xx SPI介绍 SPI接口基础介绍 SPI 寄存器 SPI 库函数介绍 SPI初始化函数 SPI数据传输函数 2.nRF52xx SPI 使用示例 w25qxx SPI Flas ...

  3. 合宙AIR105(四): SPI, MAX7219 8x8LED驱动

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 合宙 ...

  4. 合宙AIR105(二): 时钟设置和延迟函数

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 合宙 ...

  5. Arduino UNO驱动合宙1.8‘TFT SPI屏幕示例演示(含资料包)

    Arduino UNO驱动合宙1.8"TFT SPI屏幕示例演示 效果展示 驱动参考资料包 来源于:http://www.lcdwiki.com/zh/1.8inch_Arduino_SPI ...

  6. SPI初始化C语言编程,SD卡spi模式读写,初始化和复位都成功了

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:SD卡spi模式读写,初始化和复位都成功了 问题详情:我用的是内存卡 12M的!有知道是怎么回事的吗?是写入数回答:应该还得格式化, ...

  7. 物联网开发笔记(60)- 使用Micropython开发ESP32开发板之SPI接口控制Micro SD卡TF卡模块

    一.目的 这一节我们学习如何使用我们的ESP32开发板来通过SPI接口控制Micro SD卡TF卡模块. 二.环境 ESP32 + SPI接口控制Micro SD卡TF卡模块 + Thonny IDE ...

  8. Micro SD 卡(TF卡) spi 模式实现方法

    首先贴上一写SD卡SPI模式下的参考电路,以及一些比较不错的帖子的连接: 1:http://www.go-gddq.com/html/s733/2009-12/477854.htm 2:http:// ...

  9. nios ii之Micro SD卡(TF卡)spi

    上一篇文章已经介绍了Micro SD卡SPI模式的实现方法,这里给出自己写的基于nios ii的Micro SD卡读写程序(IO口模拟spi). 硬件设计就不多说了,主要是添加4的1为PIO口来模拟S ...

最新文章

  1. LC77 Combinations
  2. FAT32和NTFS的区别
  3. 什么叫做java程序中的继承_【Java】基础16:什么叫继承?
  4. Swift 再等等?我的答案是:快上车
  5. IDEA构建Spring源码
  6. 阿诺德图像加密c语言,三维arnold变换图像加密算法
  7. 服务器阵列卡缓存显示错误,服务器阵列卡(缓存)
  8. ESXI 通过naa在主机上找到物理磁盘的位置
  9. OSChina 周五乱弹 ——下完雨朕的江山都湿了
  10. Android系统电池管理(PowerManagerService)框架分析及其在实体设备和虚拟设备上的差异(一)
  11. C#毕业设计——基于C#+asp.net+sqlserver的设备管理系统设计与实现(毕业论文+程序源码)——设备管理系统
  12. 微信h5页面之微信授权、获取头像等
  13. 易中天品汉代风云人物12:刘邦对手之谜
  14. vue+echarts画甘特图
  15. 康佳android 9tv,康佳易TV史上最大规模系统升级 安卓4.4体验
  16. 雨林木风YLMF xp 绝版珍藏
  17. 『david_lv』老朋友喜相逢 《走出软件作坊》也喜相逢-SD2.0大会第一天
  18. 南邮CTF部分篇章WP
  19. c语言】13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号
  20. 利用blat在bat处理文件中发送邮件

热门文章

  1. Lava店铺音乐升级顾客体验
  2. STM32F407 芯片的学习 day07 iic通信方式 主芯片 与 at24c02之间的通讯
  3. 初学Silverlight,用它写了一个小游戏“宝石迷阵”
  4. motionpro.exe官网下载需要使用firefox浏览器,不然验证码刷不出来
  5. untiy 脚本API之可视化辅助类Gizmos
  6. 如何轻松实现电子采购优势?
  7. STC单片机DS1307+ssd1306 oled时钟显示
  8. Seata介绍(目前使用的一些场景)
  9. win10安装jdk12并配置环境
  10. Google 音乐的体验