Raspberry Pi Pico C/C++语言开发环境搭建 Raspberry Pi Pico C/C++ SDK

Raspberry Pi Pico是树莓派基金会在2021年1月新发布的微处理器新品。使用基金会自己研发的RP2040芯片,国内现在整个开发板模块售价为30-40元左右。相较于树莓派的其它‘微电脑’型号,这一款产品因为是单片机MCU型的,其最高运行频率可达到133MHz,对IO及模拟信号的操作和处理有更低的时间延迟,可以弥补Raspberry Pi物理互动方面的不足,更类似于‘Arduino’开发板。

官网上的性能介绍:

  • 双核Arm Cortex M0 +处理器,运行频率高达133 MHz
  • 264KB的SRAM和2MB的板载闪存
  • 模块允许直接焊接到载板
  • 具有设备和主机支持的USB 1.1
  • 低功耗睡眠和休眠模式
  • 通过USB使用大容量存储进行拖放编程
  • 26个多功能GPIO引脚
  • 2个SPI,2个I2C,2个UART,3个12位ADC,16个可控PWM通道
  • 片上准确的时钟和计时器
  • 温度感应器
  • 片上加速浮点库
  • 8个可编程I / O(PIO)状态机,用于自定义外围设备支持
  • 可通过 Micro USB 供电,也支持 1.8-5.5 V 直流电源供电。
  • 配备 1 个 LED 灯和一个开关按钮。按钮用于BootSel,也就是向 Pico 烧录程序时控制 Pico 进入 USB 大容量存储模式,也可用于通用的输入按键。使用Pico开发,开发用的设备可以使用树莓派微电脑Linux也可以PC机上的Windows。对于大多人来说使用PC机来开发相对会方便些,当然如果你是树莓派的重度爱好者,使用树莓派微电脑也是得心应手。编程语言可以使用Python,也可以使用C/C++,它们都需要安装相应的SDK和相关的支持软件。安装步骤烦多,不如其它知名MCU的开发环境来的简单。下面就来分享一下Windows操作系统下的C/C++开发环境的搭建。首先是需要安装五个支持工具软件。比较多,建议先全部下载相应的版本。注意的是官方提示这些只在WIN10环境下使用,在WIN7等不保证能正常使用。五个支持软件,为方便下载这里同时给出下载地址。
    ARM GCC compiler
    https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
    CMake
    https://cmake.org/download/
    这个需要下载3.19.5版本,新的3.20似乎没法正常工作可以在Github下找到
    https://github.com/Kitware/CMake/releases
    Build Tools for Visual Studio 2019
    https://visualstudio.microsoft.com/zh-hans/downloads/
    可以选择社区版

    Python 3.9
    https://www.python.org/downloads/windows/

    Git
    https://git-scm.com/download/win

    ARM GCC compiler的安装
    这个编译器安装没什么好说的,直接下一步、下一步就完事了。在安装完成时,最后的选项选择时,全选。

    CMake

    在安装过程中,当安装程序提示时,将CMake添加到所有用户的系统路径中。

    Build Tools for Visual Studio 2019

    这里我是安装VS2019社区版,安装选项为‘使用C++的桌面开发’,‘Windows10 SDK’必须要打勾。

    Python 3.9

    在安装过程中,选择“为所有用户”安装了该软件,并选择将Python 3.9添加到系统PATH中。 在Python末尾提示时,应该选择禁用MAX_PATH长度限制。

    Git

    注意下面3个选项要选上。


    获取SDK和例程
    以上软件安装完成后,重启一下PC。
    重启后在硬盘上新建一个文件夹,我这里是在C盘中新建一个名为‘SDK’的目录。

    选定‘SDK’后按鼠标右键,选‘Git Bash Here’。

    进入Git界面后,分别输入如下指令

    git clone -b master https://github.com/raspberrypi/pico-sdk.git
    cd pico-sdk
    git submodule update –init
    cd ..
    git clone -b master https://github.com/raspberrypi/pico-examples.git

    执行时的界面如下。

    上面已经安装完工具链软件以及Pico的C/C++SDK,编译源代码时如果要使用命令行方式会比较麻烦,这里不说,下面介绍的是使用微软的Visual Studio Code去编译源代码。如果你没有安装VS Code,还需要到https://code.visualstudio.com/download下载安装。(关于如何在VS Code安装中文汉化包请自行了解)

    安装完成后还需要为其设置之前的工具链软件和SDK路径。

    首先在开始菜单找到Visual Studio 2019的Developer Command Prompt菜单并打开。

    在打开的指令窗口中输入code,则会打开设置了所有正确环境变量的Visual Studio Code,以便正确配置工具链。注意不要直接点桌面的VSCode打开它,这会可能导致配置的失败,除非你足够的熟悉了解它和相关的工具链软件。

    在打开的VS Code中安装,CMake Tools。

    安装CMake Tooks扩展后,点齿轮状图标,打开设置项进行SDK路径设置。

    找到Cmake:Configure Environment项,并增加一个PICO_SDK_PATH项,项目的值就为上面下载SDK时的路径。

    找到Cmake:Generator项,加值’NMake Makefiles’ 。

    至此完成了环境的搭建。

    下面就可以用下载下来的SDK例子进行编译测试。
    在VS Code打开下载的pico-examples目录,打开后CMake自动配置。

    活动工具包需要选择 ‘GCC for arm-none-eabi’。生成后,则进行编译。编译完成的文件会被放在例子目录下的build目录下。注意,如果编译不能进行,则要尝试用Visual Studio 2019的Developer Command Prompt菜单来打开VS Code。


    编译中的界面。

    编译完成后,则可以下载文件到Pico下进行测试。为了直观查看,可以使用blink例子,这个例程就是让板上连接到GPIO25的LED闪烁。首先在pico-examples\build\blink目录下找到编译好的blink.uf2文件。

    然后按着Pico的BootSel按钮,把Pico接入PC的USB端口,这时会在PC上出现一个名为RPI-RP2的存储盘,把blink.uf2拖入该盘中,写入后,Pico自动重启并运行程序,让LED闪烁。

游戏机加装实体按键

JD买的小游戏机,价格便宜,游戏丰富。但是硅胶按键手感和灵敏度实在太差,打开一看发现能稍做改装,把硅胶按键加装上机械轻触按键。用6×6的优质轻触按键直接焊接到电路板上就可以了,注意不要引脚和外壳不要短路,然后按原样装好就可以了。手感和灵敏度爆增。

 

电磁辐射探测器

电磁波,又称电磁辐射,是指同相振荡,且互相垂直的电场与磁场,在空间中以波的形式传递能量和动量,其传播方向垂直于电场与磁场的振荡方向。温度大于绝对零度的物体,都可以发射电磁辐射。人眼可接收到的电磁波,波长大约在380至780nm之间,称为可见光。电子产品在运行时也会发出不同频率的电磁波,如果没有明显的声音、发热、灯光、显示屏或电机动作,我们是很难感知电子产品在运行,也无法看到电子产品发射出来的电磁波。当电磁波通过电感线圈时,会在电路中产生电动势产生电压。当然普通电器发射出来的电磁波是很微弱的。

根据这个原理可以设计一个小巧简单的电路用于探测电子产品发射出来的电磁辐射。Q1-Q3组成放大电路,驱动LED进行显示。当开关SW按下时,电路通电,Q1的B极在上电初时电压为0,Q1关闭,Q2的B级经过R1得到电压后导通,Q3则处于关闭,LED不亮,此时C1通过R4得到充电,一定时间后C1正极达到阀值电压,同时也通过R5,给C2充电,Q1的B极得到电流,经过Q2Q3放大后,LED被点亮。当Q3工作后,这时C1处的电压会降下来,Q1的B级电流减少,LED熄灭,周期循环,形成振荡电路。LED以一定的频率闪动。频率大小可以修改C1、C2、R5、R4的值来改变。而当电感感应到电磁波时产生自感,从而改变Q1的B级电流周期变化频率,让LED的闪烁周期改变,达到探测的目的。如果把LED换成蜂鸣器,则可以用“滴滴”声来提示探测结果。

接下来做个实验板。电路简单,就用洞洞板随便焊了一个。

 

电感的大小会影响探测的灵敏度。从废置的空气开关中拆出一个电磁铁线圈。

 

最后的实验板子。

在电脑和台灯下测试的视频。

在运动相机附近测试的视频。把电路的灵敏度提高则可以用于搜寻隐藏的电子设备或输电线之类的。