| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- -- LuaTools需要PROJECT和VERSION这两个信息
- PROJECT = "usb_cam_mp4"
- VERSION = "1.0.0"
- -- sys库是标配
- _G.sys = require("sys")
- -- 特别提醒, 由于FAT32是DOS时代的产物, 文件名超过8个字节是需要额外支持的(需要更大的ROM)
- -- 例如 /sd/boottime 是合法文件名, 而/sd/boot_time就不是合法文件名, 需要启用长文件名支持.
- local camera_id = camera.USB
- local usb_camera_table = {
- id = camera_id,
- sensor_width = 1280,
- sensor_height = 720,
- usb_port = 1
- }
- local rtos_bsp = rtos.bsp()
- -- spi_id,pin_cs
- local function fatfs_spi_pin()
- if rtos_bsp == "AIR101" then
- return 0, pin.PB04
- elseif rtos_bsp == "AIR103" then
- return 0, pin.PB04
- elseif rtos_bsp == "AIR105" then
- return 2, pin.PB03
- elseif rtos_bsp == "ESP32C3" then
- return 2, 7
- elseif rtos_bsp == "ESP32S3" then
- return 2, 14
- elseif rtos_bsp == "EC618" then
- return 0, 8
- elseif string.find(rtos_bsp,"EC718") then
- return 0, 8
- elseif string.find(rtos_bsp,"Air810") then
- gpio.setup(13, 1, gpio.PULLUP)
- gpio.setup(28, 1, gpio.PULLUP)
- return 0, 3, fatfs.SDIO
- else
- log.info("main", "bsp not support")
- return
- end
- end
- sys.taskInit(function()
- sys.wait(1000)
- airlink.init()
- airlink.start(airlink.MODE_SPI_MASTER)
- sys.wait(1000)
- -- fatfs.debug(1) -- 若挂载失败,可以尝试打开调试信息,查找原因
- camera.config(0, camera.CONF_UVC_FPS, 30)
- -- -- 此为spi方式
- local spi_id, pin_cs,tp = fatfs_spi_pin()
- if tp and tp == fatfs.SPI then
- -- 仅SPI方式需要自行初始化spi, sdio不需要
- spi.setup(spi_id, nil, 0, 0, 8, 400 * 1000)
- gpio.setup(pin_cs, 1)
- end
- -- lua内存
- log.info("lua", rtos.meminfo())
- -- sys内存
- log.info("sys", rtos.meminfo("sys"))
- fatfs.mount(tp or fatfs.SPI, "/sd", spi_id, pin_cs, 24 * 1000 * 1000)
- local data, err = fatfs.getfree("/sd")
- if data then
- log.info("fatfs", "getfree", json.encode(data))
- else
- log.info("fatfs", "err", err)
- end
- wlan.init()
- wlan.connect("luatos1234", "12341234", 1)
- sys.waitUntil("IP_READY", 15000)
- sys.wait(100)
- socket.sntp()
- sys.wait(1000)
- -- 打印剩余内存
- log.info("lua", rtos.meminfo())
- log.info("sys", rtos.meminfo("sys"))
- log.info("psram", rtos.meminfo("psram"))
- --初始化摄像头
- while 1 do
- -- if true then rtos.reboot() end
- result=camera.init(usb_camera_table)
- log.info("摄像头初始化", result)
- log.info("lua", rtos.meminfo())
- log.info("sys", rtos.meminfo("sys"))
- log.info("psram", rtos.meminfo("psram"))
- if(result==0) then
- camera.start(camera_id)
- --开始mp4录制
- camera.capture(camera_id, "/sd/" .. os.time() .. ".mp4", 1)
- sys.wait(3000)
- --结束MP4录制
- camera.stop(camera_id)
- log.info("保存成功")
- end
- camera.close(camera_id)
- --- 打印一下内存状态
- log.info("lua", rtos.meminfo())
- log.info("sys", rtos.meminfo("sys"))
- log.info("psram", rtos.meminfo("psram"))
- sys.wait(2000)
- -- rtos.reboot()
- end
- -- #################################################
- end)
- -- 用户代码已结束---------------------------------------------
- -- 结尾总是这一句
- sys.run()
- -- sys.run()之后后面不要加任何语句!!!!!
|