天气和时间显示
0
准备工作:
材料:

- 1 ESP8266 NodeMCU V3
- 1 个OLED 4 针 I2C 显示屏
- 4根公对公跳线
- 面包板(170孔即可)
- 电脑(MacOS)
- Arduino IDE 应用
- USB 转 MicroUSB 数据线
- 转 USB-C 适配器(适用于 MacBook)
- Openweathermap.org帐户
附件中有成品的视频。
下载IDE创建 OpenWeatherMap 帐户

正在下载 Arduino IDE 应用程序。
https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE
我们需要使用openweathermap.org的 API 来获取日期和天气信息。
首先,点击登录按钮创建一个账户,您只需填写所需信息即可开始。
登录并拥有账户后,点击右上角的用户名——此时应该会出现一个下拉菜单。
选择我的 API 密钥,然后您可以在那里为本教程生成 API 密钥。
我们将在后续步骤中使用 API 密钥。
刷写 ESP8266




访问此网站:https://nodemcu-build.com/
我们将在这里构建固件。
保留默认设置,填写您的电子邮件,然后点击页面底部的“开始构建”。
过一段时间后,您会收到一封电子邮件,请下载浮点固件。
访问此网站:https://github.com/marcelstoer/nodemcu-pyflasher/releases/tag/v5.0.0并下载适合您笔记本电脑的刷写工具。
刷写ESP芯片的作用:它会重写ESP芯片的固件,添加诸如Wi-Fi连接和Web服务器等新功能,这些功能我们将在气象站中使用。
要打开 pyflasher,双击应用程序图标以授予其管理员权限。
之后,按照屏幕录像中的步骤操作。
端口和电路板设置并下载所需库

打开 Arduino IDE 并下载应用程序和库的所有更新。
然后,在屏幕左上角,点击 Arduino IDE 并进入设置。
在设置中,应该有一个名为“其他看板管理器 URL”的部分。
将此链接粘贴到此处以下载开发板文件:https://arduino.esp8266.com/stable/package_esp8266com_index.json
进入开发板和端口选择界面,选择上图中所示的开发板以及连接 ESP8266 的端口。
该电路板将显示为灰色,表示尚未安装,请点击提示进行安装。
在 Arduino 应用程序的左侧,会显示几个图标,找到带有书本图标的那个图标,它被称为“库管理器”。
您需要下载以下这些库。
- Adafruit SSD1306(由 Adafruit 提供,包含依赖项)
- ThingPulse 的 ESP8266 气象站
- Mike Causer 的 i2cdetect
- ESP8266 和 ESP32 OLED 驱动程序
连接 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 图标。根据您的连接情况,稍后屏幕上应该会显示时间、日期和天气信息。观看上面的视频,了解最终效果。
故障排除

缺少库文件错误
再次检查库列表,并检查您自己的库是否匹配。
屏幕显示随机像素
您需要确保使用的显示屏是带有 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
qq空间
微博
复制链接
分享