树莓派体验12 - 树莓派I2C接口获取温湿度

2023-11-08

i2c-tools工具安装

apt-get install i2c-tools

i2c-tools包含如下命令:

i2cdetect  i2cdump    i2cget     i2cset

通过raspi-config打开树莓派I2C,执行i2cdetect -l查看:

root@raspberrypi:/opt# i2cdetect -l
i2c-1   i2c             3f804000.i2c                            I2C adapter

查看I2C-1上所挂的设备信息:

root@raspberrypi:/opt# i2cdetect -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# i2cdump -f -y 1 0x40
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX 69 XX 67 3a 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 XX XX XX    XXXXXXXXXXXXXXXX

其中寄存器0x03为温度值,寄存器0x05为湿度,可以使用i2cget命令单独获取:

root@raspberrypi:/opt# i2cget -f -y 1 0x40 0x03
0x69
root@raspberrypi:/opt# i2cget -f -y 1 0x40 0x05
0x67

写个python脚本调用i2c-tools获取温湿度:

#!/usr/bin/python
import commands
status_temp,temp_reg=commands.getstatusoutput('i2cget -f -y 1 0x40 0x03')
status_humd,humd_reg=commands.getstatusoutput('i2cget -f -y 1 0x40 0x05')
print "Register temp:",temp_reg
print "Register humd:",humd_reg
temp_int = int(temp_reg,16)
humd_int = int(humd_reg,16)

temp = (temp_int<<8)|temp_int
humd = (humd_int<<8)|humd_int
T=-46.85 + 175.72/65536*temp
RH=-6.0+125.0/65536*humd
print "Current Temperature=",T
print "Relative Humidity=",RH

保存为SHT20.py,执行:

root@raspberrypi:/opt/i2c# ./SHT20.py
Register temp: 0x69
Register humd: 0x68
Current Temperature= 25.5041900635
Relative Humidity= 44.9796142578

树莓派通过Python操作I2C接口的库很多,常用的有smbus、quick2wire、wiringpi等。

使用wiringpi Python 获取SHT20温湿度脚本如下:

#!/usr/bin/python
import wiringpi
fd=wiringpi.wiringPiI2CSetup(0x40)
temp_org=wiringpi.wiringPiI2CReadReg8(fd,0x03)
humd_org=wiringpi.wiringPiI2CReadReg8(fd,0x05)

temp = (temp_org<<8)|temp_org
humd = (humd_org<<8)|humd_org
T=-46.85 + 175.72/65536*temp
RH=-6.0+125.0/65536*humd
print "Current Temperature=",T
print "Relative Humidity=",RH


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派体验12 - 树莓派I2C接口获取温湿度 的相关文章

  • Linux进程间通信(IPC)的几种方式

    概述 进程间通信 IPC Inter Process Communication 指至少两个进程或线程间传送数据或信号的一些技术或方法 进程是计算机系统分配资源的最小单位 进程是分配资源最小的单位 而线程是调度的最小单位 线程共用进程资源

随机推荐

  • 淘宝下单时结算显示美金,解决办法

    在亲 若您在淘宝下单时结算显示美金 说明您的所在地区和支付方式设置结算方式为国际货币 你可以通过完成以下3个步骤修改为人民币支付 1 我的淘宝 右上方 设置 通用 国家 地区 选择非中国大陆的其他区域 确保步骤2中的 国际支付设置 可显示出
  • (干货)记前端工程师面试题,一起带大家理一理

    此文是上篇 如何拿到大厂offer面试题 技术征文 下 更新下剩下题目及答题思路 1 请简单描述http协议的请求报文和响应报文的组成格式 HTTP请求报文 一个HTTP请求报文由请求行 request line 请求头部 header 空
  • GET获取表单数据的方法

    两种最常被用到的方法是 GET 和 POST 关于GET请求 GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据
  • Java 7:Java集合从不懂到更不懂,不信来看

    集合 1 集合关系网 关系网 数组 Arrays asList就成了List 接口Collection 3个分支 List Set Queue List两个分支 Sequential 代表作是LinkedList 和RandomAccess
  • 第十五课 状语从句

    文章目录 前言 一 时间状语从句 时间状语从句 主语 谓语 宾语 或者 主语 谓语 宾语 时间状语从句 时间状语从句 主语 系动词 表语 或者 主语 系动词 表语 时间状语从句 1 when while as 引导的时间状语从句 when
  • 中标麒麟系统安装达梦数据库

    前言 近期 参加达梦公司组织的DCA认证培训 在中标麒麟下安装DM8数据库 以下是安装笔记 一 安装DM数据库 1 服务器信息查看 root localhost uname r 3 10 0 957 el7 x86 64 root loca
  • WordBias

    目录 WordBias 安装 界面 案例1 极端主义 案例2 pretty beautifull 论文 词嵌入做为一种词向量模型 可以从文本中计算出隐含的上下文情景信息 态度及偏见 通过词向量距离的测算 就可以间接测得不同群体对某概念 组织
  • 软件工程毕业设计选题c语言,经典软件工程专业论文选题 软件工程专业论文题目选什么比较好...

    100道 关于经典软件工程专业论文选题汇总 作为大学生的毕业生应该明白了软件工程专业论文题目选什么比较好 选一个好的题目后续的软件工程专业论文写作起来会更轻松 一 比较好写的软件工程专业论文题目 1 面向软件工程专业的 算法设计与分析 课程
  • python的exec函数

    exec 是 Python 内置的一个函数 用于在运行时执行动态生成的 Python 代码 它以字符串形式接收一个代码块 并将其编译并执行为可执行的 Python 代码 exec 函数的语法如下 exec object globals No
  • Android控件之AutoCompleteTextView、MultiAutoCompleteTextView探究

    在Android中提供了两种智能输入框 它们是AutoCompleteTextView MultiAutoCompleteTextView 它们的功能大致一样 显示效果像Google搜索一样 当你在搜索框里输入一些字符时 至少两个字符 会自
  • 【商业知识】中国消费者洞察

    文章目录 一 市场 中国消费市场已进入复苏期 二 政策 政策不断优化消费环境 三 社会 消费者逐步步入正确消费时代 四 品牌 科普专业知识 加深消费者对技术力的感知 五 电商直播 提供源头优质产品 提高生活质量 六 信息平台 科学消费和内容
  • C++ 模板特化

    我们不可能写出对所有类型都适合的模板 某些情况下 通用模板定义对于某个类型可能是完全错误的 这个时候我们需要编写比模板函数更有效率的函数 这就是模板特化 思考一个例子 编写比较函数的泛型函数模板 template
  • 使用IDEA打不开setting怎么解决?

    问题 汉化IDEA后 怎么打不开setting 解决办法 在关闭idea的条件下 使用解压软件打开汉化包 打开不是解压哦 将其messages文件夹内的 IdeBundle properties 系统设置 setting 外观选项加载不出来
  • 建立实体类和数据库映射(注解)

    1 建立实体类和数据库映射 Select select from user Results id resultMap value Result id true property userId column id Result propert
  • 服务器中勒索病毒了

    非常重要的一点 备份好数据 异地备份
  • 多版本node的安装与切换详细操作

    多版本node的安装与切换详细操作 安装多版本node的原因 方法一 利用nvm进行管理 NVM 简介 安装前须知 卸载已安装的nodeJS nvm 的安装与使用 node 的不同版本安装及切换 方法二 通过配置环境变量 切换node时只需
  • LeetCode刷题指南(一)

    以下是我个人做题过程中的一些体会 1 LeetCode的题库越来越大 截止到目前 已经有321个问题了 对于大多数人来说 没有时间也没有必要把所有题目都做一遍 时间充裕可以随意 刷个100题左右应该就差不多了 可以考虑序号为前100多的题目
  • js编程题总结

    lazyman 实现一个LazyMan 可以按照以下方式调用 LazyMan Hank 输出 Hi This is Hank LazyMan Hank sleep 10 eat dinner 输出 Hi This is Hank 等待10秒
  • QT常见错误及解决方法

    1 error header was not declared in this scope 在使用此变量之前没有对其进行定义 2 error RtlWerpReportException failed with status code 10
  • 树莓派体验12 - 树莓派I2C接口获取温湿度

    i2c tools工具安装 apt get install i2c tools i2c tools包含如下命令 i2cdetect i2cdump i2cget i2cset 通过raspi config打开树莓派I2C 执行i2cdete