3.2 树莓派上使用wiringPi库
wiringPi是一个用C语言编写的库,用于访问树莓派上用于BCM2835(Broadcom处理器)SoC(片上系统)的GPIO引脚。
目前在网络上有许多的库可以访问GPIO,例如bcm2835、sysfs、pigpio等。在这里,使用wiringPi库对树莓派的GPIO进行访问。
由于官方系统已经使用Pi Zero的库来访问GPIO,而wiringPi的库由于开发者的个人原因已经被废弃(但是它依然可以很好地驱动GPIO引脚),因此当我们在第一次初始化系统后,在终端中输入下面命令的时候会出现一个错误提示信息,如图3-1所示。
gpio readall
图3-1 wiringPi错误提示信息
提示信息的意思是无法检测板子的类型,说明系统默认安装的wiringPi的库是有bug的,因此需要将原有的wiringPi的库卸载并下载安装最新的库。
◆ 卸载已有的库,直接在终端中输入下列命令,如图3-2所示。
sudo apt-get –y remove wiringpi
或者
sudo apt -y purge wiringpi
图3-2 卸载wiringPi
◆ 清空记录中的程序位置信息,如图3-3所示。
hash –r
图3-3 清空记录
◆ 下载最新的wiringPi库,并存放在/tmp目录下,然后执行安装,如图3-4所示。
cd /tmp wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb
图3-4 安装最新的wiringPi库
然后可以尝试用gpio-v命令进行测试,可以看到版本信息,如图3-5所示。
图3-5 wiringPi版本信息
这样就已经识别出当前树莓派的版本信息了,即树莓派4 Model B Rev 1.4,并且wiringPi库已经安装完成,可以支持使用gpio readall命令与其提供的有效头文件进行编程使用了。
◆ 验证安装是否正确。
在终端执行gpio readall命令将得到GPIO引脚信息,如图3-6所示。
图3-6 GPIO引脚信息
树莓派引脚的命名方式有三种,即Physical、BCM和wPi。Physical(物理)命名方式是按照40只引脚的实际排列顺序编号的,非常直观;BCM命名方式是依据BCM处理器对引脚的定义而来的;wPi命名方式是基于wiringPi库而定义的。每个引脚对应着其引脚名称,例如,物理引脚1对应着Name栏中的3.3V,说明这个引脚是一个电源脚,并对外提供3.3V的电源;物理引脚12对应着GPIO.1,并且在wiringPi库中的命名为1,对应的BCM命名编号为18。
Mode栏用来说明当前引脚的模式。其中,OUT表示输出,即这个引脚的方向是输出方向,也就是说,信号从树莓派内部通过GPIO向外输出;而IN则正好相反。树莓派可以通过编程来获取GPIO引脚上的电平信号,并加以判断即可与物理设备完成通信。当然,这里是一个广义的通信,具体的通信还可以通过不同的协议来实现。