瀏覽代碼

fix: 提交air8000 错误demo

梁健 9 月之前
父節點
當前提交
1e7cdcd4e7

+ 4 - 4
module/Air8000/demo/spi_camera/main.lua

@@ -22,8 +22,8 @@ PROJECT = "spi_camera_demo"
 VERSION = "1.0.0"
 -- 实际使用时选1个就行
 -- require "bf30a2"
--- require "gc0310"
-require "gc032a"
+require "gc0310"
+-- require "gc032a"
 sys = require("sys")
 sysplus = require("sysplus")
 
@@ -73,8 +73,8 @@ local function device_init()
     gpio.setup(153, 0) -- PD拉低
     sys.wait(500)
     -- return bf30a2Init(cspiId,i2cId,25500000,TEST_MODE,TEST_MODE)
-    -- return gc0310Init(cspiId, i2cId, 25500000, TEST_MODE, TEST_MODE)
-    return gc032aInit(cspiId, i2cId, 24000000, TEST_MODE, TEST_MODE)
+    return gc0310Init(cspiId, i2cId, 25500000, TEST_MODE, TEST_MODE)
+    -- return gc032aInit(cspiId, i2cId, 24000000, TEST_MODE, TEST_MODE)
 end
 
 local function main_task()

+ 70 - 0
module/Air8000/project/整机开发板出厂工程/user/aircamera.lua

@@ -0,0 +1,70 @@
+local aircamera = {}
+
+require "gc0310"
+
+local taskName = "SPI_CAMERA"
+local TEST_MODE = 0 -- 写1 演示扫码(使用摄像头对二维码、条形码或其他类型的图案进行扫描和识别),0 演示拍照
+local scan_pause = true -- 扫码启动与停止标志位
+local done_with_close = false -- true 结束后关闭摄像头
+local uartid = 1 -- 根据实际设备选取不同的uartid
+local cspiId = 1 -- 摄像头使用SPI1、I2C0
+local i2cId = 0
+local camera_id 
+local run_state = 0
+-- 初始化UART
+local result = uart.setup(uartid, -- 串口id
+115200, -- 波特率
+8, -- 数据位
+1 -- 停止位
+)
+
+
+
+-- 初始化摄像头
+local rawbuff, err = zbuff.create(60 * 1024, 0, zbuff.HEAP_AUTO) -- gc03a
+if rawbuff == nil then
+    log.info(err)
+end
+
+local function aircamera_run()
+    lcd.clear()    
+    sys.wait(500)
+    gpio.setup(147, 1, gpio.PULLUP) -- camera的供电使能脚
+    gpio.setup(153, 1, gpio.PULLUP) -- 控制camera电源的pd脚
+    gpio.setup(24, 1, gpio.PULLUP)  -- i2c工作的电压域
+    gpio.setup(164, 1, gpio.PULLUP) -- 因为I2C 和 音频公用,如果不打开,会造成无法工作
+    log.info("摄像头启动")
+    gpio.setup(153, 0) -- PD拉低
+    camera_id = gc0310Init(cspiId, i2cId, 25500000, TEST_MODE, TEST_MODE)
+    camera.stop(camera_id) -- 暂停摄像头捕获数据。仅停止了图像捕获,未影响预览功能。
+    camera.preview(camera_id, true) -- 打开LCD预览功能(直接将摄像头数据输出到LCD)
+    camera.start(camera_id)
+    log.info("start ok")
+    if done_with_close then
+        camera.close(camera_id)
+    else
+        camera.stop(camera_id)
+    end
+
+    log.info(rtos.meminfo("sys"))
+    log.info(rtos.meminfo("psram"))
+
+end
+
+-- 启动任务时传入依赖
+
+function aircamera.run()
+    if run_state == 0 then
+        sysplus.taskInitEx(aircamera_run,taskName)
+        run_state = 1
+    end
+
+    while true do
+        sys.wait(30)
+        if run_state == 0 then    -- 等待结束
+            return true
+        end
+    end
+end
+
+return aircamera

+ 2 - 2
module/Air8000/project/整机开发板出厂工程/user/airtts.lua

@@ -67,7 +67,7 @@ local function audio_task()
 end
 
 
-function airtts.run()
+function airtts.run()       -- TTS 播放主程序
     if run_state == 0 then
         lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
         sysplus.taskInitEx(audio_task, taskName)
@@ -89,7 +89,7 @@ function airtts.run()
 end
 
 
-function airtts.tp_handal(x,y,event)
+function airtts.tp_handal(x,y,event)       -- 判断是否需要停止播放
     if x > 120 and  x < 200 and y > 300  and  y < 380 then
         audio_stop()
     end

+ 328 - 53
module/Air8000/project/整机开发板出厂工程/user/gc0310.lua

@@ -1,53 +1,328 @@
-local reg_table = {{0xfe, 0xf0}, {0xfe, 0xf0}, {0xfe, 0x00}, {0xfc, 0x16}, {0xfc, 0x16}, {0xf2, 0x07}, {0xf3, 0x83},
-                   {0xf5, 0x07}, {0xf7, 0x88}, {0xf8, 0x00}, {0xf9, 0x4f}, {0xfa, 0x11}, {0xfc, 0xce}, {0xfd, 0x00},
-
-                   {0x00, 0x2f}, {0x01, 0x0f}, {0x02, 0x04}, {0x03, 0x02}, {0x04, 0x12}, {0x09, 0x00}, {0x0a, 0x00},
-                   {0x0b, 0x00}, {0x0c, 0x04}, {0x0d, 0x01}, {0x0e, 0xe8}, {0x0f, 0x02}, {0x10, 0x88}, {0x16, 0x00},
-                   {0x17, 0x14}, {0x18, 0x1a}, {0x19, 0x14}, {0x1b, 0x48}, {0x1c, 0x6c}, {0x1e, 0x6b}, {0x1f, 0x28},
-                   {0x20, 0x8b}, {0x21, 0x49}, {0x22, 0xd0}, {0x23, 0x04}, {0x24, 0xff}, {0x34, 0x20}, {0x26, 0x23},
-                   {0x28, 0xff}, {0x29, 0x00}, {0x32, 0x04}, {0x33, 0x10}, {0x37, 0x20}, {0x38, 0x10}, {0x47, 0x80},
-                   {0x4e, 0x66}, {0xa8, 0x02}, {0xa9, 0x80}, {0x40, 0xff}, {0x41, 0x21}, {0x42, 0xcf}, {0x44, 0x00},
-                   {0x45, 0xa0}, {0x46, 0x02}, {0x4a, 0x11}, {0x4b, 0x01}, {0x4c, 0x20}, {0x4d, 0x05}, {0x4f, 0x01},
-                   {0x50, 0x01}, {0x55, 0x01}, {0x56, 0xe0}, {0x57, 0x02}, {0x58, 0x80}, {0x70, 0x70}, {0x5a, 0x84},
-                   {0x5b, 0xc9}, {0x5c, 0xed}, {0x77, 0x74}, {0x78, 0x40}, {0x79, 0x5f}, {0x82, 0x14}, {0x83, 0x0b},
-                   {0x89, 0xf0}, {0x8f, 0xaa}, {0x90, 0x8c}, {0x91, 0x90}, {0x92, 0x03}, {0x93, 0x03}, {0x94, 0x05},
-                   {0x95, 0x65}, {0x96, 0xf0}, {0xfe, 0x00}, {0x9a, 0x20}, {0x9b, 0x80}, {0x9c, 0x40}, {0x9d, 0x80},
-                   {0xa1, 0x30}, {0xa2, 0x32}, {0xa4, 0x30}, {0xa5, 0x30}, {0xaa, 0x10}, {0xac, 0x22}, {0xfe, 0x00},
-                   {0xbf, 0x08}, {0xc0, 0x16}, {0xc1, 0x28}, {0xc2, 0x41}, {0xc3, 0x5a}, {0xc4, 0x6c}, {0xc5, 0x7a},
-                   {0xc6, 0x96}, {0xc7, 0xac}, {0xc8, 0xbc}, {0xc9, 0xc9}, {0xca, 0xd3}, {0xcb, 0xdd}, {0xcc, 0xe5},
-                   {0xcd, 0xf1}, {0xce, 0xfa}, {0xcf, 0xff}, {0xd0, 0x40}, {0xd1, 0x34}, {0xd2, 0x34}, {0xd3, 0x40},
-                   {0xd6, 0xf2}, {0xd7, 0x1b}, {0xd8, 0x18}, {0xdd, 0x03}, {0xfe, 0x01}, {0x05, 0x30}, {0x06, 0x75},
-                   {0x07, 0x40}, {0x08, 0xb0}, {0x0a, 0xc5}, {0x0b, 0x11}, {0x0c, 0x00}, {0x12, 0x52}, {0x13, 0x38},
-                   {0x18, 0x95}, {0x19, 0x96}, {0x1f, 0x20}, {0x20, 0xc0}, {0x3e, 0x40}, {0x3f, 0x57}, {0x40, 0x7d},
-                   {0x03, 0x60}, {0x44, 0x00}, {0xfe, 0x01}, {0x1c, 0x91}, {0x21, 0x15}, {0x50, 0x80}, {0x56, 0x04},
-                   {0x59, 0x08}, {0x5b, 0x02}, {0x61, 0x8d}, {0x62, 0xa7}, {0x63, 0xd0}, {0x65, 0x06}, {0x66, 0x06},
-                   {0x67, 0x84}, {0x69, 0x08}, {0x6a, 0x25}, {0x6b, 0x01}, {0x6c, 0x00}, {0x6d, 0x02}, {0x6e, 0xf0},
-                   {0x6f, 0x80}, {0x76, 0x80}, {0x78, 0xaf}, {0x79, 0x75}, {0x7a, 0x40}, {0x7b, 0x50}, {0x7c, 0x0c},
-                   {0x90, 0xc9}, {0x91, 0xbe}, {0x92, 0xe2}, {0x93, 0xc9}, {0x95, 0x1b}, {0x96, 0xe2}, {0x97, 0x49},
-                   {0x98, 0x1b}, {0x9a, 0x49}, {0x9b, 0x1b}, {0x9c, 0xc3}, {0x9d, 0x49}, {0x9f, 0xc7}, {0xa0, 0xc8},
-                   {0xa1, 0x00}, {0xa2, 0x00}, {0x86, 0x00}, {0x87, 0x00}, {0x88, 0x00}, {0x89, 0x00}, {0xa4, 0xb9},
-                   {0xa5, 0xa0}, {0xa6, 0xba}, {0xa7, 0x92}, {0xa9, 0xba}, {0xaa, 0x80}, {0xab, 0x9d}, {0xac, 0x7f},
-                   {0xae, 0xbb}, {0xaf, 0x9d}, {0xb0, 0xc8}, {0xb1, 0x97}, {0xb3, 0xb7}, {0xb4, 0x7f}, {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, 0xcb}, {0xb9, 0x9b}, {0xfe, 0x01}, {0xd0, 0x38}, {0xd1, 0x00}, {0xd2, 0x02},
-                   {0xd3, 0x04}, {0xd4, 0x38}, {0xd5, 0x12}, {0xd6, 0x30}, {0xd7, 0x00}, {0xd8, 0x0a}, {0xd9, 0x16},
-                   {0xda, 0x39}, {0xdb, 0xf8}, {0xfe, 0x01}, {0xc1, 0x3c}, {0xc2, 0x50}, {0xc3, 0x00}, {0xc4, 0x40},
-                   {0xc5, 0x30}, {0xc6, 0x30}, {0xc7, 0x10}, {0xc8, 0x00}, {0xc9, 0x00}, {0xdc, 0x20}, {0xdd, 0x10},
-                   {0xdf, 0x00}, {0xde, 0x00}, {0x01, 0x10}, {0x0b, 0x31}, {0x0e, 0x50}, {0x0f, 0x0f}, {0x10, 0x6e},
-                   {0x12, 0xa0}, {0x15, 0x60}, {0x16, 0x60}, {0x17, 0xe0}, {0xcc, 0x0c}, {0xcd, 0x10}, {0xce, 0xa0},
-                   {0xcf, 0xe6}, {0x45, 0xf7}, {0x46, 0xff}, {0x47, 0x15}, {0x48, 0x03}, {0x4f, 0x60}, {0xfe, 0x00},
-                   {0x05, 0x01}, {0x06, 0x32}, {0x07, 0x00}, {0x08, 0x0c}, {0xfe, 0x01}, {0x25, 0x00}, {0x26, 0x3c},
-                   {0x27, 0x01}, {0x28, 0xdc}, {0x29, 0x01}, {0x2a, 0xe0}, {0x2b, 0x01}, {0x2c, 0xe0}, {0x2d, 0x01},
-                   {0x2e, 0xe0}, {0x3c, 0x20}, -- SPI配置
-{0xfe, 0x03}, {0x52, 0xa2}, {0x53, 0x24}, {0x54, 0x20}, {0x55, 0x00}, {0x59, 0x1f}, {0x5a, 0x00}, {0x5b, 0x80},
-                   {0x5c, 0x02}, {0x5d, 0xe0}, {0x5e, 0x01}, {0x51, 0x03}, {0x64, 0x04}, {0xfe, 0x00}, {0x44, 0x02}}
-
-function gc0310Init(cspiId, i2cId, speed, scanMode, onlyY)
-    local id = camera.init(cspiId, speed, 1, 1, 2, 1, 0x00010101, onlyY, scanMode, 640, 480)
-    for i = 1, #reg_table do
-        i2c.send(i2cId, 0x21, reg_table[i], 1)
-    end
-    camera.start(id)
-    return id
-end
+local reg_table = {
+        {0xfe, 0xf0},
+        {0xfe, 0xf0},
+        {0xfe, 0x00},
+        {0xfc, 0x16}, 
+        {0xfc, 0x16}, 
+        {0xf2, 0x07}, 
+        {0xf3, 0x83}, 
+        {0xf5, 0x07}, 
+        {0xf7, 0x88}, 
+        {0xf8, 0x00}, 
+        {0xf9, 0x4f}, 
+        {0xfa, 0x11}, 
+        {0xfc, 0xce},
+        {0xfd, 0x00},
+
+        {0x00, 0x2f},
+        {0x01, 0x0f},
+        {0x02, 0x04},
+        {0x03, 0x02},
+        {0x04, 0x12},
+        {0x09, 0x00},
+        {0x0a, 0x00},
+        {0x0b, 0x00},
+        {0x0c, 0x04},
+        {0x0d, 0x01},
+        {0x0e, 0xe8},
+        {0x0f, 0x02},
+        {0x10, 0x88},
+        {0x16, 0x00},
+        {0x17, 0x14},
+        {0x18, 0x1a},
+        {0x19, 0x14},
+        {0x1b, 0x48},
+        {0x1c, 0x6c},
+        {0x1e, 0x6b},
+        {0x1f, 0x28},
+        {0x20, 0x8b},
+        {0x21, 0x49},
+        {0x22, 0xd0},
+        {0x23, 0x04},
+        {0x24, 0xff},
+        {0x34, 0x20},
+
+        {0x26, 0x23}, 
+        {0x28, 0xff}, 
+        {0x29, 0x00}, 
+        {0x32, 0x04},
+        {0x33, 0x10}, 
+        {0x37, 0x20}, 
+        {0x38, 0x10},
+        {0x47, 0x80}, 
+        {0x4e, 0x66}, 
+        {0xa8, 0x02}, 
+        {0xa9, 0x80},
+
+        {0x40, 0xff},
+        {0x41, 0x21}, 
+        {0x42, 0xcf}, 
+        {0x44, 0x00},
+        {0x45, 0xa0},
+        {0x46, 0x02}, 
+        {0x4a, 0x11},
+        {0x4b, 0x01},
+        {0x4c, 0x20}, 
+        {0x4d, 0x05}, 
+        {0x4f, 0x01},
+        {0x50, 0x01}, 
+        {0x55, 0x01}, 
+        {0x56, 0xe0},
+        {0x57, 0x02}, 
+        {0x58, 0x80},
+
+        {0x70, 0x70},
+        {0x5a, 0x84},
+        {0x5b, 0xc9},
+        {0x5c, 0xed},
+        {0x77, 0x74},
+        {0x78, 0x40},
+        {0x79, 0x5f},
+
+        {0x82, 0x14},
+        {0x83, 0x0b},
+        {0x89, 0xf0},
+
+        {0x8f, 0xaa},
+        {0x90, 0x8c},
+        {0x91, 0x90},
+        {0x92, 0x03},
+        {0x93, 0x03},
+        {0x94, 0x05},
+        {0x95, 0x65},
+        {0x96, 0xf0},
+
+        {0xfe, 0x00},
+        {0x9a, 0x20},
+        {0x9b, 0x80},
+        {0x9c, 0x40},
+        {0x9d, 0x80},
+        {0xa1, 0x30},
+        {0xa2, 0x32},
+        {0xa4, 0x30}, 
+        {0xa5, 0x30}, 
+        {0xaa, 0x10}, 
+        {0xac, 0x22},
+
+        {0xfe, 0x00},
+        {0xbf, 0x08},
+        {0xc0, 0x16},
+        {0xc1, 0x28},
+        {0xc2, 0x41},
+        {0xc3, 0x5a},
+        {0xc4, 0x6c},
+        {0xc5, 0x7a},
+        {0xc6, 0x96},
+        {0xc7, 0xac},
+        {0xc8, 0xbc},
+        {0xc9, 0xc9},
+        {0xca, 0xd3},
+        {0xcb, 0xdd},
+        {0xcc, 0xe5},
+        {0xcd, 0xf1},
+        {0xce, 0xfa},
+        {0xcf, 0xff},
+
+        {0xd0, 0x40},
+        {0xd1, 0x34},
+        {0xd2, 0x34},
+        {0xd3, 0x40},
+        {0xd6, 0xf2},
+        {0xd7, 0x1b},
+        {0xd8, 0x18},
+        {0xdd, 0x03},
+
+        {0xfe, 0x01},
+        {0x05, 0x30},
+        {0x06, 0x75},
+        {0x07, 0x40},
+        {0x08, 0xb0},
+        {0x0a, 0xc5},
+        {0x0b, 0x11},
+        {0x0c, 0x00},
+        {0x12, 0x52},
+        {0x13, 0x38},
+        {0x18, 0x95},
+        {0x19, 0x96},
+        {0x1f, 0x20},
+        {0x20, 0xc0},
+        {0x3e, 0x40},
+        {0x3f, 0x57},
+        {0x40, 0x7d},
+        {0x03, 0x60},
+        {0x44, 0x00},
+
+        {0xfe, 0x01},
+        {0x1c, 0x91},
+        {0x21, 0x15},
+        {0x50, 0x80},
+        {0x56, 0x04},
+        {0x59, 0x08},
+        {0x5b, 0x02},
+        {0x61, 0x8d},
+        {0x62, 0xa7},
+        {0x63, 0xd0},
+        {0x65, 0x06},
+        {0x66, 0x06},
+        {0x67, 0x84},
+        {0x69, 0x08},
+        {0x6a, 0x25},
+        {0x6b, 0x01},
+        {0x6c, 0x00},
+        {0x6d, 0x02},
+        {0x6e, 0xf0},
+        {0x6f, 0x80},
+        {0x76, 0x80},
+        {0x78, 0xaf},
+        {0x79, 0x75},
+        {0x7a, 0x40},
+        {0x7b, 0x50},
+        {0x7c, 0x0c},
+        {0x90, 0xc9}, 
+        {0x91, 0xbe},
+        {0x92, 0xe2},
+        {0x93, 0xc9},
+        {0x95, 0x1b},
+        {0x96, 0xe2},
+        {0x97, 0x49},
+        {0x98, 0x1b},
+        {0x9a, 0x49},
+        {0x9b, 0x1b},
+        {0x9c, 0xc3},
+        {0x9d, 0x49},
+        {0x9f, 0xc7},
+        {0xa0, 0xc8},
+        {0xa1, 0x00},
+        {0xa2, 0x00},
+        {0x86, 0x00},
+        {0x87, 0x00},
+        {0x88, 0x00},
+        {0x89, 0x00},
+        {0xa4, 0xb9},
+        {0xa5, 0xa0},
+        {0xa6, 0xba},
+        {0xa7, 0x92},
+        {0xa9, 0xba},
+        {0xaa, 0x80},
+        {0xab, 0x9d},
+        {0xac, 0x7f},
+        {0xae, 0xbb},
+        {0xaf, 0x9d},
+        {0xb0, 0xc8},
+        {0xb1, 0x97},
+        {0xb3, 0xb7},
+        {0xb4, 0x7f},
+        {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, 0xcb},
+        {0xb9, 0x9b},
+
+        {0xfe, 0x01},
+        {0xd0, 0x38}, 
+        {0xd1, 0x00},
+        {0xd2, 0x02},
+        {0xd3, 0x04},
+        {0xd4, 0x38},
+        {0xd5, 0x12},
+        {0xd6, 0x30},
+        {0xd7, 0x00},
+        {0xd8, 0x0a},
+        {0xd9, 0x16},
+        {0xda, 0x39},
+        {0xdb, 0xf8},
+
+        {0xfe, 0x01},
+        {0xc1, 0x3c},
+        {0xc2, 0x50},
+        {0xc3, 0x00},
+        {0xc4, 0x40},
+        {0xc5, 0x30},
+        {0xc6, 0x30},
+        {0xc7, 0x10},
+        {0xc8, 0x00},
+        {0xc9, 0x00},
+        {0xdc, 0x20},
+        {0xdd, 0x10},
+        {0xdf, 0x00},
+        {0xde, 0x00},
+
+        {0x01, 0x10},
+        {0x0b, 0x31}, 
+        {0x0e, 0x50},
+        {0x0f, 0x0f},
+        {0x10, 0x6e},
+        {0x12, 0xa0},
+        {0x15, 0x60},
+        {0x16, 0x60},
+        {0x17, 0xe0},
+
+        {0xcc, 0x0c}, 
+        {0xcd, 0x10},
+        {0xce, 0xa0},
+        {0xcf, 0xe6},
+
+    
+        {0x45, 0xf7},
+        {0x46, 0xff}, 
+        {0x47, 0x15},
+        {0x48, 0x03}, 
+        {0x4f, 0x60}, 
+  
+        {0xfe, 0x00},
+        {0x05, 0x01},
+        {0x06, 0x32}, 
+        {0x07, 0x00},
+        {0x08, 0x0c}, 
+        {0xfe, 0x01},
+        {0x25, 0x00}, 
+        {0x26, 0x3c},
+        {0x27, 0x01}, 
+        {0x28, 0xdc},
+        {0x29, 0x01}, 
+        {0x2a, 0xe0},
+        {0x2b, 0x01}, 
+        {0x2c, 0xe0},
+        {0x2d, 0x01}, 
+        {0x2e, 0xe0},
+        {0x3c, 0x20},
+
+	--SPI配置
+	{0xfe, 0x03},
+	{0x52, 0xa2},
+	{0x53, 0x24}, 
+	{0x54, 0x20},
+	{0x55, 0x00},
+	{0x59, 0x1f}, 
+	{0x5a, 0x00},
+	{0x5b, 0x80},
+	{0x5c, 0x02},
+	{0x5d, 0xe0},
+	{0x5e, 0x01},
+	{0x51, 0x03},
+	{0x64, 0x04},
+	{0xfe, 0x00},
+	{0x44, 0x02},
+}
+
+function gc0310Init(cspiId,i2cId,speed,scanMode,onlyY)
+	local id = camera.init(cspiId,speed,1,1,2,1,0x00010101,onlyY,scanMode,640,480)
+	for i=1,#reg_table do
+		i2c.send(i2cId,0x21,reg_table[i],1)
+	end
+	camera.start(id)
+	return id
+end

+ 11 - 1
module/Air8000/project/整机开发板出厂工程/user/main.lua

@@ -10,7 +10,7 @@ local airlcd = require "airlcd"
 local airmusic = require "airmusic"
 local airtts  = require "airtts"
 local airaudio  = require "airaudio"
-local aircam = require "camera8000_simple"
+local aircamera = require "aircamera"
 local airrus = require "russia"
 local airstatus = require "statusbar"
 local airtestwlan = require "test_wlan"
@@ -118,6 +118,7 @@ local function handal_main(x,y)
   elseif key == 2 then
   elseif key == 3 then
   elseif key == 4 then
+    cur_fun  = "camera"
   elseif key == 5 then
   elseif key == 6 then
   elseif key == 7 then
@@ -270,6 +271,13 @@ local function draw_tts()
     cur_fun = "main"
   end
 end
+
+local function draw_camera()
+  if  aircamera.run()   then
+    cur_fun = "main"
+  end
+end
+
 local function draw()
   if cur_fun == "camshow" then
     return
@@ -287,6 +295,8 @@ local function draw()
     draw_main2()
   elseif cur_fun == "tts" then
     draw_tts()
+  elseif cur_fun  == "camera" then
+    draw_camera()
   elseif cur_fun == "picshow" then
     draw_pic()
   elseif cur_fun == "russia" then