964|3

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第1期】项目总结 [复制链接]

  本帖最后由 江流儿的夏天 于 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活动总结

 

 

最新回复

四个任务完成测评的都很漂亮   详情 回复 发表于 2023-6-30 07:29
点赞(1) 关注
 
 

回复
举报

7159

帖子

2

TA的资源

版主

沙发
 

还做了个PPT总结,哈哈,不错不错!

 
 
 

回复

6802

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

四个任务完成测评的都很漂亮

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

4
 

跟帖补充:

非常感谢EEWORLD与得捷电子提供了这次非常有意义的活动,让我这个小白能有机会接触树莓派进行学习。根据任务需求,这次主要完成了前四项任务,根据Follow me的任务说明,项目总共包括四个方面:

 

任务1:熟悉micropython的基本语法

任务描述:通过Raspberry Pi Pico w开发板,熟悉固件下载、Mu Editor软件的基本使用方法、micropython的基本语法

所需器件:Raspberry Pi Pico w开发板。

项目过程:根据项目要求,下载了Mu Editor软件,并通过Raspberry Pi配置后,完成环境搭建。项目实现过程中,首先需要下载Raspberry Pi固件库,通过将固件库拖入Raspberry Pi后,即可进行程序烧写工作。在配置环境的过程中,

 

任务2:驱动外设

任务描述:驱动LED、OLED显示屏、蜂鸣器等外设。

所需器件:Raspberry Pi Pico w开发板、GROVE SHIELD、GROVE OLED扩展板、GROVE BUZZER扩展板

项目过程:

1、驱动LED:在驱动外设过程中,首先是驱动LED,通过import machine,即可调用固件库中LED,import time,调用delay进行时间闪烁延迟。

2、驱动蜂鸣器:通过对buzzer引脚定义,实现蜂鸣器调用,进行简单的delay函数后,即可实现蜂鸣器的声音调节。

3、驱动OLED显示屏:OLED显示屏模块根据教程已被封装好,调用即可,将ssd1306.py导入Pico W中,对封装库调用即可进行OLED显示屏显示。

 

任务3:同步网络时间

任务描述:学习network模块用法,掌握连接网络、查看网络参数等用法,实现通过网络同步系统时间。

搭配器件:Raspberry Pi Pico w开发板

项目过程:pico w自带了wifi模块,可以使用python的network模块进行wifi通信。首先使用wifi模块提供的连接方法尝试连接wifi,然后使用ntptime包访问指定域名获取实时时间并更新内部时间,实现网络时间同步。

 

任务4:实现定位功能

任务描述:掌握GNSS模块用法,实现定位功能。

搭配器件:Raspberry Pi Pico w开发板、GROVE - GPS扩展板

任务过程: GPS模块通过UART通信,在使用过程中搭配了GROVE - GPS扩展板以及OLED显示屏配合使用。GROVE - GPS扩展板与OLED显示屏使用方法类似,GPS模块已被封装好,拖入Pico W之后调用即可。在使用过程中,室内GPS信号很差,需要在室外实现定位功能,通过OLED显示屏显示定位数据。

 

完成四个任务后,对Pico W有了一个初步的认识,对新手非常友好,非常感谢EEWORLD与得捷提供的这次活动。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表