树莓派作为一款低成本的计算机,最初的设计目的是帮助人们学习计算机编程。在随后的应用中,很多电子爱好者将其作为电子项目中的电脑使用。树莓派所搭载的GPIO接口可以让用户直接通过Linux编程控制连接在其上的外部电路是最大的亮点。GPIO接口能让用户电路与计算机系统连接,这一特性对于以往的微控制器(单片机)来说是绝对不可能提供的。所以,树莓派一经面世,功能就已经超越了设计它的初衷,被广大的电子爱好者所追棒。
截至目前,树莓派有多个不同的版本。最初的A型和B型有26个GPIO接口(其中17个可以作为输入/输出使用),后来的型号(包括Pi Zer、A+、B+、Raspberry Pi 2和Raspberry Pi 3)都搭载了40个的GPIO接口,其中28个可以作为输入/输出使用。更多的接口提升了树莓派连接复杂的外部电路能力,也为更多的HAT(树莓派扩展板)提供了可能。
GPIO是指“通用输入/输出”的意思,这是一个微处理器上的概念,指的是微处理器的引脚既可以作为输入,也可以作为输出使用。树莓派上面的GPIO接口是直接连接到它所使用的微控制器上,由于处理器的接口电压是3.3V,所以这里的接口也是3.3V。而一般常用的外部电路和其它型号的处理器,常常是5V为工作电压,所以在连接外部电路前,一定要注意电压的匹配,否则可能烧坏GPIO接口。另外,树莓派的GPIO接口在作为输出使用时,最多可以提供16mA的电流。
如下图,一排黑色的就是GPIO接口。
任何一个GPIO管脚都可以指定(在软件中)为输入或输出管脚,并用于广泛的用途。
注意:GPIO管脚的编号不是按数字顺序排列的;GPIO管脚0和1存在于板上(物理管脚27和28),但保留供高级使用。
板上有两个5V引脚和两个3.3V引脚,以及一些不可配置的接地引脚(0V)。其余的引脚均为通用3.3V引脚,这意味着输出设置为3.3V,输入为3.3V容限。
指定为输出管脚的GPIO管脚可以设置为高(3.3V)或低(0V)。
指定为输入引脚的GPIO引脚可以读取为高(3.3V)或低(0V)。使用内部上拉或下拉电阻器可以更容易地实现这一点。引脚gpio2和gpio3具有固定的上拉电阻,但对于其他引脚,可以在软件中进行配置。
除了简单的输入和输出设备外,gpio管脚还可以与多种替代功能一起使用,有些管脚可用于所有管脚,有些管脚可用于特定管脚。
- 所有管脚上都有软件脉宽调制
- GPIO12、GPIO13、GPIO18、GPIO19接口上提供硬件脉冲宽度调制
- SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)- SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
- Data: (GPIO2); Clock (GPIO3)- EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
- TX (GPIO14); RX (GPIO15)
重要的是要知道哪个针是哪个。有些人使用针标签,也有些GPIO扩展板上有标示。
通过打开终端窗口并运行命令pinout,可以在树莓派上访问一个方便的引用。这个工具是由gpio zero python库提供的,它默认安装在raspbian桌面映像上,但不安装在raspbian lite上。
可以使用多种编程语言和工具控制GPIO。比如:C、Scratch、Python。
警告:虽然将简单的组件连接到GPIO引脚是完全安全的,但重要的是要注意如何连接。LED应该有电阻来限制通过它们的电流。3.3V组件不要使用5V。不要将电机直接连接到GPIO引脚,而是使用H桥电路或电机控制器板。