# -*- coding: utf-8 -*-
#导入所需模块
import network
import ntptime
import gc
from time import sleep
from machine import Pin, I2C, RTC
from ssd1306 import SSD1306_I2C
from dht import DHT11
# 初始化OLED显示屏
i2c=I2C(scl=Pin(18),sda=Pin(19))
led=SSD1306_I2C(128, 64, i2c=i2c)
led.font_load("GB2312-12.fon")
# 初始化WLAN
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# 扫描可用的WiFi网络并打印名称
aa = wlan.scan()
wifi_names=[net[0].decode() for net in aa]
print(wifi_names)
# 初始化LED指示灯
led1 = Pin(2,Pin.OUT)
# 初始化DHT11传感器
dht = DHT11(Pin(14))
# 尝试连接到WiFi
while not wlan.isconnected():
led1.value(1)
print('connecting to network...')
wlan.connect('你的wifi', '你的密码')
sleep(1)
led.fill(0)
led.text("正在链接wifi中...{}".format(p), 2, 0)
led1.value(0)
led.show()
p += 1
if p == 15:
while True:
if not wlan.isconnected():
wlan.connect('你的wifi', '你的密码')
try:
dht.measure()
except OSError:
led.fill(0)
led.text('DHT11传感器检测失败!', 2, 0)
led.show()
led.text('环境温度:{}'.format(dht.temperature()), 2, 0)
led.text('环境湿度:{}'.format(dht.humidity()), 2, 12)
led.show()
sleep(1)
if wlan.isconnected():
break
# 设置NTP时间同步
ntptime.NTP_DELTA = 3155644800 # 东八区的偏移量
ntptime.host = "ntp.aliyun.com"
ntptime.settime()
# 获取星期的映射
week = ("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日")
# 主循环
while True:
gc.collect()
try:
dht.measure()
except OSError:
led.fill(0)
led.text('DHT11传感器检测失败!', 2, 0)
led.show()
mg = RTC().datetime()
led.fill(0)
# 格式化日期,注意mg[3]是星期几的索引,从0开始,所以星期日是索引6
led.text('日期:{}-{}-{} {}'.format(mg[0], mg[1], mg[2], week[mg[3]]), 2, 0)
# 格式化时间,mg[4]是小时,mg[5]是分钟,mg[6]是秒
led.text('时间:{}:{}:{}'.format(mg[4], mg[5], mg[6]), 2, 13)
# 显示温度和湿度
led.text('环境温度:{}度'.format(dht.temperature()), 2, 25)
led.text('环境湿度:{}%'.format(dht.humidity()), 2, 37)
led.show()
sleep(1)