文章目录

  • 1 前言
  • 2 硬件
  • 3 官方代码
  • 4 调整代码
  • 5 结果
  • 6 小结

1 前言

本章测试下air105+gc9306+GC032A拍照。

2 硬件


开发板:air105
camera:105附带的camera模组——GC032A
lcd屏幕:gc9306x

官方的demo使用的时PA10作为拍照按键,由于我焊接排针朝上,盖在面包板上,boot按键按不到,使用keyboord0/1作为拍照按键。

3 官方代码

https://gitee.com/openLuat/LuatOS/blob/master/demo/camera/Air105/capture/main.lua
官方示例使用的屏幕是st7789,需要根据自己的情况选择。

4 调整代码

我将camera的初始化放在了一个lua文件中。
PS:如果使用的是105固件版本 v0005,则需要将示例中lcd_init的gc9306x改为gc9306,如果是更高的版本则不需要这样修改。

main.lua

PROJECT = "camerademo"
VERSION = "1.0.0"local sys = require "sys"
require("t8_camera")
--[[
-- LCD接法示例, 以Air105开发板的HSPI(SPI5)为例
LCD管脚       Air105管脚
GND          GND
VCC          3.3V
SCL          (PC15/HSPI_SCK)
SDA          (PC13/HSPI_MOSI)
RES          (PC12/HSPI_MISO)
DC           (PE08) --开发板上的U3_RX
CS           (PC14/HSPI_CS)
BL           (PE09) --开发板上的U3_TX提示:
1. 只使用SPI的时钟线(SCK)和数据输出线(MOSI), 其他均为GPIO脚
2. 数据输入(MISO)和片选(CS), 虽然是SPI, 但已复用为GPIO, 并非固定,是可以自由修改成其他脚
]]if wdt thenwdt.init(15000)--初始化watchdog设置为15ssys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
endspi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,20*1000*1000,spi.MSB,1,1)-- log.info("lcd.init",
-- lcd.init("st7735s",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))-- log.info("lcd.init",
-- lcd.init("st7789",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))-- log.info("lcd.init",
-- lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 0,yoffset = 0},spi_lcd))log.info("lcd.init",
lcd.init("gc9306",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 240,h = 320,xoffset = 0,yoffset = 0},spi_lcd))local uartid = 1 -- 根据实际设备选取不同的uartid
--初始化
local result = uart.setup(uartid,--串口id115200,--波特率8,--数据位1--停止位
)t8_camera_init()
t8_camera_start()sys.taskInit(function()while 1 doresult, data = sys.waitUntil("CAPTURE", 30000)if result==true and data==true thenlog.debug("摄像头捕获图像")camera.capture(camera_id, "/temp.jpg", 1)sys.wait(2000)local f = io.open("/temp.jpg", "r")local dataif f thendata = f:read("*a")log.info("fs", #data)f:close()enduart.write(uartid, data) --找个能保存数据的串口工具保存成文件就能在电脑上看了, 格式为JPGendendend)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

t8_camera.lua

--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 ={0xf3,0xff,0xf7,0x01,0xf8,0x03,0xf9,0xce,0xfa,0x00,0xfc,0x02,0xfe,0x02,0x81,0x03,0xfe, 0x00,0x77, 0x64,0x78, 0x40,0x79, 0x60,0xfe, 0x00,0x03, 0x01,0x04, 0xcb,0x05, 0x01,0x06, 0xb2,0x07, 0x00,0x08, 0x10,0x0a, 0x00,0x0c, 0x00,0x0d, 0x01,0x0e, 0xe8,0x0f, 0x02,0x10, 0x88,0x17, 0x54,0x19, 0x08,0x1a, 0x0a,0x1f, 0x40,0x20, 0x30,0x2e, 0x80,0x2f, 0x2b,0x30, 0x1a,0xfe, 0x02,0x03, 0x02,0x05, 0xd7,0x06, 0x60,0x08, 0x80,0x12, 0x89,0xfe, 0x00,0x18, 0x02,0xfe, 0x02,0x40, 0x22,0x45, 0x00,0x46, 0x00,0x49, 0x20,0x4b, 0x3c,0x50, 0x20,0x42, 0x10,0xfe, 0x01,0x0a, 0xc5,0x45, 0x00,0xfe, 0x00,0x40, 0xff,0x41, 0x25,0x42, 0xef,0x43, 0x10,0x44, 0x82,0x46, 0x22,0x49, 0x03,0x52, 0x02,0x54, 0x00,0xfe, 0x02,0x22, 0xf6,0xfe, 0x01,0xc1, 0x38,0xc2, 0x4c,0xc3, 0x00,0xc4, 0x2c,0xc5, 0x24,0xc6, 0x18,0xc7, 0x28,0xc8, 0x11,0xc9, 0x15,0xca, 0x20,0xdc, 0x7a,0xdd, 0xa0,0xde, 0x80,0xdf, 0x88,0xfe, 0x01,0x50, 0xc1,0x56, 0x34,0x58, 0x04,0x65, 0x06,0x66, 0x0f,0x67, 0x04,0x69, 0x20,0x6a, 0x40,0x6b, 0x81,0x6d, 0x12,0x6e, 0xc0,0x7b, 0x2a,0x7c, 0x0c,0xfe, 0x01,0x90, 0xe3,0x91, 0xc2,0x92, 0xff,0x93, 0xe3,0x95, 0x1c,0x96, 0xff,0x97, 0x44,0x98, 0x1c,0x9a, 0x44,0x9b, 0x1c,0x9c, 0x64,0x9d, 0x44,0x9f, 0x71,0xa0, 0x64,0xa1, 0x00,0xa2, 0x00,0x86, 0x00,0x87, 0x00,0x88, 0x00,0x89, 0x00,0xa4, 0xc2,0xa5, 0x9b,0xa6, 0xc8,0xa7, 0x92,0xa9, 0xc9,0xaa, 0x96,0xab, 0xa9,0xac, 0x99,0xae, 0xce,0xaf, 0xa9,0xb0, 0xcf,0xb1, 0x9d,0xb3, 0xcf,0xb4, 0xac,0xb5, 0x00,0xb6, 0x00,0x8b, 0x00,0x8c, 0x00,0x8d, 0x00,0x8e, 0x00,0x94, 0x55,0x99, 0xa6,0x9e, 0xaa,0xa3, 0x0a,0x8a, 0x00,0xa8, 0x55,0xad, 0x55,0xb2, 0x55,0xb7, 0x05,0x8f, 0x00,0xb8, 0xc7,0xb9, 0xa0,0xfe, 0x01,0xd0, 0x40,0xd1, 0x00,0xd2, 0x00,0xd3, 0xfa,0xd4, 0x4a,0xd5, 0x02,0xd6, 0x44,0xd7, 0xfa,0xd8, 0x04,0xd9, 0x08,0xda, 0x5c,0xdb, 0x02,0xfe, 0x00,0xfe, 0x00,0xba, 0x00,0xbb, 0x06,0xbc, 0x0b,0xbd, 0x10,0xbe, 0x19,0xbf, 0x26,0xc0, 0x33,0xc1, 0x3f,0xc2, 0x54,0xc3, 0x68,0xc4, 0x7c,0xc5, 0x8c,0xc6, 0x9c,0xc7, 0xb4,0xc8, 0xc9,0xc9, 0xd8,0xca, 0xe4,0xcb, 0xee,0xcc, 0xf4,0xcd, 0xf9,0xce, 0xfa,0xcf, 0xff,0xfe, 0x00,0x5a, 0x08,0x5b, 0x0f,0x5c, 0x15,0x5d, 0x1c,0x5e, 0x28,0x5f, 0x36,0x60, 0x45,0x61, 0x51,0x62, 0x6a,0x63, 0x7d,0x64, 0x8d,0x65, 0x98,0x66, 0xa2,0x67, 0xb5,0x68, 0xc3,0x69, 0xcd,0x6a, 0xd4,0x6b, 0xdc,0x6c, 0xe3,0x6d, 0xf0,0x6e, 0xf9,0x6f, 0xff,0xfe, 0x00,0x70, 0x50,0xfe, 0x00,0x4f, 0x01,0xfe, 0x01,0x0c, 0x01,0x0d, 0x00,0x12, 0xa0,0x13, 0x4a,0x44, 0x04,0x1f, 0x40,0x20, 0x40,0x23, 0x0a,0x26, 0x9a,0x3e, 0x20,0x3f, 0x2d,0x40, 0x40,0x41, 0x5b,0x42, 0x82,0x43, 0xb7,0x04, 0x0a,0x02, 0x79,0x03, 0xc0,0xfe, 0x01,0xcc, 0x08,0xcd, 0x08,0xce, 0xa4,0xcf, 0xec,0xfe, 0x00,0x81, 0xb8,0x82, 0x04,0x83, 0x10,0x84, 0x01,0x86, 0x50,0x87, 0x18,0x88, 0x10,0x89, 0x70,0x8a, 0x20,0x8b, 0x10,0x8c, 0x08,0x8d, 0x0a,0xfe, 0x00,0x8f, 0xaa,0x90, 0x1c,0x91, 0x52,0x92, 0x03,0x93, 0x03,0x94, 0x08,0x95, 0x6a,0x97, 0x00,0x98, 0x00,0xfe, 0x00,0x9a, 0x30,0x9b, 0x50,0xa1, 0x30,0xa2, 0x66,0xa4, 0x28,0xa5, 0x30,0xaa, 0x28,0xac, 0x32,0xfe, 0x00,0xd1, 0x3f,0xd2, 0x3f,0xd3, 0x38,0xd6, 0xf4,0xd7, 0x1d,0xdd, 0x72,0xde, 0x84,0xfe, 0x00,0x05, 0x01,0x06, 0xad,0x07, 0x00,0x08, 0x10,0xfe, 0x01,0x25, 0x00,0x26, 0x4d,0x27, 0x01,0x28, 0xce,0x29, 0x01,0x2a, 0xce,0x2b, 0x01,0x2c, 0xce,0x2d, 0x01,0x2e, 0xce,0x2f, 0x01,0x30, 0xce,0x31, 0x01,0x32, 0xce,0x33, 0x01,0x34, 0xce,0x3c, 0x10,0xfe, 0x00,0xfe,0x00,0x44,0x06,--RGB565输出0x46,0x0f,}
}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)function t8_camera_init()-- 拍照, 自然就是RGB输出了camera_id = camera.init(GC032A_InitReg)--屏幕输出rgb图像
endfunction t8_camera_start()log.info("摄像头启动")camera.start(camera_id)--开始指定的cameragpio.setup(pin.PA10, function()sys.publish("CAPTURE", true)end, gpio.PULLUP,gpio.FALLING)end

5 结果


图像显示正常。

6 小结

后续加上105的tf卡,将图片存到tf卡中。
或者使用uart传输到电脑上。

【Luat-air105】8.1 camera拍照相关推荐

  1. android Camera 拍照的两个问题

    2010.11.16---android Camera 拍照的两个问题 1.setParameters failed 异常信息如下 Java代码   11-16 11:21:33.902: WARN/ ...

  2. Android--使用Camera拍照

    前言 在开发Android应用的时候,如果需要调用摄像头获取拍摄的照片,除了通过Intent调用系统现有相机应用拍摄照片之外,还可以通过直接调用Camera硬件去去获取摄像头拍摄的照片.本篇博客将讲解 ...

  3. Android开发技巧——Camera拍照功能

    本篇是我对开发项目的拍照功能过程中,对Camera拍照使用的总结.由于camera2是在api level 21(5.0.1)才引入的,而Camera到6.0仍可使用,所以暂未考虑camera2. 文 ...

  4. Android Studio:使用Camera拍照(三)为相机增加取景蒙板/浮层

    写在前面的话:每一个实例的代码都会附上相应的代码片或者图片,保证代码完整展示在博客中.最重要的是保证例程的完整性!!!方便自己也方便他人~欢迎大家交流讨论~本文为博主原创文章,未经博主允许不得转载. ...

  5. android系统如何在静音模式下关闭camera拍照声音(2)

    之前写过一篇"android系统如何在静音模式下关闭camera拍照声音"的博客,今天来写他的续篇,继续探讨这个问题. 公司新需求,要求在camera应用中添加一个开关,可以进行拍 ...

  6. 腾讯优测-优社区干货精选 |安卓适配之Camera拍照时快门咔嚓声

    文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...

  7. Android之Camera拍照

    一.看看调用时序图 1.拍照命令时序图 2.拍照数据回调时序图 二.看看源码分析 hardware/amlogic/camera/CameraHal.cpp [cpp] view plaincopy ...

  8. android模拟器拍照图,android模拟器无法使用camera拍照

    遇到的问题: 1 在模拟器里,无法启动camera: 2 成功启动camera之后,真正拍照的时候,提示"your sdcard is full",我明明有一个100M的sdcar ...

  9. Android的模拟器能不能照相,android模拟器无法使用camera拍照

    遇到的问题: 1 在模拟器里,无法启动camera: 2 成功启动camera之后,真正拍照的时候,提示"your sdcard is full",我明明有一个100M的sdcar ...

  10. 【Android适配问题集锦-相机类】Camera拍照时快门咔嚓声适配问题

    现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想关又关不掉.....不过话说回来,静音拍照你想做啥? 来到主题上,因为网络上有很多关于"删除或修改快门声 ...

最新文章

  1. 【二分图最大匹配】【HDU2063】过山车
  2. 路由异常的起源-如何影响最终用户?——Vecloud微云
  3. 数据库连接池-连接的关闭内幕
  4. 数据结构学习之选择排序
  5. C/C 宏替换详解
  6. [vue] vue中什么是递归组件?举个例子说明下?
  7. 实例详解机器学习如何解决问题
  8. Ruby中对应PHP的hex2bin和bin2hex方法
  9. 数据库实验四 视图实验
  10. MAC使用Safari浏览器仿真IE
  11. html屏幕3分,使用CSS3的background-size优化苹果的Retina屏幕的图像显示
  12. hdu 4747(区间更新)
  13. java怎样写网页_java怎么写网站
  14. 关于根号p是无理数的另类证明
  15. java学到什么程度可找工作_Java学到什么程度可以找工作
  16. Pycharm中,pyqt5.11.1的Qt assistant显示
  17. 问题-某个程序改了ICO图标后编译后还是显示老图标?
  18. 联想 Thinkpad T440p驱动程序下载列表(转发文章)
  19. 首个室温超导体问世,为了发现它,科学家用废了几十颗钻石 | Nature封面-1
  20. python使用KNeighborsClassifier出现FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosi

热门文章

  1. Windows官方镜像大全---【内附网盘链接】
  2. shp文件转json
  3. photoshop 新建文档尺寸预设如何导出保存
  4. 数理统计: 第五章 方差分析与试验设计
  5. 前端视频分片上传(blob)vue react uni 均适用
  6. 【Scratch案例实操】scratch大鱼吃小鱼(完整详案) scratch编程案例教学 scratch创意编程 少儿编程教案
  7. 用Python 操作Web 前端 基础 1
  8. 渤海银行天津分行计算机笔试,关于渤海银行笔试经验分享
  9. 解决:error C1083: 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory
  10. 华为交换机vlan创建命令