本帖最后由 江流儿的夏天 于 2023-6-28 20:49 编辑
项目总结
非常感谢EEWORLD与得捷电子提供了这次非常有意义的活动,让我这个小白能有机会接触树莓派进行学习。根据任务需求,这次主要完成了前四项任务。
开箱及搭建:将任务所需的OLED显示屏、蜂鸣器、GPS模块以及Raspberry Pi Pico w开发板集成在一起,方便调试。
任务一:熟悉micropython基本语法
安装好Mu Editor软件后,通过USB连接电脑,第一次会在电脑上出现U盘标志RPI-RP2,将固件rp2-pico-w-20230510-unstable-v1.20.0-62-g4e4bdbd19.uf2拖进RPI-RP2后,会退出U盘,完成固件配置,即可进行程序开发(开发板不是首次使用,连接电脑不会出现U盘标志,需要按住BOOTSEL后再进行上电)。
Mu Editor打开后,点开模式,选择RP2040即可,进行程序编写。
任务2:驱动外设
根据教学内容,开始了点灯大师的第一步,点亮一个LED。代码如下:
import machine
import time
# pico
#led_onboard = machine.Pin(25, machine.Pin.OUT)
# pico w
led_onboard = machine.Pin("LED", machine.Pin.OUT)
delay = 0.5
while True:
led_onboard.value(1)
time.sleep(delay)
led_onboard.value(0)
time.sleep(delay)
成功成为点灯大师。
驱动蜂鸣器,蜂鸣器代码如下:
# BEEP using PWM Example
from machine import Pin
from time import sleep
# 蜂鸣器管脚定义GPIO20
IO_buzzer = 20
# 设置蜂鸣器GPIO口为输出模式
buzzer = Pin(IO_buzzer, Pin.OUT)
# 死循环
while True:
# 设置低电平,关闭蜂鸣器
buzzer.value(0)
# 延时
sleep(0.8)
# 设置高电平,打开蜂鸣器
buzzer.value(1)
# 延时
sleep(0.2)
在简单驱动蜂鸣器后,看见有大佬用蜂鸣器开始点歌,照着学了一下,发现加载外设的方法还挺有意思。在REPL未被点开的情况下,点开文件,会出现“设备上的文件”和“电脑上的文件”,将“电脑上的文件”中所需外设拖入“设备上的文件”,即完成外设加载,具体蜂鸣器函数见压缩包中buzzer文件。
驱动OLED:
将ssd1306.py拖入设备中,即可进行OLED驱动,main函数如下:
from ssd1306 import SSD1306_I2C
from machine import Pin, I2C
from time import sleep
# i2c = machine.I2C(1, sda=machine.Pin("GP6"), scl=machine.Pin("GP7"), freq=400000)
i2c = I2C(1, sda=Pin(6), scl=Pin(7), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
while True:
oled.fill(0) # clear
oled.text("Hello,pico!", 0, 0)
oled.show()
# sleep(0.5)
任务3:同步网络时间
根据教学视频中连接网络的过程,对Raspberry Pi Pico w开发板进行网络连接,具体程序如下:
import network
import time
ssid='TP-LINK_5980'
passwd='88888888'
wlan = None
def connectWiFi():
"""
连接到WiFi网络
"""
global wlan
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.disconnect()
wlan.connect(ssid, passwd)
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
print(wlan.ifconfig())
try:
connectWiFi()
finally:
wlan.disconnect()
wlan.active(False)
运行程序后,可见REPL方框中返回,WIFI连接成功。
同步网络时间:
具体程序如下:
import time
import network
import ntptime
import utime
ssid = 'TP-LINK_5980' # wifi name
passwd = '88888888' # wifi password
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, passwd)
# try to connect wifi
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('wait for WiFi connection')
time.sleep(1)
# 判定网络状态
if wlan.status() != 3:
raise RuntimeError('Connection faild')
else:
print('wifi connected')
status = wlan.ifconfig()
print('ip = '+status[0])
ntptime.host = "ntp.aliyun.com" # 使用阿里云NTP服务器
ntptime.timeout = 5 # 设置超时时间
sec = ntptime.time() # 获取实时时间
print(sec)
print(utime.localtime(sec+8*3600)) # 转换为北京时间,东八区
实现同步网络时间。
任务4:实现定位功能
将micropyGPS.py拖入设备中,进行GNSS位置信息读取,室内GPS信号不好很难获取GPS信号,建议室外进行获取
|
|
from machine import UART, Pin
import time
import hashlib
from micropyGPS import MicropyGPS
from machine import Pin
import time
from machine import PWM
from machine import I2C
from ssd1306 import SSD1306_I2C
import framebuf
WIDTH = 128
HEIGHT = 64
i2c = I2C(1)
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
# Init I2C using I2C0 defaults, SCL=Pin(GP9), SDA=Pin(GP8), freq=400000
uart0 = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
time.sleep(0.1)
rxData = bytes()
my_gps = MicropyGPS()
while True:
if uart0.any():
stat = my_gps.update(uart0.read(1).decode('ascii')) # Note the conversion to to chr, UART outputs ints normally
if stat:
oled.fill(0)
lat_disp = my_gps.latitude_string()
oled.text(lat_disp,5,10)
lon_disp = my_gps.longitude_string()
oled.text(lon_disp,5,30)
time_disp = my_gps.date_string('s_dmy')
oled.text(time_disp,5,50)
oled.show()
print('Latitude:', my_gps.latitude_string())
print('Longitude:', my_gps.longitude_string())
print('Speed:', my_gps.speed_string('kph'), 'or', my_gps.speed_string('mph'), 'or', my_gps.speed_string('knot'))
print('Date (Long Format):', my_gps.date_string('long'))
print('Date (Short D/M/Y Format):', my_gps.date_string('s_dmy'))
print('timestamp (Short [H,M,S] Format):', my_gps.timestamp)
stat = None
最后,非常感谢EEWORLD与得捷电子提供了这次有意义的活动,通过本次活动学习了pico开发板和micro python编程,目前作为一个结构工程师因为工作原因正在学习stm32相关的东西(笑,很多东西不是很懂,经历本次micro python编程,很多外设都是通过库使用,这极大的加快了快发速度和编程的上手,很适合新手入门使用,方便快捷。
附上测试程序:
Raspberry Pi Pico w_TEST.zip
(535.84 KB, 下载次数: 0)
视频:
Follow me活动总结
|