arduino nano 33 ble 环境监测
利用本板卡最终实现了环境监测站的功能,即利用NANO-33 BLE的传感器,搭建一个小型环境监测站用于监测户外环境
标签
嵌入式系统
MPU
大风吹
更新2021-05-19
966

一.介绍用本板卡最终实现了什么功能

利用本板卡最终实现了环境监测站的功能,即利用NANO-33 BLE的传感器,搭建一个小型环境监测站用于监测户外环境。待监测的参数包括:

周边环境温度(精度:±0.1°C, ±0.1°F);

周边环境湿度(精度:±1%);

大气压强(精度:±0.1kPa, ±0.1psi);

日照强度(用于判断白天/夜晚);

周边平均噪声(精度:±1dB)。

二.各功能对应的主要代码片段及解释

温湿度通过HTS221传感器获得,大气压强通过LSP22传感器获得,光照强度通过APDS9960传感器获得,噪声通过数字式麦克风MP34DT06JTR获得的PCM数据根据噪声计算公式得到。通过一个外接的oled显示屏显示参数。

首先引入各项头函数,通过I2C接口接入OLED屏幕,在setup()中初始化U8G2以及各项传感器,在loop()函数中得到传感器具体数据,尤其是把PCM数据转化为以分贝为单位的噪音数据,本文采用了RMS结果取10倍的log值作为噪音分贝数,最后,在oled显示屏中显示结果。

三.结果说明

从图片中可以看出,在OLED屏幕上分别显示了气压Pre,温度Tem,湿度Hum,以及噪音Noi。

四.建议

个人觉得活动室很有意义的,通过活动认识了很多志同道合的朋友,对经典的arduino有了进一步的了解,两个任务难度适中,入门选手可以选择环境监测,进阶选手可以选择投篮,希望继续举办这样的活动!

Fux2pUd8QxnbG9UIFvQSW2klMjf4

#include <Arduino.h>
#include <U8g2lib.h>
#include <PDM.h>
#include <math.h>
#include <Arduino_LPS22HB.h> //Include library to read Pressure 
#include <Arduino_HTS221.h> //Include library to read Temperature and Humidity 
#include <Arduino_APDS9960.h> //Include library for colour, proximity and gesture recognition
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup(void) {
  u8g2.begin();
  u8g2.enableUTF8Print();
  Serial.begin(9600); //Serial monitor to display all sensor values 
  if (!BARO.begin()) //Initialize Pressure sensor 
  { Serial.println("Failed to initialize Pressure Sensor!"); while (1);}
  if (!HTS.begin()) //Initialize Temperature and Humidity sensor 
  { Serial.println("Failed to initialize Temperature and Humidity Sensor!"); while (1);}
  if (!APDS.begin()) //Initialize Colour, Proximity and Gesture sensor 
  { Serial.println("Failed to initialize Colour, Proximity and Gesture Sensor!"); while (1);}
  PDM.onReceive(onPDMdata);
  if (!PDM.begin(channels, frequency)) {Serial.println("Failed to start PDM!"); while (1);}
}

void loop(void) {

    float a = 0, sum = 0, dB = 0;
    if (samplesRead) {
    for (int i = 0; i < samplesRead; i++) {
      sum += sampleBuffer[i]*sampleBuffer[i];    
    }
    a = sum / samplesRead;
    dB = 10*log(a);
    u8g2.clearBuffer();          // clear the internal memory
  u8g2.setFont(u8g2_font_wqy15_t_gb2312a); 
  u8g2.setFontDirection(0);
  u8g2.setCursor(22, 14);
  u8g2.print("环境监测站");
  u8g2.setFont(u8g2_font_t0_11_tr); // 这里可以修改字体大小
  u8g2.drawStr(0,26,"Pre: ");
  u8g2.setCursor(30,24);  // write something to the internal memory
  u8g2.print(Pressure);
  u8g2.drawStr(70,24,"kPa");
  //u8g2.setFont(u8g_font_unifont);
  u8g2.drawStr(0,34,"Tem: ");
  u8g2.setCursor(30, 34); 
  u8g2.print(Temperature);
  u8g2.drawStr(70,28,".");
  u8g2.drawStr(72,34,"C");
  u8g2.drawStr(0,44,"Hum: ");
  u8g2.setCursor(30, 44); 
  u8g2.print(Humidity);
  u8g2.drawStr(70,44,"%");
  u8g2.drawStr(0,54,"lig: ");
  if (c > 10)
  {
    u8g2.drawStr(30,54,"day");
  }else
    u8g2.drawStr(30,54,"night");
  u8g2.drawStr(0,64,"noi: ");
  u8g2.setCursor(30, 64); 
  u8g2.print(dB);
  u8g2.drawStr(70,64,"dB");  
  u8g2.sendBuffer();  
}
团队介绍
邢庆龙
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号