【花雕学编程】Arduino动手做(230)---查询ESP32-CAM芯片ID
2024-09-211825
AI 快速预览详细
本文介绍了如何查询ESP32-CAM芯片ID,这是一个运行在ESP32-S芯片上的小型摄像头模块,配备了2MP的OV2640摄像头。文章提供了具体的代码示例,帮助用户在Arduino IDE中获取芯片ID,从而进行有效的故障排查和项目管理。该模块还支持Wi-Fi、蓝牙和BLE,并具有9个IO端口,适用于多种应用场景。
![]() ESP32-CAM 是一款非常小的摄像头模块,配备 ESP32-S 芯片。除了 OV2640 摄像头和几个用于连接外围设备的 GPIO 外,它还具有一个 microSD 卡插槽,可用于存储使用摄像头拍摄的图像或存储文件以提供给客户。包括乐鑫 ESP32-S Wifi + 蓝牙+BLE 芯片、2MP 摄像头模块 OV2640 和带有 CH340 UART 芯片的 USB 编程适配器。 ESP32-Cam 是一款运行在 ESP32-S 芯片上并使用 OV2640 摄像头的小型摄像头模块。ESP32_Cam 也可以 OV7670 摄像头,但 OV2640 更好(更高的分辨率和内置的 JPEG 编码,这消除了 ESP32-S 的处理任务)。 ESP-32 Cam 规格 ESP-32 系列 它支持 Wi-Fi (802.11b/g/n) 支持蓝牙 (4.2 带 BLE) 内置 LED 闪光灯 9 个 IO 端口 支持 UART、SPI、I2C 和 PWM 内置 micro SD 读卡器 输入电源:3.3V / 5V(据报道,5V 供电比 3.3V 更稳定) OV2640 摄像头 2 百万像素 阵列尺寸:UXGA (1600 x 1200) 镜头尺寸:1/4 英寸(6.35 毫米) 最大图像传输速率:15 帧/秒 ![]() |






1、初始化串口通信:在setup函数中,通过Serial.begin(115200)初始化串口通信,设置波特率为115200,以便在串口监视器中查看输出信息。
2、计算芯片ID:在loop函数中,通过读取ESP32的efuse MAC地址并进行位移和按位与操作,计算出芯片ID。ESP.getEfuseMac()函数返回3、芯片的MAC地址,通过位移和按位与操作提取MAC地址的部分值并组合成芯片ID。
3、打印芯片信息:使用Serial.printf函数打印ESP32芯片的型号、版本和核心数量,方便了解芯片的基本信息。ESP.getChipModel()函数获取芯片型号,ESP.getChipRevision()函数获取芯片版本,ESP.getChipCores()函数获取芯片的核心数量。
4、打印芯片ID:通过Serial.print和Serial.println函数打印计算出的芯片ID,便于唯一标识每个ESP32芯片。
5、延时控制:在主循环中添加一个3秒的延时(delay(3000)),避免串口输出过于频繁,影响观察效果。
实验串口返回情况
实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
项目实验之十六:查询 ESP32-CAM 芯片ID(MAC地址)
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十:ESP32 CAM开发板 带OV2640摄像头模块 WIFI+蓝牙模块
项目实验之十六:查询 ESP32-CAM 芯片ID(MAC地址)
*/
#include
// 定义一个变量用于存储芯片ID
uint32_t chipId = 0;
void setup() {
// 初始化串口通信,波特率设置为115200
Serial.begin(115200);
// 打印初始化完成信息
Serial.println("ESP32-CAM 准备就绪!");
Serial.println(" ");
}
void loop() {
// 通过循环计算芯片ID
// ESP.getEfuseMac() 获取芯片的MAC地址
// 通过位移和按位与操作提取MAC地址的部分值并组合成芯片ID
for (int i = 0; i < 17; i = i + 8) {
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
}
// 打印ESP32芯片的型号和版本
// ESP.getChipModel() 获取芯片型号
// ESP.getChipRevision() 获取芯片版本
Serial.printf("ESP32芯片型号 = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
// 打印芯片的核心数量
// ESP.getChipCores() 获取芯片的核心数量
Serial.printf("这个芯片有 %d cores\n", ESP.getChipCores());
// 打印芯片ID
Serial.print("芯片 Chip ID: ");
Serial.println(chipId);
// 延时3秒,避免串口输出过于频繁
delay(3000);
}[/code]