内容介绍
内容介绍
任务
利用NANO-33 BLE的传感器, 搭建一个小型环境监测站用于监测户外环境。待监测的参数包括:
-
周边环境温度(精度:±0.1°C, ±0.1°F)
-
周边环境湿度(精度:±1%)
-
大气压强(精度:±0.1kPa, ±0.1psi)
-
日照强度(用于判断白天/夜晚)
-
周边平均噪声(精度:±1dB)
Gsensor
-
APDS9960 距离颜色姿势传感器 用来判断白天/夜晚
-
LSM9DS1 九轴加速度重力传感器 -- 暂时没用上
-
HTS221 温湿度传感器 用来测量环境温湿度
-
LPS22HB 压力传感器 用来测量大气压强
-
MP334DT05- A 麦克风 用来判断噪音
核心库
Arduino_LPS22HB
Arduino_HTS221
Arduino_APDS9960
Adafruit_GFX
Adafruit_SSD1306
核心代码
// 硬件初始化
void hw_init(void){
Serial.begin(9600);
delay(1000);
//
if (!APDS.begin())
{
Serial.println("Error initializing APDS9960 sensor.");
while (1);
}
if (!BARO.begin())
{
Serial.println("Failed to initialize pressure sensor!");
while (1);
}
if (!HTS.begin()) {
Serial.println("Failed to initialize humidity temperature sensor!");
while (1);
}
// Configure the data receive callback PDM.onReceive(onPDMdata);
if (!PDM.begin(1, 16000))
{
Serial.println("Failed to start PDM!");
while (1);
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void setup() {
hw_init();
// clear display
display.clearDisplay();
display.display();
}
void loop() {
int r, g, b, a;
float pressure,f_temperature,c_temperature,humidity;
uint32_t sample;
//读取数据
pressure = BARO.readPressure();
f_temperature = HTS.readTemperature(FAHRENHEIT);
c_temperature = (f_temperature-32)/1.8;
humidity = HTS.readHumidity();
while ( APDS.colorAvailable())
{
APDS.readColor(r, g, b, a);
Serial.println("a:");
Serial.println(a);
}
while (!samplesRead);
{
uint32_t sample_max = 0;
for (int i = 0; i < samplesRead; i++)
{ if(sampleBuffer[i] < 0)
sampleBuffer[i] = -sampleBuffer[i];
if(sampleBuffer[i] > sample_max)
sample_max= sampleBuffer[i];
}
sample = 24log10(sample_max5);
}
samplesRead = 0;
//显示数据
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
if(a >= 3)
{
display.print(F("day "));
}else{
display.print(F("night "));
} display.print(sample);
display.println(F("dB")); //换行
display.print(c_temperature);
display.println(F("C")); //换行
display.print(humidity);
display.println(F("%")); //换行
display.print(pressure);
display.println(F("kPa"));//换行
display.display();
delay(1000); }
功能说明
传感器读取:
温度 湿度 大气压 噪音每1秒的间隔更新数据.
白天晚上,根据颜色传感器读取到的亮度值判断
如果高于3 认为是白天 如果小于认为是晚上.
屏幕显示:
I2C接口导出的OLED屏幕显示当前的数据
如下图所示
如下图所示
体会感受
感谢硬禾, 通过本次活动 ,发现Arduino的的易用性,和庞大的生态圈.
附件下载
demo.ino
团队介绍
评论
0 / 100
查看更多
猜你喜欢
Funpack第八期-Arduino nano 33 ble sense环境监测站Funpack第八期活动,用Arduino nano 33 ble sense板子做一个环境监测站,监测的数据有周边环境温度,湿度,大气压强,噪声。
xbreeze
1138
Funpack 第八期 Arduino Nano 33 BLE Sense 环境监测站使用Arduino Nano 33 BLE Sense检测环境参数,并通过OLED显示屏显示
tinysheeep
1449
Funpack第八期 Arduino Nano 33 BLE Sense 环境检测站本项目通过Arduino Nano 33 BLE Sense实现了小型环境监测站用于监测户外环境
initron
1422