发作品签到
专业版

基于ESP-WROOM-32的多功能桌面时钟

工程标签

425
0
0
0

简介

基于我自己上一个温湿度计工程的基础上进行部分升级优化

简介:基于我自己上一个温湿度计工程的基础上进行部分升级优化
基于ESP32物联网征集令

开源协议

MIT License

创建时间:2024-08-14 05:06:34更新时间:2024-09-05 11:10:07

描述

* 1、项目功能介绍

本项目基于ESP-WROOM-32作为主控芯片,采用1.8寸TFT屏幕显示。PCB尺寸80mm*50mm。电源采用SY8088,是一个 DC/DC 稳压器,能够提供高达 1A 的输出电流。电源充放电管理采用TP4057。预留JW01气体检测模块接口用于后续升级。

* 2、开源协议


MIT License

*3、硬件部分


硬件部分:MCU主控、温湿度传感器、DCDC降压、充放电管理以及1.8寸TFT显示屏部分

*5、软件部分


项目使用VS code +PlatformIO基于arduino开发,使用TFT_eSPI库、Adafruit SHT4x Library、NTPClient实现相应功能,部分示例代码如下:

TFT屏幕

void showHanzi(int32_t x, int32_t y, const char c[3], uint32_t color) {
  for (int k = 0; k < 21; k++)// 根据字库的字数调节循环的次数
    if (hanzi[k].Index[0] == c[0] && hanzi[k].Index[1] == c[1] && hanzi[k].Index[2] == c[2])
    { tft.drawBitmap(x, y, hanzi[k].hz_Id, hanzi[k].hz_width, 16, color);
    }
}
/*整句汉字显示*/
void showHanziS(int32_t x, int32_t y, const char str[], uint32_t color) { //显示整句汉字,字库比较简单,上下、左右输出是在函数内实现
  int x0 = x;
  for (int i = 0; i < strlen(str); i += 3) {
    showHanzi(x0, y, str+i, color);
    x0 += 17;
  }
}
/*文本显示函数*/
//参数:x y font s fg bg str
void showtext(int16_t x,int16_t y,uint8_t font,uint8_t s,uint16_t fg,uint16_t bg,const String str)
{
  //设置文本显示坐标,和文本的字体,默认以左上角为参考点,
    tft.setCursor(x, y, font);
  // 设置文本颜色为白色,文本背景黑色
  tft.setTextColor(fg,bg);
//设置文本大小,文本大小的范围是1-7的整数
  tft.setTextSize(s);
  // 设置显示的文字,注意这里有个换行符 \n 产生的效果
  tft.println(str);
}

wifi及NTP

const char *ssid    = "自己的wifi";  //wifi账号
const char *password = "自己的WiFi密码";  //wifi密码
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP,"cn.pool.ntp.org");  //NTP服务器地址
void get_wifi()
{
  // 连接网络
  WiFi.begin(ssid, password);
  //等待wifi连接
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected"); //连接成功
  Serial.print("IP address: ");    //打印IP地址
  Serial.println(WiFi.localIP());
}
 
timeClient.begin();
  //设置偏移时间(以秒为单位)以调整时区,例如:
    // GMT +1 = 3600
    // GMT +8 = 28800
    timeClient.setTimeOffset(28800);
 
SHT4x温湿度传感器
//SHT40温湿度传感器配置及初始化代码
#define SHT4X_SDA_PIN 21
#define SHT4X_SCL_PIN 22
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
void SHT4x_Init() {
  Wire.begin(SHT4X_SDA_PIN, SHT4X_SCL_PIN);
  if (!sht4.begin()) {
    Serial.println("Couldn't find SHT4x");//试初始化SHT4x传感器,如果失败则打印错误信息并进入无限循环
    while (1) delay(1);
  }
  Serial.println("Found SHT4x sensor");
  Serial.print("Serial number 0x");
  Serial.println(sht4.readSerial(), HEX);

  sht4.setPrecision(SHT4X_HIGH_PRECISION);//设置传感器的精度
  switch (sht4.getPrecision()) {
     case SHT4X_HIGH_PRECISION:
       Serial.println("High precision");
       break;
     case SHT4X_MED_PRECISION:
       Serial.println("Med precision");
       break;
     case SHT4X_LOW_PRECISION:
       Serial.println("Low precision");
       break;
  }

  sht4.setHeater(SHT4X_NO_HEATER);//关闭传感器的加热器功能。
  switch (sht4.getHeater()) {
     case SHT4X_NO_HEATER:
       Serial.println("No heater");
       break;
     case SHT4X_HIGH_HEATER_1S:
       Serial.println("High heat for 1 second");
       break;
     case SHT4X_HIGH_HEATER_100MS:
       Serial.println("High heat for 0.1 second");
       break;
     case SHT4X_MED_HEATER_1S:
       Serial.println("Medium heat for 1 second");
       break;
     case SHT4X_MED_HEATER_100MS:
       Serial.println("Medium heat for 0.1 second");
       break;
     case SHT4X_LOW_HEATER_1S:
       Serial.println("Low heat for 1 second");
       break;
     case SHT4X_LOW_HEATER_100MS:
       Serial.println("Low heat for 0.1 second");
       break;
  }
}


设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航