内容介绍
内容介绍
任务目的:利用NANO-33 BLE的传感器,搭建一个小型环境监测站用于监测户外环境。待监测的参数包括:
· 周边环境温度(精度:±0.1°C, ±0.1°F)
· 周边环境湿度(精度:±1%)
· 大气压强(精度:±0.1kPa, ±0.1psi)
· 日照强度(用于判断白天/夜晚)
· 周边平均噪声(精度:±1dB)
这里我使用Arduino的开发环境进行开发,其中为了支持板子上的外设需要安装下面的包:
首先是设备的初始化代码
//初始化气压传感器
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
查看更多
猜你喜欢
Funpack第八期:基于Arduino Nano 33 BLE Sense的环境监测站Arduino公司最新推出的NANO 33 BLE是一款基于nRF52840 SoC ARM-32位处理器的微型开发板
德雷克
1210
Funpack 第八期-基于Arduino Nano 33 BLE的环境监测站Funpack 第八期-基于Arduino Nano 33 BLE的环境监测站
monnina
1045
Funpack 第八期 Arduino Nano 33 BLE Sense 环境监测站使用Arduino Nano 33 BLE Sense检测环境参数,并通过OLED显示屏显示
tinysheeep
1181