树莓派3B+ 引脚图:
其中:
- 标注了数字的引脚都能够用作GPIO;
- 标注了其他名称的引脚也有一些其他特殊用途标注了其他名称的引脚也有一些其他特殊用途;
- SDA 和SCL 引脚构成I2C 接口;
- MOSI,MISO,SCKL 用于SPI 接口;
- GPIO 所有输入输出都使用3.3 V;
- GPIO 引脚可以被用作数字输入或数字输出,这两种操作电压都是3.3 V;
- 树莓派与Arduino 不同,其没有任何模拟输入,要进行模拟输入必须使用额外的模数转换器(ADC),或为其外接接口板,又或接到Arduino 或aLaMode 板上。
1. 保证安全
- 不要在GPIO 的任何引脚上加高于3.3 V 的电压;
- 每个输出不要引出超过3mA 的电流。否则会缩短树莓派寿命;
- 当树莓派在开机状态时,不要使用螺丝刀或其他金属物戳GPIO 接口;
- 不要使用高于5V 的电压为树莓派供电;
- 不要从3.3V 的供电引脚引出总额超过50mA 电流;
- 不要从5V 的供电引脚引出总额出超过250mA 的电流。
2. 安装PRi.GPIO
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
该库使用Python 封装原生C 代码的方式使IO 尽可能快。
3. 配置I2C
由于我使用的是Raspbian,所以我需要修改一些相应配置
编辑文件/etc/modules
:
sudo nano /etc/modules
文件末尾添加:
i2c-bcm2708
i2c-dev
再看看/etc/modprobe.d/raspi-blacklist.conf
这个文件中是否有如下这句话:
blacklist i2c-bcm2708
若有,则在其前面添加#
,将其注释
最后安装Python I2C 库:
sudo apt-get install python-smbus
重启即可使用I2C
4. 使用I2C Tools
安装并使用i2c-tools:
sudo apt-get install i2c-tools
将I2C 设备连接到树莓派上并运行命令:
sudo i2cdetect -y 1
若I2C 是可用的,则会出现I2C 设备地址图
i2cDetect 是一个诊断工具,适合在使用一个新的I2C 设备的第一时间运行它
5. 配置SPI
我使用的是Raspbian,故需要做一些相应的配置修改
编辑文件/etc/modules
:
sudo nano /etc/modules
文件末尾添加:
spidev
再看看/etc/modprobe.d/raspi-blacklist.conf
这个文件中是否有如下这句话:
blacklist spi-bcm2708
若有,则在其前面添加#
,将其注释
树莓派的SPI 特性也被Python 库所支持,该库允许在Python 程序中进行SPI 通信。要安装该库,首先安装Git:
cd ~
sudo apt-get install python-dev
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install
重启树莓派就能使用SPI 了
6. 释放串口
当不需要通过控制台线缆连接树莓派,而是通过wifi 或以太网连接时,可将串口释放,使得我们可以连接诸如GPS 等外围设备到串口:
sudo nano /etc/inittab
但我的树莓派根本就没有这个文件
找到这一行:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 VT100
并注释:
#TO:23:respawn:/sbin/getty -L ttyAMAO 115200 VT100
7. 安装PySerial 以从Python 访问串口
安装PySerial 库:
sudo apt-get install python-serial
库的使用非常容易,以下语法能够创建一个连接:
ser = serial.Serial(DEVICE, BAUD)
其中,DEVICE 是连接到串口的设备,BAUD 是数字表示的波特率,例如:
ser = serial.Serial('/dev/ttyAMA0', 9600)
一旦建立连接,即可发送数据:
ser.write('some text')
监听响应通常使用包含读取和打印的循环:
while True:
print(ser.read())
8. 安装Minicom 测试串口
安装Minicom:
sudo apt-get install minicom
Minicom 安装好后,可使用如下命令开启一个与连接到GPIO 接口的RXD 与TXD 引脚的串行设备之间的串行通信会话:
minicom -b 9600 -o -D /dev/ttyAMA0
-b 之后的参数表示波特率,-D 之后的是串口。
波特率应与要通信的设备所设置的波特率相同
该命令会开启一个Minicom 会话,此时要做的就是开启local echo,这样就可以看到输入的命令
按下Ctrl-A,然后再按Z
按下E,开启local echo
此时输入的任何内容都会被发送到串行设备,并且任何来自串行设备的内容也都会显示出来。
Minicom 在查看来自串行设备的消息或检查设备是否工作方面是一个非常不错的工具。