125浏览
查看: 125|回复: 2

[ESP8266/ESP32] 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引脚图可知连接方向
Beetle ESP32 C6 电量显示仪图3
引脚连接方式:
esp32 c6——电压检测模块
3V3        ——VCC
GND      ——GND
4(ADC) —S

esp32 c6——OLED显示屏
3V3        ——VCC
GND      ——GND
19          ——SDA
20          ——SCL
代码展示:
  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>
  4. #define SCREEN_WIDTH 128 // OLED屏幕宽度
  5. #define SCREEN_HEIGHT 64 // OLED屏幕高度
  6. #define OLED_RESET 4
  7. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  8. // 定义电压测量的ADC通道(GPIO4)
  9. const int voltagePin = 4; // ADC1_CHANNEL_0 对应GPIO4
  10. void setup() {
  11.   // 初始化I2C通信
  12.   Wire.begin(/*SDA=*/19, /*SCL=*/20);
  13.   // 初始化OLED显示屏
  14.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  15.   // 清除屏幕内容
  16.   display.clearDisplay();
  17.   delay(500); // 等待半秒
  18.   display.setTextSize(1);
  19.   display.setTextColor(WHITE);
  20.   display.setRotation(0);
  21.   display.display();
  22. }
  23. void loop() {
  24.   // 读取电池电压
  25.   float voltageReading = analogRead(voltagePin);
  26.   float voltage = voltageReading/208; // 将ADC值转换为电压
  27.   // 清除OLED屏幕并设置光标位置
  28.   display.clearDisplay();
  29.   display.setCursor(0, 0);
  30.   // 显示电池电压
  31.   display.println("Battery Voltage: ");
  32.   display.print(voltage, 2); // 显示电压值,保留两位小数
  33.   display.print("V");
  34.   // 显示数据到OLED屏幕
  35.   display.display();
  36.   delay(1000); // 等待1秒再次更新数据
  37. }
复制代码

3.上传测试
Beetle ESP32 C6 电量显示仪图1
Beetle ESP32 C6 电量显示仪图2
测试效果与万用表进行对比,情况良好,可以实现数据较为精确的显示


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>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail