跳转至

Air780EPM Camera 硬件电路说明

Air780EPM 支持 SPI 接口 Camera,如下表所示;

一、硬件支持

1. 摄像头模块特性

  • 接口类型:Air780EPM 支持 SPI/I2C 接口摄像头,通过 SPI 总线传输图像数据,通过 I2C 总线传输控制命令。
  • 驱动 IC 型号:

    • V1.2 版本开发板:默认使用 GC032A 摄像头模组(30 万像素)。
    • V1.3 版本开发板:默认使用 GC032A 摄像头模组(30 万像素)。
    • V1.3 版本开发板带外壳:默认使用 GC0310 摄像头模组(30 万像素)。
    • Air780EPM目前已支持的Camera驱动IC有:GC0310/GC032A/BF30A2等。
    • 供电要求:

    • 摄像头模块由开发板内部 LDO 供电(3.3V),需确保开发板电源稳定(建议使用 USB 供电或稳定 5V 输入)。

    • GPIO2(PIN23)控制摄像头供电:默认作为摄像头供电的控制引脚,需注意与其他功能的冲突(见注意事项)。

2. 硬件连接

  • 关键引脚:
    • SPI 数据线:通过 SPI 总线传输图像数据。包括时钟与控制信号:包括 MCLK(主时钟)、BCLK(位时钟)、RX0/RX1(数据)等。
    • I2C 控制线:通过 I2C 总线传输控制命令,包括:SCL(时钟)、SDA(数据)。
    • CAM_PWDN:摄像头开关控制信号(通常为 GPIO 控制)。

3. 电源与信号设计

  • 供电稳定性:
    • 摄像头模块功耗较高(约 100-200mA),需确保开发板电源电路能提供足够电流。
    • 若使用外部电源,需与开发板共地。

二、软件开发

1. LuatOS API 与驱动

  • 初始化摄像头:
-- 初始化摄像头(默认GC032A/GC0310配置)
camera.init({
  format = "RGB565",  -- 图像格式(支持RGB565、YUV等)
  width = 320,        -- 分辨率(如320x240)
  height = 240
})
  • 抓取图像:
local img = camera.capture()  -- 返回图像数据(二进制流)
  • LCD 显示联动:
-- 假设已初始化LCD(如ST7796)
lcd.init()  -- LCD初始化
while true do
  local img = camera.capture()
  lcd.display()  -- 将图像数据发送到LCD显示
  sys.wait(500)     -- 控制刷新频率
end

2. 二维码解析功能

  • 调用摄像头扫码:
-- 启动扫码功能(需LuatOS内置解析库支持)
require("qrcode")
local result = qrcode.scan(camera)
if result then
  print("解析结果:" .. result)
end

3. 数据传输至电脑

  • 通过串口传输图像:
-- 配置串口(如UART0)
uart.setup(0, 115200, 8, uart.STOP, uart.PARITY)
while true do
  local img = camera.capture()
  uart.send(0, img)  -- 发送图像数据到电脑
  sys.wait(1000)
end

三、注意事项

1. 硬件设计与调试

  • GPIO2 冲突问题:

    • Air780EPM 开发板默认 GPIO2(PIN23)用于控制摄像头供电的 LDO,若需复用该引脚(如 OneWire 协议),需物理修改开发板电路:
    • 摄像头供电稳定性:

    • 避免在摄像头工作时频繁开关电源,可能导致初始化失败。

    • 若使用外部电源,需确保电压匹配(3.3V)并共地。

2. 软件配置关键点

  • 驱动 IC 适配:

    • 不同摄像头型号(GC0310/GC032A)的寄存器配置不同,需确保 LuatOS 固件版本支持目标驱动 IC。
    • 若更换摄像头模组,需重新配置 camera.init() 参数(如分辨率、格式)。
    • 内存与性能:

    • 高分辨率图像(如 640x480)会占用较多内存(PSRAM 需 ≥2MB),建议根据需求调整分辨率。

    • 使用 sys.timer()sys.task() 控制图像捕获频率,避免 CPU 过载。

3. 典型问题排查

  • 摄像头无法初始化:

    • 检查摄像头模块是否正确插入。
    • 确认 GPIO2 未被其他功能占用(如 OneWire)。
    • 检查电源供电是否稳定。
    • 图像显示异常:

    • 确保 LCD 和摄像头的分辨率、格式匹配(如 LCD 为 240x240,摄像头设置相同分辨率)。

    • 检查 DVP 数据线是否短路或接触不良。

4. 其他注意事项

  • 热插拔与复位:

    • 摄像头模块不支持热插拔,需在系统重启后重新连接。
    • 复位摄像头需使用硬件开关引脚 CAM_PWDN。
    • 固件版本:

    • 使用支持摄像头功能的 LuatOS 固件。


四、典型应用场景

1. 实时图像预览:通过 LCD 实时显示摄像头画面。 2. 二维码/条形码扫描:结合 LuatOS 解析库实现快速扫码功能。 3. 图像传输:将拍摄的图像通过 4G 网络上传至服务器或通过串口传输至电脑。


五、Air780EPM 开发板

1. 硬件参考设计

2. LuatOS API 与驱动

-- 根据实际情况选用GC032A或GC0310
-- require "bf30a2"
require "gc032a"
-- require "gc0310"
httpplus = require "httpplus"
gpio.setup(2, 1) -- GPIO2打开给camera电源供电
gpio.setup(29, 1) -- 1.3版本 GPIO29打开给lcd电源供电
gpio.setup(14, nil) -- 关闭GPIO14,防止camera复用关系出问题
gpio.setup(15, nil) -- 关闭GPIO15,防止camera复用关系出问题

local SCAN_MODE = 0 -- 写1演示扫码
local scan_pause = true
local getRawStart = false
local RAW_MODE = 0 -- 写1演示获取原始图像
-- SCAN_MODE和RAW_MODE都没有写1就是拍照

六、参考资料

1. 摄像头开发文档:


七、总结

在 Air780EPM 上开发 Camera 应用需注意以下关键点:

  • 硬件层面:确保供电稳定。
  • 软件层面:精确配置摄像头参数,适配驱动 IC,优化内存使用。
  • 调试阶段:优先检查电源、引脚复用和固件兼容性。