查看原文
其他

硬核DIY|创客的硬通货,居然长这样

柴火菌 柴火创客空间 2021-07-07


2020年初,新型冠状病毒肺炎疫情爆发,全国大部分民众过了一个史上最宅的春节。


从“劝爸妈戴口罩”引发的两代人之间的口罩之争,到全国大范围鼓励戴口罩,口罩脱销限购,口罩也成了这场全民战疫中,稀缺的硬通货。


今天,柴火菌将在全球创客社区中,为大家介绍1个硬核DIY面罩项目,希望大家在云上办公之余,感受创客们天马行空的脑洞,体验开源科技之光。


赛博朋克面罩Cyberpunk Mask by Linter



这个酷炫上天的赛博朋克面罩,极具未来感。它由一个3M防护面罩改造而成,运用Seeduino xiao主控,连接LED灯条、舵机、空气质量传感器、继电器、小风扇。



面罩上的空气质量传感器可实时检测所处环境空气质量。当空气质量适合呼吸的时候:呼吸通风口打开,这时状态灯显示绿色;当空气质量轻微污染时,仍然适合呼吸,这时呼吸通风口仍会打开,状态灯显示黄色,我们依旧可以直接呼吸空气;当空气质量是中度污染时,不适合直接呼吸,这时状态灯显示红色,舵机转动,通风口关闭,空气只能通过过滤盒,同时风扇开启,加速空气流动;



项目创作者 Linter认为,目前市面上的3M防护面罩佩戴之后很闷,用户体验不佳。而且他也希望自己这个面罩,可以实现空气质量监测并防护的功能。


步骤1:准备项目所用开源硬件,清单如下:

  • 1 x Seeduino xiao主控板

  • 1 x WS2813B Digital RGB LED Flexi-Strip 60 LED - 1 MeterLED灯条

  • 1 x Servo舵机

  • 1 x Grove - Air quality sensor v1.3空气质量传感器

  • 1 x Grove - Relay继电器

  • 1 x 小风扇

  • 1 x 电池


步骤2:用CAD绘制特制结构件儿——通风口挡板

这个步骤也可以用3D Model建模然后打印,制作特制结构件。


步骤3:激光切割绘制好的结构件


步骤4:焊接Seeduino xiao主控板

将Seeduino xiao主控板背面的地线和VIN引脚焊接出一个电源端口,方便后面与电池相接。


步骤5:灯条焊接(参见下图)


步骤6:软件编程(相关代码,见下)

CyberpuckMaskXiao.ino

kMaskXiao.inoC/C++#include <Arduino.h>#include <Servo.h>#include "s_timer.h"#include "Adafruit_NeoPixel.h"#include "Air_Quality_Sensor.h"#define PIN 6#define NUMPIXELS 11#define BRIGHTNESS 255
AirQualitySensor sensor(A0);Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);Servo servo_2;int delayval = 500; // delay for half a secondint stateflag = 0;int Secondcount = 0;void setup() { // put your setup code here, to run once:  servo_2.attach(5); servo_2.write(90);
// This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket#if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1);#endif // End of trinket special code
strip.setBrightness(BRIGHTNESS); strip.begin(); strip.show(); // Initialize all pixels to 'off' colorWipe(strip.Color(255, 255, 255), 50); // Green
pinMode(4, OUTPUT);
Serial.begin(115200);// while (!Serial);
Serial.println("Waiting sensor to init..."); delay(5000);
if (sensor.init()) { Serial.println("Sensor ready."); } else { Serial.println("Sensor ERROR!"); } colorWipe(strip.Color(0, 255, 0), 50); // Green s_timer::set(Timer4Callback0); s_timer::start();
}
void loop() { // put your main code here, to run repeatedly: if (stateflag == 1) { air_test(); stateflag = 0; }}void air_test() { Serial.print("Sensor value: "); servo_2.detach(); int data=sensor.getValue(); Serial.println(data); int quality = sensor.slope(); if (quality == AirQualitySensor::FORCE_SIGNAL) { Serial.println("High pollution! Force signal active."); colorWipe(strip.Color(255, 0, 0), 50); // Red digitalWrite(4, HIGH); servo_2.attach(5); servo_2.write(0); delay(2000); } else if (quality == AirQualitySensor::HIGH_POLLUTION) { Serial.println("High pollution!"); colorWipe(strip.Color(255, 0, 0), 50); // Red digitalWrite(4, HIGH);//fan servo_2.attach(5); servo_2.write(0); delay(2000); } else if (quality == AirQualitySensor::LOW_POLLUTION) { Serial.println("Low pollution!"); colorWipe(strip.Color(255, 255, 0), 50); // yellow digitalWrite(4, HIGH); servo_2.attach(5); servo_2.write(90); delay(2000); } else if (quality == AirQualitySensor::FRESH_AIR) { Serial.println("Fresh air."); colorWipe(strip.Color(0, 255, 0), 50); // Green digitalWrite(4, LOW); servo_2.attach(5); servo_2.write(90); }}volatile uint16_t dacout = 0;void Timer4Callback0(){ stateflag = 1;}void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); // delay(wait); }}


步骤7:按照下图将硬件进行连接


步骤8:结构搭建组装


步骤9:完工啦

项目演示视频



文末点击阅读原文,可前往该项目英文教程页面





🤖️🤖️🤖️

文末互动话题

上面这个硬核口罩你喜欢吗?留言区见

如果你有在家DIY更硬核的口罩

欢迎分享,保证让你上墙





 写在最后-文末小广告 

接下来,柴火将基于开源硬件套件(包含部分硬核面罩项目所用的技术模块)定期开设课程,该课程将涉及(但不限于)以下节点:硬件基础原理;传感器应用;基本结构搭建;软件编程与硬件结合;原型搭建;创客马拉松等。


如果你也想玩转开源硬件,

用科技赋能创新落地,

欢迎扫码填写课程意向报名哟!




----END----

  Chaihuo x.factory|深圳,河北  


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存