发作品签到
专业版

#第九届立创电赛#桌面温湿度检测仪

工程标签

172
0
0
0

简介

基于上次示波器现成的tft屏幕做的,也顺便尝试学习ESP32。硬件上设计了SHT40、JW01、蜂鸣器的接口,但软件目前只写了时间和温湿度显示,剩下的以后慢慢加吧~

简介:基于上次示波器现成的tft屏幕做的,也顺便尝试学习ESP32。硬件上设计了SHT40、JW01、蜂鸣器的接口,但软件目前只写了时间和温湿度显示,剩下的以后慢慢加吧~

开源协议

GPL 3.0

创建时间:2024-07-05 20:46:57更新时间:2024-08-02 14:02:03

描述

* 1、项目功能介绍

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

注:原理图和PCB有两份,分别是STM32f103c8t6主控版、ESP-WROOM-32主控版,这里介绍的是ESP32版即Board2

* 2、开源协议


GPL 3.0

*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;
  }
}


*6、大赛LOGO验证


* 8、演示您的项目并录制成视频上传


 

视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;

视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。

 

前往查看更多详情 >

 

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
ESP-WROOM-32.zip
0
2
立创训练营-温湿度计.mp4
0
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

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

底部导航