Funpack第八期-基于Arduino Nano 33 BLE Sense的环境监测站
参加funpack第八期活动 购买了Arduino nano 33 ble sensor,学习了一波,然后分享出来
标签
嵌入式系统
liuliuliu
更新2021-05-20
862

根据要求完成如下任务:

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

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

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

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

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

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


并通过对开发板外接显示屏显示采集到的数据。

 

我所使用显示屏幕是 ssd1306 SPI 接口的 OLED 屏幕,显示采集到的环境数据。

 

本次实现功能的主要代码如下所示

 

初始化传感器、OLED 显示屏相关函数:

//初始化相关配置
   u8g2.begin();   //选择U8G2模式,或者U8X8模式
   u8g2.enableUTF8Print(); 
//配置串口  
   Serial.begin(9600);
   PDM.setGain(20);
   PDM.onReceive(onPDMdata);
   
//初始化麦克风传感器   
  if (!PDM.begin(channels, frequency)) {
    Serial.println("PDM 启动失败\r\n");
    while (1);
  }

//初始化温湿度传感器
  if (!HTS.begin()) {
    Serial.println("无法初始化湿度温度传感器\r\n");
    while (1);
  }
  
//初始化环境光照传感器  
  if (!APDS.begin()) {
    Serial.println("初始化APDS-9960传感器时出错\r\n");
  }
  
//初始化压力
  if (!BARO.begin()) {
    Serial.println("无法初始化压力传感器\r\n");
    while (1);
  }

 

下边是采集到的传感器值并进行显示:

// 读取光照传感器的值

  while (! APDS.colorAvailable()) {

    delay(5);

  }

  int r, g, b;

  APDS.readColor(r, g, b);

  float gray = 0.3*r+0.6*g+0.1*b;  //计算光照值




 // 读取温湿度传感器的值

  float temperature = HTS.readTemperature();

  float humidity    = HTS.readHumidity();










  u8g2.clearBuffer();         // 清除内部缓冲区                                                                                                                                                                                       

  //使用个GB2312 字体

  u8g2.setFont(u8g2_font_wqy12_t_gb2312a ); // choose a suitable font




//光照值大于 20 就显示白天

 if (int(gray) > 20 )

 {

    u8g2.setCursor(0,12);

    u8g2.print("day!");

 }

 //否则就显示晚上

  else

  {

    u8g2.setCursor(0,12);

    u8g2.print("night!");

  }







  // 显示温度传感器的值

  u8g2.setCursor(0,25);

  u8g2.print("temp  = ");

   u8g2.print(temperature);

   u8g2.print("°C");

   

  // 显示湿度传感器的值

  u8g2.setCursor(0,35);

  u8g2.print("Humiy = ");

  u8g2.print(humidity);

  u8g2.print("%");




  // 显示气压传感器值

  float pressure = BARO.readPressure();

   u8g2.setCursor(0,45);

   u8g2.print("pres  = ");

   u8g2.print(pressure);

   u8g2.print("kPa");

  







//读取声音传感器的值

  dB = get_sam();

   u8g2.setCursor(0,55);

   u8g2.print("dB    = ");

   u8g2.print(dB);

   u8g2.print("dB");

 

活动的心得体会:作为一个嵌入式开发人员,熟练掌握Arduino开发技能是必须的,这也是我参加本次活动的初衷;当然对这次的开发学习的过程来说,用 Arduino 硬件可以快速搭建原型,并用于测试、验证,这点对嵌入式工程师来说,太友好了,给 Arduino 点个赞。

 

意见:希望 Funpack 活动,多出一些基础并有趣的活动,这样小白可以快速入门参与进来,老鸟可以学习一些新的东西。

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