Funpack第八期-基于Arduino Nano 33 BLE的环境监测站
使用Arduino Nano 33 BLE设计的环境监测站,可用于用于监测户外环境
标签
嵌入式系统
冷月烟
更新2021-04-21
1151

内容介绍

任务目的:利用NANO-33 BLE的传感器,搭建一个小型环境监测站用于监测户外环境。待监测的参数包括:

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

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

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

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

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

 

这里我使用Arduino的开发环境进行开发,其中为了支持板子上的外设需要安装下面的包:

FrmDNw6JkRrp08MzlOkHXnTP0HJ5

 

首先是设备的初始化代码

//初始化气压传感器
BARO.begin();

//初始化温度湿度传感器
HTS.begin();

//初始化颜色传感器
APDS.begin();

//初始化声音传感器
PDM.onReceive(onPDMdata);
PDM.begin(1, 16000);

//初始化oled
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();

 

麦克采集的数据是声音原始数据,并不是分贝。这里我使用采集当前一段时间的最大的声压级,进行转换得到分贝,代码如下:

//计算分贝
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];
}
uint32_t sample = 24*log10(sample_max*5); //转换分贝
samplesRead = 0;

 

显示部分代码如下:

display.clearDisplay(); //清空屏幕
display.setCursor(0,0); //设置起点
display.setTextSize(2); //设置字体
display.setTextColor(SSD1306_WHITE); //设置字体颜色

//显示温度
display.println(temperature);
display.drawBitmap(60,0,c_16x16,16,16,WHITE);

//显示湿度
display.print(humidity);
display.println(F("%"));

//显示气压
display.print(pressure);
display.println(F("kPa"));

//显示分贝
display.print(sample);
display.print(F("dB"));

//显示光暗
if(a>2)
display.print(F(" day"));
else
display.print(F(" night"));

display.display(); //刷新屏幕

 

心得体会:第一次使用Arduino环境进行开发,对它的外设以及整合程度的完整程度感到很震撼,感觉体会到了一点Arduino火爆的原因。

附件下载

程序.ino

团队介绍

团队成员
冷月烟

评论

0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号