中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Micropython實(shí)例之TPYBoardv102開發(fā)板DIY照相機(jī)
    攝像頭(CAMERA或WEBCAM)又稱為電腦相機(jī)、電腦眼、電子眼等,是一種視頻輸入設(shè)備,被廣泛的運(yùn)用于視頻會(huì)議,安防系統(tǒng)  、圖像采集系統(tǒng)、 環(huán)境監(jiān)控 、工業(yè)現(xiàn)場過程控制 等方面。本實(shí)驗(yàn)用TPYBoard  v102以及PTC06 串口攝像頭模塊DIY一個(gè)簡易的照相機(jī)。

 
 
    1.所用器材:

    l   TPYBoard v102  1塊
    l   PTC06 串口攝像頭模塊1個(gè)
    l   杜邦線若干
    l   TF卡1個(gè)
    l   下載數(shù)據(jù)線1條

    2.TPYBoard v102簡介:

    TPYBoard  v102主控芯片采用STM32F405,M4的內(nèi)核,168MHZ的最高運(yùn)行速度,1024KB的Flash,192KB的RAM,內(nèi)置SD卡槽,最大支持8G內(nèi)存的內(nèi)存卡。板載四個(gè)LED燈和一個(gè)加速度傳感器。TPYBoard v102板載30 個(gè)通用GPIO 接口、 2個(gè) SPI 接口、2個(gè) CAN  接口、2個(gè)I2C  接口、 5個(gè) USART 接口、 2個(gè)ADC接口 (精度12bit ) 、2個(gè)DAC接口、   1個(gè)SWD接口。可與大部分常用傳感器模塊連接。
    
 
 
    3. PTC06 串口攝像頭模塊簡介:

    PTC06 串口攝像頭模塊是一款集圖像采集、拍攝控制、數(shù)據(jù)壓縮、串口傳輸于一體的工業(yè)級(jí)圖像采集處理模塊。其內(nèi)置的高性能數(shù)字信號(hào)處理芯片實(shí)現(xiàn)了對(duì)原始圖像的高比例壓縮。產(chǎn)品圖像輸 出采用標(biāo)準(zhǔn) JPEG 格式,可方便地兼容各種圖像處理軟件;采用 3 線制 TTL 電平 UART 通 信接口,可以方便地實(shí)現(xiàn)與單片機(jī)或其他微處理器連接。默認(rèn)波特率為 115200,其它可選波特率有 9600,19200,38400 和 57600。
   
 
 
    其中對(duì)于串口控制拍照,讀取靜態(tài)圖片的應(yīng)用中,只需要用到 GND,RX,TX,VCC 這 4 個(gè)信號(hào)線。 如果是要輸出模擬視頻的應(yīng)用,才需要將 CVBS 信號(hào)。注意: TX 和 RX 是 3.3v 的 TTL 電平信號(hào)。

    4.接線方式:
 
 
    5.實(shí)驗(yàn)步驟.

    基本原理:TPYboard v102 通過串口與串口攝像頭模塊(PTC06)進(jìn)行連接,通過按鍵控制模塊進(jìn)行拍照,并保存到TF卡中。上電后,等待ToyBoard v102板載綠燈亮起,說明攝像頭模塊初始化完畢,按一下USR鍵,控制攝像頭進(jìn)行拍照,藍(lán)燈會(huì)閃爍,說明正在傳輸圖片數(shù)據(jù),等待藍(lán)燈熄滅后,說明傳輸完畢。按一下rst鍵讓板子重新加載一下TF卡,打開TF卡就會(huì)看到一個(gè)新生成的jpeg文件。
    
    6.源代碼:
"""#TPYBoard v102 驅(qū)動(dòng)串口攝像頭PTC06 拍照并保存到TF卡#------------------------------------------------------#作者:山東蘿卜電子科技有限公司#時(shí)間:2018年03月15日"""import pybfrom pyb import UART,Switch"""拍照的基本流程--------------------1.清空?qǐng)D片緩存2.發(fā)送拍照命令3.獲取圖片的長度4.根據(jù)長度讀取圖片數(shù)據(jù)使用到的指令與返回的數(shù)據(jù)格式-------------------------------復(fù)位0x56 0x00 0x26 0x00返回0x76 0x00 0x26 0x00 +DSP 版本信息+Init end------------------------清空?qǐng)D片緩存 0x56 0x00 0x36 0x01 0x02返回0x76 0x00 0x36 0x00 0x00-------------------------拍照命令0x56 0x00 0x36 0x01 0x00返回0x76 0x00 0x36 0x00 0x00--------------------------讀所拍圖片的長度56 00 34 01 00返回0x76 0x00 0x34 0x00 0x04 0x00 0x00 XX YY(XX 為高位字節(jié),YY 為低位字節(jié))--------------------------讀取圖片數(shù)據(jù)0x56 0x00 0x32 0x0C 0x00 0x0A 0x00 0x00 AA BB 0x00 0x00 XX YY 0x00 0xFFAA BB:起始地址(先高位字節(jié),后低位字節(jié).必須是8的倍數(shù))XX YY:本次讀的數(shù)據(jù)長度(先高位字節(jié),后低位字節(jié))返回76 00 32 00 00 FF D8 ....... FF D9 76 00 32 00 00(完整的JPEG 圖片文件是以 FF D8 開始 FF D9 結(jié)尾)"""#-----Command---------#initcmd=b'\x56\x00\x26\x00' #復(fù)位指令clearcmd=b'\x56\x00\x36\x01\x02' #清除緩存photocmd=b'\x56\x00\x36\x01\x00' #拍照lengthcmd=b'\x56\x00\x34\x01\x00' #獲取圖片長度readcmd=b'\x56\x00\x32\x0C\x00\x0A\x00\x00' #獲取圖片數(shù)據(jù)responseCmd=b'\x76\x00\x32\x00\x00'#返回的圖片數(shù)據(jù)固定頭和尾#---------------------------------#isFlag=0#標(biāo)識(shí)是否初始化isPhoto=0#標(biāo)識(shí)是否發(fā)送拍照命令num=1f_name='/sd/photo%s.jpeg'#保存的文件名稱nBytes=512#每次讀取的字節(jié)數(shù)#---------------------------------#uart=UART(4,115200,timeout=100)#串口4 TX-X1 RX-X2#------將10進(jìn)制轉(zhuǎn)為16進(jìn)制字節(jié)數(shù)組--------#def convert_Data(num):    if num>255:        num_h=hex(num)        if len(num_h)<6:            num_h_a=num_h[:3]            num_h_b='0x'+num_h[3:]        else:            num_h_a=num_h[:4]            num_h_b='0x'+num_h[4:]        byte_num=bytes([int(num_h_a,16),int(num_h_b,16)])    else:        byte_num=b'\x00'+bytes([num])    return byte_num#---------------------------------#函數(shù)名:get_photo#描述:獲取圖片數(shù)據(jù)#參數(shù):起始地址、讀取長度#返回:成功返回正常數(shù)據(jù),失敗返回0#---------------------------------/def get_photo(add,readlen):    global readcmd,responseCmd        cmd=readcmd+add+b'\x00\x00'+readlen+b'\x00\xFF'    uart.write(cmd)    while uart.any()<=0:        continue    data=uart.read()    #print('data:',data)    #print('data[0:5]:',data[0:5])    #print('data[-5:]:',data[-5:])    if data[0:5]==responseCmd and data[-5:]==responseCmd:        revdata=data[5:-5]        print('revdata:',revdata)    else:        revdata=0    return revdata#---------------------------------#函數(shù)名:test#描述:USR按鍵的回調(diào)函數(shù)。#按鍵每按1次拍照1次#---------------------------------/def test():    global num,isPhoto    pyb.delay(30)    if(sw()):        sw.callback(None)#正在獲取數(shù)據(jù)時(shí) 禁用回調(diào)        isPhoto=0        num+=1        pyb.LED(3).on()        #清除緩存        uart.write(clearcmd)#等待模塊上電完畢       print('wait......')pyb.delay(2800)print('init start.......')uart.write(initcmd)sw=Switch()sw.callback(test)while True:    if uart.any()>0:        data=uart.read()        print('revdata:',data)        if isFlag==0:            #說明接收的是復(fù)位后的信息            if data==b'Init end\r\n':                #復(fù)位完畢                print('init ok.......')                pyb.delay(2000)                isFlag=1                pyb.LED(2).on()        else:            if len(data)>=5:                if data[0]==118:#0x76                    if data[2]==54:#0x36                        if isPhoto==0:                            #清除緩存返回                            print('-----clear buffer ok----')                            isPhoto=1                            uart.write(photocmd)                        else:                            #拍照返回                            print('-----taking pictures ok----')                            uart.write(lengthcmd)                    if data[2]==52:#0x34                        print('photo length:',data[7],'-',data[8])                        tlen=data[7]*256+data[8]                        t_c=tlen//nBytes                        t_y=tlen%nBytes                        add=0                        #256=[0x01,0x00] 512=[0x02,0x00]                        length=convert_Data(nBytes)                        name=f_name % str(num)                        print('filename:',name)                        for i in range(0,t_c):                            add=convert_Data(i*nBytes)                            #每512字節(jié)寫一次                            revdata=get_photo(add,length)                            if revdata!=0:                                f=open(name,'a')                                f.write(revdata)                                f.close()                            pyb.LED(4).toggle()                            print('-------------',i)                            pyb.delay(100)                        add=convert_Data(t_c*nBytes)                            revdata=get_photo(add,convert_Data(t_y))                        if revdata!=0:                            f=open(name,'a')                            f.write(revdata)                            f.close()                        pyb.LED(3).off()                        pyb.LED(4).off()                        pyb.delay(100)                        print('*========================================*')                        sw.callback(test)            else:                print('-----data length error-----')

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【學(xué)習(xí)攻擊進(jìn)行防御】怎么用單片機(jī)獲取他人的wifi密碼
A40i T3開發(fā)板外擴(kuò)接口的功能測(cè)試
NanoPi NEO/zh
快速入門|10分鐘學(xué)會(huì)使用TPYBoard | 快速入門 | 技術(shù)支持 | MicroPython
Micropython教程之TPYBoard制作藍(lán)牙 紅外循跡小車
TTL轉(zhuǎn)RS232模塊 RS232及UART接口互轉(zhuǎn)模塊
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服