今天为大家带来的是来自Hackster创作者Mondal3011的作品:可以检测困倦的海绵宝宝.这个装置主要是使用二氧化碳传感器去进行二氧化碳浓度测试,通过识别二氧化碳来判断环境是否会造成人体困倦。通常,房间里的高 CO2 会导致嗜睡。当房间里的 CO2 水平上升时,这个海绵宝宝会变得困倦,这样你就可以打开窗户了!
硬件
Seeed Studio XIAO ESP32S3 Sense
Mq135
跳线
丝杆电机
M4螺栓
软件
Arduino IDE
JLCPCB易达
最近,你可能注意到自己在课堂上感到很困。也许你并不觉得课程无聊,而且晚上睡得很好,所以这不是原因。经过一些在线研究(主要是通过 Google 和 ChatGPT),你发现这种困倦可能是由于教室里积累了过多的二氧化碳。这让人觉得有道理,因为最近天气很冷,教室的门窗大部分时间都关着。
同样的问题也可能出现在你的宿舍。当你学习时,可能会感到昏昏欲睡,因为一直关着窗户,导致房间内二氧化碳浓度过高。于是,你想出了一个创意,制作一个看起来很酷且直观易懂的 CO2 监测器!这个监测器的设计灵感来源于海绵宝宝,眼睑会根据二氧化碳水平的变化而上下移动,显示他有多困。当 CO2 水平较低时,海绵宝宝的眼睛会睁得大大的,眼睑高高翘起;随着二氧化碳浓度的升高,眼睑会逐渐降低。如果眼睛完全闭上,意味着房间里的二氧化碳浓度过高,你最好让一些新鲜空气进来!
该项目的主要组件是 MQ135 空气质量传感器和小 esp32 微控制器。该装置还包含 5 个霍尔效应传感器,每个传感器都映射到特定的 CO2 ppm 水平。电机通过 L293D 电机驱动器 IC 连接到微控制器。该电机是一种 DIY 丝杆电机,可根据旋转方向上下移动眼睑。眼睑的长端包含一个磁铁,霍尔传感器可以检测到该磁铁。微控制器读取 MQ135 传感器的模拟输出,并通过一些数学运算将其转换为 CO2 ppm 水平。这是在特定的持续时间内完成的(在我的代码中为 5 分钟),并且 ppm 值是该持续时间的平均值。然后,微控制器打开丝杆电机,直到磁体位于霍尔传感器前面,该传感器对应于相同的 ppm(在容差范围内)。这样眼睑就会移动以匹配 ppm 水平。
对于这个项目,决定设计一个 PCB 并组装起来是个很好的选择。尽管之前没有过这样的经验,但这正是一个探索新领域的机会。许多创作者在 Instructables 和 YouTube 上展示了他们自己的 PCB 制作过程,这为这个项目提供了很好的灵感和指导。
使用 EasyEDA 设计电路和 PCB 是一个不错的选择。虽然可能还有其他更优秀的工具,但 EasyEDA 因其易于学习和使用而受到许多 YouTuber 的青睐。通过这个平台,可以有效地设计出所需的电路图和印刷电路板,从而使整个项目更加顺利地进行。
PCB 由 Seeed Fusion 制造,因此在设计之前,确保仔细阅读了他们的所有指南。
首先,用户在设计菜单中选择了“将原理图转换为 PCB”选项,立创EDA 随即生成了一个新的 PCB 文件,其中包含了原理图中的所有元器件。接下来,用户开始设计 PCB,并生成了 Gerber 文件。目前的设计以海绵宝宝为特色,虽然没有他的 SquarePants,但欢迎其他人添加裤子,完全没有规定禁止这样做!
在材料选择上,决定使用 Sunboard,这是一种低密度 PVC 板。Sunboard 非常易于使用,同时仍然具备较好的耐用性,十分适合这种手工艺项目。
这个项目中使用 Sunboard,一种低密度 PVC 板。它非常易于使用,同时仍然非常耐用,非常适合这种工艺。
组装好 PCB 后,把它全部组装在一起。并将 CO2 传感器放在后面以将其隐藏起来。如果您也这样做,请确保框架不要放置在没有空气流通的房间角落。否则你的海绵宝宝可能总是昏昏欲睡!移动时眼睑确实会有点晃动,但这根本不是问题。由于它们仅在 CO2 水平存在显著差异时才会移动,因此您几乎不会看到它们移动。但是,它在移动时确实会发出一些噪音。主要是因为旧减速电机磨削。所以认为微型 N20 电机会是更好的选择。
// 为霍尔传感器、电机驱动器和 MQ135 传感器定义引脚
const int hallSensors[] = {D1, D2, D3, D4, D5};
const int motorEnable = D8;
const int motorInput1 = D6;
const int motorInput2 = D7;
const int mq135Pin = A0;
MQ135 gasSensor = MQ135(mq135Pin);
// 为每个霍尔传感器定义 CO2 ppm 范围
const int ppmRanges[][2] = {
{800, 1000},
{1001, 1200},
{1201, 1400},
{1401, 1600},
{1601, 1800}
};
//存储 CO2 ppm 读数
const int maxReadings = 30; // 5 minutes / 10 seconds
float ppmReadings[maxReadings];
int readingIndex = 0;
void setup() {
Serial.begin(115200);
// 将霍尔传感器初始化为输入端
for (int i = 0; i < 5; i++) {
pinMode(hallSensors[i], INPUT);
}
// 将电机驱动器引脚初始化为输出端
pinMode(motorEnable, OUTPUT);
pinMode(motorInput1, OUTPUT);
pinMode(motorInput2, OUTPUT);
// 初始化电机,使其停止
digitalWrite(motorEnable, LOW);
}
void loop() {
// 从 MQ135 传感器读取二氧化碳ppm 含量
float ppm = gasSensor.getPPM();
// 存储 CO2 ppm 读数
ppmReadings[readingIndex] = ppm;
readingIndex = readingIndex + 1;
if(readingIndex >= 30)
{
//计算二氧化碳的平均ppm含量
int avgPPM = calculateAveragePPM();
// 根据 CO2 ppm 平均水平确定目标大厅传感器
int targetSensor = determineTargetSensor(avgPPM);
// 将电机移至目标霍尔传感器处
moveMotorToTargetSensor(targetSensor);
readingIndex = 0;
}
delay(10000); // 等待 10 秒
}
// 根据存储的读数计算二氧化碳的平均ppm含量
int calculateAveragePPM() {
int sum = 0;
for (int i = 0; i < maxReadings; i++) {
sum += ppmReadings[i];
}
return sum / maxReadings;
}
// 根据 CO2 ppm 平均水平确定目标大厅传感器
int determineTargetSensor(int avgPPM) {
for (int i = 0; i < 5; i++) {
if (avgPPM >= ppmRanges[i][0] && avgPPM <= ppmRanges[i][1]) {
return i;
}
}
return 0; //如果 avgPPM 超出范围,则默认为第一个传感器
}
// 将电机移至目标霍尔传感器处
void moveMotorToTargetSensor(int targetSensor) {
int currentSensor = getCurrentSensor();
if (currentSensor != targetSensor) {
int direction = (targetSensor > currentSensor) ? 1 : -1;
while (currentSensor != targetSensor) {
moveMotor(direction);
currentSensor = getCurrentSensor();
}
stopMotor();
}
}
// 获取当前霍尔传感器
int getCurrentSensor() {
for (int i = 0; i < 5; i++) {
if (digitalRead(hallSensors[i]) == LOW) {
return i;
}
}
return 0; // 如果没有传感器处于活动状态,则默认为第一个传感器
}
// 按指定方向移动电机
void moveMotor(int direction) {
digitalWrite(motorEnable, HIGH);
if (direction == 1) {
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
} else {
digitalWrite(motorInput1, LOW);
digitalWrite(motorInput2, HIGH);
}
}
// 停止电机
void stopMotor() {
digitalWrite(motorEnable, LOW);
}
粉丝福利
柴火创客的母公司 Seeed Studio 给大家带来了XIAO系列开发板每款产品的最低价,人民币76元即可获取xiao ESP32S3 可扫码查看更多惊喜
创客项目秀|基于树莓派“亚当斯一家”机械手宠物
创客项目秀|基于XIAO 的图像分类处理项目
创客项目秀|基于 Raspberry Pi 5 的蜂窝物联网
创客项目秀|基于Raspberry Pi Zero的魔法报纸
创客项目秀|基于LVGL驱动的OLED屏的FFT声音实时可视化
创客项目秀|基于XIAO ESP32C3 的智能家居四路控制器
创客项目秀|基于Grove Vision AI2模块的边缘计算机视觉项目
创客项目秀|基于XIAOESP32S3 Sense的在线语音助手
创客项目秀|基于Seeed XIAO ESP32S3 sense的HA自动化鱼缸
创客项目秀|基于XIAO ESP32 sense的宠物猫检测项目
新一代信息技术赋能|人才升级|产业创新
Seeed Studio物联网设备试用中心落地柴火!
Chaihuo x.factory|深圳,河北