任务介绍
本次的任务都是运动控制和一些与运动相关的传感器采集,不过传感器的范畴还是非常大的,其中占比很大的一类就是环境状态采集,在课程中也提到了这一类,我们本次的目标也是想要做一个类似的传感器模块,由于不属于具体要求的任务之一,那么就算是自定义的吧,不过相关的要求还是和其他任务相关联,模块尽可能做小小一点,相关传感器在得捷是有售的,做接口,我们在得捷官网进行了查看,发现qwiic接口越来越普及,很多开发板都直接支持,所以这里我们也选用qwiic,然后再找一个传感器进行相关的模块设计。
硬件介绍
本次用的主要芯片是博世公司推出的BME280传感器,BME280是博世(bosch-sensortec)的一款专为移动应用和可穿戴设备开发的湿度传感器,尺寸和低功耗是关键的设计参数。该装置结合了高线性度和高精度传感器,可完美实现低电流消耗、长期稳定性和高 EMC 稳健性。湿度传感器提供极快的响应时间,因此可满足新兴应用的性能要求,例如情境感知和宽温度范围内的高精度。BME280压力湿度温度传感器实现了高性能的温度压力湿度检测,包括有压力、温度、湿度3个传感器。湿度传感器具有极快的响应时间,可满足新兴应用的性能要求,例如环境感知和宽温度范围内的高精度。压力传感器是绝对气压传感器,具有极高的精度和分辨率,噪音极低。集成的温度传感器经过优化,噪音极低,分辨率高。它主要用于压力和湿度传感器的温度补偿,也可用于估算环境温度。BME280压力温度传感器采用了小巧的8引脚LGA封装形式。
模块介绍
本次设计的传感器模块基于博世公司推出的BME280传感器为核心构建,模块的主要功能是输出压力、温度、湿度,主要是通过qwiic接口进行通信,数字接口为IIC。
整体的思路是尽量使用更少的器件和更小的体积,BME280芯片封装还是非常小的,供电电压是3.3V。
模块的整体框图没有太特别的,简单的就下面几部分:
原理图和PCB模块介绍
原理图

PCB

3D效果图

实物图
测试调试
本模块通过IIC接口进行控制,为了快速验证硬件的可行性,我们采用的是arduino的方式进行,选择任何一款都能快速验证,下载对应的库,然后观察打印的输出就可以了,代码如下:
#include <Arduino.h>
#include <BME280_Arduino_I2C.h>
BME280_Arduino_I2C bme;
void setup() {
Serial.begin(9600);
// Initialize BME280_Arduino_I2C library
if (bme.begin() == 0) {
Serial.println("BME280 initialized");
} else {
/*
Returning code 1: Wire is not available
Returning code 2: Device has not been found
*/
Serial.println("BME280 failed to initialize");
}
}
void loop() {
// Read measurements from the sensor
BME280Data* data = bme.read();
// Check if data is received. If data could not be received, data would be a null pointer
if (data != nullptr) {
Serial.print("> Temperature (C): ");
Serial.println(data->temperature);
Serial.print("> Humidity (%): ");
Serial.println(data->humidity);
Serial.print("> Pressure (Pa): ");
Serial.println(data->pressure);
}
delay(1000);
}
串口数据反应的就是当前环境的参数,26℃的温度正好是当前屋内的温度,也说明空调调节的还是挺准的(空调设定的就是26℃):

心得体会
本次的模块是设计BME280的环境参数采集模块,设计上就是采集的环境参数,还是挺准的,通过自己设计焊接,尤其是在尽量小的尺寸内进行,还是挺有挑战的(传感器好小),不过这次的模块却也是很有用的,感谢论坛的活动和得捷的大力支持!