基礎(chǔ)資料
基于Air105開(kāi)發(fā)板:Air105 - LuatOS 文檔
探討重點(diǎn)
對(duì)官方camera - 攝像頭demo中capture功能的復(fù)現(xiàn),進(jìn)行相關(guān)內(nèi)容的學(xué)習(xí)及探討。
實(shí)現(xiàn)功能
功能2:捕捉圖片并通過(guò)Serial 串口接收數(shù)據(jù)存入電腦;
硬件準(zhǔn)備
Air105開(kāi)發(fā)板1塊,面包板1塊,TFTLCD 屏幕,Micro SD卡模塊(SPI)接口1個(gè),攝像頭GC032A(SPI) , USB轉(zhuǎn)TTL串口模塊,導(dǎo)線(xiàn)若干。
?
Air105開(kāi)發(fā)板
?
TFTLCD 屏幕
?
SD卡模塊(SPI),攝像頭GC032A(SPI)
?
CH340G-USB轉(zhuǎn)TTL串口模塊
軟件版本
AIR105:LuatOS@AIR105 base 22.10 bsp V0011
軟件使用
接口文檔可參考:camera攝像頭
接線(xiàn)示意圖
?
功能1:捕捉圖片并存入SPI接口外置SD卡
lcd初始化
spi_lcd = spi.deviceSetup(5,pin.PC14,0,0,8,4810001000,spi.MSB,1,1) --debug信息:顯示芯片類(lèi)型st7735
log.info("lcd.init", --SHPI接口管腳對(duì)應(yīng)連接
lcd.init("st7735",{port = "device",pin_dc = pin.PE08 ,pin_rst = pin.PC12,pin_pwr = pin.PE09,direction = 0,w = 128,h = 160,xoffset = 2,yoffset = 1},spi_lcd))
攝像頭初始化
--GC032A輸出rgb圖像初始化命令
local GC032A_InitReg =
{
zbar_scan = 0,--是否為掃碼
draw,開(kāi)發(fā)板未引出_lcd = 1,--是否向lcd輸出
i2c_id = 0,
i2c_addr = 0x21,
pwm_id = 5;
pwm_period = 1210001000,
pwm_pulse = 0,
sensor_width = 640,
sensor_height = 480,
color_bit = 16,
init_cmd ="/luadb/GC032A_InitReg.txt"--此方法將初始化指令寫(xiě)在外部文件,支持使用 # 進(jìn)行注釋
}
local camera_pwdn = gpio.setup(pin.PD06, 1, gpio.PULLUP) -- PD06 camera_pwdn引腳,開(kāi)發(fā)板上未引出
local camera_rst = gpio.setup(pin.PD07, 1, gpio.PULLUP) -- PD07 camera_rst引腳,開(kāi)發(fā)板上未引出
camera_rst(0)
-- 拍照, 自然就是RGB輸出了
local camera_id = camera.init(GC032A_InitReg)--屏幕輸出rgb圖像
camera.start(camera_id)--開(kāi)始指定的camera
log.info("攝像頭啟動(dòng)")
/luadb/是開(kāi)發(fā)板的虛擬地址。GC032A_InitReg.txt在燒寫(xiě)主程序時(shí)一并燒寫(xiě)入開(kāi)發(fā)板,和main()文件同級(jí)。PS:GC032A_InitReg.txt內(nèi)容為攝像頭模組GC032A的初始化的命令(寄存器操作指令及參數(shù)),后期另外撰文分析。GC032A芯片硬件手冊(cè)的最新版本為:GC032A DataSheet_Release_V1.1_20170314。
GC032ADataSheet-Release-V1.1-20170314(GC032ADataSheet-Release)-單片機(jī)文檔類(lèi)資源-CSDN文庫(kù)
指定capture按鈕
gpio.setup(pin.PA10, function() --BOOT鍵
sys.publish("CAPTURE", true) --點(diǎn)擊后系統(tǒng)釋放"CAPTURE",并由sys.waitUntil處理
end, gpio.PULLUP,gpio.FALLING)
SD卡初始化
local spiId = 2
local result = spi.setup(
spiId,--串口id
255, -- 不使用默認(rèn)CS腳,通過(guò)gpio.setup(TF_CS, 1)重新指定
0,--CPHA
0,--CPOL
8,--數(shù)據(jù)寬度
400*1000 -- 初始化時(shí)使用較低的頻率
)
local TF_CS = pin.PB3
gpio.setup(TF_CS, 1)
--fatfs.debug(1) -- 若掛載失敗,可以嘗試打開(kāi)調(diào)試信息,查找原因
fatfs.mount("SD", spiId, TF_CS, 24000000)
local data, err = fatfs.getfree("SD")
if data then
log.info("fatfs", "getfree", json.encode(data))
else
log.info("fatfs", "err", err)
end
圖片存儲(chǔ)
result, data = sys.waitUntil("CAPTURE", 30000) --capture捕獲周期為30s
if result==true and data==true then --獲取到數(shù)據(jù)
log.debug("攝像頭捕獲圖像")
os.remove("/sd/temp.jpg")
camera.capture(camera_id, "/sd/temp.jpg", 1) --存儲(chǔ)在SD上
功能2:捕捉圖片并通過(guò)Serial 串口接收數(shù)據(jù)存入電腦
串口初始化
local uartid = 1 -- 根據(jù)實(shí)際設(shè)備選取不同的uartid
--初始化
local result = uart.setup(
uartid,--串口id
115200,--波特率
8,--數(shù)據(jù)位
1--停止位
)
官方demo本段代碼注釋狀態(tài),運(yùn)行前需取消注釋?zhuān)D卡存儲(chǔ)部分代碼進(jìn)行注釋?zhuān)荒芡瑫r(shí)運(yùn)行。
串口數(shù)據(jù)接收
demo中選用U1_RX,U2_TX端口。
?
點(diǎn)擊板載BOOT鍵進(jìn)行截圖后,串口接收到截圖信息,api已封裝攝像頭截圖并輸出JPEG格式的相關(guān)功能。
?
端口收到的原始數(shù)據(jù)
串口數(shù)據(jù)處理
后期可以對(duì)HEX 16進(jìn)制數(shù)據(jù)解碼,采用HEX 16進(jìn)制數(shù)據(jù)格式轉(zhuǎn)換為JPEG格式。
?
HEX 16進(jìn)制JPG文件信息
提示:JPG文件正常以FF D8開(kāi)頭,F(xiàn)F D9結(jié)尾,可以用來(lái)輔助判斷串口接收信息是否完整。
HEX數(shù)據(jù)轉(zhuǎn)換為jpeg格式文件
HEX(16進(jìn)制數(shù)據(jù))先轉(zhuǎn)存在txt文檔中,再通過(guò)Python的binascii庫(kù)輸出為jpeg文件(由十六進(jìn)制字符串即十六進(jìn)制數(shù)據(jù),轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)JPG文件)。
轉(zhuǎn)換效果如下:
?
HEX轉(zhuǎn)JPG
HEX轉(zhuǎn)JPG代碼示例(Python)
import binascii
十六進(jìn)制字符串,如:“ff d8 ff e1 11 e0 45 78 69...”;存入TXT文件。經(jīng)過(guò)如下代碼轉(zhuǎn)換,可將pic存儲(chǔ)為圖片形式并可以正常打開(kāi)
o_file=r"G:jpg數(shù)據(jù).txt"
filepath=r"G:jpg數(shù)據(jù).jpg"
f = open(o_file,"r")
payload=f.read()
f.close()
f=open(filepath,"ab") # filepath為你要存儲(chǔ)的圖片的全路徑
pic = binascii.a2b_hex(payload.replace(' ', '').strip())
f.write(pic)
f.close()
驗(yàn)證完成!
測(cè)試LOG數(shù)據(jù)分析
?
LOG數(shù)據(jù)分析
后續(xù)
介紹功能3:捕捉圖片存入SPI接口外置sd卡,副本同步通過(guò)Serial 串口輸出jpg文件存入電腦。
審核編輯:湯梓紅
-
攝像頭
+關(guān)注
關(guān)注
60文章
4848瀏覽量
95803 -
Capture
+關(guān)注
關(guān)注
0文章
19瀏覽量
15582 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5067瀏覽量
97610 -
AIR
+關(guān)注
關(guān)注
0文章
18瀏覽量
2981
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論