0.前言
之前写了一个ESP8266刷MicroPython及OLED显示,不断思考一下ESP8266连接OLED还能显示什么,于是想到了之前利用树莓派连接墨水屏显示天气信息的实验,功耗比树莓派更低,就此改造一下。
1.实验目的
基于MicroPython的ESP8266连接OLED显示天气信息。
2.实验方法
之前提到了向ESP8266上传main.py,上电ESP8266可以自动加载脚本,在main.py中提前写好连接openweather的API内容,获取json格式数据,然后进行显示。
#encoding=utf-8
import network
import time
import os
import urequests
import ujson
from machine import Pin,I2C
import ssd1306
i2c = I2C(scl=Pin(5), sda=Pin(4))
oled = ssd1306.SSD1306_I2C(128,64,i2c)
ssid = 'wifiname'#wifi名
password = '12345678'#密码
#openweather的api链接,需要替换location和id/key
url = 'http://api.openweathermap.org/data/2.5/weather?q={location}&appid={id}'
#连接wifi
def Connect_Network (ssid,password):
wifi_network = network.WLAN(network.STA_IF)
wifi_network.connect(ssid,password)
while True:
if(wifi_network.isconnected()):
break
else:
time.sleep(1)
print(wifi_network.ifconfig())
Connect_Network(ssid,password)
while True:
result = urequests.get(url)
j = ujson.loads(result.text)
j0 = j['name']
j1 = j['main']['temp']
j2 = j['main']['feels_like']
j3 = j['weather'][0]['main']
j6 = j['wind']['speed']
j7 = j['main']['humidity']
#oled清屏
oled.fill(0)
oled.show()
oled.text(j0+' '+j3,0,5)
oled.text('Temp:'+str(round(j1-273.15)),0,15)
oled.text('FeelLike:'+str(round(j2-273.15)),0,25)
oled.text('WindSpeed:'+str(j6)+'m/s',0,35)
oled.text('Humidity:'+str(j7)+'%',0,45)
oled.show()
#每20秒刷新一次
time.sleep(20)
3.实验结果
由于没有弄字模所以显示不了中文,显示图案也还需要再测试,暂且只显示天气数据,但能脱离连接笔记本,直接上电使用也还算可以,后续还会尝试加入温湿度传感器。
4.后续
购买了一个DHT11温湿度传感器,直接利用dht库进行测量(code),然后输出显示。
from machine import Pin
import dht
dd = dht.DHT11(Pin(14))
dd.measure()
t = dd.temperature()
h = dd.humidity()

版权声明:本文为m0_46622606原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。