ESP8266+0.96寸OLED+心知天气做的简约版天气时钟

news/2024/11/16 16:20:45/

简述:
学习ESP8266就想做一个小项目,就在网上看别人的天气时钟跟着做了一遍,大致上差不多,就进行了一些小的改动。

一:硬件准备
Nodemcu开发板
0.96寸OLED(SPI七线制)

GND - GND
VCC - 3.3V
D0 - D2
D1 - D1
RES - D7
DC - D5
CS - D6

面包板
杜邦线

二:软件准备
进行库安装,用到的库有:
<ESP8266WiFi.h>
<ESP8266_Seniverse.h>
<U8g2lib.h>
<NTPClient.h>
<WiFiUdp.h>
<WiFiManager.h>

三:代码

#include <ESP8266WiFi.h>
#include <ESP8266_Seniverse.h>
#include <U8g2lib.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <WiFiManager.h>U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 4, /* data=*/ 5, /* cs=*/ 12, /* dc=*/ 14, /* reset=*/ 13);/*DI   ------ D1 D0  ------- D2 DC  ------- D5 CS  ------- D6 RES -------D7*/// weather
const String weathers[] = {"晴", "晴", "晴", "晴", "多云", "晴间多云", "晴间多云", "大部多云", "大部多云", "阴","阵雨", "雷阵雨", "雷雨冰雹", "小雨", "中雨", "大雨", "暴雨", "大暴雨", "特大暴雨","冻雨", "雨夹雪", "阵雪", "小雪", "中雪", "大雪", "暴雪", "浮尘", "扬沙", "沙尘暴","强沙暴", "雾", "霾", "风", "大风", "飓风", "热带风暴", "龙卷风", "冷", "热", "未知"};const char* ssid     = "***";       // 连接WiFi名
const char* password = "***";          // 连接WiFi密码
String reqUserKey = "***";// 心知天气私钥
String reqLocation = "***";// 城市
String reqUnit = "c";// 摄氏/华氏WeatherNow weatherNow;
Forecast forecast;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com", 60 * 60 * 8, 30 * 60 * 1000);int times = 0;void setup() {Serial.begin(115200);u8g2.begin();u8g2.enableUTF8Print();u8g2.clearBuffer();u8g2.sendBuffer();delay(850);connectWiFi();// 连接wifi// 配置心知天气请求信息weatherNow.config(reqUserKey, reqLocation, reqUnit);forecast.config(reqUserKey, reqLocation, reqUnit);timeClient.begin();
}void loop() {u8g2.clearBuffer();// 清空显示设备内部缓冲区u8g2.setFont(u8g2_font_wqy12_t_gb2312);//天气if (forecast.update()) { // 更新天气信息//今天的天气、温度u8g2.setCursor(43, 12);String str1 = weathers[forecast.getDayCode(0)] + " " + forecast.getLow(0) + "-" + forecast.getHigh(0) + "℃" + " " + "今";u8g2.print(str1);//明天的天气、温度范围u8g2.setCursor(43, 27);str1 = weathers[forecast.getDayCode(1)] + " " + forecast.getLow(1) + "-" + forecast.getHigh(1) + "℃" + " " + "明";u8g2.print(str1);//后天的天气、温度范围u8g2.setCursor(43, 42);str1 = weathers[forecast.getDayCode(2)] + " " + forecast.getLow(2) + "-" + forecast.getHigh(2) + "℃" + " " + "后";u8g2.print(str1);} else {// 更新失败//u8g2.setCursor(53, 61);//u8g2.print(">_<...网络慢");}//时间u8g2.setFont(u8g2_font_wqy16_t_gb2312);if (timeClient.update()) {u8g2.setCursor(53, 61);String time = timeClient.getFormattedTime().substring(0, 5);u8g2.print(time);} else {//u8g2.setCursor(53, 61);//u8g2.print(">_<...网络慢");}u8g2.setFont(u8g2_font_unifont_t_symbols);   //先设置字体字集if (times == 0) {u8g2.drawGlyph(13, 18, 0x2603);u8g2.drawGlyph(13, 38, 0x2615);u8g2.drawGlyph(15, 58, 0x2600);times = 1;} else if (times == 1) {u8g2.drawGlyph(13, 18, 0x23f0);u8g2.drawGlyph(13, 38, 0x23f3);u8g2.drawGlyph(15, 58, 0x2614);times = 2;} else {u8g2.drawGlyph(13, 18, 0x2618);u8g2.drawGlyph(13, 38, 0x2619);u8g2.drawGlyph(15, 58, 0x2606);times = 0;}u8g2.sendBuffer();// 显示缓冲区内容delay(10000);
}// 连接WiFi
void connectWiFi() {// 建立WiFiManager对象WiFiManager wifiManager;// 自动连接WiFi。以下语句的参数是连接ESP8266时的WiFi名称wifiManager.autoConnect("AutoConnectAP");
}

四:效果展示
在这里插入图片描述


http://www.ppmy.cn/news/201757.html

相关文章

Qt 天气预报

通过调用天气服务器接口来获取天气信息&#xff0c;随后对获取到的json格式信息进行提取和转换 这里给出一个获取天气服务器的接口&#xff1a;http://wthrcdn.etouch.cn/weather_mini?city 运行结果如下&#xff1a; 获取信息功能实现&#xff1a; weather.cpp: #include…

i7 10700KF怎么样 i7 10700kf配什么主板好

i7-10700KF 拥有 8 核 16线程&#xff0c;基础频率为 4.00GHz&#xff0c;TVB频率可达5.3/4.91 GHz&#xff0c;i7-10700KF 单核可以睿频到了 5.1GHz。i7-10700KF 还搭载了 8256kB的二级缓存和 16MB 的三级缓存 i7 10700KF配什么主板好这些点很重要!看完你就知道了 https://lis…

ESP8266+0.96寸OLED+心知天气制作天气时钟

天气时钟的制作 一.准备代码演示效果 一.准备 我的天气时钟的制作是基于太极创客制作的<ESP8266_Seniverse.h>和网上天气时钟项目进行开发。 Nodemcu开发板 中景园0.96寸OLED(七线制SPI) GND - GND VCC - 3.3V D0 - D2 D1 - D1 RES - D7 DC - D5 CS - D6面包板 杜…

天气预报模块

目录 步骤1. 选择 API2. 发送网络请求3. 接收网络响应获得的json并进行解析4. 天气图标的显示 QT 界面设计 步骤 1. 选择 API 我用的是 聚合数据 上的 “天气预报” https://www.juhe.cn/docs/api/id/73 选择它的原因主要是&#xff1a;免费、数据简洁明了 2. 发送网络请求…

Python天气预报查询

功能&#xff1a; 实现城市天气预报查询&#xff0c;并提供未来四天查询 两个网站接口&#xff0c;直接返回数据&#xff0c;之后对数据进行读取和处理&#xff0c;很简单的小程序 效果图&#xff1a; 代码实现&#xff1a; import urllib.request import gzip import json…

酷睿i7 12800hx和i7 12800H区别

i7 12800H采用 14 核心 20 线程&#xff0c;应该是由 6 大核心 8 小核心组成&#xff0c;主频 2.8GHz&#xff0c;24MB 三级缓存&#xff0c;在 GeekBench 5 中单核心 1654 分&#xff0c;多核心 9618 分 笔记本cpu选i7 12800H还是i7 12800hx这些点很重要 http://www.adiannao.…

Qt 天气

写了一个简单的显示天气信息的例子。 其中涉及到http&#xff0c; xml&#xff0c; c11 天气信息是用webxml接口获取的&#xff0c;包括图片素材。 通过getSupportProvince获取支持的省份信息&#xff0c;getSupportCity获取当前省份中的城市&#xff0c;getWeatherbyCityNam…

网易(weather)天气预报接口

请求链接&#xff1a; http://weather.mail.163.com/weather/xhr/weather/info.do?sid&uid&host&verjs6&fontfaceyahei&style1&skinseablue&color&city101100410&callback00 参数&#xff1a; city 城市编号 返回结果&#xff1a; {&qu…