0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于物联网的语音控制智能火箭点火器

科技观察员 来源:circuitdigest 作者:Debashis Das 2022-08-05 16:47 次阅读

随着冬季的临近;每年庆祝灯节的时候到了 。是的,我们谈论的是排灯节,这是一个真正的印度节日,在全球范围内庆祝。 今年排灯节已经结束,看到人们放鞭炮,我想出了一个 基于 Alexa 的语音控制火箭发射器或点火器的想法,它可以通过语音命令发射火箭,对孩子们来说非常安全和有趣。

需要说明的是,我不是来鼓励人们在排灯节放鞭炮的,印度政府已经对鞭炮实施了限制以遏制污染,我们有责任遵守它。这里的想法是,与其花一整天的时间发射饼干,不如让我们构建一个很酷的语音控制的 Arduino 火箭点火器并以风格发射一些火箭。我认为这是双赢的。

这个Arduino 火箭发射器将与其他火箭发射器大不相同。它有一个由胶合板制成的非常坚固的底盘,一个可靠的基于继电器的控制机构,以及一个非常独特的发射和重新装载火箭的机构,所以事不宜迟,让我们直接进入构建过程。

poYBAGLs2LmALjEuAAisScJWJsY245.png

基于 Alexa 的语音控制火箭发射器 - 工作

电路的工作原理很简单,负责发射火箭的主要部件是镍铬合金线,它以加热线圈的形式出现。这种镍铬合金线将充当火箭点火器。如何?我稍后会告诉你。

pYYBAGLs2LSAXUW8AAVTChdessg872.png

正如您在上图中看到的,镍铬合金线以加热线圈的形式出现,对我来说,这是最简单的方法。我们必须将其拉直并弯曲以形成如下图所示的形状。

pYYBAGLs2K2AfoCAAAUSJMbVyyo963.png

完成此操作后,我们将使用 12V 铅酸电池为其供电,它会发出红光。这足以点燃火箭内部的黑色火药,它的作用就像正常的引信剂量一样。请注意,这是一个大功率火箭发射控制器,使电线红热所需的电流很高。在大电流下工作时请遵循安全建议。

pYYBAGLs2KmAA5sfAAQzivDTvSI221.png

测试完成后,唯一剩下的就是控制过程,我们将在本文中继续进行时执行此操作。

我们的 NodeMCU Rocket Launch 控制器的 Launchpad

对于这个构建,让我们制作一个启动板。完成启动板后,我们可以轻松地重新加载一些破解程序并非常轻松地启动它们。我已经构建了一个启动板,如下图所示。

pYYBAGLs2KSAEM-WAApQTt3pywY305.png

让我们逐步了解构建启动板的过程。对于框架的两侧,我使用了两块(25X3X1.5)英寸长的胶合板。对于顶部,我使用了 (20X3X1.5) 英寸长的胶合板部分,对于底座,我使用了 (20X6X1.5) 英寸长的胶合板,这将使其更加稳定。下面的图片会给你一个清晰的想法。

poYBAGLs2KGATNPTAAAjAZWJ3tI184.png

现在,是时候制造镍铬合金丝了,它可以作为我们火箭的保险丝。为此,我买了一个 1000W 的镍铬合金线底座加热线圈,将其拉直,制成如下图所示的结构。我必须使用两个钳子和侧刀来塑造镍铬合金线,如下所示。

pYYBAGLs2J2AcgO8AAgR9HzNiOg207.png

完成此操作后,我将 20 英寸的胶合板块分成七块测量它,并钻孔以放入镍铬合金线基细丝,一旦完成,它看起来像下面的图像。

poYBAGLs2JiAEcy7AAUCJDZsjPY712.png

但在放置灯丝之前,我在每个端子上连接了 1 平方毫米厚的铜线并将它们穿过孔,一旦一切完成,它看起来像下图。

pYYBAGLs2JKAC3biAAV1DwsR82Y492.png

如您所见,我还加入了双组分粘合剂以将电线和细丝固定到位。完成后,我们的启动板就完成了。正如您从本节的第一张图片中看到的那样,我将灯丝线直接连接到 PCB,因为我们正在处理非常高的电流,所以我没有费心放置螺丝端子,这标志着我们机箱的末端建设过程。

poYBAGLs2I-AC0nzAAUnzt0G9dg340.png

Alexa 控制的火箭发射器所需的组件

对于硬件方面,我们使用了非常通用的部件,您可以从当地的爱好商店轻松获得,下面给出了完整的物品清单。

12V-继电器 - 3

BD139 晶体管 - 3

1N4004 二极管 - 3

5.08 毫米螺丝端子 - 1

LM7805 - 稳压器 - 1

100uF去耦电容 - 2

5.1V 稳压二极管 - 1

NodeMCU (ESP8266-12E) 开发板 - 1

虚线性能板 - ½

连接线 - 10

Arduino火箭发射器电路图

下面给出了Alexa 控制的火箭发射器的完整示意图。我使用标签将一个引脚连接到另一个引脚。如果你看得足够近,解释原理图应该不难。

poYBAGLs2IeATsKnAAgEZRhvnyo078.png

电路结构非常简单,所以我不会详细介绍。

首先,我们有 IC1,它是一个 LM7805 稳压器,其 100uF 去耦电容由 C1 和 C2 表示。之后,我们有了项目的核心,即 NodeMCU 板,其中包含 ESP-12E 模块。由于我们使用的是 12V 铅酸电池为整个电路供电,这就是为什么我们必须先使用 LM7805 将其转换为 12V 到 5V 来为 NodeMCU 板供电。我们这样做是因为板载 AMS1117 稳压器不足以将 12V 直接转换为 3.3V,这就是需要 7805 的原因。

继续前进,我们有三个 12V 继电器,在这个演示中,我们使用了三个继电器,但正如我们之前提到的,发射台有一个用于 7 枚火箭的占位符。您可以稍微调整一下代码,然后将所有七枚火箭一起发射。三个继电器由三个NPN晶体管T1、T2、T3驱动,足以驱动一个real的负载。最后,我们有三个续流二极管,用于保护电路免受继电器产生的高压尖峰的影响。

在 PerfBoard 上构建电路

从主图中可以看出,我们的想法是制作一个可以在短时间内处理大量电流的简单电路,根据我们的测试,800 毫秒足以点亮一张纸。因此,我们在一块穿孔板上构建电路,并用 1 平方毫米厚的铜线连接所有主要连接。在我们完成焊接板之后。一旦我们完成,它看起来像下面显示的东西。

poYBAGLs1UCAIiURAAJu7VS-GHs190.png

为 Alexa 控制的火箭发射器编程 NodeMCU

现在硬件已经准备就绪,是时候开始为我们基于 Alexa 的语音控制火箭发射器编写代码了。完整的代码可以在本页末尾找到,但在我们开始之前,将所需的库添加到您的 Arduino IDE 非常重要。确保从下面给出的链接中添加正确的库,否则代码在编译时会抛出错误。

下载 Espalexa 库

添加所需库后,您可以直接上传本页底部给出的代码,以检查电路是否正常工作。如果您想知道代码是如何工作的,请继续阅读。

像往常一样,我们通过添加所需的头文件并为我们的热点定义引脚名称和凭据来开始程序。

#include 
#include 
//定义与Relays连接的GPIO
#define ROCKET_1_PIN 4
#define ROCKET_2_PIN 13
#define ROCKET_3_PIN 15
// WiFi 凭证
const char* ssid = "deba_2.4";
const char* 密码 = "il2ww*ee";

继续我们的代码,我们有我们的函数原型和回调函数定义。

函数connectToWiFi()用于连接 Wi-Fi 网络,当 Wi-Fi 连接成功时该函数返回 true。

接下来,我们有我们的回调函数,当我们向 Alexa 发出命令时会调用这个函数,espalexa API 会处理这些函数

void allrockets(uint8_t 亮度);
void firstrocket(uint8_t 亮度);
void secondrocket(uint8_t 亮度);
无效第三火箭(uint8_t亮度);

接下来,我们定义设备名称。这些定义的设备名称将反映在 Alexa 应用程序上,当我们说出命令时,Alexa 将通过这些名称识别设备。所以这些名字非常重要。

// 设备名称
String First_Device_Name = "所有火箭";
String Second_Device_Name = "火箭一号";
String Third_Device_Name = "火箭二号";
String Forth_Device_Name = "三号火箭";

接下来,我们定义一个布尔变量wifiStatus,它将保存 Wi-Fi 的连接状态。最后,我们创建一个 Espalexa 对象 espalexa。我们将使用这个对象来配置 NodeMCU。

// wifi状态检查
布尔 wifiStatus = 假;
// Espalexa 对象
埃斯帕莱克斯帕莱克斯;

接下来,我们有我们的void setup()部分。在本节中,我们使用Serial.begin()函数初始化串行通信以进行调试。我们使用pinMode()函数将之前定义的所有引脚设置为输出,接下来我们调用connectToWiFi()函数,它会尝试连接到 Wi-Fi 15 次,如果连接成功,则返回 true连接起来,它将返回 false 并且代码将永远执行while()循环。如果 Wi-Fi 连接成功,我们使用espalexa.addDevice()函数将之前定义的设备添加到 Alexa 对象中。这个函数有两个参数,第一个是设备名称,第二个是回调函数的名称,当我们向 Alexa 发出命令时,会调用相邻的函数。一旦我们完成了所有四个设备的操作,我们调用 espalexa 对象的begin()方法。

无效设置(){
  序列号.开始(115200);// 启用串行调试消息
  pinMode(ROCKET_1_PIN,输出);//设置ESP引脚作为输出
  pinMode(ROCKET_2_PIN,输出);//设置ESP引脚作为输出
  pinMode(ROCKET_3_PIN,输出);//设置ESP引脚作为输出
  wifiStatus = connectToWiFi(); // 连接到本地 Wi-Fi 网络
    if (wifiStatus) {// 设置所有 espalexa 设备
    // 在此处定义您的设备。
    espalexa.addDevice(First_Device_Name, allrockets); //最简单的定义,默认状态关闭
    espalexa.addDevice(Secound_Device_Name, firstrocket);
    espalexa.addDevice(Third_Device_Name, secondrocket);
    espalexa.addDevice(Forth_Device_Name, thirdrocket);
    espalexa.begin();
  }
  别的 {
    而(1){
      串行。println("无法连接WiFi。请检查数据并重置ESP。");
      延迟(2500);
    }
  }
}

在循环部分,我们调用 espalexa 对象的loop()方法,该方法将始终检查任何传入的命令,如果发现为真,则调用回调函数。

无效循环(){
  espalexa.loop();
  延迟(1);
}

接下来,我们定义所有回调函数,在本节中,我们将定义调用此回调函数时会发生什么。当调用 allrockets()函数时,所有火箭将一起发射。为此,我们将打开继电器 00 毫秒,然后关闭继电器。在我的测试中,我发现对于指定长度的镍铬合金线,我需要 800 毫秒的延迟才能完全加热线,这对你来说可能是这样,也可能不是。所以相应地选择延迟。

void allrockets(uint8_t 亮度)
{
  如果(亮度 == 255)
  {
    数字写入(ROCKET_1_PIN,高);
    数字写入(ROCKET_2_PIN,高);
    数字写入(ROCKET_3_PIN,高);
    延迟(800);
    数字写入(ROCKET_1_PIN,低);
    数字写入(ROCKET_2_PIN,低);
    数字写入(ROCKET_3_PIN,低);
    Serial.println("所有火箭发射");
  }
}

接下来,我们有我们的第一个 rocket(),当我们调用 Alexa 并说 tie 命令发射第一颗火箭时,它会被调用。过程很相似,我们开启继电器800ms再关闭。

void firstrocket(uint8_t 亮度){
   如果(亮度 == 255)
  {
    数字写入(ROCKET_1_PIN,高);
    延迟(800);
    数字写入(ROCKET_1_PIN,低);
    Serial.println("第一枚火箭发射");
  }
}

最后,我们有了connectToWiFi()函数。这个函数非常通用且不言自明,所以我不会详细介绍这个函数。该函数将 ESP 连接到 Wi-Fi 并返回连接状态。

布尔连接到WiFi()
{
  布尔状态 = 真;
  诠释 i = 0;
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, 密码);
  序列号.println("");
  Serial.println("连接到 WiFi");
  // 等待连接
  Serial.print("正在连接...");
  而(WiFi.status()!= WL_CONNECTED){
    延迟(500);
    Serial.print(".");
    如果 (i > 15) {
      状态=假;休息;
    }
    我++;
  }
  序列号.println("");
  如果(状态){
    Serial.print("连接到");
    序列号.println(ssid);
    Serial.print("IP地址:");
    Serial.println(WiFi.localIP());
  }
  别的 {
    Serial.println("连接失败。");
  }
  返回状态;
}

定义的这个函数标志着编码部分的结束。

使用 Alexa Android 应用程序配置 Alexa

当且仅当 Alexa 识别 esp8866 设备时,它才会接受命令。为此,我们需要借助 Android 上的 Alexa 应用程序来配置 Alexa。在我们继续之前要做的一件重要的事情是,我们需要确保 Alexa 配置了我们的 android 应用程序。

为此,请转到 Alexa 应用程序的更多部分,然后单击“添加设备”选项,单击“灯光”, 然后在页面底部向下滚动并单击“其他” 。

pYYBAGLs2HeAHogIAAGyLm2aLbs261.png

接下来,单击DISCOVER DEVICE并 等待片刻,然后 Alexa 将找到新设备。一旦 Alexa 找到设备,您需要单击它们并将它们添加到各自的位置/类别中,然后您就完成了。

pYYBAGLs2HOABSNSAAIXxpddJWw978.png

Alexa 控制的火箭发射器 - 测试

pYYBAGLs2G-ATqe_AAucREM_iEE965.png

在测试过程中,我去了我的花园,把火箭上的所有保险丝都拔了出来,放在各自的地方,然后我喊着 Alexa……!打开所有的火箭,我的手指交叉。所有的火箭都将我的努力标记为巨大的成功。它看起来像这样。

poYBAGLs2GuAau8WAAquEKzcZxg768.png

最后,我再次说 Alexa……!打开所有火箭,以获得您可以在下面看到的细丝的史诗般的图片。

pYYBAGLs2GeAQn8pAAhiJ5x0_vM703.png

/************************************************* ************************************
TITLE: Alexa control 3 通道 Rocket Launcher 可以很容易地升级到 7 通道
作者:Debashis Das(技术研究单元)
下载 Espalexa 库:
https://github.com/Aircoookie/Espalexa
****************************************************** ************************************/
#include
#include
//定义与Relays连接的GPIO
#define ROCKET_1_PIN 4
#define ROCKET_2_PIN 13
#define ROCKET_3_PIN 15
// WiFi 凭证
const char* ssid = "deba_2.4";
const char* 密码 = "il2ww*ee";
// 原型
布尔连接到WiFi();
//回调函数
void allrockets(uint8_t 亮度);
void firstrocket(uint8_t 亮度);
void secondrocket(uint8_t 亮度);
无效第三火箭(uint8_t亮度);
// 设备名称
String First_Device_Name = "所有火箭";
String Second_Device_Name = "火箭一号";
String Third_Device_Name = "火箭二号";
String Forth_Device_Name = "三号火箭";
// wifi状态检查
布尔 wifiStatus = 假;
// Espalexa 对象
埃斯帕莱克斯帕莱克斯;
无效设置()
{
// 启用串行调试消息
序列号.开始(115200);
//设置ESP引脚作为输出
pinMode(ROCKET_1_PIN,输出);
pinMode(ROCKET_2_PIN,输出);
pinMode(ROCKET_3_PIN,输出);
// 连接到本地 Wi-Fi 网络
wifiStatus = connectToWiFi();
// 如果 Wi-Fi 连接设置所有 espalexa 设备
如果(wifi状态)
{
// 在此处定义您的设备。
espalexa.addDevice(First_Device_Name, allrockets); //最简单的定义,默认状态关闭
espalexa.addDevice(Secound_Device_Name, firstrocket);
espalexa.addDevice(Third_Device_Name, secondrocket);
espalexa.addDevice(Forth_Device_Name, thirdrocket);
espalexa.begin();
}
别的
{
而 (1)
{
Serial.println("无法连接WiFi。请检查数据并重置ESP。");
延迟(2500);
}
}
}
无效循环()
{
espalexa.loop();
延迟(1);
}
//回调函数
void allrockets(uint8_t 亮度)
{
如果(亮度 == 255)
{
数字写入(ROCKET_1_PIN,高);
数字写入(ROCKET_2_PIN,高);
数字写入(ROCKET_3_PIN,高);
延迟(800);
数字写入(ROCKET_1_PIN,低);
数字写入(ROCKET_2_PIN,低);
数字写入(ROCKET_3_PIN,低);
Serial.println("所有火箭发射");
}
}
void firstrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
数字写入(ROCKET_1_PIN,高);
延迟(800);
数字写入(ROCKET_1_PIN,低);
Serial.println("第一枚火箭发射");
}
}
void secondrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
数字写入(ROCKET_2_PIN,高);
延迟(800);
数字写入(ROCKET_2_PIN,低);
Serial.println("第二枚火箭发射");
}
}
无效第三火箭(uint8_t 亮度)
{
如果(亮度 == 255)
{
数字写入(ROCKET_3_PIN,高);
延迟(800);
数字写入(ROCKET_3_PIN,低);
Serial.println("第三枚火箭发射");
}
}
// 连接本地 Wi-Fi - 如果成功则返回 true,否则返回 false
布尔连接到WiFi()
{
布尔状态 = 真;
诠释 i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, 密码);
序列号.println("");
Serial.println("连接到 WiFi");
// 等待连接
Serial.print("正在连接...");
而(WiFi.status()!= WL_CONNECTED){
延迟(500);
Serial.print(".");
如果(我> 20){
状态=假;休息;
}
我++;
}
序列号.println("");
如果(状态){
Serial.print("连接到");
序列号.println(ssid);
Serial.print("IP地址:");
Serial.println(WiFi.localIP());
}
别的 {
Serial.println("连接失败。");
}
返回状态;
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2900

    文章

    43949

    浏览量

    369719
  • 点火器
    +关注

    关注

    6

    文章

    56

    浏览量

    35842
  • 语音控制
    +关注

    关注

    5

    文章

    477

    浏览量

    28206
  • Alexa
    +关注

    关注

    2

    文章

    196

    浏览量

    23260
收藏 人收藏

    评论

    相关推荐

    燃气点火器电路图

    燃气点火器电路图 该燃气点火器是用高压放电产生火花使气体燃烧,电路图所示,
    发表于 12-18 22:37 9651次阅读
    燃气<b class='flag-5'>点火器</b>电路图

    脉冲点火器的原理是什么?

    脉冲点火器是由电子元器件组成的一个脉冲高频振荡器,由振荡器所产生的高频电压经升压变压器升成15KV的高电压,进行尖端放电,由放电的火花引燃燃烧器上的燃气。这种点火器点火率高,可连续放电。按下旋钮,脉冲
    发表于 10-30 09:11

    高效电子点火器电路

    高效电子点火器电路
    发表于 08-23 23:53 2528次阅读
    高效电子<b class='flag-5'>点火器</b>电路

    放电式点火器

    放电式点火器
    发表于 01-10 08:34 1078次阅读
    放电式<b class='flag-5'>点火器</b>

    点火器电路设计原理

      某些不可撤消的操作(比如释放降落伞、切断绳子或启动固体易燃导弹发动机)可以由烟火点火器执行。这种装置通常由一个电控点火器、一些用于点火后产生高压气体的化学
    发表于 10-09 11:26 5978次阅读
    <b class='flag-5'>点火器</b>电路设计原理

    点火器线路原理图

    下图为点火器线路原理图: 图 点火器线路原理图
    发表于 05-28 09:18 1.9w次阅读
    <b class='flag-5'>点火器</b>线路原理图

    高能点火器原理图及结构_高能点火器厂家介绍

    本文主要介绍了点火器的概念与组成,高能点火器的分类和工作原理、高能点火器的使用方法和应用。其次详细的介绍了高能点火器四大厂家。
    发表于 12-21 11:03 3.7w次阅读
    高能<b class='flag-5'>点火器</b>原理图及结构_高能<b class='flag-5'>点火器</b>厂家介绍

    脉冲点火器哪个牌子好

    脉冲点火器是由电子元器件组成的一个脉冲高频振荡器,由振荡器所产生的高频电压经升压变压器升成15KV的高电压,进行尖端放电,由放电的火花引燃燃烧器上的燃气。这种点火器点火率高,可连续放电。按下旋钮,脉冲
    发表于 01-30 15:45 1.9w次阅读
    脉冲<b class='flag-5'>点火器</b>哪个牌子好

    摩托直流点火器的好处_摩托车直流点火器和交流点火器有什么区别

    本文首先介绍了摩托车点火器由什么组成,其次介绍了摩托直流点火器的好处,最后阐述了摩托车直流点火器和交流点火器有什么区别以及如何判断摩托车点火器
    的头像 发表于 05-09 14:14 6.3w次阅读

    脉冲点火器故障_脉冲点火器工作原理

    本文主要阐述了脉冲点火器故障及脉冲点火器工作原理。
    的头像 发表于 01-10 10:28 3.1w次阅读

    脉冲点火器的特点及用途

    本文首先介绍了脉冲点火器的概念,其次介绍了脉冲点火器的特点,最后介绍了脉冲点火器用途。
    的头像 发表于 01-10 10:35 1.2w次阅读

    高能点火器工作原理_高能点火器不打火原因及解决

    本文首先阐述了高能点火器工作原理,其次分析了高能点火器不打火原因及解决,最后介绍了高能点火器使用注意事项。
    发表于 04-15 10:05 9653次阅读

    高能点火器的参数_高能点火器安装使用

    本文首先介绍了高能点火器的参数,其次阐述了高能点火器的安装,最后介绍了高能点火器的使用和操作。
    发表于 04-15 10:13 4776次阅读

    高能点火器故障现象及解决_高能点火器应用

    本文主要介绍了高能点火器故障现象及解决方法,另外还介绍了高能点火器的优势及应用。
    发表于 04-15 10:19 3603次阅读

    电子点火器电路图(燃气热水器电子点火器电路/汽车电子点火器电路/电子点火器电路)

    电子点火器由集成电路、大功率开关三极管及相应的电路构成,电子点火器基本电路内部主要是一个晶体管开关电路。由磁电线圈、霍尔传感器、或者电脑ECU的IGT信号去触发其导通或截止,从而控制点火线圈初级电流的通断,实现高压
    发表于 11-03 17:52 1.3w次阅读
    电子<b class='flag-5'>点火器</b>电路图(燃气热水器电子<b class='flag-5'>点火器</b>电路/汽车电子<b class='flag-5'>点火器</b>电路/电子<b class='flag-5'>点火器</b>电路)