Noduino BMP180

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(以“== 开发环境准备 == 根据您的系统,选择如下快速指南: * Getting Started with Noduino SDK on Linux * [[Getting Started with Noduino SDK on ...”为内容创建页面)
 
(硬件准备)
 
(未显示1个用户的2个中间版本)
第12行: 第12行:
 
== 硬件准备 ==
 
== 硬件准备 ==
  
 +
此传感器为 I2C 接口,Falcon 接线方式如下:
  
<br><br>
+
* Sensor_SCL --> Noduino_Falcon_D9
 +
* Sensor_SDA --> Noduino_Falcon_D8
  
 +
 +
* Sensor_3V3 --> Noduino_Falcon_3V3
 +
* Sensor_GND --> Noduino_Falcon_GND
 +
 +
 +
NodeC / SmartNode 接线方式如下:
 +
 +
* Sensor_SCL --> SmartNode_IO5
 +
* Sensor_SDA --> SmartNode_IO4
 +
 +
 +
* Sensor_3V3 --> SmartNode_3V3
 +
* Sensor_GND --> SmartNode_GND
 +
 +
<br><br>
  
 
== 编译烧写 ==
 
== 编译烧写 ==
第92行: 第109行:
  
 
<source lang=cpp>
 
<source lang=cpp>
 +
#include "noduino.h"
 +
#include "bmp180.h"
 +
 +
irom void setup()
 +
{
 +
serial_begin(115200);
 +
 +
if (!bmp180_begin()) {
 +
serial_print("Could not find a valid BMP180 sensor,\
 +
check wiring!\r\n");
 +
 +
while (1) {}
 +
}
 +
}
 +
 
 +
irom void loop()
 +
{
 +
char obuf[16];
 +
double t = 0, p = 0;
 +
 +
bmp180_startTemperature();
 +
delay(15);
 +
bmp180_getTemperature(&t);
 +
 +
dtostrf(t, 16, 2, obuf);
 +
serial_printf("Temperature = \t\t%s C\r\n", obuf);
 +
 +
bmp180_startPressure(1);
 +
delay(15);
 +
bmp180_getPressure(&p, &t);
 +
 +
dtostrf(p, 16, 2, obuf);
 +
serial_printf("Pressure = \t\t%s mbar\r\n", obuf);
 +
 +
dtostrf(bmp180_sealevel(p, 50), 16, 2, obuf);
 +
 +
// Calculate altitude assuming 'standard' barometric
 +
// pressure of 1013.25 millibar = 101325 Pascal
 +
serial_printf("Pressure at sealevel (calculated) = %s mbar\r\n", obuf);
 +
 +
// you can get a more precise measurement of altitude
 +
// if you know the current sea level pressure which will
 +
// vary with weather and such. If it is 1015 millibars
 +
// that is equal to 101500 Pascals.
 +
dtostrf(bmp180_altitude(p, bmp180_sealevel(p, 50)), 16, 2, obuf);
 +
serial_printf("Real altitude = \t%s M\r\n\r\n", obuf);
  
 +
delay(3000);
 +
}
 
</source>
 
</source>
  

2016年11月14日 (一) 10:29的最后版本

目录

[编辑] 1 开发环境准备

根据您的系统,选择如下快速指南:




[编辑] 2 硬件准备

此传感器为 I2C 接口,Falcon 接线方式如下:

  • Sensor_SCL --> Noduino_Falcon_D9
  • Sensor_SDA --> Noduino_Falcon_D8


  • Sensor_3V3 --> Noduino_Falcon_3V3
  • Sensor_GND --> Noduino_Falcon_GND


NodeC / SmartNode 接线方式如下:

  • Sensor_SCL --> SmartNode_IO5
  • Sensor_SDA --> SmartNode_IO4


  • Sensor_3V3 --> SmartNode_3V3
  • Sensor_GND --> SmartNode_GND



[编辑] 3 编译烧写

进入你的 bmp180 目录:

$ cd /PATH/TO/noduino-sdk/examples/noduino/bmp180


编译、上传一步完成:

$ make flash

不同平台下,你的串口设备号可能不一样,确认一下你的串口设备,Linux 下 Falcon 开发板可能被识别为 /dev/ttyUSB1(dmesg 查看),则:

$ make flash ESPPORT=/dev/ttyUSB1


Windows 下 Falcon 开发板可能被识别为 COM6(控制面板 --> 设备管理器里查看),则:

$ make flash ESPPORT=COM6



[编辑] 4 查看结果

上传完之后,用串口工具,用 115200 的波特率打开串口,即可看到串口在持续输出传感器测得的值:


Windows 下可用串口调试助手这类插看


Linux 下推荐使用 picocom:

$ sudo apt-get install picocom
$ picocom -b 115200 /dev/ttyUSB1
picocom v1.7

port is        : /dev/ttyUSB2
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready

......
......


Ctrl + a q 退出 picocom




[编辑] 5 代码示例

#include "noduino.h"
#include "bmp180.h"

irom void setup()
{
	serial_begin(115200);

	if (!bmp180_begin()) {
		serial_print("Could not find a valid BMP180 sensor,\
						check wiring!\r\n");

		while (1) {}
	}
}
  
irom void loop()
{
	char obuf[16];
	double t = 0, p = 0;
	
	bmp180_startTemperature();
	delay(15);
	bmp180_getTemperature(&t);

	dtostrf(t, 16, 2, obuf);
	serial_printf("Temperature = \t\t%s C\r\n", obuf);

	bmp180_startPressure(1);
	delay(15);
	bmp180_getPressure(&p, &t);

	dtostrf(p, 16, 2, obuf);
	serial_printf("Pressure = \t\t%s mbar\r\n", obuf);

	dtostrf(bmp180_sealevel(p, 50), 16, 2, obuf);

	// Calculate altitude assuming 'standard' barometric
	// pressure of 1013.25 millibar = 101325 Pascal
	serial_printf("Pressure at sealevel (calculated) = %s mbar\r\n", obuf);

	// you can get a more precise measurement of altitude
	// if you know the current sea level pressure which will
	// vary with weather and such. If it is 1015 millibars
	// that is equal to 101500 Pascals.
	dtostrf(bmp180_altitude(p, bmp180_sealevel(p, 50)), 16, 2, obuf);
	serial_printf("Real altitude = \t%s M\r\n\r\n", obuf);

	delay(3000);
}




[编辑] 6 扩展阅读

更多问题参考:








个人工具
名字空间

变换
操作
导航
工具箱