Python开发板DIY小型家庭气象站的方法是什么
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"Python开发板DIY小型家庭气象站的方法是什么",在日常操作中,相信很多人在Python开发板DIY小型家庭气象站的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2024年09月22日Python开发板DIY小型家庭气象站的方法是什么
这篇文章主要介绍"Python开发板DIY小型家庭气象站的方法是什么",在日常操作中,相信很多人在Python开发板DIY小型家庭气象站的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python开发板DIY小型家庭气象站的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
BMP180是一直常见的气压传感器,BMP180是一款高精度、小体积、超低能耗的压力传感器,可以应用在移动设备中,它的性能卓越,精度最低可以达到0.03hPa,并且耗电极低,只有3μA;BMP180采用强大的8-pin陶瓷无引线芯片承载(LCC)超薄封装,可以通过I2C总线直接与各种微处理器相连。
BMP180实物图
硬件接线图
TPYBoard v702 | BMP180 |
3.3V | VIN |
GND | GND |
Y9 | SCL |
Y10 | SDA |
效果展示图
连接完毕后,将font.py,upcd8544.py与bmp180的库导入,就可以通过以下方法分别读取温度、气压、海拔高度了。
导入需要的类库,编辑好main.py,直接运行就ok了,下面是main.py的程序源码
# main.py -- put your code here!import pybimport upcd8544from machine import SPI,Pinfrom ubinascii import hexlifyfrom ubinascii import *from bmp180 import BMP180bmp=BMP180(2)SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK#DIN =>SPI(1).MOSI 'X8' data flow (Master out, Slave in)#CLK =>SPI(1).SCK 'X6' SPI clockRST = pyb.Pin('X20')CE = pyb.Pin('X19')DC = pyb.Pin('X18')LIGHT = pyb.Pin('X17')lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)while True: tem=bmp.getTemp() press=bmp.getPress() altitude=bmp.getAltitude() lcd_5110.lcd_write_string('Tem:',0,0) lcd_5110.lcd_write_string(str(tem),0,1) lcd_5110.lcd_write_string('C',65,1) lcd_5110.lcd_write_string('Press:',0,2) lcd_5110.lcd_write_string(str(press),0,3) lcd_5110.lcd_write_string('Pa',65,3) lcd_5110.lcd_write_string('Hight:',0,4) lcd_5110.lcd_write_string(str(altitude),0,5) lcd_5110.lcd_write_string('M',65,5)bmp180.py库的源码import pybfrom pyb import I2CBMP180_I2C_ADDR = const(0x77)class BMP180(): def __init__(self, i2c_num): self.i2c = I2C(i2c_num, I2C.MASTER, baudrate = 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.send(buf, BMP180_I2C_ADDR) def getReg(self, reg): buf = bytearray(1) buf[0] = reg self.i2c.send(buf, BMP180_I2C_ADDR) t = self.i2c.recv(1, BMP180_I2C_ADDR) 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) pyb.delay(5) self.UT = self.get2Reg(0xF6) self.setReg(0x34, 0xF4) pyb.delay(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 self.X1 = self.AC3 * self.B6 / (1<<13) self.X2 = (self.B1 * (self.B6*self.B6/(1<<12))) / (1<<16) self.X3 = (self.X1 + self.X2 + 2)/4 self.B4 = self.AC4 * (self.X3 + 32768)/(1<<15) self.B7 = (self.UP-self.B3) * 50000 if self.B7 < 0x80000000: p = (self.B7*2)/self.B4 else: p = (self.B7/self.B4) * 2 self.X1 = (p/(1<<8))*(p/(1<<8)) self.X1 = (self.X1 * 3038)/(1<<16) self.X2 = (-7357*p)/(1<<16) p = p + (self.X1 + self.X2 + 3791)/16 return p def getAltitude(self): p = self.getPress() return (44330*(1-(p/101325)**(1/5.255))) def get(self): t = [] t.append(self.getPress()) t.append(self.getAltitude()) t.append(self.getTemp()) return t
到此,关于"Python开发板DIY小型家庭气象站的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
方法
家庭
气象
气象站
开发
学习
传感器
可以通过
更多
气压
源码
帮助
卓越
实用
强大
最低
接下来
压力
只有
实物
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
丹东市网络安全指挥中心在哪
天津网络技术基础
深圳小牛软件开发公司
电石生产数据库
昆明学软件开发的中专学校
我的世界管理服务器教学
内网服务器和ip地址
河源卫星软件开发
手机通话显示未连接服务器
辽宁计算机网络技术排行
安装2000数据库报错
全岛互联网科技
树索引数据库语句
桐庐都敏达软件开发有限公司
英业达k900服务器管理
俄乌冲突引发全球网络安全
如何用pb构建数据库
软件开发安全建设
东莞市鼎信网络技术有限公司
湛江专业软件开发市价
手把手教你安装电影服务器
方巨网络技术有限公司官网
本地机房怎样和云服务器连接
北邮数据库与云存储
数据库建立关系表
网络技术是由什么形成
脑卒中基因数据库
虚拟机 云服务器
服务器最早品牌
成都inspur服务器经销商