Fastbond智能建筑之室内环境监测终端
采用AHT20,BMP380及DS18B20传感器,基于feather形状的板卡,与adafruit的控制板连接后实现室内温湿度和气压,并且支持外部节点温度检测(通过外接防水测温探头)和传感器扩展(iic)
标签
嵌入式系统
Lucheni
更新2021-10-21
1023

简介

FqsqRXnbFIJu-qGFs6jYIsv8OMlG

Adafruit为众多的MCU设计了Feather系列板卡,为传感器设计了Wing系列子板,此系列板卡采用通用的对外引脚设计,编译不同的固件后,可以在Arduino及CircuitPython上实现代码的通用。这大概也是Adafruit对开源硬件的祝福:Make feathers fly.
本次设计的传感器主板采用了feather板卡的形状设计,实现了板载温湿度气压测量,支持使用外接防水探头进行关键节点的温度测量,不仅如此,还板载了外接的i2c接口(sh1.0 4p),可以用于串联更多基于i2c的传感器。


硬件介绍:

Fq-qQKwk1rjcdSbmLaSL3h-ychH0

外置温度传感器:DS18B20(美信)
板载温湿度传感器:AHT20
板载气压传感器:BMP390
LDO芯片:ADP150AUJZ-3.3(ADI)


开发软件介绍

采用Arduino IDE开发
PCB基于立创EDA绘制

原理图简介

FrdoX2_OQcZ8eUTy1e3pj35Ot2r2

供电:可切换usb或外接电池供电,采用ADI的ADP150AUJZ-3.3芯片进行降压,ADP150是一款超低噪声的CMOS低压差线性稳压器,提供150mA的输出电流。

外接温度检测:外接测温采用MAXIM的18B20

Frf6NcAXLC2X5UnGzWBRssvOFuzy
板载温湿度检测:采用AHT20温湿度传感器,价格便宜但精度依旧非常可观,此传感器的唯一缺点是仅有一个I2C地址,若需要扩展的话需要外接I2C扩展芯片。

FuyegHUYAUXPNETdnMh3FIs29sgH
板载气压传感器:BMP390传感器的相对精度为3帕斯卡,相当于约±0.25米的高度,同时也可以用于测温,精度为±0.5°C 。

实现效果

1)室内温湿度气压数据显示

Fsu7E7F_khnm_BVA91UC8wAt3xue

2)外接温度传感器温度显示

FuZCmwuN226RhqYvXde7o5LJhhtk

 

未来展望

这次的设计最大的遗憾是CCS811传感器并没有调通,且因为时间紧张,并没有在扩展板上板载tft显示屏幕,未来希望能设计单块扩展板直接完成环境监测和显示功能。

 

附代码

#include <SPI.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include <Adafruit_AHTX0.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP3XX.h"
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
#define BUTTON_A 15
#define BUTTON_B 32
#define BUTTON_C 14
#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS     1000
#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BMP3XX bmp;
 
PulseOximeter pox;
uint32_t tsLastReport = 0;

Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);

Adafruit_AHTX0 aht;

int co2;
int md=1;
int hrt,spo;

#define BUS 4
OneWire onewire(BUS);
DallasTemperature sensors(&onewire);

void setup() {
  Serial.begin(9600);
  //while (!Serial);
  pinMode(BUTTON_A, INPUT_PULLUP);
  pinMode(BUTTON_B, INPUT_PULLUP);
  Serial.println("128x64 OLED FeatherWing test");
  display.begin(0x3C, true); // Address 0x3C default
  Serial.println("OLED begun");
  display.setRotation(1);
  display.setFont(&FreeSans9pt7b);
  if (aht.begin()) {
    Serial.println("Found AHT20");
  } else {
    Serial.println("Didn't find AHT20");
  }  

  display.setTextSize(1);
  display.setTextColor(SH110X_WHITE);  

  if (!bmp.begin_I2C()) 
  {   // hardware I2C mode, can pass in address & alt Wire
    Serial.println("Could not find a valid BMP3 sensor, check wiring!");
  }
  bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
  bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
  bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
  bmp.setOutputDataRate(BMP3_ODR_50_HZ);
  sensors.begin();
}

void loop() {
  if(!digitalRead(BUTTON_A)) md=1;
  if(!digitalRead(BUTTON_B)) md=2;
  if (! bmp.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }
  sensors.requestTemperatures();
  
  if (md==1)
  {
    display.clearDisplay();
    sensors_event_t humidity, temp;
  
    aht.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
    display.setCursor(0,20);
    display.print("Temp: "); display.print(temp.temperature); display.println(" C");
    display.setCursor(0,40);
    display.print("Hum: "); display.print(humidity.relative_humidity); display.println(" %");
    Serial.print("Temperature: ");Serial.print(temp.temperature);Serial.println(" degrees C");
    Serial.print("Pressure: ");Serial.print(humidity.relative_humidity);Serial.println(" RH %");
    display.setCursor(0,60);
    display.print("Pres: "); display.print(bmp.pressure / 100.0); display.println(" ");
    Serial.print("Pressure = ");  Serial.print(bmp.pressure / 100.0);  Serial.println(" hPa");
    
    yield();
    display.display();
//    delay(100);
  }
  if (md==2)
  {

    display.clearDisplay();
    display.setCursor(0,30);
    display.print("Temp: "); display.println(sensors.getTempCByIndex(0)); 
    
    yield();
    display.display();
  }
}
软硬件
电路图
附件下载
fastbond__2.ino
团队介绍
个人开发者,喜欢功能强大、尺寸小巧、扩展性强的板卡
团队成员
Lucheni
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号