来DIY一副火爆的装备:火焰喷射拳套


MAKER:Allen Pan/译:趣无尽 Cherry(转载请注明出处)
在很多动作电影中,我们可以看到中国武术和火焰相融合的火焰艺术。那么,如果我们在现实生活中制作一副火焰喷射拳套,耍起来会是怎样的一种效果呢?(吃货们可能会用来烤鸡翅膀,这个不在我们的讨论范围)
该项目的火焰喷射器部分由丁烷燃料管和螺线管阀门组成。在装置的末端安装一个改进的电弧打火机点火装置。

挥拳活动部分由 Arduino Pro Mini 和加速度器(我使用的型号是LIS3DH)组成。挥拳的动作会形成一个非常有特色的的加速度曲线,看起来像一个正加速度(刚刚挥拳时),然后再快速的减速,在很短的时间内达到<100M=ms(挥拳动作结束时)。这意味着我们的 Arduino 可以很容易地区分挥拳和正常的日常手势!

当你将制作好的拳套安装到位以后,智能火焰喷射器装置可以在你挥拳时射击火焰!非常的炫酷!

这不是一个初学者项目,即使对于高级用户来说,从拳头射击火焰也存在一定的危险。请认真阅读本文,自行评估风险,后果自负!

来看一段视频:

材料清单


1、Arduino Pro Mini 328 – 5V / 16MHz×1
2、LIS3DH三轴加速度传感器×1
3、1/4英寸公头快速连接器
4、1/4英寸NPT全通径球阀
5、1/2英寸至1/4英寸镀锌减速器
6、1/2英寸黑色铁质接头,3英寸长
7、1/2英寸至1/8英寸镀锌减速器
8、1/8英寸黑色铁质接头
9、12V螺线管阀,带2mm孔径和1/8英寸NPT端口
10、1/8英寸NPT至3/16英寸倒钩

注意:如果在螺纹上使用聚四氟乙膏或胶带,请用管钳拧紧所有东西。确保球阀的杠杆和螺线管阀对齐,最终将其安装在木板上。

组装丁烷罐


首先,你需要一个适配器,给罐子充丁烷气体。 3/16英寸铝管完作为连接装置。在球阀关闭的情况下,将铝管放入,直到它插入到底部并标记切割线。

然后,用切管机将管子切割成合适的尺寸。用锤头将管子的一端打磨,将边缘磨成O形。取一根管子与快速连接器相连,形成一个密封空间。在丁烷罐喷嘴放置一个O形圈。
我使用是苯甲酸丁烷罐,它比丁烷的罐子要贵一些,但没有添加任何有味气体。

测试罐体是否泄漏

1、填充丁烷气体。
2、测试你定制的填充适配器和燃料罐!将燃料罐浸入水中或用肥皂水喷射,检查是否泄漏。
3、若无泄漏,请继续测试该螺线管阀。
4、使用2节LiPo电池将螺线管阀的导线与电池相连,以便获取雾状的丁烷。如果你在管螺纹上涂抹了聚四氟乙烯膏,请多喷一些。

安装平板架


我使用1/4英寸厚的杨树板作为平板架,它不防火但足够坚固。板子宽2.5英寸,长9英寸。在手柄距离木板末端大约一英寸处标记两个孔。在燃料罐喷嘴距离木板末端0.75英寸处标孔,用于固定燃料罐的可收缩拉环绳。

我用铁条和圆形木棍形成一个D型的环连接到木板的反面。用拉环绳将燃料罐与木板相连接,拉紧!不要留有空间。我将一根1英寸长的尼龙带用热熔胶粘在其中一个D环,缠绕另一头并系在手上,这可以作为一种紧急释放的装置。如果发生任何意外,就很容易扔掉火焰喷射器,只需松开绳子即可!

安装点火装置


1、这样的电弧打火机是一个挺有质感的小玩意。首先需要把它拆开。我见过的大多数电弧打火机底部都有一个小螺丝,拧开它并务必保管好!
2、移除内部多余部分并去除任何铰链部件(你可能需要从孔中戳出一些连接杆)。拿出一套称手的工具,在按钮孔处切除那些部分,为电线腾出空间。

3、将引线焊接到按钮端口。使用万能表测量电线上的电压。你应该测试出3-4伏电压,测试出哪个是正电压,哪个是负电压(这些信息将用于连接电光隔离器)。我的情况是,橙色是接地,黄色是正极。
4、将内部装回金属外壳中,然后重新拧紧。

安装电子部分


请查看附带的原理图。补充一些说明:
1、在原理图中,用压电蜂鸣器替代电弧打火机。
2、微型调节器很安全。可以随意使用7805或其他型号。
3、我认为电弧打火机的表面可能会有噪音。因此使用电光隔离器,只需将其连接到引脚即可。
4、使用合适的电池连接器并在某处放置一个滑动的开关。无需插拔即可开启和关闭开关。
5、我非常喜欢使用电线螺母,用它们将螺线管连接到电路板和二极管。如果你能够焊接它们效果会更好。

原理图


火焰喷射器的电路图。请注意,螺线管是螺线管阀,压电蜂鸣器是电弧打火机的支架。可以在项目文件库中下载。
http://make.quwj.com/project/75

代码

firebending.ino,Arduino 用于检测火焰喷射器的代码段。可以在项目文件库中下载。
http://make.quwj.com/project/75

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_LIS3DH.h>
#include <Adafruit_Sensor.h>

// Used for software SPI
#define LIS3DH_CLK 13
#define LIS3DH_MISO 12
#define LIS3DH_MOSI 11
// Used for hardware & software SPI
#define LIS3DH_CS 10

//software SPI
Adafruit_LIS3DH lis = Adafruit_LIS3DH(LIS3DH_CS, LIS3DH_MOSI, LIS3DH_MISO, LIS3DH_CLK);

//A fist experiences significant acceleration during a good punch,
//followed by massive deceleration at the end of the punch.
//This happens within a fairly small window of time, so it's
//pretty easy to distinguish a punch from normal gesticulations.

unsigned long punchStart = 0;//variable for non-blocking punch timeframe check
const long punchInterval = 200;//timeframe of a punch in ms, from max acceleration to max deceleration, 200 is very generous
int punchAccel = 20;//the beginning of a punch in m/s^2, could be over 50m/s^2 depending on the puncher
int punchDecel = -40;//the end of a punch in m/s^2, could be less than -100m/s^2 depending on the puncher
int flameTime = 250;//how long the flame lasts, in ms

void setup(void) {
  //Test to see if accelerometer is communicating
  Serial.begin(9600);
  Serial.println("LIS3DH test!");  
  if (! lis.begin(0x18)) {   // change this to 0x19 for alternative i2c address
    Serial.println("Couldnt start");
    while (1);
  }
  Serial.println("LIS3DH found!");
  
  lis.setRange(LIS3DH_RANGE_16_G);   //+-16G range for good punch detection
  Serial.print("Range = "); Serial.print(2 << lis.getRange());  
  Serial.println("G");
  
  pinMode(8, OUTPUT); //Solenoid valve
  pinMode(9, OUTPUT); //Arc lighter
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

void loop() {
  lis.read();
  sensors_event_t event; 
  lis.getEvent(&event);
  
 //look for punch starting, at least 20 m/s^2
  if (event.acceleration.x > punchAccel){
     Serial.println(event.acceleration.x);
     punchStart = millis();
  }
  
  unsigned long currentMillis = millis();

  //look for punch ending, less than -40 m/s^2
  if (event.acceleration.x < punchDecel && currentMillis - punchStart < punchInterval){
      Serial.println(event.acceleration.x);
      Serial.println("Punch");
      Fire(flameTime);
    }
}

void Fire(int flameTime){
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(flameTime);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

将所有组件安装在一起


1、安装电子设备和电弧打火机。我使用双面泡沫胶带和热熔胶,我制作的很匆忙,你可能会有更安全的方法。
2、上传代码到 Arduino。
3、插入LiPo电池,打开电子设备并进行干燥测试。这个部分没有丁烷。只需测试一下你是否可以从螺线管中听到咔哒一声,并且当你挥拳时,打火机可以看到一个高高斜斜的弧线。你可以调整挥拳的阈值,以便更容易触发。
4、当你觉得安全后,关掉所有东西并填满燃料罐。我发现一个合适的罐子可以发出6个火球,足够表演一段舞龙。
5、确保你所在区域通风良好,打开开关前将多余的丁烷放出。演示时要需好友陪同,准备一个灭火器,商量好如果你的手臂着火会怎样处理。不要瞄准没有着火的地方。我强烈建议,提前准备好用拳头打出怎样的火焰,再戴上电焊手套。
6、项目中最大麻烦的是点燃丁烷的问题。我发现电弧打火机很方便,也很容易让丁烷泄漏。经过几次试戴后,似乎将电弧打火机放得更远并且安置在侧面更适合点火,但安装起来有点不方便。

这个项目肯定还有许多改进之处,欢迎大家提出!希望大家喜欢这个装B神器。



坐沙发

发表评论