合宙ESP32C3+合宙1.8TFT屏幕点亮并获取温湿度和时间信息-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1849|回复: 12

合宙ESP32C3+合宙1.8TFT屏幕点亮并获取温湿度和时间信息

[复制链接]
发表于 2022-7-8 11:21 | 显示全部楼层 |阅读模式
本帖最后由 SmallLion_114 于 2022-7-8 12:23 编辑

机械专业小白自学,   部分代码应用社区大佬       topdog   AND 相关教程

1.硬件
   温湿度传感器DHT11;

   Wifi模块合宙ESP32C3;
   屏幕合宙1.8寸TFT排针已焊接屏(ST7735);
   使用Blinker在线显示温湿度数据,并显示历史曲线

TFT屏幕引脚摸索半天
TFT屏幕的引脚定义如下:

#define TFT_CS 10
#define TFT_RST 8
#define TFT_DC 9
#define TFT_BACKLIGHT  11        //ESP32C3的GPIO11(VDD_SPI)默认功能是给flash供电

#define TFT_MOSI 7  
#define TFT_SCLK 13


全部代码如下:
  1. /*温湿度检测并上传Blinker,通过SNTP访问中国教育网公共NTP网络时间同步服务器获取实时时间信息,
  2. * 通过1.8寸显示屏展示获取的温湿度信息和时间信息,
  3. */
  4. #define BLINKER_WIFI

  5. #include <Blinker.h>
  6. #include "DHT.h";
  7. #include <Adafruit_GFX.h>    // Core graphics library
  8. #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
  9. #include <SPI.h>

  10. //通过SNTP获取时间
  11. #include "time.h"
  12. #include "sntp.h"


  13. char auth[] = "秘钥";
  14. char ssid[] = "wifi名";
  15. char pswd[] = "WiFi密码";

  16. BlinkerNumber HUMI("humi");
  17. BlinkerNumber TEMP("temp");

  18. BlinkerButton Button1("btn-abc");

  19. //温湿度传感器引脚定义
  20. #define DHT11PIN 6
  21. #define DHTTYPE DHT11

  22. //TFT屏幕引脚定义
  23. #define TFT_CS 10
  24. #define TFT_RST 8
  25. #define TFT_DC 9
  26. #define TFT_BACKLIGHT  11 /*ESP32C3的GPIO11(VDD_SPI)默认功能是给flash供电,
  27. 我们完全可以使用外部3.3v给flash供电,将此IO用作通用io,以下是
  28. 操作流程,注意以下的操作只能执行一次,更改后不能复原。
  29. */
  30. #define TFT_MOSI 7  
  31. #define TFT_SCLK 13  

  32. Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

  33. DHT dht(DHT11PIN,DHTTYPE);
  34. float humi_read=0,temp_read=0;

  35. int ledpin=1;

  36. const char* ntpServer1 = "cn.ntp.org.cn";   //中国
  37. const char* ntpServer2 = "edu.ntp.org.cn";    //中国教育网
  38. const long  gmtOffset_sec = 8 * 3600;   //参数就是用来修正时区的,比如对于我们东八区(UTC/GMT+08:00)来说该参数就需要填写 8 * 3600
  39. const int   daylightOffset_sec = 0;     //使用夏令时 daylightOffset_sec 就填写3600,否则就填写0;
  40. const char* time_zone = "CST-8";  // 亚洲/上海时区规则,包括日光调整规则(可选)

  41. void setup(void) {
  42. tft.initR(INITR_BLACKTAB);
  43. Serial.begin(115200);
  44. tft.setRotation(1); //可以用来设置横屏显示

  45. tft.fillScreen(ST77XX_BLACK);
  46. delay(100);
  47.   
  48. pinMode(ledpin,OUTPUT);
  49. BLINKER_DEBUG.stream(Serial);
  50. BLINKER_DEBUG.debugAll();
  51. Blinker.begin(auth,ssid,pswd);
  52. Blinker.attachHeartbeat(heartbeat);
  53. Blinker.attachDataStorage(dataStorage);
  54. dht.begin();

  55. sntp_set_time_sync_notification_cb( timeavailable );
  56. sntp_servermode_dhcp(1);    // (optional)
  57. configTzTime(time_zone, ntpServer1, ntpServer2);
  58. }

  59. //时间输出
  60. /*void printLocalTime()
  61. {
  62.   struct tm timeinfo;
  63.   if (!getLocalTime(&timeinfo)) {
  64.     Serial.println("No time available (yet)");
  65.     return;
  66.   }
  67.   
  68.   tft.fillScreen(ST77XX_BLACK);
  69.   tft.setTextSize(2);
  70.   tft.setCursor(0, 30);
  71.   tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  72.   tft.print("Time:");
  73.   tft.print(&timeinfo,"%H");
  74.   tft.print(":");
  75.   tft.print(&timeinfo, "%M");
  76.   //tft.print(":");
  77.   //tft.print(&timeinfo, "%S");
  78.   tft.println();
  79.   //tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  80.   tft.print(&timeinfo, "%F");
  81.   delay(2000);
  82. }
  83. */

  84. // 回调函数(通过NTP调整时间时调用get)
  85. void timeavailable(struct timeval *t)
  86. {
  87.   tft.println("Got time adjustment from NTP!");
  88.   //printLocalTime();
  89. }


  90. /*void setup() {
  91.   // put your setup code here, to run once:

  92. }*/

  93. //温湿度输出
  94. void loop() {
  95.   // put your main code here, to run repeatedly:
  96. Blinker.run();
  97. Button1.attach(button1_callback);

  98. float h=dht.readHumidity();
  99. float t=dht.readTemperature();
  100. if(isnan(h)||isnan(t))
  101. {
  102.   BLINKER_LOG("Fail to read");
  103. }else
  104. {
  105.   BLINKER_LOG("Humidity:",h,"%");
  106.   BLINKER_LOG("Temperature:",t,"℃");

  107. //printLocalTime();

  108. tft.fillScreen(ST77XX_BLACK);
  109. tft.setCursor(0,10);
  110. tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
  111. tft.setTextSize(2);
  112. tft.print("Humi:");
  113. tft.print(h);
  114. tft.print(" %");
  115. tft.println();

  116. tft.println();

  117. tft.setTextSize(2);  
  118. tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
  119. tft.print("Temp:");
  120. tft.print(t);
  121. tft.print(" C");
  122. tft.println();

  123. tft.println();

  124. humi_read=h;
  125. temp_read=t;

  126. struct tm timeinfo;
  127.   if (!getLocalTime(&timeinfo)) {
  128.     Serial.println("No time available (yet)");
  129.     return;
  130.   }
  131.   
  132.   //tft.fillScreen(ST77XX_BLACK);
  133.   tft.setTextSize(2);
  134.   //tft.setCursor(0, 30);
  135.   tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  136.   tft.print("Time:");
  137.   tft.print(&timeinfo,"%H");
  138.   tft.print(":");
  139.   tft.print(&timeinfo, "%M");
  140.   //tft.print(":");
  141.   //tft.print(&timeinfo, "%S");
  142.   tft.println();

  143.   tft.println();

  144.   //tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  145.   tft.print(&timeinfo, "%F");

  146. }
  147. Blinker.delay(2000);
  148. }



  149. void heartbeat()
  150. {
  151.   HUMI.print(humi_read);
  152.   TEMP.print(temp_read);
  153. }

  154. //通过对相关相关程序的修改,可以实现控制LED灯的开关
  155. void button1_callback(const String & state)
  156. {
  157.   BLINKER_LOG("get button state: ",state);
  158.   if(state=="on")
  159.   {
  160.     digitalWrite(ledpin,HIGH);
  161.     Button1.print("on");
  162.   }else if(state=="off")
  163.   {
  164.     digitalWrite(ledpin,LOW);
  165.     Button1.print("off");
  166.   }
  167. }

  168. void dataStorage()
  169. {
  170.     Blinker.dataStorage("temp", temp_read);
  171.     Blinker.dataStorage("humi", humi_read);
  172. }
复制代码

Blinker

Blinker

展示

展示



 楼主| 发表于 2022-8-26 10:24 | 显示全部楼层
Earduino 发表于 2022-8-26 10:20
就你上边这个app吧。应该是app吧

这个APP是Blinker,Arduino社区里有相关教程
发表于 2022-7-11 13:16 | 显示全部楼层
屏的购买链接能丢一个吗
 楼主| 发表于 2022-7-11 14:24 | 显示全部楼层
Earduino 发表于 2022-7-11 13:16
屏的购买链接能丢一个吗

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-24154658004.2.42bf597dpuYr3t&id=560176729178
发表于 2022-8-26 08:30 | 显示全部楼层
问一下合宙的EINK-1.54它的主控是什么型号?没找到资料
发表于 2022-8-26 08:31 | 显示全部楼层
这个上位机是怎么做的
 楼主| 发表于 2022-8-26 09:03 | 显示全部楼层
Earduino 发表于 2022-8-26 08:30
问一下合宙的EINK-1.54它的主控是什么型号?没找到资料

显示屏背板上应该有型号吧,你说的这个我也没用过。
 楼主| 发表于 2022-8-26 09:03 | 显示全部楼层
Earduino 发表于 2022-8-26 08:31
这个上位机是怎么做的

什么是上位机?
发表于 2022-8-26 10:20 | 显示全部楼层

就你上边这个app吧。应该是app吧
 楼主| 发表于 2022-8-26 10:32 | 显示全部楼层
ESP32集合了气体传感器+蜂鸣器+温湿度传感器(最新版)

最新版本

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:43 , Processed in 0.124798 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表