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

目录

一、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.rhkb.cn/news/93488.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章教会你搭建私人kindle图书馆,并内网穿透实现公网访问

搭建私人kindle图书馆,并内网穿透实现公网访问 在电子书风靡的时期,大部分人都购买了一本电子书,虽然这本电子书更多的时候是被搁置在储物架上吃灰,或者成为盖泡面的神器,但当亚马逊发布消息将放弃电子书在中国的服务…

windows pip安装出现 error: Microsoft Visual C++ 14.0 is required

可参考:如何解决 Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools“_不吃香菜的小趴菜的博客-CSDN博客 一、安装Visual Studio2022 1、下载:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 我这使…

广东灯具3D扫描抄数建模服务3D测绘出图纸三维逆向设计-CASAIM

灯具三维逆向建模是一种将实际物体转换为数字模型的过程。通过逆向工程技术,可以将现有的灯具进行3D扫描,然后利用专业的逆向设计软件将其转换为准确的三维模型。 以下是CASAIM实施灯具三维逆向建模的一般步骤图: 1. 扫描:三维扫…

【云原生】Docker 详解(二):Docker 架构及工作原理

Docker 详解(二):Docker 架构及工作原理 Docker 在运行时分为 Docker 引擎(服务端守护进程) 和 客户端工具,我们日常使用各种 docker 命令,其实就是在使用 客户端工具 与 Docker 引擎 进行交互。…

中电金信通过KCSP认证 云原生能力获权威认可

中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商。 Kubernetes是容器管理编排引擎,底层实现为容器技术,是云原…

SpringBoot 整合Swagger2

一、Swagger简介 Swagger是一套开源工具和规范,用于设计、构建和文档化RESTful Web服务。它允许开发人员定义API的各个方面,并生成易于理解的API文档和交互式API探索界面。同时,Swagger还提供代码生成工具,可自动生成与API交互的客…

HTML详解连载(6)

HTML详解连载(6) 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽CSS特性继承性注意 层叠性特点 优先级规则公式注意 叠加计算公式(每以及之间不存在进位)规则 Emmet写法分析属性名属性值注意 背景图平铺方式属性…

NeuralNLP-NeuralClassifier的使用记录(一),训练预测自己的【英文文本多分类】

NeuralNLP-NeuralClassifier的使用记录,训练预测自己的英文文本多分类 NeuralNLP-NeuralClassifier是腾讯开发的一个多层多分类应用工具,支持的任务包括,文本分类中的二分类、多分类、多标签,以及层次多标签分类。支持的文本编码…

Springboot 实践(1)MyEclipse2019创建maven工程

项目讲解步骤,基于本机已经正确安装Java 1.8.0及MyEclipse2019的基础之上,Java及MyEclipse的安装,请参考其他相关文档,Springboot 实践文稿不再赘述。项目创建讲解马上开始。 一、首先打开MyEclipse2019,进入工作空间选…

【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)

处理类别数据 🌱简要理解处理类别数据的重要性☘️类别数据的分类☘️方便研究——用pandas创建包含多种特征的数据集🍀映射有序特征🍀标称特征标签编码🍀标称特征的独热编码🌱独热编码的优缺点 🌱简要理解…

Spark SQL优化:NOT IN子查询优化解决

背景 有如下的数据查询场景。 SELECT a,b,c,d,e,f FROM xxx.BBBB WHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} AND predict_type not IN ( SELECT distinct a FROM xxx.AAAAAWHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} ) 分析 通过查看SQL语句的执行计划基本…

rocketMq启动broker报错找不到或无法加载主类 Files\Java\jdk1.8.0_171\lib\dt.jar;C:\Program]

假如弹出提示框提示‘错误: 找不到或无法加载主类 xxxxxx’。 1.打开runbroker.cmd 将"%CLASSPATH%"加上英文双引号,切勿别加中文双引号 2.打开runserver.cmd 同理 将"%CLASSPATH%"加上英文双引号,切勿别加中文双引号 3.正常执行即…

图数据库_Neo4j学习cypher语言_使用CQL命令002_删除节点_删除属性_结果排序Order By---Neo4j图数据库工作笔记0006

然后我们再来看如何删除节点 可以看到首先 我们这里 比如我要删除张三 可以看到 match (n:student) where n.name = "张三" delete n 这样就是删除了student集合中,name是张三的节点 然后我们再来看 如何来删除关系 match (n:student)-[r]->(m:student) where…

Android 组件

TextView 文本框 用于显示文本的一个控件。文本的字体尺寸单位为 sp 。sp: scaled pixels(放大像素). 主要用于字体显示。 文本常用属性 属性名说明id为TextView设置一个组件id,根据id,我们可以在Java代码中通过 findViewById()的方法获取到该对象&…

Python文件操作教程,Python文件操作笔记

文件的打开与关闭 想一想: 如果想用word编写一份简历,应该有哪些流程呢? 打开word软件,新建一个word文件写入个人简历信息保存文件关闭word软件 同样,在操作文件的整体过程与使用word编写一份简历的过程是很相似的…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言:本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

Camunda 7.x 系列【18】服务任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 代码委托2.1 Java 委托3. 流程建模3.1 基础3.2 实现3.3 结束4. 测试1. 概述 用户…

机器学习终极指南:特征工程(01/2) — 第 -2 部分

西姆兰吉特辛格 一、介绍 欢迎来到“机器学习终极指南”的第二部分。在第一部分中,我们讨论了探索性数据分析 (EDA),这是机器学习管道中的关键步骤。在这一部分中,我们将深入研究特征工程,这是机器学习过程…

自动驾驶——驶向未来的革命性技术

自动驾驶——驶向未来的革命性技术 自动驾驶的组件自动驾驶的优势自动驾驶的应用自动驾驶的未来中国的自动驾驶 自动驾驶是一种技术,它允许车辆在没有人类驾驶员的情况下自主地进行行驶。它利用各种传感器、计算机视觉、人工智能和机器学习算法来感知和理解周围环境…

Java 8:Stream API 流式操作

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java 8:Stream API Java 8 中的 Stream API 是一组用于对集合数据进行处理的新特性;提供一种以声明式风格对集合进行操作的方式,简…