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

创建时间:11个月前

251 1

描述

<h3 style="line-height: 1.8;">* 1、项目功能介绍</h3> <p style="line-height: 1.8;">本项目基于ESP-WROOM-32作为主控芯片,采用1.8寸TFT屏幕显示。PCB尺寸80mm*50mm。电源采用SY8088,是一个 DC/DC 稳压器,能够提供高达 1A 的输出电流。电源充放电管理采用TP4057。预留JW01气体检测模块接口用于后续升级。</p> <p style="line-height: 1.8;"><strong><span style="color: #e03e2d;">注:原理图和PCB有两份,分别是STM32f103c8t6主控版、ESP-WROOM-32主控版,这里介绍的是ESP32版即Board2</span></strong></p> <h3 style="line-height: 1.8;">* 2、开源协议</h3> <hr> <p style="line-height: 1.8;">GPL 3.0</p> <h3 style="line-height: 1.8;">*3、硬件部分</h3> <hr> <p style="line-height: 1.8;">硬件部分:MCU主控、温湿度传感器、DCDC降压、充放电管理以及1.8寸TFT显示屏部分</p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/1bbaf434b34643c9bee4d71aa5892393.png" alt="" width="724" height="460"></p> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/86b4f1c65292411f8095e76f91f50f57.png" alt="" width="763" height="474"></p> <h3 style="line-height: 1.8;">*5、软件部分</h3> <hr> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/ab50c20a87ef45819ebcdf602158f0e8.png" alt="" width="685" height="468"></p> <p style="line-height: 1.8;">项目使用VS code +PlatformIO基于arduino开发,使用TFT_eSPI库、Adafruit SHT4x Library、NTPClient实现相应功能,部分示例代码如下:</p> <p style="line-height: 1.8;">TFT屏幕</p> <div> <div><code>void showHanzi(int32_t x, int32_t y, const char c[3], uint32_t color) {</code></div> <div><code>  for (int k = 0; k < 21; k++)// 根据字库的字数调节循环的次数</code></div> <div><code>    if (hanzi[k].Index[0] == c[0] && hanzi[k].Index[1] == c[1] && hanzi[k].Index[2] == c[2])</code></div> <div><code>    { tft.drawBitmap(x, y, hanzi[k].hz_Id, hanzi[k].hz_width, 16, color);</code></div> <div><code>    }</code></div> <div><code>}</code></div> <div><code>/*整句汉字显示*/</code></div> <div><code>void showHanziS(int32_t x, int32_t y, const char str[], uint32_t color) { //显示整句汉字,字库比较简单,上下、左右输出是在函数内实现</code></div> <div><code>  int x0 = x;</code></div> <div><code>  for (int i = 0; i < strlen(str); i += 3) {</code></div> <div><code>    showHanzi(x0, y, str+i, color);</code></div> <div><code>    x0 += 17;</code></div> <div><code>  }</code></div> <div><code>}</code></div> <div><code>/*文本显示函数*/</code></div> <div><code>//参数:x y font s fg bg str</code></div> <div><code>void showtext(int16_t x,int16_t y,uint8_t font,uint8_t s,uint16_t fg,uint16_t bg,const String str)</code></div> <div><code>{</code></div> <div><code>  //设置文本显示坐标,和文本的字体,默认以左上角为参考点,</code></div> <div><code>    tft.setCursor(x, y, font);</code></div> <div><code>  // 设置文本颜色为白色,文本背景黑色</code></div> <div><code>  tft.setTextColor(fg,bg);</code></div> <div><code>//设置文本大小,文本大小的范围是1-7的整数</code></div> <div><code>  tft.setTextSize(s);</code></div> <div><code>  // 设置显示的文字,注意这里有个换行符 \n 产生的效果</code></div> <div><code>  tft.println(str);</code></div> <div><code>}</code></div> </div> <p style="line-height: 1.8;">wifi及NTP</p> <div> <div> <div> <div><code>const char *ssid    = "自己的wifi";  //wifi账号</code></div> <div><code>const char *password = "自己的WiFi密码";  //wifi密码</code></div> <div><code>WiFiUDP ntpUDP;</code></div> <div><code>NTPClient timeClient(ntpUDP,"cn.pool.ntp.org");  //NTP服务器地址</code></div> </div> </div> <div><code>void get_wifi()</code></div> <div><code>{</code></div> <div><code>  // 连接网络</code></div> <div><code>  WiFi.begin(ssid, password);</code></div> <div><code>  //等待wifi连接</code></div> <div><code>  while (WiFi.status() != WL_CONNECTED)</code></div> <div><code>  {</code></div> <div><code>    delay(500);</code></div> <div><code>    Serial.print(".");</code></div> <div><code>  }</code></div> <div><code>  Serial.println("");</code></div> <div><code>  Serial.println("WiFi connected"); //连接成功</code></div> <div><code>  Serial.print("IP address: ");    //打印IP地址</code></div> <div><code>  Serial.println(WiFi.localIP());</code></div> <div><code>}</code></div> <div> </div> <div> <div> <div><code>timeClient.begin();</code></div> <div><code>  //设置偏移时间(以秒为单位)以调整时区,例如:</code></div> <div><code>    // GMT +1 = 3600</code></div> <div><code>    // GMT +8 = 28800</code></div> <div><code>    timeClient.setTimeOffset(28800);</code></div> </div> </div> <div> </div> <div>SHT4x温湿度传感器</div> <div> <div> <div><code>//SHT40温湿度传感器配置及初始化代码</code></div> <div><code>#define SHT4X_SDA_PIN 21</code></div> <div><code>#define SHT4X_SCL_PIN 22</code></div> <div><code>Adafruit_SHT4x sht4 = Adafruit_SHT4x();</code></div> <div><code>void SHT4x_Init() {</code></div> <div><code>  Wire.begin(SHT4X_SDA_PIN, SHT4X_SCL_PIN);</code></div> <div><code>  if (!sht4.begin()) {</code></div> <div><code>    Serial.println("Couldn't find SHT4x");//试初始化SHT4x传感器,如果失败则打印错误信息并进入无限循环</code></div> <div><code>    while (1) delay(1);</code></div> <div><code>  }</code></div> <div><code>  Serial.println("Found SHT4x sensor");</code></div> <div><code>  Serial.print("Serial number 0x");</code></div> <div><code>  Serial.println(sht4.readSerial(), HEX);</code></div> <br> <div><code>  sht4.setPrecision(SHT4X_HIGH_PRECISION);//设置传感器的精度</code></div> <div><code>  switch (sht4.getPrecision()) {</code></div> <div><code>     case SHT4X_HIGH_PRECISION:</code></div> <div><code>       Serial.println("High precision");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_MED_PRECISION:</code></div> <div><code>       Serial.println("Med precision");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_LOW_PRECISION:</code></div> <div><code>       Serial.println("Low precision");</code></div> <div><code>       break;</code></div> <div><code>  }</code></div> <br> <div><code>  sht4.setHeater(SHT4X_NO_HEATER);//关闭传感器的加热器功能。</code></div> <div><code>  switch (sht4.getHeater()) {</code></div> <div><code>     case SHT4X_NO_HEATER:</code></div> <div><code>       Serial.println("No heater");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_HIGH_HEATER_1S:</code></div> <div><code>       Serial.println("High heat for 1 second");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_HIGH_HEATER_100MS:</code></div> <div><code>       Serial.println("High heat for 0.1 second");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_MED_HEATER_1S:</code></div> <div><code>       Serial.println("Medium heat for 1 second");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_MED_HEATER_100MS:</code></div> <div><code>       Serial.println("Medium heat for 0.1 second");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_LOW_HEATER_1S:</code></div> <div><code>       Serial.println("Low heat for 1 second");</code></div> <div><code>       break;</code></div> <div><code>     case SHT4X_LOW_HEATER_100MS:</code></div> <div><code>       Serial.println("Low heat for 0.1 second");</code></div> <div><code>       break;</code></div> <div><code>  }</code></div> <div><code>}</code></div> <br><br></div> </div> </div> <h3 style="line-height: 1.8;">*6、大赛LOGO验证</h3> <hr> <p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/079ee7be0d6d4acf84872fd41a78816c.jpg" alt="" width="1164" height="872"></p> <h3 style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3> <hr> <p style="line-height: 1.8;"> </p> <p style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p> <p style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p> <p style="line-height: 1.8;"> </p> <p style="line-height: 1.8;"><span style="font-size: 14px;"><a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank">前往查看更多详情 ></a></span></p> <p style="line-height: 1.8;"> </p>

文档

BOM

暂无

附件

附件名 下载
ESP-WROOM-32.zip
立创训练营-温湿度计.mp4

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow