2018年11月8日 星期四

DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組程式(二十五)

DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組程式(二十五):

ESP32 + OV7670 + AL422B 攝像頭模組程式主要是 OV7670 初始化,寫入視頻數據到 AL422B FIFO 晶片,然後讀取 AL422B 的視頻數據,最後將視頻數據顯示在 ILI9341 LCD 屏上組成。

ESP32 + OV7670 + AL422B 攝像頭模組製作
筆者首先是會用 RGB565 圖像格式來試驗,這是因為 ILI9341 LCD 的顯示格式是 16-bit RGB565,所以要正確的顯示圖像,便要有相同的格式,RGB565 素的比例是 R:G:B=5:6:5,一個像素會用 2個 BYTE 來表示其彩色資訊(2 Byte=R佔5bit,G佔6bit,B佔5bit),320*240 的彩色圖像的存儲空間也由 225KB 減小到 150KB。

RGB565 圖像格式
ESP32 + OV7670 + AL422B 攝像頭模組 IO 設定:
#define pinSCL            22  // OV7670 i2c clock
#define pinSDA           21  // OV7670 i2c data
#define pinVSYNC      39  // OV7670 Vsync

#define pinRCK            4 // FIFO read clock
#define pinRRST          5 // FIFO read pointer reset to beginning of frame
#define pinWR            19 // FIFO write enable

#define pinD0              32  // FIFO read data pins D0
#define pinD1              33  // FIFO read data pins D1
#define pinD2              34  // FIFO read data pins D2
#define pinD3              35  // FIFO read data pins D3
#define pinD4              36  // FIFO read data pins D4
#define pinD5                2  // FIFO read data pins D5
#define pinD6              26  // FIFO read data pins D6
#define pinD7              27  // FIFO read data pins D7

ESP32 + OV7670 + AL422B 攝像頭模組初始化程式:
void app_main()
{
            twi_init(21, 22);
            twi_Probe();

            oled_init();
            oled_Scan_Dir(2);
            oled_setFont(F6x8, 6, 8, 0);
            oled_Print(0, 0, "BWS ESP-IDF ESP32v080", 1);
            oled_Print(0, 1, "OV7670 FIFO CMOS  r05", 1);
           
            ili9341_hspi_init();
            ili9341_hspi_ResetDevice();
            ili9341_Display_Dir(1);           // Lanscape
            ili9341_Scan_Dir(2);               // Character Scan R->L
   
           OV7670_init();

while(1) {   
           display_pretty_colors( ILI9341_GREEN);
           vTaskDelay(100 / portTICK_PERIOD_MS);
           send_line_finish();   
           ili9341_hspi_String("OV7670",     10, 10, 4, ILI9341_BLUE, ILI9341_RED);
            vTaskDelay(1000 / portTICK_PERIOD_MS);
           
            OV7670_captureFrame();
            vTaskDelay(1000 / portTICK_PERIOD_MS);
           
            OV7670_rrst();
            vTaskDelay(1000 / portTICK_PERIOD_MS);
           
            OV7670_readLine2();
            vTaskDelay(1000 / portTICK_PERIOD_MS);

            ili9341_hspi_String("Capture",     40, 100, 4, ILI9341_BLUE, ILI9341_GREEN);
            vTaskDelay(3000 / portTICK_PERIOD_MS);
}

操作系統:Windows 7 64-bit版本
開發環境:AiThinker05 版本
原程碼: ESP32 ESP-IDF V3.0rc1
程式: DIY-ESP32-080-OV7670_05_Hor-20181019

Sony DVD+RW 盒樣本
ESP32 + OV7670 + AL422B 攝像頭模組樣本拍攝
ESP32 + OV7670 + AL422B 攝像頭模組顯示樣本
相關網址:
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器介紹(十八)
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器原理(十九)
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器控制(二十)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片介紹(二十一)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片原理(二十二)
※ DIY - ESP32:OV7670 + AL422B FIFO 圖像傳感器模組介紹(二十三)
※ DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組硬件(二十四)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組電路(二十六)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 I/O 程式(二十七)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 INT 程式(二十八)
※ DIY - ESP32:ESP32 OV7670 數位靜態相機 DSC 程式(二十九)

2018年 11月 8日 天氣報告
氣溫:24.4@ 20:20
相對濕度:百分之 74%
天氣:大致多雲

沒有留言:

張貼留言