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

lzy 1.2K 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/

GPIOFunctionStateRestrictions
0Boot mode select3.3VNo Hi-Z
1TX0-Not usable during Serial transmission
2Boot mode select TX13.3V (boot only)Don’t connect to ground at boot time Sends debug data at boot time
3RX0-Not usable during Serial transmission
4SDA (I²C)--
5SCL (I²C)--
6 - 11Flash connectionxNot usable, and not broken out
12MISO (SPI)--
13MOSI (SPI)--
14SCK (SPI)--
15SS (SPI)0VPull-up resistor not usable
16Wake 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中库管理中下载即可。

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

分享