大众IT学 - Raspberry Pi GPIO 101

Raspberry Pi, Arduino, 不管项目简单还是复杂,动手实现它就是成功!
头像
max
帖子: 86
注册: 周六 3月 14, 2015 10:57 am

大众IT学 - Raspberry Pi GPIO 101

帖子max » 周一 5月 02, 2016 1:30 am

http://www.bilibili.com/video/av11679153/

Raspberry Pi和通用计算机最大的不同之一就是板载了GPIO接口,能够直接作为物理计算单元使用,让你的软件冲破虚拟空间触碰到现实世界!

什么是GPIO,GPIO = 通用输入输出
General-purpose input/output (GPIO) is a generic pin on an integrated circuit whose behavior—including whether it is an input or output pin—is controllable by the user at run time.

GPIO pins have no predefined purpose, and go unused by default. The idea is that sometimes a system integrator who is building a full system might need a handful of additional digital control lines—and having these available from a chip avoids having to arrange additional circuitry to provide them.

-- wikipedia.org

没有控制代码的GPIO脚是没有任何用处的。通过代码,比如用于Python的RPi.GPIO库,就能使用计算机高级程序设计语言来方便的控制每一个GPIO脚的状态。

由于GPIO是数字的输入输出,所以它的状态只有两种:1或0;也就是开或关、通电或不通电。

当GPIO脚作为输出时可以把它们认为是一些能够通过软件控制的(电灯)开关。Raspberry Pi的GPIO脚提供直流3.3V的电压,所以当某个GPIO脚状态为1时(开),这个端口就会输出3.3V的直流电;反之,如果状态为0(关),该端口就没有电压(0V)。最终,可以认为一个GPIO脚就是一个3.3V电池(的正极)和一个开关的组合。特别的是这个开关可以通过程序来控制,而不需要手拨。

当然GPIO也能作为输入接口,这种模式下接口上存在3.3V电压会认为状态是1,0V电压时状态值为0;这里需要当心,不能超过额定电压来使用,可能会损坏你的Pi
多数情况下GPIO脚作为输入状态使用时对外围电路有一些要求,因为Pi无法知道3.2V该怎么办,3.1V呢,0.1V或者0.5V又是什么?这些不在101的讨论范围了。

=====================================================
GPIO脚在Rapsberry Pi的什么地方呢?拿好你的Pi,面对着树莓的Logo,左上方横着的两排金色的针脚就是了。
Raspberry Pi的GPIO脚有两个版本,第一代的Model B和Model A是这个样子的:⇩
gpio_pins.jpg


后面的Pi版本,比如Model A+, Model B+, Pi 2 B和现在的Pi 3 B都是这个样子的:⇩
gpio_pins_pi2.jpg


由于Pi Zero在国内买不到,就忽略它的布局了。。。

=====================================================
程序访问GPIO脚有两种方式,使用GPIO号或者使用物理脚号。老版本的GPIO脚定义:⇩
a-and-b-gpio-numbers.png


新版本的GPIO脚定义:⇩
gpio-numbers-pi2.png


有了门牌号,我们就能通过程序来操作指定的脚了,只能控制黄色的GPIO,其他颜色另有他用。虽然可以通过两种不同的方式来访问,但推荐使用GPIO脚(上方图片),因为GPIO脚的ID不会因为电路布局的改变而改变,是一个逻辑的概念;除非你使用的程序设计语言只支持物理脚(下方图片)的访问,比如Scratch GPIO。

物理脚的定义就是脚在电路板上排布的顺序,老版本的物理脚定义:⇩
a-and-b-physical-pin-numbers.png


新版本的物理脚定义:⇩
physical-pin-numbers.png



GPIO端口定义图:⇩
GPIO_with_I2C_SPI_UART.png


=====================================================
GPIO界的hello world程序——通过GPIO控制LED闪烁来了解基础使用方法:

面包板连接图
gpio_intro_bb.png



=====================================================
LED闪烁源代码
gpio_intro.zip

这是一个hello world级别的程序,代码非常简单易懂,查看附件中的注释就能完全理解了!
您没有权限查看这个主题的附件。
autumn_wind
帖子: 13
注册: 周四 10月 19, 2017 9:36 pm

Re: Raspberry Pi GPIO 101

帖子autumn_wind » 周六 10月 21, 2017 10:41 pm

宇宙背景辐射!
Ruan
帖子: 1
注册: 周六 1月 27, 2018 1:25 pm

Re: Raspberry Pi GPIO 101

帖子Ruan » 周六 1月 27, 2018 1:49 pm

B站观光团前来参观~~~
autumn_wind
帖子: 13
注册: 周四 10月 19, 2017 9:36 pm

Re: 大众IT学 - Raspberry Pi GPIO 101

帖子autumn_wind » 周日 5月 20, 2018 9:27 am

请问up在视频的后半部分,用树莓派和继电器模块控制白炽灯时,所用的继电器模块是什么啊?我买了工作电压是5v的继电器,用GPIO控制不了。但是!网上只有卖5v 的啊?
能把购买链接或模块型号分享一下吗?谢谢。
头像
max
帖子: 86
注册: 周六 3月 14, 2015 10:57 am

Re: 大众IT学 - Raspberry Pi GPIO 101

帖子max » 周一 5月 21, 2018 8:48 am

autumn_wind 写了:请问up在视频的后半部分,用树莓派和继电器模块控制白炽灯时,所用的继电器模块是什么啊?我买了工作电压是5v的继电器,用GPIO控制不了。但是!网上只有卖5v 的啊?
能把购买链接或模块型号分享一下吗?谢谢。

普通的5v继电器就可以,视频中使用的就是5v的。

仔细看视频中的连线方式能发现,把继电器的vcc接到Pi的GPIO 2号脚(视频闪灯连线中的黄色-橙色线),保证能驱动电磁铁,然后Pi 3.3v的信号控制继电器的In脚应该能控制。

见下图说明,红色电源,蓝色信号:
5v_relay_control_small.png
您没有权限查看这个主题的附件。

回到 “天工开物”

在线用户

用户浏览此论坛: 没有注册用户 和 0 访客