1024 程序员节:低代码低成本硬件 - 树莓派 Pico 2040

2023-11-07

        恰逢 1024 程序员节,程序员们忙着开交流会、或者写代码,来庆祝节日,或者随便写点什么,留下自己的足迹。CSDN 组织了好几个线下、线上的会,大家也在讨论开源、开放;小米的崔总,引用了《论语》里的一句话, “德不孤,必有邻” ,来评价正确的开源之道越来越红火,而也有不少打着开源的幌子,放不下自己的名或者利,慢慢地大家也渐行渐远,我深有同感。

        软件提倡开源、开放,硬件同样也提倡开放。由 Eben Upton 于 2009 年创立的 树莓派基金会可以说是一个成功的典范。从最初的愿景,做人人负担得起的电脑(35$),让更多的电脑进入学校,到2021 年已经向 100 多个国家和地区运送超过 4200 万台计算机,与此同时捐助了超过 3000 万英镑。树莓派在 2020 年的销售量就达到了 710 万台的历史新高,利润为 1140 万英镑,已被广泛用于编程学习、物联网和自动化等领域。

        为了庆祝树莓派 8 岁生日,树莓派基金会曾经宣布,2GB 内存版的树莓派 4B 降价,由原价 45 美元下调至 35 美元,同时原售价 35 美元的 1GB 版本停止发售。而 4GB 内存版价格保持不变,仍然是 55 美元。

        由于各种原因,现在国内树莓派 4B(4GB)版本一度超过 1000¥,甚至卖断货,感觉背离了人人用得起的初衷。      

        2021 年 1 月,树莓派推出了树莓派 Pico,这是一款主要用于嵌入式开发的微控制器,使用了 树莓派自研的 RP2040 芯片,售价 4 美元,并以 1 美元的价格单独销售 RP2040 芯片,满足开发者自己构建电子产品的需求,而且宣称 Pico 系列会持续生产至少到 2028 年 1 月份。

RP2040 芯片

  • 双核 Arm Cortex-M0+ 处理器, 可变时钟,最大到 133 MHz
  • 264kB 片上 SRAM,需外接 QSPI Flash,最大16MB,execute-in-place (XIP)
  • 16kB ROM,出厂固定,包括:初始化、Flash启动烧写代码、U盘拖放下载UF2和浮点库支持
  • 2 × UART, 2 × SPI , 2 × I2C , 16 × PWM
  • 4 × ADC,SAR,500ksps,GPIO26、27、28、29
  • 1个 USB1.1 主机和设备支持
  • 8 个可编程 I/O (PIO) 状态机,用于自定义外设支持
  • 支持输入电源:1.8–5.5V DC
  • 工作温度:-40°C to +85°C
  • 可通过 USB 识别为大容量存储器进行拖放式下载程序
  • 支持低功耗睡眠和休眠模式
  • 精确的片上时钟和定时器
  • 温度传感器
  • 片上整数和浮点加速库

         这个双核 Arm Cortex-M0+ 芯片设计工作频率 133MHz,有大神把它超频到 250MHz,并使用 PIO 直接驱动 640x480p 60 Hz DVI,可以稳定运行;更有猛人竟然超频到1GHz,当然坚持了一会就坏掉了,除了说明芯片强悍,还有一个重要的原因,是它足够便宜,现在 5¥可以买到。

软件开发

        可选择树莓派提供的 C/C++ SDK,或者使用 MicroPython 进行开发,而且 Arduino 也推出相应的硬件版本和软件支持。

  1. Raspberry Pi Pico C/C++ SDK
  2. Raspberry Pi Pico MicroPython
  3. Arduino Nano RP2040

树莓派 Pico 开源例程

树莓派 Pico 文档

树莓派书籍

        这本书已经断货了,电子版让大家免费获取。我想,这种开放和让利的做法,也是树莓派之所以这么成功的一个原因。

中文入门教程

        微雪课堂也推出了 Raspberry Pi Pico 支持系列教程。

小结

         开源、开放可以让我们借助外力,很快的做自己的开发;而低代码、低成本的树莓派 RP2040 对于囊中羞涩的初学者来说,简直是太香了。

        虽然是 Cortex-M0+ 内核,但是可以跑到 133MHz,甚至无压力跑到 250 MHz, 已经超过了不少 MCU了,而且还是双核心;这颗芯片不但有常用的 GPIO、UART、I2C、ADC、PWM、SPI、USB 等外设接口,还有 RTC 和 Watchdog;虽然没有片上 Flash,外接 QSPI Flash 也很方便,成本也不高;有支持 VGA 和 SDcard 的参考设计;还有 PWM 和 I2S 两种 Audio 方案;更有值得一提的是 PIO,可以自己编程,支持 8080/6800 并行总线、I2C、3-pin I2S、SDIO、 SPI、DSPI、QSPI、UART、DPI 或 VGA (via resistor DAC),体验一下 “ 汇编语言 ” 编程,进行快于 us 的操作。

        甚至还可以跑一下机器学习,使用 TensorFlow Lite Micro,做个 People Detect。

        对于 1 颗 5 块钱的芯片,拿来练一练焊接技术也不觉得心疼,是不是很值得玩一把?

                                                                                   老徐,2022/10/24

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1024 程序员节:低代码低成本硬件 - 树莓派 Pico 2040 的相关文章

  • 使用可加载内核模块修改帧缓冲区(/dev/graphics/fb0)参数

    Problem 我必须配置 Android 平台使用的各种 LCD 显示器 几乎在所有情况下 都没有针对感兴趣的 LCD 显示器免费提供的电气规格 但通过经验和逆向工程 可以很好地猜测参数 我正在尝试使用可加载内核模块来微调显示参数 也欢迎
  • Pandaboard 交叉编译 Qt

    我花了几周的时间尝试为我的 Panda 板交叉编译 Qt 但没办法 我无法通过 configure 如果有人能给我帮助 我将不胜感激 我的主机系统是Ubuntu 13 04 86 64位 在Virtualbox中运行 我的目标系统是 Pan
  • 抢占和上下文切换的区别

    一点介绍 我目前正在编写一个小型 读微型 RTOS 内核 它应该与内核中的大多数内容是一体的 然而 我找不到关于下面列出的一些事情的太多信息 这会很有帮助 除此之外 它实际上不是某种大学项目 而是我按照自己的意愿做的事情 回答所有问题的一个
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 多核ARM cpu上的中断如何工作

    这个问题已经针对 x86 得到了解答 但是 我找不到太多关于 ARM MP cpu 如 Cortex A9 Cortex A15 等 的信息 更重要的是我想知道是否可以在非主CPU上引发中断而无需任何配置等 我正在开发一款仅处理主 cpu
  • 手臂 g++ 中缺少一些东西

    我安装了 CodeSourcery g 工具链并尝试编译一个简单的 hello world 程序 include
  • 理解这部分手臂的汇编代码

    syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func
  • GNU Arm Cortex m4 上的 C++ 异常处理程序与 freertos

    2016 年 12 月更新现在还有一个关于此行为的最小示例 https community nxp com message 862676 https community nxp com message 862676 我正在使用带有 free
  • ARM 9处理器的opencv交叉编译

    我需要为 ARM 9 处理器交叉编译 opencv 我有处理器的工具链 但不知道如何交叉编译 请告诉我为arm板交叉编译的过程 谢谢大家 看这个参考 http www airs com ian configure configure 5 h
  • 如何在 ARM 架构上从 RAM 运行代码

    我正在对 ARM Cortex R4 进行编程 并且有一些二进制文件 我想从 TCRAM 执行它们 只是为了看看性能的提升是否足够好 我知道我必须编写一个函数来将二进制文件复制到 RAM 这可以通过链接器脚本来完成 并且知道二进制文件的大小
  • 在 ARM 处理器上执行存储在外部 SPI 闪存中的程序

    我有一个 ARM 处理器 能够与外部闪存芯片连接 写入芯片的是为 ARM 架构编译的程序 可供执行 我需要知道如何将这些数据从外部闪存获取到 ARM 处理器上以供执行 我可以提前运行某种复制例程 将数据复制到可执行内存空间吗 我想我可以 但
  • ARM架构中不同处理器模式下如何使用内核堆栈?

    据我了解 每个进程都有一个用户堆栈和内核堆栈 除此之外 ARM 架构中的每种模式都有一个堆栈 所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作 另外 何时会使用与进程关联的内核堆栈 何时会使用与进程关联的内核堆栈 当您进行系统调用
  • ARM Cortex A8 PMNC 读取在启用后也给出 0.. 有什么想法/建议吗?

    MODULE LICENSE GPL MODULE DESCRIPTION user mode access to performance registers int init arm init void unsigned int valu
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi

随机推荐

  • node读取文件转换json文件

    323 text h323 3gp video 3gpp aab application x authoware bin aam application x authoware map aas application x authoware
  • 记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程

    一句废话 这次换一种写作风格 尝试一下轻松的行文方式 起因 很久以前看见有群友讨论关于docker部署Redroid 拿来挂机玩游戏一类的 当时听了感觉很有意思 后面粗浅地在zero2上部署了一下 容器虽然是跑起来了 但是scrcpy连接总
  • istio流量管理

    istio 官方示例 bookinfo 配置sidecar注入 istioctl kube inject debug f samples bookinfo kube bookinfo yaml gt bookinfo2 yaml 使用kub
  • 浅谈QNX进程间通信(IPC)

    锋影 e mail 174176320 qq com 在QNX Neutrino中消息传递 Message passing 是IPC的主要形式 其他的姓氏也是基于消息传递实现的 QNX中提供的IPC形式如何下图所示 一 Synchronou
  • 基础13:惰函数

    有两种实现惰性载入的方式 第一种事函数在第一次调用时 对函数本身进行二次处理 该函数会被覆盖为符合分支条件的函数 这样对原函数的调用就不用再经过执行的分支了 我们可以用下面的方式使用惰性载入重写addEvent function addEv
  • python语言是一种面向过程的语言_浅谈编程语言中的面向过程和面向对象

    最近一直在自学Python 在 Python学习手册 的开篇有一句话 Python可以定义为面向对象的脚本语言 这句话让我十分困惑 并且在之后的一周里面让我总是混淆一些概念 到底什么是 面向对象 到底什么是 对象 带着这个疑问 我继续向下学
  • C# winform 一次只能允许一个应用(使用mutex)

    在很多应用程序开发过程中 需要只允许一个程序实例 即使是通过虚拟桌面方式连接过来的 也是只允许一个人运行 下面是实现该功能的代码 注意mutexName 为系统名称 Global为全局 表示即使通过通过虚拟桌面连接过来 也只是允许运行一次
  • verilog学习笔记(1)module实例化

    兜兜转转又回来学硬件了 哎 命啊 我的答案 有bug module top module input a input b output out wire w1 wire w2 wire w3 mod a mod a inst1 in1 w1
  • IDEA引入JDK/jar包无效、java 文件灰色右下角橙色java图标显示等问题解决办法

    一 引入jdk jar包无效 IDEA有时候会出现引入jdk无效的情况 import灰色 代码爆红 这是因为idea检测发现包并没有导入进来 1 如果是普通java项目 jdk等都配置好还是这样的话 可以通过 清除缓存并重启的方式解决 如下
  • k8s的1.20.15的kubeadm安装教程

    k8s的1 20 15的kubeadm安装教程 1 基础环境配置 1 1 配置信息 系统版本 centOS7 9 docker版本 19 03 x kubernetes 1 20 x Pod网段 172 168 0 0 16 service
  • Fiddler下载安装 Mac版

    目录 下载 安装 下载 1 进入FiddlerDownload Fiddler Web Debugging Tool for Free by Telerik下载网站 点击 Try Fiddler Everywhere 2 我这里选择的是ma
  • 【Spring Boot 初识丨一】入门实战

    学习前提 学习Spring Boot的前提是具备Java编程基础 包括面向对象编程 Java集合框架 异常处理 多线程等基本概念和技能 此外 还需要了解Web开发的基本知识 例如HTTP协议 Servlet JSP HTML CSS Jav
  • 《eNSP - OSPF 查看命令》

    display ospf peer 查看 OSPF 邻居的相关信息 display ip routing table protocol ospf 查看 OSPF 协议路由表 display ospf interface 查看运行 OSPF
  • LeetCode-二进制中1的个数

    计算机中的补数是 两个数加起来等于在二进制里一个非常整的数 比如 加起来等于 10000000000000000000000000000000000这样的 1 01 的补数 111111111111111111111111111111111
  • springboot封装响应实体

    前言 首先什么是响应实体 正常我们的后端都是接收前端 然后把请求需要的数据返回给前端 而这个返回的数据就是我们的响应实体 那么 为什么我们需要进行封装响应实体呢 第一点 最明显的就是 为了人机友好交互 如果单单只是把返回的数据给到前端 有数
  • Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)

    53 最大子数组和 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 思路 aaaaa 我老不会这个题 动态规划的是首先对数组进行遍历 当前最大连续子序列和
  • 什么是Spring三级缓存 对象在三级缓存中的创建流程 【三级缓存 循环依赖】

    一 什么是Spring三级缓存 第一级缓存 也叫单例池 存放已经经历了完整生命周期的Bean对象 第二级缓存 存放早期暴露出来的Bean对象 实例化以后 就把对象放到这个Map中 Bean可能只经过实例化 属性还未填充 第三级缓存 存放早期
  • Confluence不仅仅是一个wiki,它还可以是一个应用系统平台。

    利用Confluence插件系统 可以很容易地定制和扩展Confluence来满足您的需要 下面是Confluence开发者社区所开发的一些被广泛使用的插件 我们提供了一个包含了更多插件的库 您甚至可以去开发自己的插件 Office Con
  • JavaScript从题学习——预解析案例

    前言 从题中快速了解和复习下变量提升 函数提升 作用域链 预解析案例 答案在最后 案例1 var num 10 fun function fun console log num var num 20 相当于执行了以下操作 var num f
  • 1024 程序员节:低代码低成本硬件 - 树莓派 Pico 2040

    恰逢 1024 程序员节 程序员们忙着开交流会 或者写代码 来庆祝节日 或者随便写点什么 留下自己的足迹 CSDN 组织了好几个线下 线上的会 大家也在讨论开源 开放 小米的崔总 引用了 论语 里的一句话 德不孤 必有邻 来评价正确的开源之