Raspberry-Pi-Pico-MANUAL

来自Waveshare Wiki
跳转至: 导航搜索

开发环境搭建

安装Arduino IDE

  1. 首先到Arduino官网下载Arduino IDE的安装包。
    Arduino下载2.0版本.jpg
  2. 这里选择仅下载就可以了。
    仅下载不捐赠.png
  3. 下载完成后,点击安装。
    IDE安装水印-1.gif
    注意:安装过程中会提示你安装驱动,我们点击安装即可
    Arduino驱动安装水印.jpg

Arduino IDE中文界面

  1. 第一次安装完成后,打开Arduino IDE全是英文界面,我们可以在File>Preferences切换成简体中文。
    首选项-简体中文.jpg
  2. 在Language里面选择简体中文,点击OK。
    首选项-简体中文ok.jpg

在Arduino IDE中安装Arduino-Pico Core

  1. 打开Arduino IDE,点击左上角的文件,选择首选项
    首选项水印-1.png
  2. 在附加开发板管理器网址中添加如下链接,然后点击OK
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

    Pico首选项.png
    注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:

    https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  3. 点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
    开发板管理器.png
    开发板管理器-1.png

国内用户

  • 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
  • 若已经成功配置了pico环境,可以直接跳过本章
  1. 下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
    C:\Users\[username]\AppData\Local\Arduino15\packages

    Rp2040包.png
    注意:将里面用户名:[username]替换成自己的用户名


第一次上传程序

  1. 按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
    Pico连接数据线.gif


  1. 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
  2. 点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)
    Pico连接前端口.png
  3. 用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口
    Pico连接后uf2.png
  4. 点击工具>开发板>Raspberry Pi Pico/RP2040>Raspberry Pi Pico
    工具pico开发板.png
    Arduono-Raspberrypi pico.png
  5. 设置完成后,点击向右箭头上传将程序
    Pico上传程序.png
  • 如果期间遇到了问题,需要重新安装或者更换Arduino IDE版本时,卸载Arduino IDE需要卸载干净,卸载软件后需要手动删除C:\Users\[name]\AppData\Local\Arduino15这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装

1.GPIO

D0:Key

  • 工程文件地址:arduino/GPIO/KEY&LED

函数解析

  • setup()
    • 当Arduino程序开始运行时会调用setup()函数。通常我们setup()函数其中初始化一些变量、引脚状态及一些调用的库等。
    • 当Pico控制器通电或复位后,setup()函数会运行一次。
  • loop()
    • 在setup()函数对程序完成了初始化后,loop()函数将会运行。loop函数是一个循环体,在Pico启动后,loop()函数中的程序将会不断运行。
    • 通过loop()函数你可以利用你的程序来控制Pico,并使Pico根据你的程序进行相应的反应。
  • pinMode()
    • 通过pinMode()函数可以将Pico的引脚配置为以下三种模式:
      OUTPUT模式:当引脚设置为输出(OUTPUT)模式时,引脚为低阻抗状态,可以点亮LED或者驱动电机。
      INPUT模式:当引脚设置为输入(INPUT)模式时,引脚为高阻抗状态(100兆欧)。此时该引脚可用于读取传感器信号或开关信号。
      INPUT_PULLUP模式:Pico微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。

例程效果

  1. 按键按下时,LED同步亮起
  2. 按键松开时,LED熄灭并且在串口中输出按下时间

2.PWM

D1:LED

  • 工程文件地址:arduino/PWM/D1-LED

函数解析

  • analogWrite
    • 将一个模拟数值写进Pico引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速。
    • analogWrite(pin, value) 其中pin:被读取的模拟引脚号码,value:0到255之间的PWM频率值, 0对应off, 255对应on。
  • map() - 等比映射
    • map()可以用来将某一数值从一个区间等比映射到一个新的区间。
    • map (x, in_min, in_max, out_min, out_max)
    • 参数x: 要映射的值
      in_min: 映射前区间最小值
      in_max: 映射前区间最大值
      out_min: 映射后区间最小值
      out_max 映射后区间最大值

例程效果

  1. LED循环以2.5KHz频率闪烁,每10ms为间距,增加或者减少占空比1%,实现呼吸灯的效果

D2:BUZZER

  • 工程文件地址:arduino/PWM/D2-BUZZER

函数解析

  • tone()
    • tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。发声时间长度和声调都可以通过参数控制。
    • tone(pin, frequency, duration)
      pin: 发声引脚(该引脚需要连接扬声器)
      frequency: 发声频率(单位:赫兹) – 无符号整数型
      duration: 发声时长(单位:微秒,此参数为可选参数) – 无符号长整型

例程效果

  1. 无源蜂鸣器以占空比为30%,频率在600Hz-1.4KHz之间鸣叫,实现类似警笛的音效

3.I2C

I2C1:OLED

  • 工程文件地址:arduino/I2C/I2C1-OLED

函数解析

  • Wire库可以让Pico与IIC设备进行通信。 IIC是主从方式通讯,一个主设备与一个或多个从设备进行通讯
  • 使用之前使用以下语句进行Wire库声明#include <Wire.h>
  • 本套Pico入门级传感器套件引出两组IIC接口,分别是i2c0和i2c1对应wire()和wire1()函数。
  • begin()
    • 初始化Wire库,并以主机或从机身份加入I2C总线。
  • requestFrom()
    • 由主设备用来向从设备请求字节。
    • 请求发送之后可以使用available()和read()来接受并读取数据。
    • Wire.requestFrom(address, quantity, stop)参数:
      address: 设备的7位地址,用于请求字节
      quantity: 请求的字节数
      stop (bool): 值为true则在请求后发送停止消息,释放总线。值为 false则在请求后发送重启信息,以保持连接处于活动状态。
  • beginTransmission()
    • 使用指定的地址开始向I2C从设备进行传输。
  • endTransmission()
    • 停止与从机的数据传输
  • read()
    • 读取在requestFrom()调用后从从设备响应发送到主设备的字节,或从主设备发送到从设备的字节。
  • write()
    • 用于响应来自主设备的请求,即从设备写入数据
    • Wire.write(value) 其中value: 一个要发送的单字节
    • Wire.write(string) 其中string: 一系列要发送的字符串
    • Wire.write(data, length)其中data: 要作为字节发送的数组数据,length: 要传输的字节数

例程效果

  1. 1.5inch OLED显示图形测试界面并保持1S
  2. 1.5inch OLED显示标题与不同灰度的条纹并一直保持

I2C0:6-DOF

  • 工程文件地址:arduino/I2C/I2C0-6-DOF

例程效果

  1. 串口打印加速度与陀螺仪读数
  2. 此时移动或者转动板子,可以很清晰看到数值变化

I2C0:VOC

  • 工程文件地址:arduino/I2C/I2C0-VOC

例程效果

  1. 串口打印VOC读数
  2. 等待约3S,VOC读数会缓慢增加的,最后会稳定在一个稳定值,平均约为100,最大值为500,越大代表空气质量越差。
  3. 此时向VOC传感器吹一口气,数值会逐渐上升,随后逐渐降低。

I2C0:EEPROM

  • 工程文件地址:arduino/I2C/I2C0-EEPROM

例程效果

  1. 串口打印复位次数
  2. 复位次数是从EEPROM中读取并通过CRC8进行验证,每次复位或者重启都会使显示数值加一

I2C0:SHTC3

  • 工程文件地址:arduino/I2C/I2C0-SHTC3

例程效果

  1. 串口打印芯片ID与温湿度读数

I2C0:MOTOR DRIVER

  • 工程文件地址:arduino/I2C/I2C0-MOTOR-DRIVER

例程效果

  1. 依次驱动A、B、C、D四个端口上的电机正转一秒钟,占空比分别为25%、50%、75%和100%

4.ADC

ADC0:LDR

  • 工程文件地址:arduino/ADC/ADC0-ADC0-LDR

例程效果

  1. 每秒通过串口输出当前光敏电阻上的电压

ADC1:VOL

  • 工程文件地址:arduino/ADC/ADC1-VOL

例程效果

  1. 每秒通过串口输出当前电位器上的电压

ADC2:SOUND

  • 工程文件地址:arduino/ADC/ADC2-SOUND

例程效果

  1. 每0.1秒通过串口输出当前声音传感器输出电压与直流输出值
  • PS:因为声音是振动产生的声波,所以声音传感器获得到的电压值不是一个稳定值,所以输出电压无法直接与音量挂钩。

5.PIO

D3:IR RX

  • 工程文件地址:arduino/PIO/D3-IR-RX

例程效果

  1. 等待红外遥控器信号
  2. 接收到红外遥控器信号后,解码并将数据通过串口输出

D4:IR TX

  • 工程文件地址:arduino/PIO/D4-IR-TX

例程效果

  1. 每1秒通过红外发射模块发射符合NEC协议的地址为0x00、命令为0x00的信号

D7:RGB LED

  • 工程文件地址:arduino/PIO/D7-RGB

例程效果

  1. RGB循环渐变颜色