- 基于Alexa的语音控制火箭发射器-工作
- NodeMCU Rocket Launch Controller的启动板
- Alexa受控火箭发射器所需的组件
- Arduino火箭发射器电路图
- 在PerfBoard上构建电路
- 为Alexa受控火箭发射器编程NodeMCU
- 使用Alexa Android应用程序配置Alexa
- Alexa受控火箭发射器-测试
随着冬季的临近;每年的那个灯节到来的时候 。是的,我们谈论的是排灯节,这是一个在全球范围内庆祝的真正的印度节日。 今年,排灯节已经结束了,看到人们放鞭炮时,我想到了建造基于Alexa的语音控制火箭发射器或点火器的想法,该 发射器可以通过语音命令发射火箭,这对于孩子来说非常安全和有趣。
明确地说,我不是在这里鼓励人们在排灯节上放饼干,印度政府对饼干进行了限制以遏制污染,我们有责任坚持这一点。这里的想法是,与其花一整天不发射饼干,不如让我们构建一个很酷的声音控制的Arduino火箭点火器,然后发射几枚风格新颖的火箭。我认为这是双赢的。
这款Arduino火箭发射器与其他火箭发射器会有很大不同。它具有由胶合板制成的非常坚固的底盘,可靠的基于继电器的控制机制以及用于发射和重新装载火箭的非常独特的机制,因此,我们不需再拖延即可开始构建过程。
基于Alexa的语音控制火箭发射器-工作
电路的工作机制非常简单,负责发射火箭的主要部件是镍铬合金丝,它以加热线圈的形式出现。这条镍铬合金丝将充当火箭点火器。怎么样?我待会再告诉你。
如上图所示,镍铬合金丝以加热线圈的形式出现,对我而言,这是获得它的最简单方法。我们必须将其笔直并弯曲以形成如下图所示的形状。
完成此操作后,我们将使用12V铅酸电池为其供电,并且它会发红光。这将足以点燃火箭内部的黑色粉末,并且将像正常的保险丝剂量那样工作。请注意,这是一个大功率火箭发射控制器,使导线变红所需的电流很高。在大电流下工作时,请遵循安全建议。
一旦测试完成,剩下的就是控制过程,随着本文的进一步进行,我们将进行控制。
NodeMCU Rocket Launch Controller的启动板
对于此构建,让我们制作一个启动板。完成启动板后,我们可以轻松地重新加载一些饼干并非常容易地启动它们。我已经构建了一个启动板,看起来像下图所示。
让我们逐步完成构建启动板的过程。对于框架的两侧,我使用了两块(25X3X1.5)英寸长的胶合板。对于顶部,我使用了(20X3X1.5)英寸长的胶合板部件,对于底部,我使用了(20X6X1.5)英寸长的胶合板部件,这将使其更具稳定性。下图将给您一个清晰的主意。
现在,该制造基于镍铬合金丝的细丝了,该细丝将充当我们火箭的引信。为此,我购买了一个1000W的镍铬丝基加热线圈,将其拉直,并制成如下所示的结构。我必须使用两个钳子和侧面切割器来塑造镍铬合金线,如下所示。
完成此操作后,我将20英寸的胶合板块分成七个测量部分,并钻孔以放入基于镍铬合金线的细丝,完成后,其外观如下图所示。
但是在放置细丝之前,我已经在每个端子上连接了1平方毫米厚的铜线,并将它们穿过孔,完成所有操作后,其外观如下图所示。
如您所见,我还加入了两种成分的粘合剂以将电线和细丝固定在适当的位置。完成后,我们的启动板就完成了。从本节的第一张图可以看出,我将细丝直接连接到PCB上,因为我们要处理非常大的电流,所以我不必理会放置螺丝端子,这标志着机箱的末端建设过程。
Alexa受控火箭发射器所需的组件
对于硬件方面,我们使用了非常通用的部件,您可以从本地的业余爱好商店轻松获得这些部件,下面提供了完整的项目清单。
- 12V继电器-3
- BD139晶体管-3
- 1N4004二极管-3
- 5.08 mm螺丝端子-1
- LM7805-稳压器-1
- 100uF去耦电容器-2
- 5.1V稳压二极管-1
- NodeMCU(ESP8266-12E)板-1
- 点缀的穿孔板-½
- 连接线-10
Arduino火箭发射器电路图
下面给出了Alexa受控火箭发射器的完整示意图。我已经使用标签将一个引脚连接到另一个。如果您看起来足够近,则解释原理图应该不难。
电路构造非常简单,因此我将不去赘述。
首先,我们有一个LM7805稳压器IC1,其100uF去耦电容器用C1和C2表示。此后,我们就拥有了项目的核心,即NodeMCU板,其中装有ESP-12E模块。由于我们使用12V铅酸电池为整个电路供电,因此我们必须使用LM7805首先将其转换为12V至5V来为NodeMCU板供电。我们这样做是因为板载AMS1117稳压器不足以将12V直接转换为3.3V,这就是为什么需要7805的原因。
继续,我们有3个12V继电器,在此演示中,我们使用3个继电器,但是正如我们前面提到的,启动板有一个占位符,可容纳7枚火箭。您可以稍微调整一下代码,然后将所有七个火箭一起发射。这三个继电器由作为三个NPN晶体管的T1,T2和T3驱动,它们足以驱动实数的负载。最后,我们有三个续流二极管,它们可以保护电路免受继电器产生的高压尖峰的影响。
在PerfBoard上构建电路
从主图中可以看到,这个想法是制造一个简单的电路,可以在短时间内处理大量电流,根据我们的测试,800毫秒足以点亮一张纸。因此,我们将电路构建在一块穿孔板上,并使用1平方毫米厚的铜线连接所有主要连接。完成板子焊接之后。完成后,看起来就像下面所示。
为Alexa受控火箭发射器编程NodeMCU
现在硬件已经准备就绪,是时候开始为我们基于Alexa的语音控制火箭发射器进行编码了。完整的代码可以在本页的末尾找到,但是在我们开始之前,将所需的库添加到Arduino IDE很重要。确保从下面给出的链接中添加正确的库,否则代码在编译时将引发错误。
- 下载Espalexa库
添加所需的库后,您可以直接上载此页面底部给出的代码,以检查电路是否正常工作。如果您想知道代码的工作原理,请继续阅读。
与往常一样,我们通过添加所需的头文件并定义热点的引脚名称和凭据来开始程序。
#包括
继续我们的代码,我们有函数原型和回调函数定义。
函数 connectToWiFi() 用于连接到Wi-Fi网络,当Wi-Fi成功连接后,此函数返回true。
接下来,我们有 回调 函数,当我们向Alexa发出命令时,将调用此函数,espalexa API将处理这些函数
无效的所有火箭(uint8_t亮度); void firstrocket(uint8_t亮度); void secondrocket(uint8_t亮度); 无效Thirdrocket(uint8_t亮度);
接下来,我们定义设备名称。这些定义的设备名称将反映在Alexa应用程序中,当我们说命令时,Alexa将通过这些名称识别设备。因此,这些名称非常重要。
//设备名称String First_Device_Name =“所有火箭”; String Secound_Device_Name =“火箭一号”; String Third_Device_Name =“火箭2”; String Forth_Device_Name =“火箭三”;
接下来,我们定义一个布尔变量 wifiStatus, 该变量将保存Wi-Fi的连接状态。最后,我们创建一个Espalexa对象espalexa。我们将使用此对象来配置NodeMCU。
// wifi状态检查boolean wifiStatus = false; // Espalexa对象Espalexa espalexa;
接下来,我们有我们的 void setup() 部分。在本节中,我们使用 Serial.begin() 函数初始化串行通信以进行调试 。我们使用 pinMode() 函数将所有先前定义的引脚设置为输出,接下来我们调用 connectToWiFi() 函数,如果已连接,它将尝试连接Wi-Fi 15次,如果未连接,它将返回true。连接后,它将返回false,并且代码将永远执行 while() 循环 。如果Wi-Fi连接成功,我们可以使用 espalexa.addDevice() 函数将先前定义的设备添加到Alexa对象中。该函数 带有 两个参数,第一个是Device Name, 第二个是回调函数的名称,当我们向Alexa发出命令时,将调用相邻的函数。完成对所有四个设备的操作后,我们将为espalexa对象调用 begin() 方法。
void setup(){Serial.begin(115200); //启用串口以调试消息pinMode(ROCKET_1_PIN,OUTPUT); //将ESP引脚设置为输出pinMode(ROCKET_2_PIN,OUTPUT); //将ESP引脚设置为输出pinMode(ROCKET_3_PIN,OUTPUT); //将ESP引脚设置为输出wifiStatus = connectToWiFi(); //如果(wifiStatus){//设置所有espalexa设备,请//连接到本地Wi-Fi网络//在此处定义您的设备。 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(); } else {while(1){序列号。 println(“无法连接到WiFi。请检查数据并重置ESP。”);延迟(2500); }}}
在 循环 部分,我们调用espalexa对象的 loop() 方法,该方法将始终检查是否有任何传入命令,并在找到true时调用回调函数。
无效loop(){espalexa.loop(); delay(1); }
接下来,我们定义所有回调函数,在本节中,我们将定义调用此回调函数时发生的情况。当 allrockets() 函数被调用,所有的火箭将要一起推出。为此,我们将打开继电器00毫秒,然后关闭继电器。在我的测试中,我发现对于指定长度的镍铬合金线,我需要800毫秒的延迟才能完全加热线,这对您而言可能是正确的,也可能不是。因此,请相应选择延迟。
无效allrockets(uint8_t亮度){如果(亮度== 255){digitalWrite(ROCKET_1_PIN,HIGH); digitalWrite(ROCKET_2_PIN,HIGH); digitalWrite(ROCKET_3_PIN,HIGH); 延迟(800); digitalWrite(ROCKET_1_PIN,LOW); digitalWrite(ROCKET_2_PIN,LOW); digitalWrite(ROCKET_3_PIN,LOW); Serial.println(“所有火箭发射”); }}
接下来,我们有了我们的 第一个rocket(), 当我们调用Alexa并说领带命令来发射第一个火箭时 , 将调用此函数。过程非常相似,我们打开继电器800毫秒然后关闭。
void firstrocket(uint8_t亮度){如果(亮度== 255){digitalWrite(ROCKET_1_PIN,HIGH); 延迟(800); digitalWrite(ROCKET_1_PIN,LOW); Serial.println(“第一枚火箭发射”); }}
最后,我们有 connectToWiFi() 函数。此功能非常通用且不言自明,因此,我将不涉及该功能的详细信息。此功能将ESP连接到Wi-Fi并返回连接状态。
boolean connectToWiFi(){boolean state = true; int i = 0; WiFi.mode(WIFI_STA); WiFi.begin(ssid,密码); Serial.println(“”); Serial.println(“正在连接到WiFi”); //等待连接Serial.print(“ Connecting…”); 而(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print(“。”); 如果(i> 15){state = false; 打破; } i ++; } Serial.println(“”); if(state){Serial.print(“ Connected to”); Serial.println(ssid); Serial.print(“ IP地址:”); Serial.println(WiFi.localIP()); } else {Serial.println(“连接失败。”); 返回状态;}
定义的该功能标志着编码部分的结尾。
使用Alexa Android应用程序配置Alexa
仅当且仅当它识别出esp8866设备时,Alexa才会接受命令。为此,我们需要在Android上的Alexa应用程序的帮助下配置Alexa。在继续进行之前,要做的一件重要的事情是我们需要确保Alexa已配置了我们的android应用程序。
为此,请转到Alexa应用程序的更多部分,然后单击“添加设备”选项,单击“光”, 然后在页面底部向下滚动并单击“其他”。
接下来,点击发现设备并 等待片刻后,页面会发现新的设备。Alexa找到设备后,您需要单击它们并将其添加到各自的位置/类别,然后完成。
Alexa受控火箭发射器-测试
在测试过程中,我去了我的花园,从火箭上拉下了所有的保险丝,将它们放在各自的位置,然后我大喊亚历山德拉……!双手合十打开所有火箭。所有的火箭弹都标志着我的努力取得了巨大的成功。它看起来像这样。
最后,我再说一次Alexa…!打开所有火箭以获取细丝的史诗般的照片,您可以在下面看到。
要获得更史诗般的体验,我强烈建议您观看视频。