如何用树莓派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 是一种便宜且简单的选择,适用于从学习编程,到原型设计,再到从头开始开始创建物联网设备的整个过程。当然,您也可以在各种灵活多变的场景中,通过编程让其发挥更多、更丰富的功能。 

相关内容拓展:(技术前沿)

近10年间,甚至连传统企业都开始大面积数字化时,我们发现开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。

针对这类问题,低代码把某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。极大的提高了程序员的生产效率。

推荐一款程序员都应该知道的软件JNPF快速开发平台,采用业内领先的SpringBoot微服务架构、支持SpringCloud模式,完善了平台的扩增基础,满足了系统快速开发、灵活拓展、无缝集成和高性能应用等综合能力;采用前后端分离模式,前端和后端的开发人员可分工合作负责不同板块,省事又便捷。

体验官网:https://www.jnpfsoft.com/?csdn

还没有了解低代码这项技术可以赶紧体验学习!

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

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

相关文章

【ARM-Linux】项目,语音刷抖音项目

文章目录 所需器材装备操作SU-03T语音模块配置代码(没有用wiring库,自己实现串口通信)结束 所需器材 可以百度了解以下器材 orangepi-zero2全志开发板 su-03T语音识别模块 USB-TTL模块 一个安卓手机 一根可以传输的数据线 装备操作 安…

高项4.项目管理核心技术.

第一部分 项目管理概论 价值驱动的项目管理知识体系: 十二项原则;生命周期四个阶段;五个过程组;十大PM知识领域;八大绩效域;外加价值交付系统; 自1987 年以来, PMBOK 一直是基于过程的项目管理标准的重要代表,项目管理从业者一 直坚持基于过程的项目管理方法。随着…

2023-8-20 单链表

题目链接&#xff1a;单链表 #include <iostream>using namespace std;const int N 100010;int head, e[N], ne[N], idx;void init() {head -1;idx 0; }// 将x插入到头结点 void add_to_head(int x) {e[idx] x;ne[idx] head;head idx;idx; }// 将x插入到下标k后面…

VGG分类实战:猫狗分类

关于数据集 数据集选择的是Kaggle上的Cat and Dog&#xff0c;猫狗图片数量上达到了上万张。你可以通过这里进入Kaggle下载数据集Cat and Dog | Kaggle。 在我的Github仓库当中也放了猫狗图片各666张。 VGG网络 VGG的主要特点是使用了一系列具有相同尺寸 3x3 大小的卷积核进…

Android glide框架及框架涉及到的设计模式

目录 原文链接Android glide框架 简单使用介绍Glide 框架整体结构设计Glide 框架的优点基本使用&#xff1a;Glide占位符 Android glide框架涉及到的设计模式 原文链接 Android glide框架 简单使用介绍 Glide&#xff1a;快速高效的Android图片加载库&#xff0c;可以自动加载…

LLM低成本微调方法

LLM日益流行&#xff0c;已经渗透到各个领域&#xff0c;比如生物医学&#xff0c;但是模型的规模导致微调LLM对普通用户不够友好&#xff0c;因此&#xff0c;我们需要借助一些低成本方法&#xff0c;通过更新少量参数也达到与LLM全参数更新一样的效果。这里介绍三种主流方法&…

改善神经网络——优化算法(mini-batch、动量梯度下降法、Adam优化算法)

改善神经网络——优化算法 梯度下降Mini-batch 梯度下降&#xff08;Mini-batch Gradient Descent&#xff09;指数加权平均包含动量的梯度下降RMSprop算法Adam算法 优化算法可以使神经网络运行的更快&#xff0c;机器学习的应用是一个高度依赖经验的过程&#xff0c;伴随着大量…

解锁Spring AOP的神秘面纱

目录 Spring AOP的组成组成部分与常用注解举例理解 Spring AOP的实现添加 Spring AOP 框架⽀持定义切⾯和切点定义通知切点表达式说明 Spring AOP 实现原理JDK动态代理CGLIB动态代理 Spring AOP作为Spring框架的核心模块&#xff0c;为我们提供了一种优雅的方式来处理横切关注点…

版本控制工具Git集成IDEA的学习笔记(第一篇Gitee)

目录 一、Gitee的使用 1、注册网站会员 2、用户中心 3、创建远程仓库 4、配置SSH免密登录 二、集成IDEA&#xff0c;Git项目搭建 1、本地仓库搭建 1&#xff09;创建一个新项目 2&#xff09;打开终端&#xff0c;在当前目录新建一个Git代码库 3&#xff09;忽略文件 …

3. 爬取自己CSDN博客列表(自动方式)(分页查询)(网站反爬虫策略,需要在代码中添加合适的请求头User-Agent,否则response返回空)

文章目录 步骤打开谷歌浏览器输入网址按F12进入调试界面点击网络&#xff0c;清除历史消息按F5刷新页面找到接口&#xff08;community/home-api/v1/get-business-list&#xff09;接口解读 撰写代码获取博客列表先明确返回信息格式json字段解读 Apipost测试接口编写python代码…

03_缓存双写一致性

03——缓存双写一致性 一、缓存双写一致性 如果redis中有数据&#xff0c;需要和数据库中的值相同如果redis中无数据&#xff0c;数据库中的值要是最新值&#xff0c;且准备回写redis 缓存按照操作来分&#xff0c;可以分为两种&#xff1a; 只读缓存 读写缓存 同步直写操作…

【NX】NX二次开发BlockUI集列表的详细使用步骤

最近使用NX二次开发&#xff0c;需要用到集列表&#xff0c;也就是SetList这个控件&#xff0c;然而网上相关的资料和范例实在是太少&#xff0c;有幸找到《NX二次开发-BlockUI集列表的使用技巧》和《UG&#xff08;NX&#xff09;二次开发 BlockUI 集列表使用方法》&#xff0…

K8S deployment挂载

Deployment部署文件 apiVersion: apps/v1 kind: Deployment metadata:annotations:deployment.kubernetes.io/revision: "1"kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"apps/v1","kind":"Deployment&qu…

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…

JDK8知识点梳理

JDK8知识点梳理 一、lambda表达式1.标准格式2.实现原理3.省略模式4.前提条件 二、函数式接口1.函数式接口&#xff1a;FunctionalInterface2.接口默认方法3.接口静态方法4.供给型接口&#xff1a;Supplier5.消费型接口&#xff1a;Consumer6.消费供给型接口&#xff1a;Functio…

孤注一掷——基于文心Ernie-3.0大模型的影评情感分析

孤注一掷——基于文心Ernie-3.0大模型的影评情感分析 文章目录 孤注一掷——基于文心Ernie-3.0大模型的影评情感分析写在前面一、数据直观可视化1.1 各评价所占人数1.2 词云可视化 二、数据处理2.1 清洗数据2.2 划分数据集2.3 加载数据2.4 展示数据 三、RNIE 3.0文心大模型3.1 …

stm32单片机开关输入控制蜂鸣器参考代码(附PROTEUS电路图)

说明&#xff1a;这个buzzer的额定电压需要改为3V&#xff0c;否则不会叫&#xff0c;源代码几乎是完全一样的 //gpio.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file gpio.c* brief Thi…

linkis 1.1.1 报错 No plugin found spark-2.4.8, please check your configuration

按照官方教程设置,但是仍然报错 Caused by: java.util.concurrent.ExecutionException: LinkisException{errCode70063, descNo plugin found spark-2.4.8, please check your configuration, iphadoop0004, port9103, serviceKindlinkis-cg-engineplugin} 这个时候,我们首先检…

excel逻辑函数篇1

1、AND(logical1,[logical2],…)&#xff1a;用于测试所有条件是否均为TRUE 检查所有参数均为true&#xff0c;如果是则返回true 2、OR(logical1,[logical2],…)&#xff1a;用于测试是否有为TRUE的条件 如果任意参数值为true&#xff0c;即返回true&#xff1b;只有当所有参数…

【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云

【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云 serverless服务是腾讯云自研的新一代云原生关系型数据库TDSQ L-C的无服务器架构版&#xff0c;是全Serverless架构的云原生数据库 前言 体验了一下腾讯云刚出的TDSQL-C Serverless&#xff0c;使用…