九月一到,就有了秋意,秋意在一个多雾的黎明溜来,到了炎热的下午便不见踪影。它踮起脚尖掠过树顶,染红几片叶子,然后乘着一簇飞掠过山谷离开。秋天已悄悄到来,背上你的行囊,叫上你的小伙伴一起去外面看看缤纷的世界。这不我养的小青蛙已经出去旅行了,它总是会给我发一些它在旅游时候的照片,不过最近在外好像有了艳遇。给大家看看它寄回来的照片。
我每当我看到我这里天气的变好或变差的时候,我都会去看看我的蛙儿子在哪里旅行。
功能:
1.接受当地时间及当地天气,显示在屏幕上
2.使用ESP32-E的电容触摸引脚,切换屏幕显示内容,显示青蛙旅行图片
用esp32做成的桌面天气站
一、准备材料
1.硬件材料:
2.外壳打印:点击链接获取图纸
二、制作过程
2.1 将各个模块按下图进行连接
2.2 安装开发板和库文件
- 关于如何下载本次使用的库文件,DFRobot_GDL库文件.
- 关于如何使用Firebeetle Board-ESP32-E,点击链接。
- 关于如何下载库文件,点击链接。
三、使用esp32获取网络天气及时间
ESP32同时支持STA以及AP模式的WiFi连接。
- STA 模式:ESP32模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
- AP 模式:ESP32模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。
- STA+AP 模式:两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作。
-
#include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> HTTPClient http; const char* ssid="dfrobotOffice"; const char* password="dfrobot2011"; const char* ntpServer = "pool.ntp.org"; const long gmtOffset_sec = 28800; const int daylightOffset_sec = 0; DynamicJsonDocument doc(1024); DynamicJsonDocument doc1(1024); void printLocalTime(){ struct tm timeinfo; if(!getLocalTime(&timeinfo)){ Serial.println("Failed to obtian time"); return ; } Serial.println(&timeinfo,"%A, %B %d %Y %H:%M:%S"); } void printLocalWeather(){ http.begin("http://www.weather.com.cn/data/cityinfo/101270101.html"); int httpCode = http.GET(); if(httpCode == HTTP_CODE_OK){ String pageData = http .getString(); //Serial.println(pageData); deserializeJson(doc,pageData); JsonObject obj = doc.as<JsonObject>(); String weatherInfo = obj["weatherinfo"]; deserializeJson(doc1,weatherInfo); JsonObject obj1 = doc1.as<JsonObject>(); String city = obj1["city"]; String temp1 = obj1["temp1"]; String temp2 = obj1["temp2"]; String weather = obj1["weather"]; String cityInfo ="地点:"+ city; String tempInfo =" 温度: " + temp1 + "~" + temp2; String cityWeatherinfo =