最近捣鼓合宙的新模块Air780EPV,基于移芯EC718PV平台,看到宣传上的低功耗字样琳琅满目,想着也拿来试一试,以前的展锐的方案是得逐步更换过来了。本文也只是试玩啦,别当真。

从TB买到的是Air780EPV开发板和gc032a摄像头,只是座子没有焊上去,得手动补一下,其他都是成熟的资料,拿来跑一下并没有什么问题。现在合宙也不知道是啥情况,自从CC表涨价,再到开发板涨价,连双头Type-C数据线都能涨价的,TB店里面的CC表评价也骂声不断,看着开发板从69到99,再到199,捣鼓合宙4G模块 Cat.1 Air724UG和导航模块Air530;公众号也从每周一的技术分享和新品发布,换成了零零散散的商业心灵鸡汤,个人感觉就是从一个偏向技术开倒车搞成了搞管理的模式。虽然说从经济学的角度来说,开发板这种销售量不多的量产产品,确实应该提高是单品的售价来获得利润最大化,总之就是反正没多少人买嘛,要买模组搞开发的又不得不去买开发板来调试,但是全涨价了搞这些把口碑弄跌下去了也得不偿失。毕竟我们环境有不一样的。

再者说,能在Cat.1上找到低功耗的差异点,以此作为产品卖点自然是蛮好的,但是也不至于忘记积极维护自己的产品线和平台了吧,总感觉也不能为了低功耗来低功耗吧,平台的生态也依旧重要。

以下是从芯片选型手册上截图的平台差异:

image-20240423104207680.webp

以及基于相同平台的其他几个模组的情况:

image-20240605143650678.webp

摄像头的话具体是长下面这样:

image-20240605143436175.webp

1.首先就是要到:Minke工作台 (luatos.com) 中云编译固件,加入需要的外设,默认固件里是没有摄像头的:

image-20240423100704929.webp

摄像头的文档参考:camera - 摄像头 - LuatOS 文档

以下是基于demo/camera/spi_cam · 合宙Luat/LuatOS - 码云 - 开源中国 (gitee.com),修改的使用示例:

记得把gc032a.lua加入编译的资源列表。

PROJECT = "camerademo"
VERSION = "1.0.0"
-- 实际使用时选1个就行
-- require "bf30a2"
require "gc032a"
-- require "gc0310"
sys = require("sys")
log.style(1)

local SCAN_MODE = 0 -- 写1演示扫码

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

camera.on(0, "scanned", function(id, str)
    if type(str) == 'string' then
        log.info("扫码结果", str)
    elseif str == false then
        log.error("摄像头没有数据")
    else
        log.info("摄像头数据", str)
        sys.publish("capture done", true)
    end
end)

local function press_key()
    log.info("boot press")
    sys.publish("PRESS", true)
end
gpio.setup(0, press_key, gpio.PULLDOWN, gpio.RISING)
gpio.debounce(0, 100, 1)
local rawbuff, err

rawbuff, err = zbuff.create(640 * 480 * 2, 0, zbuff.HEAP_AUTO)
-- rawbuff, err = zbuff.create(60 * 1024, 0, zbuff.HEAP_AUTO)

if rawbuff == nil then
    log.info(err)
end

sys.taskInit(function()
    log.info("摄像头启动")
    local cspiId, i2cId = 1, 1

    i2c.setup(i2cId, i2c.FAST)
    gpio.setup(5, 0) -- PD拉低
    -- local camera_id = bf30a2Init(cspiId,i2cId,25500000,SCAN_MODE,SCAN_MODE)
    -- local camera_id = gc0310Init(cspiId,i2cId,25500000,SCAN_MODE,SCAN_MODE)
    local camera_id = gc032aInit(cspiId, i2cId, 24000000, SCAN_MODE, SCAN_MODE)
    camera.stop(camera_id)
    -- camera.preview(camera_id, true)
    log.info("按下boot开始测试")
    uart.write(uartid, "hello")
    log.info(rtos.meminfo("sys"))
    log.info(rtos.meminfo("psram"))
    while 1 do
        result, data = sys.waitUntil("PRESS", 30000)
        if result == true and data == true then
            log.debug("摄像头拍照")
            -- 2和3需要非常多非常多的psram,尽量不要用.jpeg压缩质量,1最差,占用空间小,3最高,占用空间最大而且费时间,默认1
            camera.capture(camera_id, rawbuff, 1)
            result, data = sys.waitUntil("capture done", 30000)
            log.info(rawbuff:used())
            -- rawbuff:resize(60 * 1024)
            log.info(rtos.meminfo("sys"))
            log.info(rtos.meminfo("psram"))

            log.info("rawbuff")
            uart.tx(uartid, rawbuff) -- 找个能保存数据的串口工具保存成文件就能在电脑上看了, 格式为JPG       
        end
    end

end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

拍照的结果就不发了,反正都是一坨。本来还想试一下EPV的深度睡眠的,但是并没有行,会被立马自行唤醒,以后有机会再继续捣鼓了。果然这个摄像头还是用于扫码合适。。。和简单试用安信可ESP32-CAM摄像头开发板 中的摄像头相同。最后还是希望合宙回到前几年的样子,经常能薅薅羊毛蛮好的,何必斤斤计较用户转化率呢?隔壁嘉立创也没说啥吧。

2024-06-06 084725.webp

不知道说啥好了。。。