这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【BEAGLEBONEBLKREVCAM3358BZCZ】试用——I2C读取温湿

共2条 1/1 1 跳转至

【BEAGLEBONEBLKREVCAM3358BZCZ】试用——I2C读取温湿度计

工程师
2026-03-06 10:48:25     打赏

今天尝试在BeagleBone Black开发板上通过I2C总线读取SHT30温湿度传感器。

1、安装i2c-tools包:

sudo apt-get install i2c-tools

image.png

image.png

可以看见系统中有两个I2C总线。这里使用I2C-2总线,对应管脚为P9的17、18两个管脚。

2、连接好硬件:0620d14fc2c4e873518c35d7ec0a8425.jpg

将SHT30模块,通过杜邦线连接到BeagleBone Black开发板上。通过i2c-tools工具可查询到地址信息。

image.png

3、编程读取温湿度信息。

接下来使用python来读取SHT30的温湿度信息。首先安装smb库

sudo apt-get install python3-smbus

然后编写代码来与SHT30进行通讯。

# @Author    :Aramy  
# 温湿度计,使用SHT30  
  
import time  
import smbus  
BUS = smbus.SMBus(2)  
addr=0x44  
  
# sht30  
def read_value():  
    BUS.write_byte_data(addr,0xe0,0x0)  
    time.sleep(1)  
    data = BUS.read_i2c_block_data(addr,0x0,6)   
    rawT = ((data[0]) << 8) | (data[1])  
    rawR = ((data[3]) << 8) | (data[4])  
    temp = -45 + rawT * 175 / 65535  
    RH = 100 * rawR / 65535  
    return temp,RH  
   
def init_sht30():  
    try:  
        BUS.write_byte_data(addr,0x23,0x34)  
        time.sleep(0.5)  
    except:  
        return False  
    else:  
        return True          
  
if __name__ == '__main__':  
    init_sht30()  
    while True:  
        temp,rh=read_value()  
        strtemp="温度:{:.1f}".format(temp)  
        strrh="湿度:{:.1f}".format(rh)  
        print(strtemp,'  ',strrh)  
        time.sleep(1)

成功读取到温湿度信息。

image.png


院士
2026-03-06 15:05:28     打赏
2楼

真棒!

简单,快速


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]