[作品提交] 【得捷电子Follow me第1期】任务2、3 外设驱动和网络时间同步

aramy   2023-6-14 10:14 楼主

搞定了开发环境,接下来就是逐一搞定各个外设了。

OLED

oled本质上就是很多微小的led组成的发光阵列,控制每个单元的亮与灭来显示信息。这里OLED模块有128x64个发光单元,使用SSD1306驱动。使用前辈们造好的轮子https://github.com/stlehmann/micropython-ssd1306驱动OLED显示,使用I2C1来驱动。

from machine import Pin,I2C
from ssd1306 import SSD1306_I2C

i2c=machine.I2C(1, sda=machine.Pin("GP6"), scl=machine.Pin("GP7"), freq=400000)
display = SSD1306_I2C(128, 64, i2c)

display.fill(0)
display.show()
display.text("hello eeworld",5,10)
display.show()

3.jpg 蜂鸣器

这个蜂鸣器模块,应该是个无源蜂鸣器。意味着蜂鸣器自生是没有信号源的,必须要单片机提供震动信号给蜂鸣器,蜂鸣器才会发声,与扬声器相似。可以通过单片机控制蜂鸣器发出不同频率的音调。

import machine
import time
pizzo = machine.Pin(20)
pwm1 = machine.PWM(pizzo)
frep1 = 100
pwm1.freq(frep1)
pwm1.duty_u16(32768)
while True:
    frep1 += 100
    pwm1.freq(frep1)
    time.sleep(.5)
    if frep1 > 2400:
        frep1 = 200

4.jpg WIFI

PicoW自带了wifi模块,有了wifi就能方便地联网了。不过查了一下,只能连接2.4G的网络,无法连接5G的wifi。这里用手机创建一个2.4G热点。

import network
import time
#import ntptime

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("weile", "weile120")
while not wlan.isconnected() and wlan.status() >= 0:
    print("Waiting to connect:")
    time.sleep(1)
print(wlan.ifconfig())

5.png 获取网络时间

当单片机与网络连接后,就可以拓展单片机的世界啦!可以访问互联网上的内容。这里首先从互联网获得时间,校正单片机上的时间。

import time
import utime
import machine
import ntptime
ntptime.NTP_DELTA = 3155644800  
ntptime.host = 'ntp1.aliyun.com'
ntptime.settime()  

print( time.localtime(time.time()))
rtc = machine.RTC()
while True:
    t = rtc.datetime()
    print(t)
    time.sleep(5)

6.png

回复评论 (1)

PicoW自带了wifi模块,虽然只能连接2.4G的网络,玩网络时间同步也足够了

点赞  2023-6-15 07:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复