0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Raspberry Pi Pico W和MicroPython开发物联网应用

jf_cVC5iyAO 来源:易心Microbit编程 2023-07-21 09:36 次阅读

daaa3d6c-26d3-11ee-962d-dac502259ad0.jpg

当我们提及物联网IoT, Internet of Things)开发,可能首先想到的是Arduino或是ESP8266这样的微控制器开发板。然而,Raspberry Pi的微控制器开发板——Raspberry Pi Pico W,也是一个很好的选择。

在本项目中,将会介绍如何使用Raspberry Pi Pico W和MicroPython,并用Thonny IDE的平台来撰写程序。

Raspberry Pi Pico W 简介

Raspberry Pi Pico W是由RaspberryPi基金会出品的微控制器开发板。它配备了一个RP2040微控制器,有264KB的内部RAM,并且支持MicroPython程序语言,这让我们可以更方便地开发物联网应用。

使用上和Raspberry Pi Pico没有多大差别,只是Raspberry Pi Pico W 还支持Wi-Fi 802.11n无线网络蓝牙,更多Raspberry Pi Pico相关介绍连结如下:

Raspberry Pi Pico family

Raspberry Pi Pico介绍(含使用ArduinoIDE和扩充板)

MicroPython简介

MicroPython是一种针对微控制器和受限环境设计的Python 3 程序语言编译程序和执行环境。这种程序语言实现了Python 3的大部分语法和特性,并对于开发板所需的低功耗和实时响应有进一步优化。MicroPython提供了丰富的API,可以直接控制微控制器的GPIO、I2C、SPI等各种硬件资源。

Thonny IDE简介

Thonny是一个专为Python初学者设计的集成开发环境(IDE)。它的介界面简单,功能强大,对于学习Python语言非常有帮助。而且,Thonny IDE 也支持 MicroPython,我们可以直接在Thonny IDE中编写MicroPython 程序,并上传到Raspberry Pi Pico W上执行。

请由 Thonny 官方网站下载 Thonny。

电路接线图

本次项目分享如何透过Thonny IDE来撰写MicroPython程序,并使用PMS5003粉尘传感器取得数值和经由Raspberry Pi Pico W的Wi-Fi功能取得目前台湾时间,并显示在OLED中。

以下介绍Raspberry Pi Pico W、Raspberry Pi Pico W扩充板、OLED、PMS5003接线图。

Raspberry Pi Pico与扩充板接法(扩充板可兼容于Raspberry Pi Pico W)

https://cavedu.gitbook.io/cavedu/raspberry_pi_pico_info/pico_breakout

dac08004-26d3-11ee-962d-dac502259ad0.jpg

Raspberry Pi Pico W扩充板与OLED接线图

dae60608-26d3-11ee-962d-dac502259ad0.jpg

Raspberry Pi Pico W扩充板与PMS5003接线图

接下来使用 Thonny IDE 来编写程序,请先下载 Raspberry Pi Pico W 的 uf2 韧体档,除非有更新版本的韧体,否则更新只要一次即可。

db0c115e-26d3-11ee-962d-dac502259ad0.jpg

如何上传Raspberry Pi Pico W的uf2檔

按住 Raspberry Pi Pico W 的 BOOTSET 按钮时,插上USB连接到计算机。

db2068e8-26d3-11ee-962d-dac502259ad0.jpg

Raspberry Pi Pico W 会被计算机辨识为一个磁盘,将 uf2 韧体档拖放到其中就会自动更新韧体。

db5e1d50-26d3-11ee-962d-dac502259ad0.jpg

Raspberry Pi Pico W连接Thonny IDE

●将Thonny IDE下载至计算机,并解压缩后开启,请选择执行>设定直译器

db76d4e4-26d3-11ee-962d-dac502259ad0.jpg

●选Micro Python (RP2040)

db9e55c8-26d3-11ee-962d-dac502259ad0.jpg

端口选择USB序列装置(COM X)

dbba5930-26d3-11ee-962d-dac502259ad0.jpg

[注] COM号要记住,后续上传程序需要正确指定 COM 号,概念如同 Aduino IDE

●确认是否抓到 Raspberry Pi Pico W

检查 Thonny IDE 下方的互动环境(Shell),如果没有红字错误讯息即可上传程序,这时候还没写,继续看下去吧。

dbda4a9c-26d3-11ee-962d-dac502259ad0.jpg

汇入OLED函式库至 Raspberry Pi Pico W

本项目需要透过 OLED 显示模块来显示数值,故需要先汇入OLED 函式库

1. 下载 OLED 函式库,档名ssd1306.py到您的计算机

2. 在 Thonny IDE 中安装套件

我们可由 Thonny IDE 呼叫系统命令行来安装 python 套件,请由工具–> 开启系统命令行

dc024038-26d3-11ee-962d-dac502259ad0.jpg

开启系统命令行,如下图

dc3ad7cc-26d3-11ee-962d-dac502259ad0.jpg

3. 安装 adafruit-ampy 套件

为了顺利执行程序,我们需要安装 adafruit-ampy 套件,用于透过串行端口与 CircuitPython 或 MicroPython 开发板互动,

安装方式就是一般的 pip 指令,相当简单:

4. 汇入OLED函式库到RaspberryPi Pico W

cd module_library

ampy --port COMX put ssd1306.py

[注]请注意,并不是开启下方的窗口,若出现下方窗口,则要再按一次开启系统命令行。

dc4fbad4-26d3-11ee-962d-dac502259ad0.jpg

5. 如何查看已汇入的函式库

在 Thonny IDE 中,点选检视 -> 档案,可以查看Raspberry Pi Pico W中汇入的档案

dc630562-26d3-11ee-962d-dac502259ad0.jpg

确认已汇入先前所操作的档案

dce24282-26d3-11ee-962d-dac502259ad0.jpg

执行程序

专题有两个程序 (或下载原始码,或由以下复制也可以):

在 OLED 显示时间(

OLED_wifitime.py

)

在 OLED 显示 PMS5003 粉尘传感器数值(

PMS5003_OLED.py

)

OLED_wifitime.py

import machine

import utime

import ssd1306

from time import sleep

import network

import ntptime

import urequests

i2c = machine.SoftI2C(scl=machine.Pin(15),sda=machine.Pin(4))

oled_width = 128

oled_height = 64

oled = ssd1306.SSD1306_I2C(oled_width,oled_height, i2c)

# 初始化 UART

uart = machine.UART(0, baudrate=9600,tx=machine.Pin(0), rx=machine.Pin(1), timeout=1000)

uart.init(9600, bits=8, parity=None,stop=1)

# 初始化WiFi

sta_if = network.WLAN(network.STA_IF)

sta_if.active(True)

wifi_ssid = "XXXXX"

wifi_password = "XXXXXXX"

sta_if.connect(wifi_ssid, wifi_password)

# 显示WiFi连接状态

oled.fill(0)

oled.text('WiFi:', 0, 0)

if sta_if.isconnected():

oled.text('connected', 40, 0)

else:

oled.text('connceting', 40, 0)

oled.show()

#设定时区

TIME_ZONE = 8

# 取得NTP时间

#ntptime.settime()

for i in range(5):

try:

ntptime.settime()

break

except OSError:

print('Error connecting to NTP server, retrying...')

utime.sleep(5)

else:

print('Could not connect to NTP server after 5 retries.')

# 等待一段时间

utime.sleep(3)

while True:

t= utime.localtime(utime.time() + TIME_ZONE * 3600)

oled.fill(0)

oled.text(str("%d/%02d/%02d" % (t[0], t[1], t[2])), 0, 0)

oled.text(str("%02d:%02d:%02d" % (t[3], t[4], t[5])), 0, 16)

oled.show()

utime.sleep(1)

PMS5003_OLED.py

import machine

import utime

import ssd1306

from time import sleep

i2c = machine.SoftI2C(scl=machine.Pin(15),sda=machine.Pin(4))

oled_width = 128

oled_height = 64

oled = ssd1306.SSD1306_I2C(oled_width,oled_height, i2c)

# 初始化 UART

uart = machine.UART(0, baudrate=9600,tx=machine.Pin(0), rx=machine.Pin(1), timeout=1000)

uart.init(9600, bits=8, parity=None,stop=1)

while True:

#读取 PMS5003 数据

data = bytearray(uart.read(32))

# 判断是否为正确的PMS5003 资料

if data is not None and len(data) >= 10 and data[0] == 0x42 anddata[1] == 0x4d:

pm1_cf = int.from_bytes(data[4:6], 'big')

pm25_cf = int.from_bytes(data[6:8], 'big')

pm10_cf = int.from_bytes(data[8:10], 'big')

#清除 OLED

oled.fill(0)

# 显示 PMS5003 数据

oled.text("PM1.0: %d ug/m3" % pm1_cf, 0, 22)

oled.text("PM2.5: %d ug/m3" % pm25_cf, 0, 38)

oled.text("PM10 : %d ug/m3" % pm10_cf, 0, 54)

# 更新 OLED

oled.show()

utime.sleep(1)

实际展示

执行程序之后,可在 OLED 显示模块上看到相关信息,恭喜成功啰!

dd0239ca-26d3-11ee-962d-dac502259ad0.jpg

dd2056bc-26d3-11ee-962d-dac502259ad0.jpg

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7505

    浏览量

    151149
  • 物联网
    +关注

    关注

    2905

    文章

    44361

    浏览量

    371841
  • 开发板
    +关注

    关注

    25

    文章

    4979

    浏览量

    97272
  • Arduino
    +关注

    关注

    187

    文章

    6465

    浏览量

    186729
  • Micropython
    +关注

    关注

    0

    文章

    68

    浏览量

    4723

原文标题:使用 Raspberry Pi Pico W 和 MicroPython 开发物联网应用

文章出处:【微信号:易心Microbit编程,微信公众号:易心Microbit编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Raspberry Pi Pico是什么

    Waveshare给您介绍一款树莓派家族的新成员,Raspberry Pi Pico 是一款低成本,高性能的微控制器开发板,具有灵活数字接口。硬件上,采用
    发表于 07-14 07:02

    Raspberry Pi Pico具有哪些功能特性?

    Raspberry Pi Pico具有哪些功能特性?
    发表于 10-11 08:13

    微控制器开发Raspberry Pi Pico

    树莓派基金会最新发布一款低成本、高性能的微控制器开发Raspberry Pi Pico,新产品相比普通树莓派体积更小
    发表于 10-29 07:33

    使用raspberry pi Pico的原因

    使用raspberry pi Pico的原因在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助设备, 以往的做法
    发表于 02-07 09:16

    Raspberry Pi 4/3B的Pico开发

    描述适用于 Raspberry Pi 4 的 Raspberry Pi Pico 开发
    发表于 07-26 07:14

    raspberry pi Pico使用MicroPython变砖后的解决方法

    使用raspberry pi Pico的原因在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助设备, 以往的做法
    发表于 12-04 12:51 2次下载
    <b class='flag-5'>raspberry</b> <b class='flag-5'>pi</b> <b class='flag-5'>Pico</b>使用<b class='flag-5'>MicroPython</b>变砖后的解决方法

    适用于Raspberry Pi 4的Raspberry Pi Pico开发

    电子发烧友网站提供《适用于Raspberry Pi 4的Raspberry Pi Pico开发
    发表于 07-22 09:27 6次下载
    适用于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b><b class='flag-5'>开发</b>板

    使用MicroPythonRaspberry Pi上通过双核编程的多线程控制LED

    在本教程中,我们将使用 MicroPythonRaspberry Pi Pico 上通过双核编程的多线程控制两个 LED 。
    的头像 发表于 07-25 17:41 7376次阅读
    使用<b class='flag-5'>MicroPython</b>在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上通过双核编程的多线程控制LED

    Raspberry Pi Pico:使用PIO驱动伺服

    电子发烧友网站提供《Raspberry Pi Pico:使用PIO驱动伺服.zip》资料免费下载
    发表于 11-04 09:44 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>:使用PIO驱动伺服

    使用Raspberry Pi Pico的LED序列

    电子发烧友网站提供《使用Raspberry Pi Pico的LED序列.zip》资料免费下载
    发表于 11-14 11:07 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>的LED序列

    基于树莓派Raspberry Pi Pico的自动浇花系统

    土壤湿度传感器 x 1 4. RGB LED x 15. 面包板 x 16. 移动电源 x 1软件组件1. MicroPython2. Thonny IDE第 1步-设置树莓派 Pico1.  下载 micropython
    发表于 12-27 15:34 5次下载

    Arduino Raspberry Pi Pico/RP2040以太网:W5100S EVB Pico

    电子发烧友网站提供《Arduino Raspberry Pi Pico/RP2040以太网:W5100S EVB Pico.zip》资料免费
    发表于 06-14 14:29 1次下载
    Arduino <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>/RP2040以太网:<b class='flag-5'>W</b>5100S EVB <b class='flag-5'>Pico</b>

    远程编程Raspberry Pi Pico

    电子发烧友网站提供《远程编程Raspberry Pi Pico.zip》资料免费下载
    发表于 06-16 15:25 0次下载
    远程编程<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>

    Raspberry Pi Pico 2

    Raspberry Pi Pico 2显著提升了性能,同时保持了与之前的Raspberry Pi Pic
    的头像 发表于 11-25 15:10 402次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> 2

    Raspberry Pi Pico 2 W 发布

    树莓派官方今日宣布推出支持无线连接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售价 7 美元, 较此前的有线版本高出 2 美元 。    
    的头像 发表于 11-25 18:25 352次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> 2 <b class='flag-5'>W</b> 发布