如何用树莓派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 具有预焊接的接头。
总的说来,上述四个系列均具有以下特性:
- RP2040 MCU
- 双核 Arm Cortex M0+ 处理器
- 时钟速度高达 133 MHz
- 264 KB SRAM 和 2 MB 闪存
- 1 个 USB 1.1 端口
- 低功耗或休眠模式
- 26 个通用输入/输出 (GPIO) 引脚
- 温度感应器
- 2 个 SPI、2 个 I2C、2 个 UART、3 个 ADC
- 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
还没有了解低代码这项技术可以赶紧体验学习!
相关文章:

如何用树莓派Pico针对IoT编程?
目录 一、Raspberry Pi Pico 系列和功能 二、Raspberry Pi Pico 的替代方案 三、对 Raspberry Pi Pico 进行编程 硬件 软件 第 1 步:连接计算机 第 2 步:在 Pico 上安装 MicroPython 第 3 步:为 Thonny 设置解释器 第 4 步ÿ…...

【填坑向】MySQL常见报错及处理系列(ERROR! The server quit without updating PID file)
本系列其他文章 【填坑向】MySQL常见报错及处理系列(Communications link failure & Access denied for user ‘root‘‘localhost‘)_AQin1012的博客-CSDN博客翻一下大致的意思就是默认会按照如下的顺序读取配置文件,我上面贴出的配置文…...
如何处理MySQL自增ID用完
检查当前自增ID的最大值:你可以使用以下SQL查询语句来获取当前最大的自增ID值: SELECT MAX(id) FROM your_table;假设你的表名为 your_table 和自增ID列名为 id。 确定使用的自增ID类型:根据当前最大值来判断你使用的自增ID类型。如果当前…...
Docker 安装教程【菜鸟级】
文章目录 前言1.安装及环境1.1.Linux安装1.2.Windows安装 2.初识Docker2.1.进入docker2.2.命令行基本操作 Docker实例Docker安装Centos使用启动、关闭、删除容器将主机中的文件放入容器中的方式查看容器日志 前言 1.安装及环境 1.1.Linux安装 1.2.Windows安装 2.初识Docker…...
centos7.9 用docker安装mysql8.0
一.安装docker 切换到root1.安装依赖包 $ yum install -y yum-utils2.registry更换阿里源 $ yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ sed -i s/download.docker.com/mirrors.aliyun.com\/docker-ce/g /etc/yum.…...
JVM和消息队列面经(自用)
JVM和消息队列面试八股文,自用。 Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC 一文搞懂 - 知乎 32 道 JVM 面试题总结(含答案解析和思维导图) - 知乎 百度安全验证 JVM面经汇总_所幸你是例外的博客-CSDN博客 38道精品JVM面…...

四、pikachu之文件包含
文章目录 1、文件包含漏洞概述1.1 文件包含漏洞1.2 相关函数1.3 文件包含漏洞分类 2、File Inclusion(local)3、File Inclusion(remote) 1、文件包含漏洞概述 1.1 文件包含漏洞 文件包含漏洞:在web后台开发中,程序员往往为了提高效率以及让代码看起来更…...

【SVN内网穿透】远程访问Linux SVN服务
文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...
没消费?复购难?不如试试即拼七人拼团模式
在当今的社会环境下,快消品、大健康、美容等行业一直是人们生活中不可或缺的一部分。它们各具特色,不断满足大众的需求,因此受到广泛欢迎。但由于市场品种繁多、竞争激烈,消费者的选择也变得更加多样化。为了提高各行业的竞争性&a…...

vscode+ros开发环境搭建
目录 介绍 前提 vscode安装 vscode插件安装 工作空间准备 打开vscode 创建catkin包 编写cpp代码 编译 运行 启动ros服务 监听话题 启动ros测试 介绍 ros开发是机器人开发中必不可少的工作,语言选择可以是c,也可以是python。工具的话,不能像wi…...

10个最好的云GPU服务
随着深度学习、人工智能和机器学习等新技术的出现,云 GPU 的需求量很大。 GPU(图形处理单元)是专用处理器,用于处理计算机图形和游戏等活动所需的大量数据集和复杂计算。不过,它们现在对人工智能(A.I.&…...

使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:&…...

Windows下搭建Tomcat HTTP服务,发布外网远程访问
文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器,不仅名字很有趣࿰…...

【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionalOnXxx
Spring Conditional Spring 4.0提供的注解。作用是给需要装载的Bean增加一个条件判断。只有满足条件才会装在到IoC容器中。而这个条件可以由自己去完成的,可以通过重写Condition接口重写matches()方法去实现自定义的逻辑。所以说这个注解增加了对Bean装载的灵活性。…...

Android 12 源码分析 —— 应用层 一(SystemUI准备篇)
Android 12 源码分析 —— 应用层一(SystemUI准备篇) 在接下来的时间中,将会使用Pixel 3(blueline)作为研究对象,选用AOSP的android-12.0.0_r34分支作源代码。 先从android的应用层进行探析,然后慢慢深入android的fr…...
记录 MySQL 如何开启已有的定时任务
1.首先,确保你已经在MySQL的配置文件my.ini中启用了事件调度器。在[mysqld]部分添加event_schedulerON,然后保存文件并重启MySQL服务。这将启用MySQL的事件调度器功能。 但如果是线上业务不能停也可以在该数据库中输入 -- 开启事件计划程序 SET GLOBAL …...

三种生成树(STP,RSTP,MSTP)的基本配置(自我理解)
目录 一、为什么要使用生成树(STP): 二、由于设备冗余而导致的问题: 广播风暴: 三、802.1D生成树基本配置 四、802.1D生成树实验 实验拓扑: 实验配置: 配置完成后,在SW8上观察现象&…...

FRP内网穿透,配置本地电脑作为服务器
FRP内网穿透,配置本地电脑作为服务器 下载FRP服务端客户端 参考链接: https://www.it235.com/实用工具/内网穿透/pierce.html https://www.cnblogs.com/007sx/p/17469301.html 由于没有公网ip,所以尝试内网穿透将本地电脑作为服务器ÿ…...

Linux基础指令
本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 查看当前用户whoami 查看当前目录路径pwd 清理屏幕clear 查看目录下文件指令ls 进入目录指令cd 以树状结构显示目录文件tree 创建普通文件指…...

基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 LSTM: GRU 2.算法运行软件版本 matlab2022a 3.部分核心程序 %构建GRU网络模型 layers [ ...sequenceInputLayer(N_feature)gruLayer(N_hidden)f…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...