|
本帖最后由 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
- ...
复制代码
驱动文件下载
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|