Loading...   树莓派是一款迷你、经济实惠的微型计算机,广受编程和硬件爱好者欢迎。不仅因为其便捷、功能强大,更因其专有的GPIO接口,使其在各种硬件项目中变得不可或缺。本文将介绍一下树莓派系统的烧录,以及GPIO的简单使用,文章使用GPT4结合笔者个人经历及相关资料完成,如有错误欢迎指正。 # 1. 树莓派的系统烧录   要使用树莓派,首先需要向SD卡烧录一个操作系统。烧录是将操作系统写入到SD卡的过程,这样我们的树莓派才能正常启动。树莓派支持许多不同的系统,并且开源社区为其提供了丰富的选择(Raspberry Pi OS,Ubuntu core,Kali等),但在此我们主要介绍官方提供的Raspberry Pi OS。Raspberry Pi OS是基于Debian的操作系统,经过优化以适应树莓派的硬件,并为用户提供了友好的界面和丰富的功能。   在之前的Raspbian版本中,系统默认配置了名为“pi”的用户(密码为:raspberry)。但随着Raspberry Pi OS Bullseye的推出,官方已经取消了此默认用户设置(官方表示这是为了提升系统的安全性,参考:[官方资料](https://www.raspberrypi.com/news/raspberry-pi-bullseye-update-april-2022))。这为那些没有显示屏幕并希望开机后直接使用ssh的用户带来了一些不便,因为他们现在必须通过官方的安装器来首先配置用户。接下来,我们将介绍两种烧录系统的方法。对于没有显示屏幕的用户,建议选择第二种方法。而对于有显示屏幕的用户,两种方式均可,进入系统可以通过图形化界面配置。 ### 方式1: Win32DiskImager 1. 前往[官方网站](https://www.raspberrypi.com/software/operating-systems/)下载需要的Raspberry Pi系统镜像。 连接显示器的用户请选择“with desktop”的版本;而没有显示器的用户请选择“(legacy)”版本。(本文针对小白用户,因此暂时不会介绍没有桌面的Lite版本)![image.png](https://gallery-of-jafari.oss-cn-beijing.aliyuncs.com/caleb.ink/2023/09/04/image.png) ![image(1).png](https://gallery-of-jafari.oss-cn-beijing.aliyuncs.com/caleb.ink/2023/09/04/image(1).png) 2. 使用WinRAR或其他压缩软件解压。 3. 插入SD卡,确保计算机可以识别,并且进行格式化。 4. 打开Win32DiskImager软件,选择解压后的.img系统镜像。 5. 在软件中选择对应的SD卡。 6. 点击“写入”开始烧录过程。完成后,将SD卡插入树莓派。 7. 树莓派连接显示器,通电,耐心等待一会儿后就会进入系统配置的引导,按照提示设置用户名与密码 ![image(2).png](https://gallery-of-jafari.oss-cn-beijing.aliyuncs.com/caleb.ink/2023/09/04/image(2).png) ![](https://www.raspberrypi.com/app/uploads/2022/03/newuser.png) ### 方式二:官方安装器(Raspberry Pi Imager) 1. 下载并安装Raspberry Pi Imager。 2. 启动软件,点击“选择OS”。 3. 选择需要的操作系统版本,可以直接选择程序推荐的os。 4. 选择“选择SD卡”,确保SD卡被选中。 5. 这时点击右下角的齿轮,可以设置用户名与密码,也可配置无线网络WLAN(有显示器的用户可以跳过,这样会像方式一中的第7步一样,在第一次进入系统时,由系统引导进行配置) ![Raspberry Pi OS](https://www.raspberrypi.com/app/uploads/2022/03/Screenshot-2022-03-28-at-12.04.08.png) 6. 点击“写入”。完成后,将SD卡插入树莓派,后续步骤与方式一相同。 # 2. GPIO介绍及控制方法   GPIO(General Purpose Input/Output)是树莓派的一大特色,用于读取和控制各种电子设备。这些引脚包含了12个电源类的接口(+5V,+3V3,GND),其余GPIO端口可以通过编程控制,从而达到控制外设的可能。 ![](https://pic1.zhimg.com/80/v2-0b3e9e2ec19de7abbcb577aa0e8e7854_720w.webp)   在程序中要控制GPIO,就需要知道它在程序中是如何编号的,引脚编码有两种主流方式:BCM 和 WPI。(只要了解有不同编号方式即可,修改网络上提供的示例程序时,注意观察程序究竟使用了哪种编号方式,防止程序与实际连线不匹配) 1. **BCM (Broadcom SOC channel)** :树莓派的核心是 Broadcom 的 SOC(System On a Chip)。BCM 编码方式直接对应于这个芯片上的引脚编号。这种方式更接近硬件层面,为了硬件设计或与其他基于Broadcom芯片的系统的交互提供了便利。当你查看树莓派的官方文档或一些硬件级别的指南时,通常会看到这种编号方式。 2. **WPI (WiringPi Pin)** :WiringPi 是专为树莓派设计的 GPIO 接口库。WPI 编码方式是该库中定义的一种逻辑结构,意在为程序员提供一个更简洁、连续的引脚编号系统。这对于那些可能对具体硬件实现不太关心,但希望能够快速、简便地进行 GPIO 编程的开发者来说,是非常有用的。   这两种编码方式的存在反映了不同的需求和焦点:BCM 更偏向于硬件和官方标准,而 WPI 则更偏向于为开发者提供方便。具体编码的表格如下图所示,使用时进行查询即可。(引用自[树莓派的GPIO控制 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/40594358)) - ![](https://pic4.zhimg.com/80/v2-fa31821216d498475c0203360e156cdb_720w.webp) # 3. GPIO编程案例   下面将提供一个树莓派控制LED灯闪烁的示例,示例比较简单,程序很通俗,但能很好的提供一个GPIO编程的初步认识。 ### 硬件连线方式: **所需材料**: 1. 树莓派 2. LED灯 3. 220Ω 电阻 4. 杜邦线 **连线步骤**: 1. 把LED灯的长腿(阳极)连接到220Ω电阻的一端。 2. 把电阻的另一端连接到树莓派的GPIO引脚(比如GPIO17,BCM编码)。 3. 把LED灯的短腿(阴极)连接到树莓派的GND引脚。 ### Python 示例(使用 RPi.GPIO):   首先,你需要确保已经安装了 `RPi.GPIO` 库。如果没有,可以通过以下命令安装: ```bash pip install RPi.GPIO ```   以下是控制LED灯的Python代码,代码的原理就是通过16行和20行设置对应GPIO端口的高低电平来实现控制LED亮灭: ```python import RPi.GPIO as GPIO import time # 设置引脚编码方式为BCM GPIO.setmode(GPIO.BCM) # 定义我们连接LED的引脚 LED_PIN = 17 # 设置LED_PIN为输出模式 GPIO.setup(LED_PIN, GPIO.OUT) try: while True: # LED灯亮 GPIO.output(LED_PIN, GPIO.HIGH) time.sleep(1) # 持续1秒 # LED灯熄灭 GPIO.output(LED_PIN, GPIO.LOW) time.sleep(1) # 持续1秒 except KeyboardInterrupt: GPIO.cleanup() # 清除GPIO状态,释放资源 ``` ### C 示例(使用 WiringPi 库):   首先,你需要确保已经安装了 `WiringPi` 库。可以通过以下命令安装: ```bash sudo apt-get install wiringpi ```   以下是控制LED灯的C代码: ```c #include <wiringPi.h> #include <stdio.h> #include <unistd.h> #define LED_PIN 0 // 使用WiringPi引脚编号,对应于BCM的GPIO17 int main(void) { if (wiringPiSetup() == -1) { // 初始化WiringPi printf("WiringPi setup failed!\n"); return -1; } pinMode(LED_PIN, OUTPUT); // 设置LED_PIN为输出模式 while (1) { digitalWrite(LED_PIN, HIGH); // LED灯亮 sleep(1); // 持续1秒 digitalWrite(LED_PIN, LOW); // LED灯熄灭 sleep(1); // 持续1秒 } return 0; } ```    为了编译和运行C代码, 使用以下命令编译及运行: ```bash gcc -o led_blink led_blink.c -lwiringPi sudo ./led_blink ```   注意,使用GPIO通常需要超级用户权限,所以使用`sudo`运行你的程序。   树莓派为爱好者打开了一个崭新的世界,无论是软件开发还是硬件探索,都有着无尽的可能。希望本篇博客能帮助初学者入门,开始自己的树莓派之旅。现在网络上存在很多具体元件的编程样例,只要了解了GPIO的基础知识,通过网络搜索很快就能掌握其他硬件,编出更复杂的程序。 # 附录 Win32DiskImager下载链接:[链接](https://sourceforge.net/projects/win32diskimager/files/latest/download) 官方系统烧录软件:[链接](https://downloads.raspberrypi.org/imager/imager_latest.exe) Raspberry Pi OS下载链接:[Operating system images – Raspberry Pi](https://www.raspberrypi.com/software/operating-systems/) 最后修改:2024 年 09 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 6 如果觉得我的文章对你有用,请随意赞赏