5798|8

1万

帖子

25

TA的资源

版主

楼主
 

【MicroPython】读取小钢炮的HTS221传感器 [复制链接]

 

小钢炮开发板带有HTS221温湿度传感器,这个温湿度传感器和STH22/si7002不同,不能直接读取温度和湿度,需要通过插值进行计算。

下面是我写的HTS221驱动,可以通过函数直接读取温度和湿度常数。
  1. # HTS221 Humidity and temperature micropython drive
  2. # Author: shaoziyang
  3. # 2016.4

  4. import pyb
  5. from pyb import I2C

  6. HTS_I2C_ADDR = 0x5F

  7. class HTS221(object):
  8.     def __init__(self, i2cn):
  9.         self.i2c = I2C(i2cn, I2C.MASTER, baudrate = 100000)
  10.         # HTS221 Temp Calibration registers
  11.         self.T0_OUT = self.get2Reg(0x3C)
  12.         self.T1_OUT = self.get2Reg(0x3E)
  13.         if self.T0_OUT>=0x8000 :
  14.             self.T0_OUT -= 65536
  15.         if self.T1_OUT>=0x8000 :
  16.             self.T1_OUT -= 65536
  17.         t1 = self.getReg(0x35)
  18.         self.T0_degC = (self.getReg(0x32) + (t1%4)*256)/8
  19.         self.T1_degC = (self.getReg(0x33)+ ((t1%16)/4)*256)/8
  20.         # HTS221 Humi Calibration registers
  21.         self.H0_OUT = self.get2Reg(0x36)
  22.         self.H1_OUT = self.get2Reg(0x3A)
  23.         self.H0_rH = self.getReg(0x30)/2
  24.         self.H1_rH = self.getReg(0x31)/2
  25.         # set av conf: T=4 H=8
  26.         self.setReg(0x81, 0x10)
  27.         # set CTRL_REG1: PD=1 BDU=1 ODR=1
  28.         self.setReg(0x85, 0x20)
  29.    
  30.     def setReg(self, dat, reg):
  31.         buf = bytearray(2)
  32.         buf[0] = reg
  33.         buf[1] = dat
  34.         i2c = self.i2c
  35.         i2c.send(buf, HTS_I2C_ADDR)
  36.         
  37.     def getReg(self, reg):
  38.         i2c = self.i2c
  39.         i2c.send(reg, HTS_I2C_ADDR)
  40.         t = i2c.recv(1, HTS_I2C_ADDR)
  41.         return t[0]
  42.    
  43.     def get2Reg(self, reg):
  44.         a = self.getReg(reg)
  45.         b = self.getReg(reg + 1)
  46.         return a + b * 256

  47.     def av(self, av=''):
  48.         i2c = self.i2c
  49.         if av != '':
  50.             #buf = bytearray(2)
  51.             #buf[0] = 0x10;
  52.             #buf[1] = av;
  53.             #i2c.send(buf, HTS_I2C_ADDR)
  54.             self.setReg(av, 0x10)
  55.         else:
  56.             #i2c.send(0x10, HTS_I2C_ADDR)
  57.             #t = i2c.recv(1, HTS_I2C_ADDR)
  58.             #return t[0]
  59.             return self.getReg(0x10)
  60.    
  61.     def T0_OUT(self):
  62.         return self.T0_OUT

  63.     def T1_OUT(self):
  64.         return self.T1_OUT

  65.     def T0_degC(self):
  66.         return self.T0_degC

  67.     def T1_degC(self):
  68.         return self.T1_degC

  69.     # calculate Temperature
  70.     def getTemp(self):
  71.         t = self.get2Reg(0x2A)
  72.         return self.T0_degC + (self.T1_degC - self.T0_degC) * (t - self.T0_OUT) / (self.T1_OUT - self.T0_OUT)

  73.     def H0_OUT(self):
  74.         return self.H0_OUT
  75.    
  76.     def H1_OUT(self):
  77.         return self.H1_OUT
  78.         
  79.     def H0_rH(self):
  80.         return self.H0_rH
  81.         
  82.     def H1_rH(self):
  83.         return self.H1_rH

  84.     # calculate Humidity
  85.     def getHumi(self):
  86.         t = self.get2Reg(0x28)
  87.         return self.H0_rH + (self.H1_rH - self.H0_rH) * (t - self.H0_OUT) / (self.H1_OUT - self.H0_OUT)
  88.         
复制代码



先将hts221.py复制到小钢炮的PYFLASH磁盘,然后就可以使用函数读取温度湿度
  1. PYB: sync filesystems
  2. PYB: soft reboot
  3. MicroPython v1.7 on 2016-04-17; CANNON with STM32F401xE
  4. Type "help()" for more information.
  5. >>> from hts221 import HTS221
  6. >>> hts=HTS221(1)
  7. >>> hts.getTemp()
  8. 22.95221
  9. >>> hts.getHumi()
  10. 82.62943
  11. >>>
复制代码




最新回复

@dcexpert   有没时间做个 w5500的spi驱动啊   这样micopython的板子  应用面将大大增加  详情 回复 发表于 2017-2-15 13:50
点赞 关注
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
这个程序也演示了I2C的用法。
 
 
 

回复

162

帖子

5

TA的资源

一粒金砂(中级)

板凳
 
支持一下哦
 
 
 

回复

104

帖子

0

TA的资源

一粒金砂(中级)

4
 
给力,速度很快啊,我最近在看如何把这些驱动集成到micropython里。
 
 
 

回复

2774

帖子

8

TA的资源

版主

5
 
原来是shaoziyang 大侠……
 
 
 

回复

1

帖子

2

TA的资源

一粒金砂(初级)

6
 
很好的 资料   现在正在找这个 资料呢  谢谢
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

7
 
@dcexpert   有没时间做个 w5500的spi驱动啊   这样micopython的板子  应用面将大大增加

点评

这是官方的驱动文件 https://github.com/micropython/micropython/tree/master/drivers/wiznet5k  详情 回复 发表于 2017-2-15 15:36
官方的驱动文件中,其实已经有w5500和w5200,但是还没有试过。我这里也没有w5500的模块,暂时也测试不了。等有机会我研究一下。  详情 回复 发表于 2017-2-15 15:35
 
 
 

回复

1万

帖子

25

TA的资源

版主

8
 
ddfox2009 发表于 2017-2-15 13:50
@dcexpert   有没时间做个 w5500的spi驱动啊   这样micopython的板子  应用面将大大增加

官方的驱动文件中,其实已经有w5500和w5200,但是还没有试过。我这里也没有w5500的模块,暂时也测试不了。等有机会我研究一下。
 
 
 

回复

1万

帖子

25

TA的资源

版主

9
 
ddfox2009 发表于 2017-2-15 13:50
@dcexpert   有没时间做个 w5500的spi驱动啊   这样micopython的板子  应用面将大大增加

这是官方的驱动文件

https://github.com/micropython/m ... er/drivers/wiznet5k
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表