目录
前言
本文仅为学习笔记记录,内容多存在不严谨、不准确之处,请慎重参考
实验目的
本次学习是为了实现使用树莓派连接PCF8591实现温度、光照强度的获取
实验器材及环境
- 笔记本电脑一台(Windows系统);
- VNC远程登陆软件;
- 树莓派4b(需要安装smbus库);
- PCF8591模块一个;
- 杜邦线若干.
实验原理
- 根据PCF8591 HW-011模块的规格说明,其自带的光敏传感器为GL5528型光敏电阻器。根据GL5528光敏电阻器的规格说明,其灵敏度约为0.6 V/(lx),最大光照强度检测范围为100,000流明。因此,PCF8591 HW-011模块自带的GL5528型光敏电阻器可以检测比较强的光照强度,最大检测范围为100,000流明。
- PCF8591 HW-011模块自带的热敏传感器是一个10KΩ的NTC热敏电阻,用于检测温度。根据热敏电阻的规格说明,其温度检测范围一般为-50℃至+150℃,且检测精度和灵敏度会随着温度的变化而变化。因此,PCF8591 HW-011模块自带的热敏传感器最大能检测的温度范围为-50℃至+150℃
- 核心方法1,给定要读取的地址(address)并给定通道号(channel)
bus.write_byte(address, channel)
- 核心方法2,读取地址(address)所送的数据(0~255)
bus.read_byte(address)
实验过程
- 硬件连接
首先将PCF8591的SDA、SCL接口分别对应接到树莓派接口上,然后将VCC接到树莓派的3.3V或者5V输出,END随意接到树莓派的0V上即可.将模块上的J4 、J5:接上 短路帽,即为选择热敏电阻与光敏电阻接入电路;- 库的安装
通过VNC或者ssh登陆树莓派后在终端输入以下代码:pip install smbus
- 代码实现:
import smbus2 import time # PCF8591模块地址 address = 0x48 # 传感器通道 temp_channel = 0 light_channel = 1 def read_sensor(channel): with smbus2.SMBus(1) as bus: # 向PCF8591模块写入要读取的通道 bus.write_byte(address, channel) # 等待转换完成 time.sleep(0.5) # 读取转换结果 value = bus.read_byte(address) return value while True: # 读取温度传感器数值 temp_value = read_sensor(temp_channel) # 转换成摄氏度 # temperature = (1 - temp_value / 255)*200 - 50 temperature = temp_value - 205 # 读取光敏传感器数值 light_value = read_sensor(light_channel) # 转换成流明 # light_value = (1-light_value / 255.0)*100000 light_value = (1-light_value / 255.0)*1000 print("温度传感器数值:{:.2f} C".format(temperature)) print("光敏传感器数值:{:.2f} lm".format(light_value)) print("\n")
实验效果
总结
实验过程并不严谨,在对光敏传感器和热敏传感器所传数据进行转换时并没有找到相关资料。按道理来讲应该以原理1和原理2来决定计算公式,但经测试,发现读取数据转化为摄氏度和流明后非常离谱,而用上述方法得到的数据看起来比较合理,所以上述代码中两个计算方法仅供参考,实际测量值可能会有较大偏差。