正在加载图示…
85 x 56 mm 板子上的一台四核 Linux 电脑:40 个 GPIO 引脚上用 Python 和 gpiozero 编程,机器人用 ROS 2
每节课都在开发板上运行你自己的代码。通过这节课的检查,就能把它打勾完成。
按正确的顺序组装开发板,然后上电检查,就像在实验台上一样。
已完成 0/11 步把 Pi 拆到只剩裸 PCB:一块 85 x 56 mm 的板子,四个 2.7 mm 安装孔排在 58 x 49 mm 的网格上,40 针排针的封装焊盘沿着上边缘。两面都有元件。
每一种故障都会在模拟中真实发生。触发一个,观察图示,再读一读原因。
树莓派的单板计算机。Raspberry Pi 5 搭载 Broadcom BCM2712(四个 2.4 GHz 的 Arm Cortex-A76 核心和一颗 VideoCore VII GPU),配 1 到 16 GB LPDDR4X 内存,并通过一条 PCIe 链路把所有接口交给树莓派自研的 I/O 芯片 RP1:USB、以太网、摄像头和显示屏通道以及排针上的 GPIO 引脚全都在 RP1 里。一颗带八路开关稳压器的 DA9091 PMIC 用 USB-C 上的 5 V 产生所有电源轨,还维持着一个带电池接口的实时时钟。Raspberry Pi 4 Model B 外形相同,40 针排针也相同,但布局更老:BCM2711(四个 1.8 GHz 的 Cortex-A72 核心)、LPDDR4、一颗 VL805 USB 3 控制器、一个 3.5 mm 音视频插孔,没有电源按钮。两块板子都没有可以上传程序的闪存:程序是 microSD 卡上的一个文件,你在 Linux 上运行它,通常通过 SSH。所有 GPIO 都工作在 3.3 V,每个最多 16 mA,而且不能承受 5 V。排针上的 5 V 引脚直接连在输入电源轨上,中间什么都没有,所以从这里接入的电源必须干净,而且不能接反。
| 排针 | 引脚 | 名称 | 功能 | 电平 | 最大电流 | 备注 |
|---|---|---|---|---|---|---|
| J8 | 1 | 3V3 | 3.3 V power | 3.3 V | – | PMIC 的 3.3 V 电源轨,与 GPIO 组共用。适合给传感器和小型 HAT 供电,不能带电机。 |
| J8 | 2 | 5V | 5 V power (the input rail itself) | 5 V | – | 直接连在 5 V 输入电源轨上,没有任何保护。作为输出时,USB-C 电源给多少它就给多少;作为输入时,它给整个 Pi 供电,所以必须是干净的 5 V,而且不能接反。 |
| J8 | 3 | GPIO2 | I2C1 SDA | 3.3 V | 16 mA | I2C1 SDA,板上有一个固定的 1.8 kΩ 上拉电阻接 3.3 V,所以没人驱动时读到高电平。 |
| J8 | 4 | 5V | 5 V power (the input rail itself) | 5 V | – | 直接连在 5 V 输入电源轨上,没有任何保护。作为输出时,USB-C 电源给多少它就给多少;作为输入时,它给整个 Pi 供电,所以必须是干净的 5 V,而且不能接反。 |
| J8 | 5 | GPIO3 | I2C1 SCL | 3.3 V | 16 mA | I2C1 SCL,带固定的 1.8 kΩ 上拉电阻。把它拉低可以唤醒已关机的 Pi 4;Pi 5 用电源按钮做这件事。 |
| J8 | 6 | GND | – | – | – | |
| J8 | 7 | GPIO4 | GPCLK0, 1-Wire (w1-gpio) | 3.3 V | 16 mA | |
| J8 | 8 | GPIO14 | UART0 TXD | 3.3 V | 16 mA | UART0 TXD(Pi 5 上是 /dev/ttyAMA0)。在 Pi 4 上,设置 enable_uart=1 后它承载串口控制台;Pi 5 为此另有一个 UART 接口。 |
| J8 | 9 | GND | – | – | – | |
| J8 | 10 | GPIO15 | UART0 RXD | 3.3 V | 16 mA | UART0 RXD。它的搭档是第 8 脚上的 GPIO14。 |
| J8 | 11 | GPIO17 | SPI1 CE1 | 3.3 V | 16 mA | |
| J8 | 12 | GPIO18 | PCM CLK, PWM0 | 3.3 V | 16 mA | 四个硬件 PWM 引脚(12、13、18、19)之一。gpiozero 的 PWMLED 仍然通过 lgpio 使用软件 PWM,在任何引脚上都行。 |
| J8 | 13 | GPIO27 | – | 3.3 V | 16 mA | |
| J8 | 14 | GND | – | – | – | |
| J8 | 15 | GPIO22 | – | 3.3 V | 16 mA | |
| J8 | 16 | GPIO23 | – | 3.3 V | 16 mA | |
| J8 | 17 | 3V3 | 3.3 V power | 3.3 V | – | PMIC 的 3.3 V 电源轨,与 GPIO 组共用。适合给传感器和小型 HAT 供电,不能带电机。 |
| J8 | 18 | GPIO24 | – | 3.3 V | 16 mA | |
| J8 | 19 | GPIO10 | SPI0 MOSI | 3.3 V | 16 mA | |
| J8 | 20 | GND | – | – | – | |
| J8 | 21 | GPIO9 | SPI0 MISO | 3.3 V | 16 mA | |
| J8 | 22 | GPIO25 | – | 3.3 V | 16 mA | |
| J8 | 23 | GPIO11 | SPI0 SCLK | 3.3 V | 16 mA | |
| J8 | 24 | GPIO8 | SPI0 CE0 | 3.3 V | 16 mA | |
| J8 | 25 | GND | – | – | – | |
| J8 | 26 | GPIO7 | SPI0 CE1 | 3.3 V | 16 mA | |
| J8 | 27 | GPIO0 | ID_SD (HAT EEPROM, reserved) | 3.3 V | 16 mA | 留给 HAT 识别 EEPROM(I2C0 SDA)。除非你确定用不到它,否则别占用。 |
| J8 | 28 | GPIO1 | ID_SC (HAT EEPROM, reserved) | 3.3 V | 16 mA | 留给 HAT 识别 EEPROM(I2C0 SCL)。 |
| J8 | 29 | GPIO5 | – | 3.3 V | 16 mA | |
| J8 | 30 | GND | – | – | – | |
| J8 | 31 | GPIO6 | – | 3.3 V | 16 mA | |
| J8 | 32 | GPIO12 | PWM0 | 3.3 V | 16 mA | |
| J8 | 33 | GPIO13 | PWM1 | 3.3 V | 16 mA | |
| J8 | 34 | GND | – | – | – | |
| J8 | 35 | GPIO19 | PCM FS, PWM1, SPI1 MISO | 3.3 V | 16 mA | |
| J8 | 36 | GPIO16 | SPI1 CE2 | 3.3 V | 16 mA | |
| J8 | 37 | GPIO26 | – | 3.3 V | 16 mA | |
| J8 | 38 | GPIO20 | PCM DIN, SPI1 MOSI | 3.3 V | 16 mA | |
| J8 | 39 | GND | – | – | – | |
| J8 | 40 | GPIO21 | PCM DOUT, SPI1 SCLK | 3.3 V | 16 mA |
这块开发板能驱动的传感器和执行器,以及真实的接法。
阳极(长脚)经 330 Ω 电阻接第 11 脚上的 GPIO17,阴极接第 9 脚的 GND:3.3 V 下约 4 mA。gpiozero 里写作 LED(17)。
| 零件引脚 | 开发板引脚 |
|---|---|
| A | GPIO17导线颜色:橙色 |
| K | GND导线颜色:黑色 |
千万不要不加电阻就接 LED:引脚会试图输出远超 16 mA 的电流。
一只脚接第 13 脚上的 GPIO27,另一只脚接第 14 脚的 GND。gpiozero 的 Button 会打开内部上拉,所以不需要电阻:没按下时引脚读到高电平。
| 零件引脚 | 开发板引脚 |
|---|---|
| 1 | GPIO27导线颜色:黄色 |
| 3 | GND导线颜色:黑色 |
VCC 接第 2 脚的 5V,GND 接第 6 脚,TRIG 接第 16 脚上的 GPIO23(3.3 V 足以触发它),ECHO 经分压器接第 18 脚上的 GPIO24:串联 1 kΩ,再用 2 kΩ 接 GND。
| 零件引脚 | 开发板引脚 |
|---|---|
| VCC | 5V导线颜色:红色 |
| TRIG | GPIO23导线颜色:黄色 |
| ECHO | GPIO24导线颜色:绿色 |
| GND | GND导线颜色:黑色 |
ECHO 是 5 V 输出。直接接到 GPIO 引脚上,它会把电流经引脚的保护二极管灌进 3.3 V 电源轨,可能烧掉这个引脚,甚至整颗 I/O 芯片。
信号线接第 12 脚上的 GPIO18,红线接 5V,棕线接 GND。gpiozero 的 Servo 和 AngularServo 用软件产生 50 Hz 脉冲,所以会有一点抖动;PCA9685 板能给出稳定的脉冲。
| 零件引脚 | 开发板引脚 |
|---|---|
| signal | GPIO18导线颜色:橙色 |
| V+ | 5V导线颜色:红色 |
| GND | GND导线颜色:棕色 |
舵机的堵转电流来自 Pi 的 5 V 电源轨。一个 SG90 没问题;更多的话,给它们单独接一路 5 V 电源,并共地。
VCC 接 3V3,GND 接 GND,SDA 接 GPIO2(第 3 脚),SCL 接 GPIO3(第 5 脚)。板上的 1.8 kΩ 上拉电阻已经接在这两个引脚上了。用 raspi-config 启用 I2C,再用 i2cdetect -y 1 检查:它在 0x68 应答。
| 零件引脚 | 开发板引脚 |
|---|---|
| VCC | 3V3导线颜色:红色 |
| GND | GND导线颜色:黑色 |
| SCL | GPIO3导线颜色:黄色 |
| SDA | GPIO2导线颜色:蓝色 |
GND,VCC 接 3V3,SCL 接 GPIO3,SDA 接 GPIO2:和其他传感器在同一条 I2C 总线上,地址通常是 0x3C。
| 零件引脚 | 开发板引脚 |
|---|---|
| GND | GND导线颜色:黑色 |
| VCC | 3V3导线颜色:红色 |
| SCL | GPIO3导线颜色:黄色 |
| SDA | GPIO2导线颜色:蓝色 |
正极接第 15 脚上的 GPIO22,负极接 GND。有源蜂鸣器只需要 gpiozero 的 Buzzer(22);无源蜂鸣器需要一个音调,用 TonalBuzzer。
| 零件引脚 | 开发板引脚 |
|---|---|
| + | GPIO22导线颜色:橙色 |
| - | GND导线颜色:黑色 |