main.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "usb_cam_mp4"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. _G.sys = require("sys")
  6. -- 特别提醒, 由于FAT32是DOS时代的产物, 文件名超过8个字节是需要额外支持的(需要更大的ROM)
  7. -- 例如 /sd/boottime 是合法文件名, 而/sd/boot_time就不是合法文件名, 需要启用长文件名支持.
  8. local camera_id = camera.USB
  9. local usb_camera_table = {
  10. id = camera_id,
  11. sensor_width = 1280,
  12. sensor_height = 720,
  13. usb_port = 1
  14. }
  15. local rtos_bsp = rtos.bsp()
  16. -- spi_id,pin_cs
  17. local function fatfs_spi_pin()
  18. if rtos_bsp == "AIR101" then
  19. return 0, pin.PB04
  20. elseif rtos_bsp == "AIR103" then
  21. return 0, pin.PB04
  22. elseif rtos_bsp == "AIR105" then
  23. return 2, pin.PB03
  24. elseif rtos_bsp == "ESP32C3" then
  25. return 2, 7
  26. elseif rtos_bsp == "ESP32S3" then
  27. return 2, 14
  28. elseif rtos_bsp == "EC618" then
  29. return 0, 8
  30. elseif string.find(rtos_bsp,"EC718") then
  31. return 0, 8
  32. elseif string.find(rtos_bsp,"Air810") then
  33. return 0, 3, fatfs.SDIO
  34. else
  35. log.info("main", "bsp not support")
  36. return
  37. end
  38. end
  39. sys.taskInit(function()
  40. sys.wait(1000)
  41. -- fatfs.debug(1) -- 若挂载失败,可以尝试打开调试信息,查找原因
  42. -- 此为spi方式
  43. local spi_id, pin_cs,tp = fatfs_spi_pin()
  44. if tp and tp == fatfs.SPI then
  45. -- 仅SPI方式需要自行初始化spi, sdio不需要
  46. spi.setup(spi_id, nil, 0, 0, 8, 400 * 1000)
  47. gpio.setup(pin_cs, 1)
  48. end
  49. -- lua内存
  50. log.info("lua", rtos.meminfo())
  51. -- sys内存
  52. log.info("sys", rtos.meminfo("sys"))
  53. fatfs.mount(tp or fatfs.SPI, "/sd", spi_id, pin_cs, 24 * 1000 * 1000)
  54. local data, err = fatfs.getfree("/sd")
  55. if data then
  56. log.info("fatfs", "getfree", json.encode(data))
  57. else
  58. log.info("fatfs", "err", err)
  59. end
  60. --初始化摄像头
  61. result=camera.init(usb_camera_table)
  62. log.info("摄像头初始化", result)
  63. if(result==0) then
  64. camera.start(camera_id)
  65. --开始mp4录制
  66. camera.capture(camera_id, "/sd/abc.mp4", 1)
  67. sys.wait(25000)
  68. --结束MP4录制
  69. camera.stop(camera_id)
  70. log.info("保存成功")
  71. end
  72. camera.close(camera_id)
  73. -- #################################################
  74. end)
  75. -- 用户代码已结束---------------------------------------------
  76. -- 结尾总是这一句
  77. sys.run()
  78. -- sys.run()之后后面不要加任何语句!!!!!