646|2

229

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

【FireBeetle 2 ESP32 C6评测】乐高太阳能储能系统——5改善OLED显示 [复制链接]

本帖最后由 Maker_kun 于 2024-5-26 18:22 编辑

优化显示参数:系统电压、电池容量、系统温度,优化屏幕闪烁问题

一、增加温度参数,参考案例:https://bbs.eeworld.com.cn/thread-1282330-1-1.html  移植温度参数


#include "driver/temperature_sensor.h"

// 设置温度类型
#define UNIT_C // C - 摄氏度 F - 华氏度

// 定义温度的Characteristic和Descriptor



// 定义温度数据读取变量
temperature_sensor_handle_t temp_sensor = NULL;
temperature_sensor_config_t temp_sensor_config = TEMPERATURE_SENSOR_CONFIG_DEFAULT(10, 50);

// 转换摄氏度到华氏度的函数
float celsiusToFahrenheit(float celsius) {
  return (celsius * 9.0 / 5.0) + 32.0;
}

void setup() {
  Serial.begin(115200);
  

  // 启用内置温度传感器
  ESP_ERROR_CHECK(temperature_sensor_install(&temp_sensor_config, &temp_sensor));
  ESP_ERROR_CHECK(temperature_sensor_enable(temp_sensor));
}

void loop() {
  /****************数据发送部分*************/
  /****************************************/

    float tsens_value;

    // 获取温度值
    ESP_ERROR_CHECK(temperature_sensor_get_celsius(temp_sensor, &tsens_value));

    Serial.print("Temperature Celsius value ");
    Serial.print(tsens_value, 2);
    Serial.println(" ℃");
delay(100);
  /****************************************/
  /****************************************/
}

串口打印温度信息:

 

二、将温度显示在OLED屏幕上,同时改善OLED闪烁问题


/* 使用0.96寸的OLED屏幕需要使用包含这个头文件 */
#include "SSD1306Wire.h"

#include <Battery.h>
Battery battery(3400, 4200, 0, 12);

#include "driver/temperature_sensor.h"
#define UNIT_C // C - 摄氏度 F - 华氏度

// 定义温度数据读取变量
temperature_sensor_handle_t temp_sensor = NULL;
temperature_sensor_config_t temp_sensor_config = TEMPERATURE_SENSOR_CONFIG_DEFAULT(10, 50);

// 转换摄氏度到华氏度的函数
float celsiusToFahrenheit(float celsius) {
  return (celsius * 9.0 / 5.0) + 32.0;
}



/* 设置oled屏幕的相关信息 */  //有一些引脚接口不支持I2C 
const int I2C_ADDR = 0x3c;              // oled屏幕的I2c地址
#define SDA_PIN SDA                       // 
#define SCL_PIN SCL                       // 

/* 新建一个oled屏幕对象,需要输入IIC地址,SDA和SCL引脚号 */
SSD1306Wire oled(I2C_ADDR, SDA_PIN, SCL_PIN);
//测试屏幕显示
void drawRect(void) {
  for (int16_t i=0; i<oled.getHeight()/2; i+=2) {
    oled.drawRect(i, i, oled.getWidth()-2*i, oled.getHeight()-2*i);
    oled.display();
    delay(50);
  }
}

void setup() {
  Serial.begin(115200); //串口频率

    // 启用内置温度传感器
  ESP_ERROR_CHECK(temperature_sensor_install(&temp_sensor_config, &temp_sensor));
  ESP_ERROR_CHECK(temperature_sensor_enable(temp_sensor));


  analogReadResolution(12); // switches ADC resolution to 12 bits
	battery.begin(4200, 2, &asigmoidal);

  // put your setup code here, to run once:
 /*  oled屏幕初始化 */
  oled.init();
 oled.flipScreenVertically();          // 设置屏幕翻转
  oled.setContrast(255);                // 设置屏幕亮度
  drawRect();                           // 测试屏幕显示
  oled.clear(); oled.display();         // 清除屏幕
}

void loop() {
  
float tsens_value;
 // 获取温度值
 ESP_ERROR_CHECK(temperature_sensor_get_celsius(temp_sensor, &tsens_value));


  // put your main code here, to run repeatedly:
  /*  显示字母 */
  oled.setFont(ArialMT_Plain_16);       // 设置字体
  oled.clear(); 
  //oled.display(); 
  oled.drawString(0,0, "Voltage:" +String(battery.voltage())+"mV"); // 将要显示的字母写入缓存
  oled.drawString(0,20, "POWER:"+String(battery.level())+"%"); // 将要显示的字母写入缓存
  oled.drawString(0,40, "Temp:"+String(tsens_value)+"`C"); // 将要显示的字母写入缓存
  oled.display();                       // 将缓存里的文字在屏幕上显示
delay(50);


}

效果:

 

 

 

 

视频演示:改善闪烁问题

OLED显示温度信息

 

 

 

此帖出自电源技术论坛

最新回复

视频结果完美 看起来这FireBeetle 2 ESP32 C6确实是一款功能丰富的开发板,支持Wi-Fi 6,蓝牙5,Zigbee 3.0,Thread 1.3通讯协议,并具备太阳能充电功能,还行   详情 回复 发表于 2024-5-27 07:47
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

视频结果完美

看起来这FireBeetle 2 ESP32 C6确实是一款功能丰富的开发板,支持Wi-Fi 6,蓝牙5,Zigbee 3.0,Thread 1.3通讯协议,并具备太阳能充电功能,还行

此帖出自电源技术论坛

点评

后期我再加个太阳能板,看看充电效果  详情 回复 发表于 2024-5-27 08:46
 
 
 

回复

229

帖子

3

TA的资源

一粒金砂(高级)

板凳
 
Jacktang 发表于 2024-5-27 07:47 视频结果完美 看起来这FireBeetle 2 ESP32 C6确实是一款功能丰富的开发板,支持Wi-Fi 6,蓝牙5,Zigbee ...

后期我再加个太阳能板,看看充电效果


此帖出自电源技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表