NodeMCU-ESP8266联网获取实时天气并使用lcd1602显示

lzy 1.3K 0

实现效果

NodeMCU-ESP8266联网获取实时天气并使用lcd1602显示

硬件准备

  • NodeMCU-ESP8266开发板
  • lcd1602显示屏(使用I2C总线)
  • 杜邦线若干
  • 可以联网的WiFi信号

软件环境

  • Arduino IDE
  • 心知天气API(免费版够用)

连线:NodeMCU——I2C

  • GPIO4——SDA
  • GPIO5——SCL
  • VIN——VCC
  • GND——GND

这里这个连线还是很坑的。

供电之所以使用VIN而不使用3.3V,是因为VIN的供电是5V的,3.3V供电也不是不行,但是显示效果不太行,几乎看不清。

另外,之前网上看别人做lcd1602显示,都是连D3、D4两个脚,然后一直不管用,直到忍无可忍查了NodeMCU-ESP8266的管脚功能表,如下:(来源: https://tttapa.github.io/

GPIO Function State Restrictions
0 Boot mode select 3.3V No Hi-Z
1 TX0 - Not usable during Serial transmission
2 Boot mode select TX1 3.3V (boot only) Don’t connect to ground at boot time Sends debug data at boot time
3 RX0 - Not usable during Serial transmission
4 SDA (I²C) - -
5 SCL (I²C) - -
6 - 11 Flash connection x Not usable, and not broken out
12 MISO (SPI) - -
13 MOSI (SPI) - -
14 SCK (SPI) - -
15 SS (SPI) 0V Pull-up resistor not usable
16 Wake up from sleep - No pull-up resistor, but pull-down instead Should be connected to RST to wake up

开发过程

开发之前先去心知天气注册一个账户 ,申请一个免费的API,用来获取实时天气。

引入最基本的ESP8266WiFi库,先连接一个能上网的WiFi,使用ESP8266通过http请求获取信息,几秒钟请求一次,更新信息。返回的是一个JSON字符串,使用ArduinoJson库函数解析JSON,得到需要的具体数据。最后通过LiquidCrystal_I2C库将天气情况显示在LCD1602上。

代码与库

本项目: https://github.com/liuzengyun/esp8266_Weather

ArduinoJSON库: https://github.com/bblanchon/ArduinoJson

LiquidCrystal_I2C库:Arduino IDE中库管理中下载即可。

发表评论 取消回复
表情 图片 链接 代码

分享