基于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-5VD0:SPI接口时为SPI时钟线,IIC接口时为IIC时钟线D1:SPI接口时为SPI时钟线,IIC接口时为IIC时钟线RES:ILED复位,OLED在上电后需要一次复位DC:SPI数据/命令选择脚,IIC接口时用来设IIC地址CS:OLED
SPI片选,低电平有效,如不想用必须接地
备注:OLED显示屏不同于LCD,OLED是自发光的,所以没有背光,在只加电源的情况下屏不会有任何反应,必须有程序正确操作才会有显示。BMP180气压传感器特点 压力范围:300-1100hPa(海报 500~9000米) 电源电压:1.8V-3.6V(VDDA),1.62V-3.6V(VDD),VIN 3.3V/5V LCC8封装:无铅陶瓷载体封装(LCC) 低功耗:5µA(标准模式) 高精度:在低功耗模式下,分分辨率为0.06hPa(0.5米) 高线性模式下,分辨率为0.03hPa(0.25米) 含温度输出 I2C接口 温度补偿 无铅,符合RoHS规范 MSL1反应时间:7.5ms 待机电流:0.1µA
无需外部时钟电路 什么是气压? 气压或大气压力来自地球上空气的重量,该压力在海平面约为每平方厘米1千克。
有几个单位表示大气压力,可以很容易地相互转换,用于测量压力的单位是帕斯卡(Pa)。
气压与海平面的高度具有近似线性的反比 海拔高度 海拔高度也称绝对高度,就是某地与海平面的高度差,通常以平均海平面做标准来计算,是表示地面某个地点高出海平面的垂直距离,海拔的起点叫海拔零点或水准零点是某一滨海地点的平均海水面,它是根据当地测潮站的多年记录,把海水面的位置加以平均而得出的。 地球表面海拔最高的地点:珠穆朗玛峰(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"));
|