使用MQ2气体传感器模块,为的下一个Arduino项目带来更多的气体。这是一个强大的气体传感器适用于感测LPG,烟雾,酒精,丙烷,氢气,甲烷和碳一氧化碳在空气中的浓度。如果您打算创建一个室内空气质量监测系统;呼吸检查器或早期火灾探测系统,MQ2气体传感器模块是一个不错的选择。
MQ2气体传感器可在5V DC上工作,功耗约800mW。它可以检测LPG,烟,酒,丙烷,氢气,甲烷和碳一氧化碳浓度的任何地方从200至10000PPM。
将模块上的D0输出引脚连接到Arduino上的数字引脚8,将模块上的A0输出引脚连接到Arduino上的模拟引脚0。
代码非常简单,基本上只读取A0引脚上的模拟电压。当检测到烟雾时,它还会在串行监视器上打印一条消息。
#define MQ2pin (0)
float sensorValue; //variable to store sensor value
void setup()
{
Serial.begin(9600); // sets the serial port to 9600
Serial.println("Gas sensor warming up!");
delay(20000); // allow the MQ-6 to warm up
}
void loop()
{
sensorValue = analogRead(MQ2pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
if(sensorValue > 300)
{
Serial.print(" | Smoke detected!");
}
Serial.println("");
delay(2000); // wait 2s for next reading
}
传感器的整个感应范围为±3 g。它可以测量倾斜感应应用中由于重力引起的静态加速度,以及由于运动,冲击或振动而产生的动态加速度。
该传感器的工作电压为1.8V至3.6VDC(最佳3.3V),通常仅消耗350μA的电流。但是,板载3.3V稳压器使其成为与Arduino等5V微控制器接口的理想选择。
这款面包板友好型电路板将ADXL335的每个引脚都分为6引脚,0.1英寸间距接头。其中包括3个用于X,Y和Z轴测量的模拟输出,2个电源引脚和一个自测引脚,可让在最终应用中检查传感器的功能。
它仅在串行接口的每个轴上显示已校准的传感器输出。
const int xInput = A0;
const int yInput = A1;
const int zInput = A2;
// initialize minimum and maximum Raw Ranges for each axis
int RawMin = 0;
int RawMax = 1023;
// Take multiple samples to reduce noise
const int sampleSize = 10;
void setup()
{
analogReference(EXTERNAL);
Serial.begin(9600);
}
void loop()
{
//Read raw values
int xRaw = ReadAxis(xInput);
int yRaw = ReadAxis(yInput);
int zRaw = ReadAxis(zInput);
// Convert raw values to 'milli-Gs"
long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
long zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);
// re-scale to fractional Gs
float xAccel = xScaled / 1000.0;
float yAccel = yScaled / 1000.0;
float zAccel = zScaled / 1000.0;
Serial.print("X, Y, Z :: ");
Serial.print(xRaw);
Serial.print(", ");
Serial.print(yRaw);
Serial.print(", ");
Serial.print(zRaw);
Serial.print(" :: ");
Serial.print(xAccel,0);
Serial.print("G, ");
Serial.print(yAccel,0);
Serial.print("G, ");
Serial.print(zAccel,0);
Serial.println("G");
delay(200);
}
// Take samples and return the average
int ReadAxis(int axisPin)
{
long reading = 0;
analogRead(axisPin);
delay(1);
for (int i = 0; i < sampleSize; i++)
{
reading += analogRead(axisPin);
}
return reading/sampleSize;
}
这是一个专为测量大气压力而设计的基本传感器,对两件事确实很有用。
当我们从海平面到山顶旅行时,气压会降低。这意味着通过测量压力,我们可以确定高度。因此,我们可以将此传感器用作高度计。
因为大气压随天气变化,所以我们可以用它来监测天气的变化。
VCC 是模块的电源,可以在3.3V至5V之间的任何范围内。
地线 应该连接到Arduino的地面。
SCL 是I2C接口的串行时钟引脚。
SDA 是I2C接口的串行数据引脚。
从BMP180模块读取温度和气压
#include <Wire.h>
#include <Adafruit_BMP085.h>
#define seaLevelPressure_hPa 1013.25
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(seaLevelPressure_hPa * 100));
Serial.println(" meters");
Serial.println();
delay(500);
}