内容介绍
内容介绍
简介
Adafruit为众多的MCU设计了Feather系列板卡,为传感器设计了Wing系列子板,此系列板卡采用通用的对外引脚设计,编译不同的固件后,可以在Arduino及CircuitPython上实现代码的通用。这大概也是Adafruit对开源硬件的祝福:Make feathers fly.
本次设计的传感器主板采用了feather板卡的形状设计,实现了板载温湿度气压测量,支持使用外接防水探头进行关键节点的温度测量,不仅如此,还板载了外接的i2c接口(sh1.0 4p),可以用于串联更多基于i2c的传感器。
硬件介绍:
外置温度传感器:DS18B20(美信)
板载温湿度传感器:AHT20
板载气压传感器:BMP390
LDO芯片:ADP150AUJZ-3.3(ADI)
开发软件介绍
采用Arduino IDE开发
PCB基于立创EDA绘制
原理图简介
供电:可切换usb或外接电池供电,采用ADI的ADP150AUJZ-3.3芯片进行降压,ADP150是一款超低噪声的CMOS低压差线性稳压器,提供150mA的输出电流。
外接温度检测:外接测温采用MAXIM的18B20
板载温湿度检测:采用AHT20温湿度传感器,价格便宜但精度依旧非常可观,此传感器的唯一缺点是仅有一个I2C地址,若需要扩展的话需要外接I2C扩展芯片。
板载气压传感器:BMP390传感器的相对精度为3帕斯卡,相当于约±0.25米的高度,同时也可以用于测温,精度为±0.5°C 。
实现效果
1)室内温湿度气压数据显示
2)外接温度传感器温度显示
未来展望
这次的设计最大的遗憾是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
查看更多
猜你喜欢
FastBond主题五:智能建筑FastBond是硬禾学堂联合Digi-Key发起的,为期三个半月的“你创意,我买单”活动。项目五主题为“智能建筑”,赶紧用推荐的芯片来搭建这个项目吧!
Miya
3454
FastBond环境监测之mini室内环境监测仪使用RSL10开发板实现了采集环境数据并通过低功耗蓝牙将采集数据传输到智能手机微信小程序,系统使用美信MAX1551EZK实现太阳能锂电池充电管理,ADI公司的ADP150AUJZ-3.3实现锂电池4.2V转3.3V供电。
eelover
1629
FastBond环境监测之室内环境检测参加FastBond,购买美信和adi的产品,并使用pico 设计扩展板进行驱动设计,主要实现温度开关监控、电源降压输入、oled驱动、甲醛模块数据解析、DTH11模块数据解析
xinshuwei
1344