找回密码
 立即注册

QQ登录

只需一步,快速开始

星原力教育科技 首页 创客工坊 查看内容

基于Arduino制作温度、压力和海拔高度测量仪

2020-5-19 09:38| 发布者: lou| 查看: 2403| 评论: 0

摘要: 基于Arduino制作温度、压力和海拔高度测量仪http://mk.xyuanli.com/source/plugin/micxp_mp4upload/data/4/ffd4b40d5ad8daa9f8797641950636b5_183.mp4在这个项目中,借助于arduino硬件、BMP180气压传感器、OLED显示 ...

基于Arduino制作温度、压力和海拔高度测量仪





在这个项目中,借助于arduino硬件、BMP180气压传感器、OLED显示屏和arduino软件 IDE,建立一个温度,压力和海拔高度测量系统并进行显示。



材料准备


主要用到的材料有,一块Arduino UNO R3开发板 ,一块气压传感器模型BMP180,用来检测温度,大气压力和海

拔高度,OLED显示屏用来显示计算的温度,压力和海拔高度,一个6V电池电源,用来给Arduino UNO主控板供电,若干钣金件和杜邦线。


UNO R3开发板)


OLED显示屏 12864液晶显示屏模块 II/SPI接口)


(带线盖开关5号电池盒)


BMP180气压传感器


杜邦线


硬件连接


Arduino UNO                       OLED显示屏

       5V             <------>             VCC

      GND           <------>             GND

      D13            <------>             SCL

      D11            <------>             SDA

      D8              <------>             RES

      D9              <------>             DC

      D10             <------>            CS


Arduino UNO                          BMP180气压传感器

       3.3V            <------>             VCC

       GND            <------>             GND

        A5              <------>             SCL

        A4              <------>             SDA


Arduino UNO                          带线盖开关5号电池盒

       5V                <------>           红色线正极    

      GND              <------>           黑色线负极


OLED显示屏使用方法


GND:电源地

VCC:电源正3-5V

D0SPI接口时为SPI时钟线,IIC接口时为IIC时钟线

D1SPI接口时为SPI时钟线,IIC接口时为IIC时钟线

RESILED复位,OLED在上电后需要一次复位

DCSPI数据/命令选择脚,IIC接口时用来设IIC地址

CSOLED SPI片选,低电平有效,如不想用必须接地

备注:OLED显示屏不同于LCDOLED是自发光的,所以没有背光,在只加电源的情况下屏不会有任何反应,必须有程序正确操作才会有显示。


BMP180气压传感器特点


压力范围:300-1100hPa(海报 500~9000米)

电源电压:1.8V-3.6VVDDA,1.62V-3.6VVDD,VIN 3.3V/5V

LCC8封装:无铅陶瓷载体封装(LCC

低功耗:5µA(标准模式)

高精度:在低功耗模式下,分分辨率为0.06hPa0.5米)

高线性模式下,分辨率为0.03hPa0.25米)

含温度输出

I2C接口

温度补偿

无铅,符合RoHS规范

MSL1反应时间:7.5ms

待机电流:0.1µA

无需外部时钟电路


什么是气压?


气压或大气压力来自地球上空气的重量,该压力在海平面约为每平方厘米1千克。

有几个单位表示大气压力,可以很容易地相互转换,用于测量压力的单位是帕斯卡(Pa)。


单位

1hPa当量

帕斯卡(Pa

100

大气压(atm

0.000986923

MilibarMBR

1

毫米汞柱(mmHg

0.750063755

英寸汞柱(inHg

0.02953

Torr(托)

0.750061683

/平方英寸(psi

0.014503774

牛顿每平方米(N /平方公尺)

100


气压与海平面的高度具有近似线性的反比



海拔高度


海拔高度也称绝对高度,就是某地与海平面的高度差,通常以平均海平面做标准来计算,是表示地面某个地点高出海平面的垂直距离,海拔的起点叫海拔零点或水准零点是某一滨海地点的平均海水面,它是根据当地测潮站的多年记录,把海水面的位置加以平均而得出的。

地球表面海拔最高的地点:珠穆朗玛峰8844.43米)

地球表面海拔最低的地点:马里亚纳海沟-11034米)


下载库文件


文件名:SFE_BMP180-master.zip

链接:https://pan.baidu.com/s/1ZxX3BRiI7-YvmbvS1YAbLA

提取码:gqyy


安装库文件


文件下载后无需解压,点击Arduino IDE菜单栏项目—加载库—添加.ZIP...



选择SFE_BMP180-master文件



示例程序


#include

#include

U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, 10, 9, 8);

#include

#define BMP180ADD 0xEE>>1  // I2C address of BMP180 

                            //write is (0xEE)     read is (0xEF)      

unsigned char OSS;                           

/**********************MSB      LSB******/

int ac1;           // 0xAA     0xAB

int ac2;           // 0xAC     0xAD

int ac3;           // 0xAE     0xAE

unsigned int ac4;  // 0xB0     0xB1

unsigned int ac5;  // 0xB2     0xB3

unsigned int ac6;  // 0xB4     0xB5

int b1;            // 0xB6     0xB7

int b2;            // 0xB8     0xB9

int mb;            // 0xBA     0xBB

int mc;            // 0xBC     0xBD

int md;            // 0xBE     0xBF

float temperature; 

double pressure;  

double pressure2;

long b5;         

double altitude;

void page1() {

  u8g2.setFont(u8g2_font_timR08_tf);

  u8g2.setFontPosTop();

  u8g2.setCursor(0,30);

  u8g2.print(String(String("Pressure: ") + String(pressure, 0)) + String(" Pa"));

 u8g2.setCursor(0,10);

  u8g2.print(String(String("Temperature: ") + String(temperature, 1)) + String(" C"));

  u8g2.setCursor(0,50);

  u8g2.print(String(String("altitude:") + String(altitude)) + String("m"));

路过
路过
雷人
雷人
握手
握手
鲜花
鲜花
鸡蛋
鸡蛋