林与安年 发表于 2024-4-17 11:00:46

Beetle ESP32 C6 电量显示仪

本帖最后由 林与安年 于 2024-4-17 11:00 编辑

开篇经过上次开发之后,我发现OLED显示屏作为一个载体有十分强大的功能,最近又因为遇到了万用表总是显示问题,换了电池后才变得正常,于是决定以OLED为载体,做一个电池电量显示仪,可以直接测量出电池两端电压判断电池电量。
查询手册后,发现这些功能对自己开发十分有帮助

1. **低功耗设计**:
   - ESP32-C6支持多种低功耗模式,包括Active、Modem-sleep、Light-sleep和Deep-sleep模式,有助于延长电池寿命。
2. **内置ADC**:
   - 集成的模数转换器(ADC)可以用来读取模拟信号,例如电池电压,非常适合用于电池电量的测量。
3. **丰富的GPIO接口**:
   - 提供多个通用输入输出(GPIO)引脚,可以用于连接OLED屏幕或其他外设。
4. **I2C和SPI接口**:
   - 支持I2C和SPI通信协议,这些接口可以方便地连接OLED屏幕,用于显示电池电量信息。
5. **内置温度传感器**:
   - 虽然不是直接用于电池电量测量,但内置的温度传感器可以帮助监测环境温度,因为电池性能可能会受到温度的影响。

开发思路
- 使用内置ADC读取电池电压,通过GPIO引脚连接电压分压器,将电池电压转换为ADC可以读取的模拟信号。
- 通过I2C或SPI接口连接OLED屏幕,将读取的电池电量数据显示在屏幕上。
- 利用低功耗模式来减少ESP32-C6自身的能耗,从而延长电池寿命。
- 通过软件开发套件中的库函数和示例代码,快速实现电量读取和显示的程序开发。


硬件介绍
1.esp32-c6
2.电压检测模块
3.3.7V电池
4.0.96寸OLED显示屏


软件开发平台
Arduino IDE

开发流程
1.环境配置,请参考我的上一篇文章:Beetle ESP32 C6 步数与温度记录器 DF创客社区 (dfrobot.com.cn)

2.下载好后就根据原理图确定选用开发板的引脚进行代码编写:由esp c6引脚图可知连接方向

引脚连接方式:
esp32 c6——电压检测模块
3V3      ——VCC
GND      ——GND
4(ADC) —S

esp32 c6——OLED显示屏
3V3      ——VCC
GND      ——GND
19          ——SDA
20          ——SCL
代码展示:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED屏幕宽度
#define SCREEN_HEIGHT 64 // OLED屏幕高度
#define OLED_RESET 4

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// 定义电压测量的ADC通道(GPIO4)
const int voltagePin = 4; // ADC1_CHANNEL_0 对应GPIO4

void setup() {
// 初始化I2C通信
Wire.begin(/*SDA=*/19, /*SCL=*/20);
// 初始化OLED显示屏
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// 清除屏幕内容
display.clearDisplay();
delay(500); // 等待半秒
display.setTextSize(1);
display.setTextColor(WHITE);
display.setRotation(0);
display.display();
}

void loop() {
// 读取电池电压
float voltageReading = analogRead(voltagePin);
float voltage = voltageReading/208; // 将ADC值转换为电压

// 清除OLED屏幕并设置光标位置
display.clearDisplay();
display.setCursor(0, 0);

// 显示电池电压
display.println("Battery Voltage: ");
display.print(voltage, 2); // 显示电压值,保留两位小数
display.print("V");

// 显示数据到OLED屏幕
display.display();
delay(1000); // 等待1秒再次更新数据
}
3.上传测试


测试效果与万用表进行对比,情况良好,可以实现数据较为精确的显示

4总结与展望
ESP32-C6系列芯片作为一款高性能、低功耗的微控制器,具有多功能集成;低功耗设计;易于开发;应用广泛的功能。希望esp32 c6之后可以在各种应用场景发挥功能,有更多的开发者加入到esp32的开发社区中!


_深蓝_ 发表于 2024-4-19 16:39:50

膜拜大神的操作,学习学习。

林与安年 发表于 2024-4-22 10:50:19

本人也是小白一枚,一起努力!<div class="reference"><p><a href="https://mc.dfrobot.com.cn/home.php?mod=space&uid=852993&do=profile" target="_blank">_深蓝_</a> 2024-04-19 04:39:50<p><div class="quote">膜拜大神的操作,学习学习。</div></div>
页: [1]
查看完整版本: Beetle ESP32 C6 电量显示仪