树莓派检测不到i2c设备,树莓派温度监控
i2c工具工具安装
容易得到安装i2c工具
i2c工具包含如下命令:
I2C检测i2cdump i2cget i2cset
通过拉斯皮配置打开树莓派I2C,执行i2cdetect -l查看:
root @ raspberrypi:/opt # I2C检测-l
i2c-1 i2c 3f804000.i2c I2C适配器
查看I2C一号上所挂的设备信息:
root @ raspberrypi:/opt # I2C检测-y-r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: - - - - - - - - - - - - -
10: - - - - - - - - - - - - - - - -
20: - - - - - - - - - - - - - - - -
30: - - - - - - - - - - - - - - - -
40: 40 - - - - - - - - - - - - - - -
50: - - - - - - - - - - - - - - - -
60: - - - - - - - - - - - - - - - -
70: - - - - - - - -
地址40为温湿度传感器SHT20。
查看传感器信息:
root @ raspberrypi:/opt # I2C转储-f-y 10x 40
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:XX XX XX 69 XX 67 3a XX 06 XX XX XX XX XX 02 XXXiXg:X?XXXXX?
10:XX XX XX XX XX XX XX XX XX XX XX XX XX
其中寄存器0x03为温度值,寄存器0x05为湿度,可以使用i2cget命令单独获取:
root @ raspberrypi:/opt # I2C get-f-y 10x 400x 03
0x69
root @ raspberrypi:/opt # I2C get-f-y 10x 400x 05
0x67
写个大蟒脚本调用i2c工具获取温湿度:
#!/usr/开放的曲奇/pythonimport命令status_temp,temp _ reg=命令。getstatusoutput( I2C get-f-y 10x 400x 03 )status _ humd,humd _ reg=commands。getstatusoutput( I2C get-f-y 10x 400x 05 )print 寄存器temp:,temp_regprint 寄存器humd:,humd_regtemp_int=int(temp_reg,16)humd_int=int(humd_reg,16)temp=(temp_int8
保存为SHT20.py,执行:
root@raspberrypi:/opt/i2c# ./SHT20.py
寄存器温度:0x69
寄存器humd:0x68
当前温度=25.5041900635
相对湿度=44.9796142578
树莓派通过计算机编程语言操作I2C接口的库很多,常用的有smbus、quick2wire、wiringpi等。
使用wiringpi Python获取SHT20温湿度脚本如下:
#!/usr/开放的曲奇/python导入布线PID=布线pi。布线pii 2 c设置(0x 40)temp _ org=布线pi。接线pii 2 c读取寄存器8(FD,0x 03)humd _ org=接线pi。接线pii 2 c read reg 8(FD,0x 05)temp=(temp _ org 8) temp _ org humd=(humd _ org 8) humd _ orgT=-46.85 175.72/65536 * tempRH=-6.0 120