本帖最后由 林与安年 于 2024-4-17 10:52 编辑
开篇
非常荣幸获得了此次esp32-c6的开发板测试机会,自己也秉持着物尽其用的功能,想要好好用开发板做一些有趣的东西。
ESP32-C6是一款功能强大的低功耗微控制器,适用于各种物联网(IoT)应用。
1. **双核处理器**:
- ESP32-C6搭载了一个高性能的RISC-V 32位处理器和一个低功耗的RISC-V 32位处理器,两者可以协同工作,以实现高性能处理和低功耗运行。
2. **Wi-Fi和蓝牙功能**:
- 支持2.4 GHz Wi-Fi 6 (802.11ax)和Bluetooth 5 (LE),适用于需要无线数据传输的项目。
3. **丰富的外设接口**:
- 提供多个GPIO引脚,可用于连接各种传感器和外部设备。
- 集成了UART、SPI、I2C等接口,方便与外部设备通信。
4. **内置传感器**:
- 内置12位SAR ADC,可用于模拟信号的采集。
- 集成温度传感器,可直接用于温度监测。
5. **低功耗管理**:
- 支持多种低功耗模式,包括Active、Modem-sleep、Light-sleep和Deep-sleep模式,有助于延长电池寿命。
6. **安全特性**:
- 提供安全启动、Flash加密、数字签名等安全机制,确保数据安全。
7. **丰富的软件支持**:
- 乐鑫提供了ESP-IDF开发框架,以及大量的示例代码和文档,便于开发者快速上手。
我申请的是Beetle ESP32 C6迷你开发板。上面的这些功能对我来开发出一个既能够准确记录步数和温度,又能够无线传输数据的智能控制板十分有帮助。
开发思路
- 使用内置的温度传感器直接测量温度。
- 通过GPIO引脚连接MPU6050传感器来检测步数。可以使用外部中断功能来检测每一步的振动或运动。
- 利用Wi-Fi或蓝牙功能将步数和温度数据发送到智能手机或其他设备上。
- 使用低功耗模式来延长设备的电池使用时间。
- 通过安全特性保护记录的步数和温度数据不被未授权访问。
硬件介绍
1.esp32-c6
2.MPU6050
3.3.7V电池
4.0.96寸OLED显示屏
软件开发平台
Arduino IDE
开发流程
1.环境配置:因为开发板为最新型号,所以需要在Github里面下载3.0.0版本esp才支持C6系列:
在文件—首选项里面输入开发板地址:https://github.com/espressif/arduino-esp32/releases/download/3.0.0-rc1/package_esp32_dev_index.json
在板里面就可以开到3.0.0版本的esp32了。注:如果下载缓慢,可以使用群里老师发的国内镜像网站,速度很快(亲测):https://djzrs.github.io/picx-images-hosting/package_esp32_dev_index.json
2.下载好后就根据原理图确定选用开发板的引脚进行代码编写:由esp c6引脚图可知连接方向
引脚连接方式:
esp32 c6——MPU6050
3V3 ——VCC
GND ——GND
19 ——SDA
20 ——SCL
esp32 c6——OLED显示屏
3V3 ——VCC
GND ——GND
19 ——SDA
20 ——SCL
代码:
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <Adafruit_MPU6050.h>
- #include <Adafruit_Sensor.h>
-
- Adafruit_MPU6050 mpu;
- #define SCREEN_WIDTH 128 // OLED屏幕宽度
- #define SCREEN_HEIGHT 64 // OLED屏幕高度
- #define OLED_RESET 4
- Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
-
- // 定义加速度变化的阈值
- const float ACCELERATION_THRESHOLD = 10.0;
- // 定义步数变量
- int stepCount = 0;
-
- void setup() {
- // 初始化I2C通信
- Wire.begin(/*SDA=*/19, /*SCL=*/20);
- Serial.begin(115200);
- // 初始化MPU6050传感器
- if (!mpu.begin()) {
- Serial.println("Sensor init failed");
- while (1) {
- delay(10); // 保持在失败状态,防止程序继续执行
- }
- }
- Serial.println("Found a MPU-6050 sensor");
- // 初始化OLED显示屏
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
- // 清除屏幕内容
- display.clearDisplay();
- delay(500); // 等待半秒
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setRotation(0);
- display.display();
- }
-
- void loop() {
- sensors_event_t a, g, temp;
- mpu.getEvent(&a, &g, &temp);
-
- // 检测步数
- if (abs(a.acceleration.x) > ACCELERATION_THRESHOLD || abs(a.acceleration.y) > ACCELERATION_THRESHOLD) {
- stepCount++; // 步数增加
- }
-
- display.clearDisplay();
- display.setCursor(0, 0);
-
- // 显示加速度数据
- display.print("Accel: ");
- display.print(a.acceleration.x, 2); // 显示加速度X值,保留两位小数
- display.print(", ");
- display.print(a.acceleration.y, 2); // 显示加速度Y值,保留两位小数
- display.print(", ");
- display.print(a.acceleration.z, 2); // 显示加速度Z值,保留两位小数
- display.println();
-
- // 显示陀螺仪数据
- display.setCursor(0, 20);
- display.print("Gyro: ");
- display.print(g.gyro.x, 2); // 显示陀螺仪X值,保留两位小数
- display.print(", ");
- display.print(g.gyro.y, 2); // 显示陀螺仪Y值,保留两位小数
- display.print(", ");
- display.print(g.gyro.z, 2); // 显示陀螺仪Z值,保留两位小数
- display.println();
-
- // 显示温度数据
- display.setCursor(0, 40);
- display.print("Temp: ");
- display.print(temp.temperature, 1); // 显示温度值,保留一位小数
- display.println("C");
-
- // 显示步数
- display.setCursor(0, 55);
- display.print("Steps: ");
- display.println(stepCount);
-
- display.display();
- delay(100); // 等待100毫秒再次更新数据
- }
复制代码
3.上传测试
测试情况良好,可以实现数据显示
4总结与展望
Beetle ESP32 C6迷你开发板本身尺寸十分精巧,同时具备低功耗与WiFi与蓝牙功能,制作一个可穿戴设备十分合适,可惜本人能力有限,目前还不能集成可穿戴功能,同时因为时间有限,未能完成电路板设计与打板,希望在之后的时间里可以继续完善可穿戴功能。
|
|
|
|
|
|