内容介绍
内容介绍
一、板卡介绍
Arduino公司最新推出的NANO 33 BLE是一款基于nRF52840 SoC ARM-32位处理器的微型开发板,其主控芯片集成了蓝牙低功耗(BLE)。NANO 33 BLE不仅保留了与经典款NANO同样的尺寸与管脚,且在此基础上配有多种高性能传感器(角速度,加速度,压力,温湿度,距离,光感,姿态)等,在实现完全兼容的条件下增加了无限多种的组合玩法,可以迅速实现并验证转瞬即逝的灵感火花,是一款所有创客都梦寐以求的伴侣。
二、任务介绍
利用NANO-33 BLE的传感器,搭建一个小型环境监测站用于监测户外环境。待监测的参数包括:
· 周边环境温度(精度:±0.1°C, ±0.1°F)
· 周边环境湿度(精度:±1%)
· 大气压强(精度:±0.1kPa, ±0.1psi)
· 日照强度(用于判断白天/夜晚)
· 周边平均噪声(精度:±1dB)
三、代码功能讲解
首先是本次项目所用到的库函数:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Arduino_HTS221.h>
#include <PDM.h>
#include <Arduino_LPS22HB.h>
#include <math.h>
#include <Arduino_APDS9960.h>
接下来是各个传感器的初始化
void setup() {
//初始化I2C
Wire.begin();
//初始化oled
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
//初始化温湿度传感器
HTS.begin();
//初始化音频传感器
PDM.onReceive(onPDMdata);
PDM.begin(channels, frequency);
//初始化压力传感器
BARO.begin();
//初始化颜色传感器
APDS.begin();
}
由于使用的0.96的OLED屏幕,无法一次性将信息显示完整,需要分两次显示出来
void display_sensor1(){
delay(1500);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
displaytemperaturehumidity();
displaynoise();
}
void display_sensor2(){
delay(1500);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
displayPressure();
displaycolor();
}
接下来是各个传感器模块函数
温湿度传感器:
void displaytemperaturehumidity(){
float temperature = HTS.readTemperature();
float humidity = HTS.readHumidity();
display.setCursor(0,0);
display.print("Temperature: ");
display.print(temperature);
display.print(" C");
display.setCursor(0,10);
display.print("Humidity: ");
display.print(humidity);
display.print(" h");
}
噪声传感器:
void displaynoise(){
int sum = 0;
float simple = 0;
for (int i = 0; i < samplesRead; i++) {
sum += sampleBuffer[i] * sampleBuffer[i];
}
simple = 20 * log10(sum / samplesRead);
display.setCursor(0,20);
display.print(simple);
display.print(" db");
samplesRead = 0;
}
void onPDMdata() {
// Query the number of available bytes
int bytesAvailable = PDM.available();
// Read into the sample buffer
PDM.read(sampleBuffer, bytesAvailable);
// 16-bit, 2 bytes per sample
samplesRead = bytesAvailable / 2;
}
大气压强传感器:
void displayPressure(){
float pressure = BARO.readPressure();
display.setCursor(0,0);
display.print(pressure);
display.print(" kPa");
}
环境光传感器:
void displaycolor(){
if (APDS.proximityAvailable()) {
proximity = APDS.readProximity();
}
if (APDS.colorAvailable()) {
APDS.readColor(r, g, b, c);
}
if (millis() - lastUpdate > 100) {
display.setCursor(0,10);
lastUpdate = millis();
if(c < 30){
display.print("night");
}
else{
display.print("day");
}
}
}
四、实物展示
五、心得体会
通过本次Funpack活动,切身体会了Arduino的生态,了解了Arduino的开发过程,能过快速将想法变为现实,尤其是在一些在一些需要单片机电路中,可以快速的进行搭建,以后我还将积极参与funpack的接下来的其他活动。
附件下载
weather.ino
团队介绍
团队成员
德雷克
评论
0 / 100
查看更多
猜你喜欢
Funpack第八期-Arduino nano 33 ble sense环境监测站Funpack第八期活动,用Arduino nano 33 ble sense板子做一个环境监测站,监测的数据有周边环境温度,湿度,大气压强,噪声。
xbreeze
898
Funpack第八期 — Arduino Nano 33 BLE Sense 环境监测站利用 Arduino Nano 33 BLE Sense 的板载传感器,搭建一个小型环境监测站用于监测户外环境,待监测的参数包括温湿度、大气压强、日照强度、周边平均噪声等信息。
枫雪天
1148
Funpack 第八期 Arduino Nano 33 BLE Sense 环境监测站使用Arduino Nano 33 BLE Sense检测环境参数,并通过OLED显示屏显示
tinysheeep
1181