
现在我们已经逐渐熟悉了树莓派,我们就可以用它来做一些简单的实验了!
在数字传感器中,我们最常用的就是I2C通信的传感器,I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。
下面是树莓派的引脚图,我们先只用了解I2C引脚就行了。
在使用树莓派的I2C引脚之前,我们需要先使能I2C引脚,
sudo raspi-config
按动图中的步骤就可以完成使能~
使能I2C后,不需要重启树莓派就可以使用。
一般来说,I2C传感器有VCC,GND,SDA,SCL这4个接口,我们需要将这4个接口接在上图树莓派的3,4,5,6引脚上。
现在我们开始在树莓派上调试~
首先,我们应先安装I2C库和工具
sudo apt-get install i2c-tools
安装成功后,我们输入下面的指令:
sudo i2cdetect -y -a 1
这个指令的目的有两个,首先是为了确认I2C使能成功,能与传感器正常通信,其次是为了扫描I2C设备的地址,方便我们下一步操作。
读取I2C设备的数据
sudo i2cdump -y 1 0x68
-
-y代表取消用户交互过程,直接执行命令 -
1代表I2C设备号 -
0x68代表I2C设备地址
读出的是0x68这个地址的设备各个寄存器的数据
写入数据
sudo i2cset -y 1 0x68 0x1a 0x55
-
1代表I2C设备号 -
0x68代表I2C设备地址 -
0x1a代表寄存器地址 -
0x55代表向寄存器写入的数据
读取寄存器数据
sudo i2cget -y 1 0x68 0x1a
-
1代表I2C设备号 -
0x68代表I2C设备地址 -
0x1a代表寄存器地址
I2C编程
上述方法是在指令层面的I2C通信,现在我们进入编程环节~
在本教程中,我们主要学习Python作为树莓派的编程语言,因此我们也只为大家介绍Python的I2C编程。
首先我们要安装smbus库,
sudo pip install smbus
接下来我们来学习使用smbus库。
下面的代码用了最常用的四个smbus库的方法~
import smbus
import time
i2cbus= smbus.SMBus(1)
data=bus.read_byte_data(addr,reg)
print(data)
bus.write_byte_data(addr,reg,0x99)
#对16位数据的读写
data=bus.read_word_data(addr,reg)
print(data)
bus.write_word_data(addr,reg,0x01d6)
#读写列表
data=bus.read_i2c_block_data(addr,reg)
print(data[0])
buffer=[0x24,0x26]
bus.write_i2c_block_data(addr,reg,buffer)
打开python环境,将上述代码逐行输入,每输入一行都可以看到运行结果(#后面的可以不用输入)
也可以将代码输入后缀为.py的Python脚本中,运行脚本就能看到I2C读取结果了!
硬件军火库
点击了解详情👆
大家有什么想法,或是对文章的指正,都欢迎在下方留言!
学有余力的小伙伴,可以点击阅读原文,到社区继续学习!
往期回顾
点击阅读👆

