#程式碼的分段0.OLED Init 1.連接到無線網路 2.網路時間校正 3.即時時鐘顯示
#--------------------------------------------------------------
from machine import Pin, I2C
import ssd1306
# ESP32 Pin assignment
'''
0.96吋:128x64
0.91吋:128x32
ESP32的I2C腳位通常是如下所示:
SDA(資料線):通常位於ESP32的GPIO21腳位。
SCL(時脈線):通常位於ESP32的GPIO22腳位。
'''
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128 #16*8
oled_height = 32 # 8*8
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
#-----------------------------------------------------------------------------
import network
import time
print("連接 WiFi...", end="")
import network
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("Wokwi-GUEST", "")#(ssid,password)
while not wifi.isconnected():
time.sleep(0.5)
print(".", end="")
print('\nNetwork Config=',wifi.ifconfig())
#print("連接無線網路成功")
print('\U0001F604'*3+"連接無線網路成功"+'\U0001F604'*3)
oled.text('WIFI connect OK', 0, 0)
oled.show()
#--------------------------------------------------------------------
#--------------------------------
#適用於 MicroPython 和 ESP32 的 ntptime 模組
#https://hackmd.io/@PaoyungChang/mpy_tw_ntp
# name: tw_ntp.py, version: 0.1.0, author: [email protected]
# Copyright (c) 2022 Paoyung Chang. See the file LICENSE for copying permission.
# License link: https://gist.github.com/paoyung/7e465ad984a6cf24024508831ec54516
import time
import ntptime
def tw_ntp(host='clock.stdtime.gov.tw', must=False):
"""
host: 台灣可用的 ntp server 如下可任選,未指定預設為 clock.stdtime.gov.tw
tock.stdtime.gov.tw
watch.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw
tick.stdtime.gov.tw
must: 是否非對到不可
"""
ntptime.NTP_DELTA = 3155644800 # UTC+8 的 magic number
ntptime.host = host
count = 1
if must:
count = 100
for _ in range(count):
try:
ntptime.settime()
except:
time.sleep(1)
continue
else:
return True
return False
"""
example:
tw_ntp() # 使用預設值
tw_ntp(must=True) # 非對到時不可
tw_ntp(must=1) # 同上
tw_ntp('tick.stdtime.gov.tw', 1) # 指定server,並強制對時
"""
tw_ntp()
print('\U0001F604'*3+'NTP對網路時間校正完成'+'\U0001F604'*3)
oled.text('NTP connect OK', 0, 10)
oled.show()
time.sleep(2)
#-----------------------------------------------------------------------------
#| ESP32 教學 | MicroPython | RTC 實時時鐘 Real Time Clock
#https://jimirobot.tw/esp32-micropython-rtc-real-time-clock-tutorial-211/
import machine
import time
# 定義星期的列表
english_weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
rtc = machine.RTC()
#rtc.init((2024, 1, 2, 3, 4, 5, 6, 7))
while True:
t = rtc.datetime()
#
english_weekday = english_weekdays[t[3]]
# 修正這一行,加上格式化字串的 {} 符號,顯示中文星期
t1=("{:02}-{:02}-{:02} ".format(t[0], t[1], t[2]))
t2=("-{}-".format(english_weekday))
TaiwanTimeZone=8
t3=(" {:02}:{:02}:{:02}".format( t[4]+TaiwanTimeZone, t[5], t[6]))
print(t1,t2,t3)
oled.fill(0)
# oled.text('WIFI connect OK', 0, 0)
#oled.text('NTP OK', 0, 10)
oled.text(t1, 10, 0)
oled.text(t2, 20, 10)
oled.text(t3, 10, 20)
oled.show()
time.sleep(1)