一、硬件介绍
1、产品特点
Arduino GIGA R1 WiFi 开发板,提供76个GPIO引脚(其中12个为模拟端口、12个PWM、4个串行端口、3个I2C、2个SPI、1个FDCAN、1个SAI);
采用双核STM32H747XI微控制器(480MHz的Cortex-M7内核和240 MHz的Cortex-M4内核);
配备2MB闪存、1MB内存,以及6MB外部闪存和8MB SDRAM;
通过板载Murata 1DX模块实现WiFi和低功耗蓝牙连接;
还有输入/输出3.5mm音频插孔、JTAG连接器、20Pin的Arducam相机连接器等;


主要特性
微控制器:STMicro STM32H747XI Cortex-M7@480 MHz + M4 @ 240 MHz MCU(2MB 双组闪存、1MB RAM)
内存:8MB SDRAM
存储:16MB QSPI NOR 闪存
无线功能:2.4GHz WiFi 802.11b/g/n和蓝牙 5.1 BR/EDR/LE(Murata 1DX 模块)
接口
显示屏:20pin接口
摄像头:20pin Arducam摄像头接口
USB1x USB Type-C 端口用于编程和 HID1x USB 2.0 主机 Type-A 端口
音频:3.5 毫米音频插孔
调试:JTAG 连接器
电源:通过VIN引脚提供6 ~ 24V输入
VRT(为RTC供电)和 OFF(关闭电路板电源)引脚
复位按钮、BOOT0按钮、RGB_LED、电源LED
安全功能:Microchip ATECC608A
每个 I/O 引脚 8mA
二、功能实现
1、硬件介绍
GIGA R1板载20pin摄像头连接器,可以连接具有20pin的摄像头模块(OV7670 / Arducam)
引脚原理图
摄像头模块(OV7670)
摄像头包含30w像素的CMOS图像感光芯片,3.6mm焦距的镜头和镜头座;
特性
引脚原理图
实物搭建效果
2、功能效果
通过USB串口将摄像头传感器数据传输到网页界面上进行显示;
(640x480分辨率 和 RGB565颜色模式)
三、代码编写
1、打开 网页串口 进行摄像画面显示
将摄像画面直接传输到网页浏览器上进行显示;
2、摄像头画面采集
主要相关代码
#include "camera.h" #include "ov767x.h" #include "SDRAM.h" OV7670 ov767x; Camera cam(ov767x); #define IMAGE_MODE CAMERA_RGB565 // RGB565模式 constexpr uint16_t CHUNK_SIZE = 32768; // 32KB constexpr uint8_t RESOLUTION = CAMERA_R640x480; // 最大支持分辨率 constexpr uint8_t CONFIG_SEND_REQUEST = 2; // 返回当前配置 constexpr uint8_t IMAGE_SEND_REQUEST = 1; // 单帧图像传输 //帧数据封装 uint8_t START_SEQUENCE[4] = { 0xfa, 0xce, 0xfe, 0xed }; uint8_t STOP_SEQUENCE[4] = { 0xda, 0xbb, 0xad, 0x00 }; FrameBuffer fb(SDRAM_START_ADDRESS); //外部SDRAM //分块传输数据 void sendChunk(uint8_t* buffer, size_t bufferSize){ Serial.write(buffer, bufferSize); Serial.flush(); delay(1); } // 图像帧传输 void sendFrame(){ if (cam.grabFrame(fb, 3000) == 0) { byte* buffer = fb.getBuffer(); size_t bufferSize = cam.frameSize(); sendChunk(START_SEQUENCE, sizeof(START_SEQUENCE)); // 新帧开始 for(size_t i = 0; i < bufferSize; i += CHUNK_SIZE) { // 切分图像数据传输 size_t chunkSize = min(bufferSize - i, CHUNK_SIZE); sendChunk(buffer + i, chunkSize); } sendChunk(STOP_SEQUENCE, sizeof(STOP_SEQUENCE)); // 帧数据结束 } } // 传输格式 void sendCameraConfig(){ Serial.write(IMAGE_MODE); Serial.write(RESOLUTION); Serial.flush(); delay(1); } void setup() { SDRAM.begin(); // 开启外部SDRAM 存储 // cam初始化 if (!cam.begin(RESOLUTION, IMAGE_MODE, 30)) { Serial.print("Cam 初始化 失败!"); } } void loop() { if(!Serial) { Serial.begin(115200); while(!Serial); } if(!Serial.available()) return; byte request = Serial.read(); switch(request){ case IMAGE_SEND_REQUEST: sendFrame(); break; case CONFIG_SEND_REQUEST: sendCameraConfig(); break; } }
四、程序烧录
1、连接USB数据线至开发板;
2、选择端口号对应的开发板;
3、点击 上传 烧录程序到开发板上;
五、效果演示
摄像画面显示效果:












我要赚赏金
