如何用树莓派Pico针对IoT编程?

news2024/11/17 11:56:20

目录

一、Raspberry Pi Pico 系列和功能

二、Raspberry Pi Pico 的替代方案

三、对 Raspberry Pi Pico 进行编程

硬件

软件

第 1 步:连接计算机

第 2 步:在 Pico 上安装 MicroPython

第 3 步:为 Thonny 设置解释器

第 4 步:编写程序

第5步:运行程序

四、小结

众所周知,Raspberry Pi(树莓派)硬件1~4已在物联网世界中广为人知,并得到了广泛采用。而Raspberry Pi Pico 具有较小的物理尺寸,以及相对较高的处理能力和较低的能耗,因此它也在物联网世界中占有特殊的地位,而且已经作为微控制器(MCU),受到了开发爱好者和物联网专业人士的普遍喜爱。

一直以来,Pico 得到了 Raspberry Pi 基金会的支持。该基金会是一家致力于教育事业的注册慈善机构。Raspberry Pi Pico不但价格非常便宜,而且只需几分钟的设置便可投入使用,因此使用者无需深厚的编程知识,或需要到网上搜罗足够的文档,即可上手。下面,我将和您讨论有关 Raspberry Pi Pico 的编程功能、替代方案、以及资源。

一、Raspberry Pi Pico 系列和功能

Raspberry Pi Pico 不仅仅是一款微控制器,更是高性能的 MCU 板系列。典型的MCU板包括: Raspberry Pi Pico、Pico H、Pico W 以及 Pico WH。其中,Pico 和 Pico H 几乎相同,唯一的主要区别只是 Pico H 带有预焊接接头(即,连接电线的地方),而 Pico 则没有。因此,如果您想将电线连接到普通的 Pico上,则必须自行焊接接头。

Pico W 和 Pico WH 都添加了板载 Wi-Fi 模块,可以让设备连接到互联网上。Pico W 和 Pico WH 之间的唯一区别是, WH 具有预焊接的接头。

总的说来,上述四个系列均具有以下特性:

  1. RP2040 MCU
  2. 双核 Arm Cortex M0+ 处理器
  3. 时钟速度高达 133 MHz
  4. 264 KB SRAM 和 2 MB 闪存
  5. 1 个 USB 1.1 端口
  6. 低功耗或休眠模式
  7. 26 个通用输入/输出 (GPIO) 引脚
  8. 温度感应器
  9. 2 个 SPI、2 个 I2C、2 个 UART、3 个 ADC
  10. 8个可编程 I/O 状态机

同时,所有四种类型的 Pico还具有板载的 LED,这对于您首次开展物联网项目来说是非常重要的。当然,如果您已经有了一些物联网和 MCU的经验,那么请跳转到下一部分。

下面,让我们从 MCU 开始。大多数 Raspberry Pi 设计都会交付出单板计算机(single board computers,SBC)。它们在尺寸上具有较高的处理能力,并且可以执行与台式计算机相同的基本操作。通常,它们使用的是基于 Linux 操作系统的 RaspberryOS。相比之下,微控制器板则不具备运行完整操作系统的能力。也就是说,在台式机或笔记本电脑上,您可以打开多个应用程序,而 MCU 一次只能运行一个应用程序。

例如,对于一个标准的智能安全摄像头而言,由于其唯一的功能就是传输视频,因此它不需要拥有完整的操作系统。实际上,Raspberry Pi Pico 操作系统是一个实时操作系统,它一次仅执行一项操作。

就处理器而言,ARM 处理器以其高能效水平,在物联网领域非常受欢迎。而Raspberry Pi Pico 使用的 M0+ 处理器,甚至比典型的 ARM 处理器更为高效。通常,133 MHz 的时钟速度,对于处理器执行指令的速度来说,并不算特别快。不过,尽管如此,这个速度对于典型的物联网应用来说,已经足够了。作为参考,具有多个传感器和功能的智能健身设备的绝对最大时钟速度,可能达到约 300 MHz。

就设备规格而言,264 KB SRAM 上的数据只有在设备通电时才被保留。一旦设备失电、关闭或电池耗尽,那么内存里的信息将不复存在。而2 MB 闪存里的数据即使在电源关闭后,仍会被保留在设备的存储器中。换句话说,它实际充当了设备的数据存储库。

Raspberry Pi Pico 还具有 26 个 GPIO 引脚。此处的引脚是指一个个小孔,可方便您连接外部设备。例如,您可以按需使用其中一个引脚将额外的 LED 灯连接到该板上。

注意,SPI、I2C、UART 和 ADC 分别是不同类型的输入协议/格式。凭借着丰富的多样性,您可以将 Pico 用于许多不同的项目和应用程序。最终,利用作为输入/输出组件的可编程 I/O 状态机,您可以针对不同的功能和协议进行编程。

 

二、Raspberry Pi Pico 的替代方案

虽然 Raspberry Pi Pico 已经成为了物联网项目的绝佳选择,但并非唯一选择。下面,我们来看看Raspberry Pi Pico 的其他替代方案:

Arduino Uno

与具有相似物理尺寸的 Arduino Uno 板相比,Raspberry Pi Pico 显然具有更好的处理能力和更多的输入选项。例如, Pico 的最大时钟速度为 133 MHz,而 Arduino Uno 的最高时钟速度仅为 16 MHz。同时,它只有 32 KB RAM 和 16 KB 闪存。此外,Uno 比 Pico 具有更少的 I/O 引脚、更高的功耗、以及更高的价格。当然,由于它能够与 Arduino 的大型开源工具、代码库和 Arduino 集成开发环境(IDE)相兼容,因此Arduino Uno 仍然是一款倍受欢迎的替代方案。

Raspberry Pi Zero

作为一台成熟的计算机,Raspberry Pi Zero带有板载微处理器(MPU)而不是 MCU。它可以同时运行多个应用程序,并且具有高时钟速度、512 MB RAM 、 8 GB 闪存,以及 40 个 I/O 引脚(Pico 只有 26 个)。它也是现有的最小的 Raspberry Pi MPU。不过,它的功耗比 Raspberry Pi Pico 要高得多,而且价格也贵得多,大约需要15 美元,而 Pico 的成本仅为 4 美元。

ESP32

Espressif的 ESP32 MCU 系列体积虽然很小,但是处理能力和速度都是 Pico 的两倍左右。虽然该系列 MCU 的具体规格有所不同,但是与 Pico 相比,它们通常具有两个额外的 I/O 引脚、以及2倍的闪存。巧合的是,它们的能耗、以及价格也都是Pico的2倍。可见,Pico 可能更适合于一些初建项目的场合,而ESP32 更适合大型商业项目。

三、对 Raspberry Pi Pico 进行编程

让我们从一个简单的入门项目开始。正如软件程序员在初次学习一门语言时,首先要编写一个简单的程序,来打印“Hello World”那样,硬件程序员也需要首先练习编写一个简单的程序,来让LED灯闪烁。在本例中,我们将通过设置 Raspberry Pi Pico ,以按照设定的时间间隔,打开和关闭LED灯。

值得注意的是,Raspberry Pi Pico 可响应多种编码语言,其中包括 C、C++ 和 MicroPython。此处的MicroPython 是传统 Python 的更轻量级、更简单的版本,也是 Raspberry Pi Pico 爱好者最常用的语言。因此,如果您已经掌握了 Python的话,则可以轻松地在 Raspberry Pi Pico 上开始使用 MicroPython。

硬件

对于这个简单的项目,您除了需要开发板和 USB 线之外,无需其他任何东西。您可以使用计算机来提供电源,并对设备进行编程。当然,如果您想继续将 Pico 用于其他项目的话,则需要将其连接到外部电源上,以便脱离计算机持续工作。

同时,您可以在 Amazon 或其他网站上,获取 Raspberry Pi Pico 的入门级套件。此类套件通常会提供 Raspberry Pi Pico MCU 板、USB 电缆、面包板、一些 LED 和电阻器、以及各种教程资源。此处的面包板是一块带孔的塑料板。您可以将 Pico 插入其中,然后将其他电气组件(包括电源)连接到该板上。

软件

您需要在计算机上安装相应的软件,才能对Raspberry Pi Pico 进行编程。在大多数项目中,开发者都会选用Thonny 集成开发环境。您可以通过链接:Thonny, Python IDE for beginners来下载和安装Thonny。同时,您可以通过连接:MicroPython - Python for microcontrollers,来下载和安装 MicroPython。

第 1 步:连接计算机

请将 USB 线连接到设备的 USB 端口。然后按下 Raspberry Pi Pico 板上的白色小按钮(即,启动选择按钮)。按住该按钮,将 USB 的另一端插入计算机,然后松开该按钮。至此,在文件资源管理器中,您应该能看到一个新的名为“RP1-RP2”的连接设备。

第 2 步:在 Pico 上安装 MicroPython

在文件资源管理器中,请点开 RP1-RP2 设备,并将已下载好的 MicroPython 文件粘贴到此处。

第 3 步:为 Thonny 设置解释器

打开Thonny软件。请在“运行”工具栏下单击“选择解释器”,并在其下拉菜单的各个选项中选择“MicroPython (Raspberry Pico)”,再单击“确定”。

第 4 步:编写程序

请将如下代码键入或粘贴到 Thonny 软件的主窗口中:

Python
import machine
import utime
led = machine.Pin(25, machine.Pin.OUT)
while True: 
  led.value(1)
  utime.sleep(1)
  led.value(0)
  utime.sleep(1)

这段代码会让 LED 灯亮起一秒钟,然后熄灭一秒钟,并无限循环下去,直到设备电源被拔掉。

第5步:运行程序

接下来,请点击运行按钮(上面有播放符号)。电脑屏幕的弹窗会询问您需要将文件保存到何处,以及文件名称。此时,请单击“Raspberry Pi Pico”即可。注意,在命名文件时,请确保在末尾添加 .py,以便 MCU 将开发语言识别为 MicroPython。例如,您可以将文件命名为 LED.py。当然,如果您希望该文件在每次插入设备时都能自动运行的话,则请将其命名为 main.py。这将告知 Pico在启动时立即运行本程序。请记得单击“确定”。

至此,如果您能看到LED灯定期闪烁的话,那么恭喜您在 Raspberry Pi Pico 上已成功完成了第一个编程项目。

四、小结

综上所述,Raspberry Pi Pico 是一种便宜且简单的选择,适用于从学习编程,到原型设计,再到从头开始开始创建物联网设备的整个过程。当然,您也可以在各种灵活多变的场景中,通过编程让其发挥更多、更丰富的功能。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想

大家好,我是微学AI,今天给大家介绍一下深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想,文本将介绍AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色,并结合了GPT-4接口来实现各个角色的功能,设置中央控制器,公司运作过程会生成…

GitKraken保姆级图文使用指南

前言 写这篇文章的原因是组内的产品和美术同学,开始参与到git工作流中,但是网上又没有找到一个比较详细的使用教程,所以干脆就自己写了一个[doge]。文章的内容比较基础,介绍了Git内的一些基础概念和基本操作,适合零基…

iOS申请证书(.p12)和描述文件(.mobileprovision)

打包app时,经常会用到ios证书,但很多人都苦于没有苹果电脑,即使有苹果电脑的,也会觉得苹果电脑操作也很麻烦,这里记录一下,用香蕉云编,申请证书及描述文件的过程。 香蕉云编的地址:…

uniapp 上传比较大的视频文件就超时

uni.uploadFile,上传超过10兆左右的文件就报错err:uploadFile:fail timeout,超时 解决: 在manifest.json文件中做超时配置 uni.uploadFile({url: this.action,method: "POST",header: {Authorization: uni.getStorage…

深入理解 Flutter 图片加载原理

作者:京东零售 徐宏伟 来源:京东云开发者社区 前言 随着Flutter稳定版本逐步迭代更新,京东APP内部的Flutter业务也日益增多,Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验…

wkhtmltopdf 与 .Net Core

wkhtmltopdf 是使用webkit引擎转化为pdf的开源小插件. 其有.NET CORE版本的组件,DinkToPdf,但该控件对跨平台支持有限。 故打算在Linux上安装相关插件直接调用. 准备工作 虚拟机:Linux version 3.10.0-1160.el7.x86_64 wkhtmltox开发包:wkhtmltox_0.12…

【数据结构】链表常见题目-ToDone

文章目录 合并两个有序链表反转链表链表内指定区间反转复制带随机指针的链表环形链表环形链表II相交链表移除链表元素链表中倒数第k个节点链表分割链表的回文结构链表的中间节点旋转链表链表排序链表求和 (逆序求)链表求和II (正序求)重排链表链表的奇偶重排奇偶链表反转链表II…

V2X——行动胜于概念

摘要: 本文从信号灯服务入手,简单介绍了车路协同工程化落地过程中的一些关键问题和解决方案,包括设备接入、V2X消息层编解码、C-V2X通信,车端消费以及车路协同安全防护等,类似的问题还有很多,需要从业者做…

打开vim的语法高亮

在一个Ubuntu中自带的vim版本是8.2.4919,默认就是开始了语法高亮的,打开一个Java文件效果如下: 它不仅仅对Java文件有语法高亮,对很多的文件都有,比如vim的配置文件也有语法高亮,有语法高亮时读起来会容易…

re学习(33)攻防世界-secret-galaxy-300(动态调试)

下载压缩包: 下载链接:https://adworld.xctf.org.cn/challenges/list 参考文章:攻防世界逆向高手题之secret-galaxy-300_沐一 林的博客-CSDN博客 发现这只是三个同一类型文件的三个不同版本而已,一个windows32位exe&#xff0…

Webpack node、output.jsonpFunction 配置详解

Webpack node、output.jsonpFunction 配置详解 最近尝试给一些用到 webpack 的项目升级到最新 webpack5 版本,其中遇到了一些问题,我挑了两个比较典型的问题,其中主要涉及到了 webpack 的 node 属性跟 output.jsonpFunction (web…

opencv图像轮廓检测

效果展示: 代码部分: import cv2 import numpy as np img cv2.imread(C:/Users/ibe/Desktop/picture.PNG,cv2.IMREAD_UNCHANGED) # 类型转换 img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 结构元 kernel cv2.getStructuringElement(cv2.MORPH_REC…

【网络架构】华为hw交换机网络高可用网络架构拓扑图以及配置

一、网络拓扑 1.网络架构 核心层:接入网络----路由器 汇聚层:vlan间通信 创建vlan ---什么是vlan:虚拟局域网,在大型平面网络中,为了实现广播控制引入了vlan,可以根据功能或者部门等创建vlan,再把相关的端口加入到vlan.为了实现不用交换机上的相同vlan通信,需要配置中继,为了…

考公-判断推理-逻辑判断-削弱类

否定论点,根本排除 例题 例题 例题 例题 例题 例题 变化小,胖了瘦了 例题 例题 拆桥 例题 例题 例题 例题 例题 例题 例题 例题 例题 A类比非常弱 D削弱了论据 例题 因果倒置例题 例题 例题

css学习2(利用id与class修改元素)

1、id选择器可以为标有特定id的html元素指定特定的样式。 2、选择器以#开头,后跟某id的属性值。 3、class选择器用于描述一组元素的样式,class可以在多个元素使用。 4、类选择器用.选择。 5、指定特定的元素使用class。 6、元素的多个类用空格分开&…

python测试 unittest 实践要点

目录 命名篇 命令行篇 测试断言篇 常见测试断言 特殊测试断言 测试前后篇 在每个测试方法前后执行 在每个测试类的所有方法前后执行 不运行测试篇 参考 命名篇 测试模块应以 test_开头 测试类应以Test开头或结尾 测试类中的测试方法应该以test_开头 命令行篇 测…

第二章 Linux系统-系统接口管理

第二章 Linux系统-系统接口管理 ​ 操作系统接口时架构在硬件上的第一层软件,时计算机底层硬件和用户之间的接口,利用操作系统才能使用应用程序(或用户)对系统硬件的访问。任何操作系统都会想上层提供接口,操作系统接…

应用层自定义协议(组织数据的格式)

概念 在进行网络传输数据的时候,通常是将要传输的数据组织成一个字符串,再将字符串转换为一个字节流进行网络传输数据,而数据组织的格式是多种多样的,我们只需要保证,客户端和服务器对于字符串的组织和解析统一即可 现…

使用mysql、java开发的平台软件一键安装

前言 一般web项目会使用mysql数据库、java开发应用程序打包成jar包。 有些项目会需要导入初始化的行政区域信息。 流程图 说明 1. 脚本中提供变量去配置当前项目的区域 2. 安装包里需要包含全国所有的区域信息 3. 运行程序的时候就可以根据配置 ,调用接口&am…

Linux fork 和 exec 联合使用创建一个全新的进程

复制和替换结合在一起(forkexec)是产生一个新进程的主要方式。 将复制和替换结合在一起(forkexec): 先fork,使系统中多出一个进程,默认情况下,fork之后,父进程和子进程的…