完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述
小丑远程危险加油站和监控器 长期以来,我一直想创造一种独特的设备来观察各种有害气体的存在,以用于空气质量监测和气体泄漏检测等广泛的应用。因此,我决定开发这个项目。 首先,为了得到严格的气体测量结果,我选择使用这些 MQ 系列气体传感器,将它们连接到 Arduino Nano:
最后,我添加了一个蜂鸣器和一个 5 毫米共阳极 RGB LED,以便在气体达到危险水平时收到通知。 您可能已经知道,Joker 制造的有毒气体化合物(Joker Venom 或 Laughing Gas)在 DC 宇宙中被认为是非常危险的。因此,我以小丑在漫画中的形象为灵感塑造了我的设备,以提醒人们气体的有害影响。 在面包板上完成布线并测试代码后,我设计了受 Joker 启发的 PCB 来完成我的项目。它成为我工作场所的时尚和有趣的补充,作为监测有害气体存在的有效设备:) 第 1 步:设计和焊接 Joker Remote Gas Station PCB 在对我的 PCB 设计进行原型设计之前,我使用面包板上的 Arduino Nano 测试了所有连接和接线。 然后,我使用 KiCad 设计了 Joker Remote Gas Station PCB。我附上了下面 PCB 的 Gerber 文件,所以如果你愿意,你可以从 PCBWay 订购这个 PCB,以创建一个合适的设备来观察有害气体的存在,并在它们达到危险水平时得到通知 - 受恶意 Joker 的启发: ) 首先,通过使用烙铁,我连接了 Arduino Nano、IR 接收器模块、MQ-2 气体传感器、MQ-3 气体传感器、MQ-4 气体传感器、MQ-6 气体传感器、MQ-9 气体传感器、接头(母)、蜂鸣器、5mm共阳极RGB LED、220Ω电阻、20K电阻、电源插孔。 PCB上的元件清单: A1(阿杜诺纳米) S1(ST7789 IPS 屏幕接头) IR1(红外接收模块) MQ2(MQ-2 气体传感器) MQ3(MQ-3 气体传感器) MQ4(MQ-4 气体传感器) MQ6(MQ-6 气体传感器) MQ9(MQ-9 气体传感器) BZ1(蜂鸣器) D1 (5mm 共阳极 RGB LED) R1、R2、R3、R4、R5、R6、R7(220Ω电阻) R8、R9、R10、R11、R12(20K 电阻) J1(电源插孔) J2(外部电池接头) 第 2 步:对 Arduino Nano 进行编程并设置组件 下载所需的库,以便能够控制 IR 接收器模块: Arduino-IRremote | 图书馆 下载所需的库以使用 ST7789 240x240 IPS 屏幕: Arduino_ST7789_Fast | 图书馆 Adafruit_GFX | 图书馆 包括所需的库。 定义 IR 接收器模块引脚和设置。 #include <Adafruit_GFX.h> #include <Arduino_ST7789_Fast.h> #include <IRremote.h> //定义红外接收器模块引脚和设置。 #define RECV_PIN 2 IRrecv recv (RECV_PIN) ; decode_results 结果 通过执行示例中的IRrecvDemo.ino 文件,从IR 遥控器中获取所需的IR 代码并定义它们。 #define up 0xFF18E7 #define down 0xFF4AB5 #define right 0xFF5AA5 #define left 0xFF10EF #define ok 0xFF38C7 定义 ST7789 240x240 IPS 显示设置。 #define TFT_DC 10 #define TFT_RST 9 #define SCR_WD 240 #define SCR_HT 240 要在 ST7789 屏幕上显示图像,请使用以下图像转换器将它们转换为 .c 文件: 图像转换器 (UTFT) 您可以下载我在下载中使用的转换后的图像 - gas.c、lethal.c 和toxic.c。 包括转换后的图像。 #include "gas.c" #include "lethal.c" #include "toxic.c" 启动 ST7789 240x240 IPS 显示屏。 Arduino_ST7789 TFT = Arduino_ST7789(TFT_DC,TFT_RST); 启动 IR 接收器模块。 启动并清除 ST7789 240x240 IPS 显示屏。 不可恢复。启用IRIn(); tft.init(SCR_WD, SCR_HT); tft.fillScreen(RGBto565(235, 46, 0)); 在 read_IR_controls 函数中,在传输时从 IR 遥控器收集 IR 代码。 void read_IR_controls () { // 从 IR 遥控器读取接收到的 IR 码。if(irrecv.decode(&results)){ IR_codeValue = results. 价值; 不可恢复的简历(); 延迟(500); }其他{ IR_codeValue = 0 ; } } 在 collect_Data 函数中,获取 MQ 系列气体传感器(MQ-2、MQ-3、MQ-4、MQ-6 和 MQ-9)产生的气体测量值。 void collect_Data () { // 获取气体传感器生成的变量。 mq_2_val = 模拟读取(mq_2); mq_3_val = 模拟读取(mq_3); mq_4_val = 模拟读取(mq_4); mq_6_val = 模拟读取(mq_6); mq_9_val = 模拟读取(mq_9); } 在界面功能中,打印带有菜单选项的界面。 void interface () { // 打印带有菜单选项的界面。 tft.setTextColor(RGBto565( 0 , 38 , 153 ), RGBto565( 235 , 46 , 0 )); tft.setTextSize( 4 ); tft.setCursor( 75 , 25 ); tft.println( "MQ-2" ); tft.setCursor( 75 , 65 ); tft.println( "MQ-3" ); tft.setCursor( 75 , 105 ); tft.println( "MQ-4" ); tft.setCursor( 75 , 145 ); tft.println( "MQ-6" ); tft.setCursor( 75 , 185 ); tft.println( "MQ-9" ); } 在 change_menu_options 函数中,通过使用 IR 遥控器按钮 - Up 和 Down - 增加或减少选项编号,以在界面上的菜单选项之间切换。 void change_menu_options () { // 使用红外遥控器按钮增加或减少选项编号。if(IR_codeValue == up) selected--; if(IR_codeValue == down) selected++; if (selected < 0 ) selected = 5 ; if (selected > 5 ) selected = 1 ; 延迟(100); // 根据选择的选项编号,改变布尔值 status.switch(selected){case 1: mq2 = true ; mq3 =假; mq4 =假; MQ6 =假; mq9 =假; 休息; 案例 2: mq2 =假; mq3 =真; mq4 =假; MQ6 =假; mq9 =假; 休息; 案例 3: mq2 =假; mq3 =假; mq4 =真; MQ6 =假; mq9 =假; 休息; 案例 4: mq2 =假; mq3 =假; mq4 =假; mq6 =真; mq9 =假; 休息; 案例 5: mq2 =假; mq3 =假; mq4 =假; MQ6 =假; mq9 =真; 休息; } } 步骤 2.1:显示有害气体的存在 为了检测有害气体的存在,我使用了这五个 MQ 系列气体传感器:
MQ-3气体传感器对酒精有很高的灵敏度,对汽油、烟雾和蒸汽有很好的抵抗力。该传感器可以检测不同浓度的酒精。 MQ-4 气体传感器对甲烷、丙烷和丁烷具有高灵敏度。该传感器可以检测不同的可燃气体。 MQ-6 气体传感器对丙烷、丁烷和液化石油气具有高灵敏度,对天然气也有响应。该传感器可以检测不同的可燃气体,例如天然气、主要由甲烷和乙烷组成的无色可燃气体碳氢化合物。 MQ-9 气体传感器对一氧化碳、甲烷和液化石油气具有高灵敏度。该传感器可以检测含有 CO 和可燃气体的不同气体。 正如预期的那样,在连接到 Arduino Nano 后,每个传感器会根据可检测到的有害气体的数量产生不同的值范围。 测试后,我根据经验为每个传感器分配了以下这些级别。如果需要,在测试传感器后更改它们。 mq_2_val < 600?低 600 < mq_2_val < 700?缓和 mq_2_val >= 700?危险的 mq_3_val < 650 ? 低 650 < mq_3_val < 800?缓和 mq_3_val >= 800?危险的 mq_4_val < 450?低 450 < mq_4_val < 600?缓和 mq_4_val >= 600?危险的 mq_6_val < 500 ? 低 500 < mq_6_val < 650?缓和 mq_6_val >= 650?危险的 mq_9_val < 700 ? 低 700 < mq_9_val < 850?缓和 mq_9_val >= 850?危险的 如果使用向上和向下按钮选择了菜单选项,请在界面上突出显示其名称。 选择后,如果使用 OK 按钮激活菜单选项: 使用转换后的图像收集并显示所选 MQ 系列传感器的气体测量值。 如果根据分配的级别,气体测量值为低,则将 RGB LED 调整为绿色。 如果根据分配的级别,气体测量值为中等,则将 RGB LED 调整为黄色。 如果根据指定的级别,气体测量值为危险,则将 RGB LED 调整为红色并打开蜂鸣器以通知用户。 按左键,返回界面。 如果(MQ2){ 做{ tft.setTextColor(RGBto565( 0 , 38 , 153 ), 白色); tft.setTextSize( 4 ); tft.setCursor( 75 , 25 ); tft.println( "MQ-2" ); 如果(IR_codeValue == ok){ 激活=真; tft.fillScreen(白色); 而(激活){ read_IR_controls(); //打印数据: 收集数据(); tft.setCursor( 75 , 25 ); tft.setTextColor(黑色,白色); tft.setTextSize( 4 ); TFT。打印(F(“MQ-2”)); tft.drawImageF( 30 , 80 , 40 , 40 , 气体); tft.drawImageF( 100 , 80 , 40 , 40 , 致命的); tft.drawImageF( 170 , 80 , 40 , 40 , 有毒); tft.setCursor( 60 , 160 ); tft.setTextSize( 7 ); TFT。打印(mq_2_val); //检查气体状态:if (mq_2_val < 600 ){ adjustColor( 0 , 255 , 0 ); } else if (mq_2_val >= 600 && mq_2_val < 700 ){ adjustColor( 255 , 255 , 0 ); } else if (mq_2_val >= 700 ){ adjustColor( 255 , 0 , 0 ); 音调(蜂鸣器,500,1000);} //退出并关闭:if (IR_codeValue == left){ activate = false ; tft.fillScreen(RGBto565( 235 , 46 , 0 )); 调整颜色(0,0,0);_ noTone(蜂鸣器);} } } }而(!mq2); } ... 步骤 2.2:修复 timer0_pin_port 错误 不幸的是,在使用 IR 远程库和音调库时,Arduino IDE 会抛出 timer0_pin_port 错误。发生错误是因为两个库都尝试通过声明相同的名称 - Timer2 来使用计时器。 要解决此问题,请根据 IR 远程库版本打开 boarddefs.h 或 IRremoteBoardDefs.h 文件。然后,将 Arduino Nano 的 IR_USE_TIMER2 更改为 IR_USE_TIMER1。 连接和调整 // 连接 // Arduino Nano : // IR 接收器模块 // D2 --------------------------- S // ST7789 240x240 IPS / / GND ---------------------------- GND // 3.3V ---------------- ---------- VCC // D13 --------------- SCL // D11 ----- ---------------------- SDA // D9 ---------- --- RES // D10 --------------- DC // MQ-2 空气质量传感器 // A0 ---- ----------------------- S // MQ-3 空气质量传感器 // A1 --------------- ------------ S // MQ-4 空气质量传感器 // A2 --------------- S // MQ-6 空气质量传感器 // A3 -------- ------------------- S // MQ-9 空气质量传感器 // A4 ------------------- -------- S // 5mm 共阳极 RGB LED // D3 --------------------------- R // D5 --------------------------------------- G // D6 ------- -------- B // 蜂鸣器 // D7 --------------------------- + 完成焊接并上传代码后,我通过接头将所有剩余组件连接到板上 - ST7789 240x240 IPS 屏幕。 不幸的是,即使 Arduino Nano 工作在 5V,Nano 提供的电流也不足以让 5 个 MQ 系列气体传感器加热并产生准确的气体测量值。因此,我在我的 PCB 设计中添加了一个电源插孔 (J1) 和一个连接器 (J2),以为传感器提供外部电池 (5V)。 模式和功能 该设备在界面上显示五个不同的 MQ 系列传感器作为菜单选项,以单独显示其气体测量值:
该设备允许用户在 MQ 系列传感器(菜单选项)之间切换,以通过 IR 遥控器观察其气体测量值: 向上按钮上 向下按钮下去 确定按钮启用 通过按下红外遥控器的 OK 按钮激活任何 MQ 系列传感器以显示其气体测量值后,设备让用户通过按下左按钮返回界面。 MQ 系列传感器(菜单选项) 如果选择并激活了 MQ-2 选项,设备将显示其有害气体测量值。 根据为所选传感器分配的测量级别(步骤 2.1),设备调整 RGB LED: 绿色的 低的 黄色 缓和 红色的 危险的 如果危险气体测量值为危险,则设备会根据分配的级别打开蜂鸣器。 如果选择并激活了 MQ-3 选项,设备将显示其有害气体测量值。 根据为所选传感器分配的测量级别(步骤 2.1),设备调整 RGB LED: 绿色的 低的 黄色 缓和 红色的 危险的 如果危险气体测量值为危险,则设备会根据分配的级别打开蜂鸣器。 如果选择并激活了 MQ-4 选项,设备将显示其有害气体测量值。 根据为所选传感器分配的测量级别(步骤 2.1),设备调整 RGB LED: 绿色的 低的 黄色 缓和 红色的 危险的 如果危险气体测量值为危险,则设备会根据分配的级别打开蜂鸣器。 如果选择并激活了 MQ-6 选项,设备将显示其有害气体测量值。 根据为所选传感器分配的测量级别(步骤 2.1),设备调整 RGB LED: 绿色的 低的 黄色 缓和 红色的 危险的 如果危险气体测量值为危险,则设备会根据分配的级别打开蜂鸣器。 如果选择并激活了 MQ-9 选项,设备将显示其有害气体测量值。 根据为所选传感器分配的测量级别(步骤 2.1),设备调整 RGB LED: 绿色的 低的 黄色 缓和 红色的 危险的 如果危险气体测量值为危险,则设备会根据分配的级别打开蜂鸣器。 视频和结论 完成上述所有步骤后,我将设备放在我的办公桌上,利用塑料画架作为有效的助手来检测工作场所中有害气体的存在。它工作得无可挑剔:)
|
|
|
|
643 浏览 1 评论
675 浏览 1 评论
931 浏览 1 评论
1108 浏览 2 评论
为什么在频率为10^3 Hz处,产生的相移就可以确定约为-90度
1684 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 12:44 , Processed in 0.474351 second(s), Total 40, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号