天气和时间显示


欧洲华裔小罗匠
转载
发布时间: 2025-12-13 15:47:41 | 阅读数 0收藏数 0评论数 0
封面
该设计是一个小巧的气象站,它功能强大,可以作为多功能的出行规划工具,实时更新当前时间、日期和天气信息,并提供任意地点未来三天的天气预报。通过openweathermap.org提供的 API 密钥,我可以在软件中调整经纬度来设置地点。显示屏会循环显示三个界面:主要时间和日期、当日天气以及未来三天的天气预报。 这款气象站简化了获取天气信息的流程,无需查看手机即可提供实时更新。它是规划户外活动的实用工具,能够提供快速可靠的信息,帮助您高效地做出决策。

准备工作:

材料:

  1. 1 ESP8266 NodeMCU V3
  2. 1 个OLED 4 针 I2C 显示屏
  3. 4根公对公跳线
  4. 面包板(170孔即可)
  5. 电脑(MacOS)
  6. Arduino IDE 应用
  7. USB 转 MicroUSB 数据线
  8. 转 USB-C 适配器(适用于 MacBook)
  9. Openweathermap.org帐户

附件中有成品的视频。

RAR
IMG_2644.rar
15.97MB
1

下载IDE创建 OpenWeatherMap 帐户

正在下载 Arduino IDE 应用程序。

https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE

我们需要使用openweathermap.org的 API 来获取日期和天气信息。

首先,点击登录按钮创建一个账户,您只需填写所需信息即可开始。

登录并拥有账户后,点击右上角的用户名——此时应该会出现一个下拉菜单。

选择我的 API 密钥,然后您可以在那里为本教程生成 API 密钥。

我们将在后续步骤中使用 API 密钥。

2

刷写 ESP8266

访问此网站:https://nodemcu-build.com/

我们将在这里构建固件。

保留默认设置,填写您的电子邮件,然后点击页面底部的“开始构建”。

过一段时间后,您会收到一封电子邮件,请下载浮点固件。

访问此网站:https://github.com/marcelstoer/nodemcu-pyflasher/releases/tag/v5.0.0并下载适合您笔记本电脑的刷写工具。

刷写ESP芯片的作用:它会重​​写ESP芯片的固件,添加诸如Wi-Fi连接和Web服务器等新功能,这些功能我们将在气象站中使用。

要打开 pyflasher,双击应用程序图标以授予其管理员权限。

之后,按照屏幕录像中的步骤操作。


MP4
屏幕录制.mp4
3.79MB
3

端口和电路板设置并下载所需库

打开 Arduino IDE 并下载应用程序和库的所有更新。

然后,在屏幕左上角,点击 Arduino IDE 并进入设置。

在设置中,应该有一个名为“其他看板管理器 URL”的部分。

将此链接粘贴到此处以下载开发板文件:https://arduino.esp8266.com/stable/package_esp8266com_index.json

进入开发板和端口选择界面,选择上图中所示的开发板以及连接 ESP8266 的端口。

该电路板将显示为灰色,表示尚未安装,请点击提示进行安装。

在 Arduino 应用程序的左侧,会显示几个图标,找到带有书本图标的那个图标,它被称为“库管理器”。

您需要下载以下这些库。

  1. Adafruit SSD1306(由 Adafruit 提供,包含依赖项)
  2. ThingPulse 的 ESP8266 气象站
  3. Mike Causer 的 i2cdetect
  4. ESP8266 和 ESP32 OLED 驱动程序


4

连接 NodeMCU并填写代码

使用您的 64 针面包板、NodeMCU、4 针 OD 屏幕和公对公跳线

将 GND 连接到 GND(黑色)

将 VCC 连接到 3V3(红色)

将 SDA 连接到 D2(蓝色)

将 SCL 连接到 D1(黄色)

以上照片仅供参考,我拍摄这些单独连接的照片只是为了更清晰地展示连接情况。连接时,请将所有连接都连接起来。

在这一步中,我们将使用 Arduino 上预先制作的示例。

在 Arduino IDE 中创建一个新页面

在屏幕顶部,单击“文件”,然后单击“示例”。

滚动到自定义库的示例,选择 ESP8266 气象站,然后选择 WeatherStationDemo。

会生成一长串代码,但我们只会修改其中的某些部分。

查找 //WIFI

那边,把线条改一下:

const char* WIFI_SSID = " ";

const char* WIFI_PWD = " ";

请填写您笔记本电脑所连接的无线网络名称和密码。

之后,我们将使用步骤 2 中的 API 密钥。请查找这行代码。

根据你所使用的编程语言,修改这行代码。

字符串 OPEN_WEATHER_MAP_LANGUAGE = "de";

在这行代码的上方,应该有一些关于你的语言应该使用哪两个字母的注释,所以只需浏览一下并将“de”替换掉即可。

最后,我们将填写地点信息。

在 openweathermap.org 网站上,查找您想要显示的城市、州或国家。

搜索时,该地点就会显示出来。

在这些搜索结果中,会有一个部分显示“地理坐标”,旁边会显示您要显示的位置的纬度和经度。

float OPEN_WEATHER_MAP_LOCATION_LAT = XXX;

float OPEN_WEATHER_MAP_LOCATION_LON = XXX;

将你的坐标替换代码中的 XXX——第一个是纬度,第二个是经度。

至此,你的代码就完成了。接下来只需要将其上传到你的ESP8266上即可。

将连接在面包板上并已连接到 OLED 显示屏的 ESP8266 开发板,使用 micro-USB 转 USB-C 数据线连接到笔记本电脑。然后,点击 Arduino IDE 左上角的勾号按钮来验证代码。如果一切正常,应该不会出现任何错误。如果出现任何错误,请查看下一步的故障排除部分。最后,点击箭头按钮将代码上传到 ESP8266。

屏幕上应该会显示“正在连接 Wi-Fi”以及 Wi-Fi 图标。根据您的连接情况,稍后屏幕上应该会显示时间、日期和天气信息。观看上面的视频,了解最终效果。

5

故障排除

缺少库文件错误

再次检查库列表,并检查您自己的库是否匹配。

屏幕显示随机像素

您需要确保使用的显示屏是带有 GND、VCC、SCL 和 SDA 引脚的 4 针 I2C OLED 显示屏。如果您的显示屏不是这种类型,则很可能出现此问题。

造成此问题的另一个原因是使用了错误的地址。

你的代码中应该有一行写着:const int I2C_DISPLAY_ADDRESS = 0x3c;

现在,它有两种不同的选择,0x3c 或 0x3d。

但我应该使用哪一个呢?

通常情况下,默认值 0x3c 应该是正确的,但在某些情况下,它可能是 0x3d。

为了验证这一点,我们需要使用另一个例子。

在 Arduino IDE 中,依次点击“文件”和“示例”。在示例中,滚动到“自定义库示例”,然后在下拉菜单中选择“i2cdetect”。这将检查 ESP8266 连接的屏幕的地址。编译代码并将其上传到 ESP8266。等待编译进度达到 100%。然后,在屏幕顶部选择“串口监视器”,并确保波特率为 9600。您可以在串口监视器区域最右侧的下拉菜单中更改波特率。屏幕上会显示一些随机的文字,如图所示。如果显示 0x3c,则无需进行任何更改;如果显示 0x3d,则需要修改一行代码。

在 //显示设置 下,应更改以下代码行:

const int I2C_DISPLAY_ADDRESS = 0x3c;

进入

const int I2C_DISPLAY_ADDRESS = 0x3d;

这样应该可以解决屏幕上出现随机像素的问题。

日期或时间显示不正确?

我也遇到过这种情况,但校准并显示正确信息只需要 2 分钟。


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报