烽火社区
标题:
读取小e开发板上的BMP180传感器
[打印本页]
作者:
yinglin
时间:
2016-7-2 04:35 PM
标题:
读取小e开发板上的BMP180传感器
本帖最后由 shaoziyang 于 2016-7-2 16:36 编辑
小e开发板上带有BMP180气压传感器,使用micropython,可以很方便的读取传感器参数。
首先BMP180驱动,然后就可以直接读取。
from bmp180 import BMP180
b=BMP180(2,14)
b.getTemp()
b.getPress()
b.getAltitude()
复制代码
BMP180的micropython驱动
import machine, time
from machine import I2C, Pin
BMP180_I2C_ADDR = const(0x77)
class BMP180():
def __init__(self, pSDA, pSCL):
self.i2c = I2C(scl=Pin(pSCL), sda=Pin(pSDA), freq = 100000)
self.AC1 = self.short(self.get2Reg(0xAA))
self.AC2 = self.short(self.get2Reg(0xAC))
self.AC3 = self.short(self.get2Reg(0xAE))
self.AC4 = self.get2Reg(0xB0)
self.AC5 = self.get2Reg(0xB2)
self.AC6 = self.get2Reg(0xB4)
self.B1 = self.short(self.get2Reg(0xB6))
self.B2 = self.short(self.get2Reg(0xB8))
self.MB = self.short(self.get2Reg(0xBA))
self.MC = self.short(self.get2Reg(0xBC))
self.MD = self.short(self.get2Reg(0xBE))
self.UT = 0
self.UP = 0
self.B3 = 0
self.B4 = 0
self.B5 = 0
self.B6 = 0
self.B7 = 0
self.X1 = 0
self.X2 = 0
self.X3 = 0
def short(self, dat):
if dat > 32767:
return dat - 65536
else:
return dat
def setReg(self, dat, reg):
buf = bytearray(2)
buf[0] = reg
buf[1] = dat
self.i2c.writeto(BMP180_I2C_ADDR, buf)
def getReg(self, reg):
buf = bytearray(1)
buf[0] = reg
self.i2c.writeto(BMP180_I2C_ADDR, buf)
t = self.i2c.readfrom(BMP180_I2C_ADDR, 1)
return t[0]
def get2Reg(self, reg):
a = self.getReg(reg)
b = self.getReg(reg + 1)
return a*256 + b
def measure(self):
self.setReg(0x2E, 0xF4)
time.sleep_ms(5)
self.UT = self.get2Reg(0xF6)
self.setReg(0x34, 0xF4)
time.sleep_ms(5)
self.UP = self.get2Reg(0xF6)
def getTemp(self):
self.measure()
self.X1 = (self.UT - self.AC6) * self.AC5/(1<<15)
self.X2 = self.MC * (1<<11) / (self.X1 + self.MD)
self.B5 = self.X1 + self.X2
return (self.B5 + 8)/160
def getPress(self):
self.getTemp()
self.B6 = self.B5 - 4000
self.X1 = (self.B2 * (self.B6*self.B6/(1<<12))) / (1<<11)
self.X2 = (self.AC2 * self.B6)/(1<<11)
self.X3 = self.X1 + self.X2
self.B3 = ((self.AC1*4+self.X3) + 2)/4
...
复制代码
驱动文件下载
[attach]31273[/attach]
作者:
求教
时间:
2016-7-2 04:35 PM
使用前,需要将两个蓝色的短路块连上。
SCL = GPIO14
SDA = GPIO2
欢迎光临 烽火社区 (https://bbs.cnecport.com/)
Powered by Discuz! X3.2