隨著冬季的臨近;每年慶祝燈節(jié)的時(shí)候到了 。是的,我們談?wù)摰氖桥艧艄?jié),這是一個(gè)真正的印度節(jié)日,在全球范圍內(nèi)慶祝。 今年排燈節(jié)已經(jīng)結(jié)束,看到人們放鞭炮,我想出了一個(gè) 基于 Alexa 的語(yǔ)音控制火箭發(fā)射器或點(diǎn)火器的想法,它可以通過(guò)語(yǔ)音命令發(fā)射火箭,對(duì)孩子們來(lái)說(shuō)非常安全和有趣。
需要說(shuō)明的是,我不是來(lái)鼓勵(lì)人們?cè)谂艧艄?jié)放鞭炮的,印度政府已經(jīng)對(duì)鞭炮實(shí)施了限制以遏制污染,我們有責(zé)任遵守它。這里的想法是,與其花一整天的時(shí)間發(fā)射餅干,不如讓我們構(gòu)建一個(gè)很酷的語(yǔ)音控制的 Arduino 火箭點(diǎn)火器并以風(fēng)格發(fā)射一些火箭。我認(rèn)為這是雙贏的。
這個(gè)Arduino 火箭發(fā)射器將與其他火箭發(fā)射器大不相同。它有一個(gè)由膠合板制成的非常堅(jiān)固的底盤(pán),一個(gè)可靠的基于繼電器的控制機(jī)構(gòu),以及一個(gè)非常獨(dú)特的發(fā)射和重新裝載火箭的機(jī)構(gòu),所以事不宜遲,讓我們直接進(jìn)入構(gòu)建過(guò)程。
基于 Alexa 的語(yǔ)音控制火箭發(fā)射器 - 工作
電路的工作原理很簡(jiǎn)單,負(fù)責(zé)發(fā)射火箭的主要部件是鎳鉻合金線,它以加熱線圈的形式出現(xiàn)。這種鎳鉻合金線將充當(dāng)火箭點(diǎn)火器。如何?我稍后會(huì)告訴你。
正如您在上圖中看到的,鎳鉻合金線以加熱線圈的形式出現(xiàn),對(duì)我來(lái)說(shuō),這是最簡(jiǎn)單的方法。我們必須將其拉直并彎曲以形成如下圖所示的形狀。
完成此操作后,我們將使用 12V 鉛酸電池為其供電,它會(huì)發(fā)出紅光。這足以點(diǎn)燃火箭內(nèi)部的黑色火藥,它的作用就像正常的引信劑量一樣。請(qǐng)注意,這是一個(gè)大功率火箭發(fā)射控制器,使電線紅熱所需的電流很高。在大電流下工作時(shí)請(qǐng)遵循安全建議。
測(cè)試完成后,唯一剩下的就是控制過(guò)程,我們將在本文中繼續(xù)進(jìn)行時(shí)執(zhí)行此操作。
我們的 NodeMCU Rocket Launch 控制器的 Launchpad
對(duì)于這個(gè)構(gòu)建,讓我們制作一個(gè)啟動(dòng)板。完成啟動(dòng)板后,我們可以輕松地重新加載一些破解程序并非常輕松地啟動(dòng)它們。我已經(jīng)構(gòu)建了一個(gè)啟動(dòng)板,如下圖所示。
讓我們逐步了解構(gòu)建啟動(dòng)板的過(guò)程。對(duì)于框架的兩側(cè),我使用了兩塊(25X3X1.5)英寸長(zhǎng)的膠合板。對(duì)于頂部,我使用了 (20X3X1.5) 英寸長(zhǎng)的膠合板部分,對(duì)于底座,我使用了 (20X6X1.5) 英寸長(zhǎng)的膠合板,這將使其更加穩(wěn)定。下面的圖片會(huì)給你一個(gè)清晰的想法。
現(xiàn)在,是時(shí)候制造鎳鉻合金絲了,它可以作為我們火箭的保險(xiǎn)絲。為此,我買了一個(gè) 1000W 的鎳鉻合金線底座加熱線圈,將其拉直,制成如下圖所示的結(jié)構(gòu)。我必須使用兩個(gè)鉗子和側(cè)刀來(lái)塑造鎳鉻合金線,如下所示。
完成此操作后,我將 20 英寸的膠合板塊分成七塊測(cè)量它,并鉆孔以放入鎳鉻合金線基細(xì)絲,一旦完成,它看起來(lái)像下面的圖像。
但在放置燈絲之前,我在每個(gè)端子上連接了 1 平方毫米厚的銅線并將它們穿過(guò)孔,一旦一切完成,它看起來(lái)像下圖。
如您所見(jiàn),我還加入了雙組分粘合劑以將電線和細(xì)絲固定到位。完成后,我們的啟動(dòng)板就完成了。正如您從本節(jié)的第一張圖片中看到的那樣,我將燈絲線直接連接到 PCB,因?yàn)槲覀冋谔幚矸浅8叩碾娏鳎晕覜](méi)有費(fèi)心放置螺絲端子,這標(biāo)志著我們機(jī)箱的末端建設(shè)過(guò)程。
Alexa 控制的火箭發(fā)射器所需的組件
對(duì)于硬件方面,我們使用了非常通用的部件,您可以從當(dāng)?shù)氐膼?ài)好商店輕松獲得,下面給出了完整的物品清單。
12V-繼電器 - 3
BD139 晶體管 - 3
1N4004 二極管 - 3
5.08 毫米螺絲端子 - 1
LM7805 - 穩(wěn)壓器 - 1
100uF去耦電容 - 2
5.1V 穩(wěn)壓二極管 - 1
NodeMCU (ESP8266-12E) 開(kāi)發(fā)板 - 1
虛線性能板 - ?
連接線 - 10
Arduino火箭發(fā)射器電路圖
下面給出了Alexa 控制的火箭發(fā)射器的完整示意圖。我使用標(biāo)簽將一個(gè)引腳連接到另一個(gè)引腳。如果你看得足夠近,解釋原理圖應(yīng)該不難。
電路結(jié)構(gòu)非常簡(jiǎn)單,所以我不會(huì)詳細(xì)介紹。
首先,我們有 IC1,它是一個(gè) LM7805 穩(wěn)壓器,其 100uF 去耦電容由 C1 和 C2 表示。之后,我們有了項(xiàng)目的核心,即 NodeMCU 板,其中包含 ESP-12E 模塊。由于我們使用的是 12V 鉛酸電池為整個(gè)電路供電,這就是為什么我們必須先使用 LM7805 將其轉(zhuǎn)換為 12V 到 5V 來(lái)為 NodeMCU 板供電。我們這樣做是因?yàn)榘遢d AMS1117 穩(wěn)壓器不足以將 12V 直接轉(zhuǎn)換為 3.3V,這就是需要 7805 的原因。
繼續(xù)前進(jìn),我們有三個(gè) 12V 繼電器,在這個(gè)演示中,我們使用了三個(gè)繼電器,但正如我們之前提到的,發(fā)射臺(tái)有一個(gè)用于 7 枚火箭的占位符。您可以稍微調(diào)整一下代碼,然后將所有七枚火箭一起發(fā)射。三個(gè)繼電器由三個(gè)NPN晶體管T1、T2、T3驅(qū)動(dòng),足以驅(qū)動(dòng)一個(gè)real的負(fù)載。最后,我們有三個(gè)續(xù)流二極管,用于保護(hù)電路免受繼電器產(chǎn)生的高壓尖峰的影響。
在 PerfBoard 上構(gòu)建電路
從主圖中可以看出,我們的想法是制作一個(gè)可以在短時(shí)間內(nèi)處理大量電流的簡(jiǎn)單電路,根據(jù)我們的測(cè)試,800 毫秒足以點(diǎn)亮一張紙。因此,我們?cè)谝粔K穿孔板上構(gòu)建電路,并用 1 平方毫米厚的銅線連接所有主要連接。在我們完成焊接板之后。一旦我們完成,它看起來(lái)像下面顯示的東西。
為 Alexa 控制的火箭發(fā)射器編程 NodeMCU
現(xiàn)在硬件已經(jīng)準(zhǔn)備就緒,是時(shí)候開(kāi)始為我們基于 Alexa 的語(yǔ)音控制火箭發(fā)射器編寫(xiě)代碼了。完整的代碼可以在本頁(yè)末尾找到,但在我們開(kāi)始之前,將所需的庫(kù)添加到您的 Arduino IDE 非常重要。確保從下面給出的鏈接中添加正確的庫(kù),否則代碼在編譯時(shí)會(huì)拋出錯(cuò)誤。
下載 Espalexa 庫(kù)
添加所需庫(kù)后,您可以直接上傳本頁(yè)底部給出的代碼,以檢查電路是否正常工作。如果您想知道代碼是如何工作的,請(qǐng)繼續(xù)閱讀。
像往常一樣,我們通過(guò)添加所需的頭文件并為我們的熱點(diǎn)定義引腳名稱和憑據(jù)來(lái)開(kāi)始程序。
#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";
繼續(xù)我們的代碼,我們有我們的函數(shù)原型和回調(diào)函數(shù)定義。
函數(shù)connectToWiFi()用于連接 Wi-Fi 網(wǎng)絡(luò),當(dāng) Wi-Fi 連接成功時(shí)該函數(shù)返回 true。
接下來(lái),我們有我們的回調(diào)函數(shù),當(dāng)我們向 Alexa 發(fā)出命令時(shí)會(huì)調(diào)用這個(gè)函數(shù),espalexa API 會(huì)處理這些函數(shù)
void allrockets(uint8_t 亮度); void firstrocket(uint8_t 亮度); void secondrocket(uint8_t 亮度); 無(wú)效第三火箭(uint8_t亮度);
接下來(lái),我們定義設(shè)備名稱。這些定義的設(shè)備名稱將反映在 Alexa 應(yīng)用程序上,當(dāng)我們說(shuō)出命令時(shí),Alexa 將通過(guò)這些名稱識(shí)別設(shè)備。所以這些名字非常重要。
// 設(shè)備名稱 String First_Device_Name = "所有火箭"; String Second_Device_Name = "火箭一號(hào)"; String Third_Device_Name = "火箭二號(hào)"; String Forth_Device_Name = "三號(hào)火箭";
接下來(lái),我們定義一個(gè)布爾變量wifiStatus,它將保存 Wi-Fi 的連接狀態(tài)。最后,我們創(chuàng)建一個(gè) Espalexa 對(duì)象 espalexa。我們將使用這個(gè)對(duì)象來(lái)配置 NodeMCU。
// wifi狀態(tài)檢查 布爾 wifiStatus = 假; // Espalexa 對(duì)象 埃斯帕萊克斯帕萊克斯;
接下來(lái),我們有我們的void setup()部分。在本節(jié)中,我們使用Serial.begin()函數(shù)初始化串行通信以進(jìn)行調(diào)試。我們使用pinMode()函數(shù)將之前定義的所有引腳設(shè)置為輸出,接下來(lái)我們調(diào)用connectToWiFi()函數(shù),它會(huì)嘗試連接到 Wi-Fi 15 次,如果連接成功,則返回 true連接起來(lái),它將返回 false 并且代碼將永遠(yuǎn)執(zhí)行while()循環(huán)。如果 Wi-Fi 連接成功,我們使用espalexa.addDevice()函數(shù)將之前定義的設(shè)備添加到 Alexa 對(duì)象中。這個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)是設(shè)備名稱,第二個(gè)是回調(diào)函數(shù)的名稱,當(dāng)我們向 Alexa 發(fā)出命令時(shí),會(huì)調(diào)用相鄰的函數(shù)。一旦我們完成了所有四個(gè)設(shè)備的操作,我們調(diào)用 espalexa 對(duì)象的begin()方法。
無(wú)效設(shè)置(){ 序列號(hào).開(kāi)始(115200);// 啟用串行調(diào)試消息 pinMode(ROCKET_1_PIN,輸出);//設(shè)置ESP引腳作為輸出 pinMode(ROCKET_2_PIN,輸出);//設(shè)置ESP引腳作為輸出 pinMode(ROCKET_3_PIN,輸出);//設(shè)置ESP引腳作為輸出 wifiStatus = connectToWiFi(); // 連接到本地 Wi-Fi 網(wǎng)絡(luò) if (wifiStatus) {// 設(shè)置所有 espalexa 設(shè)備 // 在此處定義您的設(shè)備。 espalexa.addDevice(First_Device_Name, allrockets); //最簡(jiǎn)單的定義,默認(rèn)狀態(tài)關(guān)閉 espalexa.addDevice(Secound_Device_Name, firstrocket); espalexa.addDevice(Third_Device_Name, secondrocket); espalexa.addDevice(Forth_Device_Name, thirdrocket); espalexa.begin(); } 別的 { 而(1){ 串行。println("無(wú)法連接WiFi。請(qǐng)檢查數(shù)據(jù)并重置ESP。"); 延遲(2500); } } }
在循環(huán)部分,我們調(diào)用 espalexa 對(duì)象的loop()方法,該方法將始終檢查任何傳入的命令,如果發(fā)現(xiàn)為真,則調(diào)用回調(diào)函數(shù)。
無(wú)效循環(huán)(){ espalexa.loop(); 延遲(1); }
接下來(lái),我們定義所有回調(diào)函數(shù),在本節(jié)中,我們將定義調(diào)用此回調(diào)函數(shù)時(shí)會(huì)發(fā)生什么。當(dāng)調(diào)用 allrockets()函數(shù)時(shí),所有火箭將一起發(fā)射。為此,我們將打開(kāi)繼電器 00 毫秒,然后關(guān)閉繼電器。在我的測(cè)試中,我發(fā)現(xiàn)對(duì)于指定長(zhǎng)度的鎳鉻合金線,我需要 800 毫秒的延遲才能完全加熱線,這對(duì)你來(lái)說(shuō)可能是這樣,也可能不是。所以相應(yīng)地選擇延遲。
void allrockets(uint8_t 亮度) { 如果(亮度 == 255) { 數(shù)字寫(xiě)入(ROCKET_1_PIN,高); 數(shù)字寫(xiě)入(ROCKET_2_PIN,高); 數(shù)字寫(xiě)入(ROCKET_3_PIN,高); 延遲(800); 數(shù)字寫(xiě)入(ROCKET_1_PIN,低); 數(shù)字寫(xiě)入(ROCKET_2_PIN,低); 數(shù)字寫(xiě)入(ROCKET_3_PIN,低); Serial.println("所有火箭發(fā)射"); } }
接下來(lái),我們有我們的第一個(gè) rocket(),當(dāng)我們調(diào)用 Alexa 并說(shuō) tie 命令發(fā)射第一顆火箭時(shí),它會(huì)被調(diào)用。過(guò)程很相似,我們開(kāi)啟繼電器800ms再關(guān)閉。
void firstrocket(uint8_t 亮度){ 如果(亮度 == 255) { 數(shù)字寫(xiě)入(ROCKET_1_PIN,高); 延遲(800); 數(shù)字寫(xiě)入(ROCKET_1_PIN,低); Serial.println("第一枚火箭發(fā)射"); } }
最后,我們有了connectToWiFi()函數(shù)。這個(gè)函數(shù)非常通用且不言自明,所以我不會(huì)詳細(xì)介紹這個(gè)函數(shù)。該函數(shù)將 ESP 連接到 Wi-Fi 并返回連接狀態(tài)。
布爾連接到WiFi() { 布爾狀態(tài) = 真; 詮釋 i = 0; WiFi.mode(WIFI_STA); WiFi.begin(ssid, 密碼); 序列號(hào).println(""); Serial.println("連接到 WiFi"); // 等待連接 Serial.print("正在連接..."); 而(WiFi.status()!= WL_CONNECTED){ 延遲(500); Serial.print("."); 如果 (i > 15) { 狀態(tài)=假;休息; } 我++; } 序列號(hào).println(""); 如果(狀態(tài)){ Serial.print("連接到"); 序列號(hào).println(ssid); Serial.print("IP地址:"); Serial.println(WiFi.localIP()); } 別的 { Serial.println("連接失敗。"); } 返回狀態(tài); }
定義的這個(gè)函數(shù)標(biāo)志著編碼部分的結(jié)束。
使用 Alexa Android 應(yīng)用程序配置 Alexa
當(dāng)且僅當(dāng) Alexa 識(shí)別 esp8866 設(shè)備時(shí),它才會(huì)接受命令。為此,我們需要借助 Android 上的 Alexa 應(yīng)用程序來(lái)配置 Alexa。在我們繼續(xù)之前要做的一件重要的事情是,我們需要確保 Alexa 配置了我們的 android 應(yīng)用程序。
為此,請(qǐng)轉(zhuǎn)到 Alexa 應(yīng)用程序的更多部分,然后單擊“添加設(shè)備”選項(xiàng),單擊“燈光”, 然后在頁(yè)面底部向下滾動(dòng)并單擊“其他” 。
接下來(lái),單擊DISCOVER DEVICE并 等待片刻,然后 Alexa 將找到新設(shè)備。一旦 Alexa 找到設(shè)備,您需要單擊它們并將它們添加到各自的位置/類別中,然后您就完成了。
Alexa 控制的火箭發(fā)射器 - 測(cè)試
在測(cè)試過(guò)程中,我去了我的花園,把火箭上的所有保險(xiǎn)絲都拔了出來(lái),放在各自的地方,然后我喊著 Alexa……!打開(kāi)所有的火箭,我的手指交叉。所有的火箭都將我的努力標(biāo)記為巨大的成功。它看起來(lái)像這樣。
最后,我再次說(shuō) Alexa……!打開(kāi)所有火箭,以獲得您可以在下面看到的細(xì)絲的史詩(shī)般的圖片。
/************************************************* ************************************
TITLE: Alexa control 3 通道 Rocket Launcher 可以很容易地升級(jí)到 7 通道
作者:Debashis Das(技術(shù)研究單元)
下載 Espalexa 庫(kù):
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();
//回調(diào)函數(shù)
void allrockets(uint8_t 亮度);
void firstrocket(uint8_t 亮度);
void secondrocket(uint8_t 亮度);
無(wú)效第三火箭(uint8_t亮度);
// 設(shè)備名稱
String First_Device_Name = "所有火箭";
String Second_Device_Name = "火箭一號(hào)";
String Third_Device_Name = "火箭二號(hào)";
String Forth_Device_Name = "三號(hào)火箭";
// wifi狀態(tài)檢查
布爾 wifiStatus = 假;
// Espalexa 對(duì)象
埃斯帕萊克斯帕萊克斯;
無(wú)效設(shè)置()
{
// 啟用串行調(diào)試消息
序列號(hào).開(kāi)始(115200);
//設(shè)置ESP引腳作為輸出
pinMode(ROCKET_1_PIN,輸出);
pinMode(ROCKET_2_PIN,輸出);
pinMode(ROCKET_3_PIN,輸出);
// 連接到本地 Wi-Fi 網(wǎng)絡(luò)
wifiStatus = connectToWiFi();
// 如果 Wi-Fi 連接設(shè)置所有 espalexa 設(shè)備
如果(wifi狀態(tài))
{
// 在此處定義您的設(shè)備。
espalexa.addDevice(First_Device_Name, allrockets); //最簡(jiǎn)單的定義,默認(rèn)狀態(tài)關(guān)閉
espalexa.addDevice(Secound_Device_Name, firstrocket);
espalexa.addDevice(Third_Device_Name, secondrocket);
espalexa.addDevice(Forth_Device_Name, thirdrocket);
espalexa.begin();
}
別的
{
而 (1)
{
Serial.println("無(wú)法連接WiFi。請(qǐng)檢查數(shù)據(jù)并重置ESP。");
延遲(2500);
}
}
}
無(wú)效循環(huán)()
{
espalexa.loop();
延遲(1);
}
//回調(diào)函數(shù)
void allrockets(uint8_t 亮度)
{
如果(亮度 == 255)
{
數(shù)字寫(xiě)入(ROCKET_1_PIN,高);
數(shù)字寫(xiě)入(ROCKET_2_PIN,高);
數(shù)字寫(xiě)入(ROCKET_3_PIN,高);
延遲(800);
數(shù)字寫(xiě)入(ROCKET_1_PIN,低);
數(shù)字寫(xiě)入(ROCKET_2_PIN,低);
數(shù)字寫(xiě)入(ROCKET_3_PIN,低);
Serial.println("所有火箭發(fā)射");
}
}
void firstrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
數(shù)字寫(xiě)入(ROCKET_1_PIN,高);
延遲(800);
數(shù)字寫(xiě)入(ROCKET_1_PIN,低);
Serial.println("第一枚火箭發(fā)射");
}
}
void secondrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
數(shù)字寫(xiě)入(ROCKET_2_PIN,高);
延遲(800);
數(shù)字寫(xiě)入(ROCKET_2_PIN,低);
Serial.println("第二枚火箭發(fā)射");
}
}
無(wú)效第三火箭(uint8_t 亮度)
{
如果(亮度 == 255)
{
數(shù)字寫(xiě)入(ROCKET_3_PIN,高);
延遲(800);
數(shù)字寫(xiě)入(ROCKET_3_PIN,低);
Serial.println("第三枚火箭發(fā)射");
}
}
// 連接本地 Wi-Fi - 如果成功則返回 true,否則返回 false
布爾連接到WiFi()
{
布爾狀態(tài) = 真;
詮釋 i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, 密碼);
序列號(hào).println("");
Serial.println("連接到 WiFi");
// 等待連接
Serial.print("正在連接...");
而(WiFi.status()!= WL_CONNECTED){
延遲(500);
Serial.print(".");
如果(我> 20){
狀態(tài)=假;休息;
}
我++;
}
序列號(hào).println("");
如果(狀態(tài)){
Serial.print("連接到");
序列號(hào).println(ssid);
Serial.print("IP地址:");
Serial.println(WiFi.localIP());
}
別的 {
Serial.println("連接失敗。");
}
返回狀態(tài);
}
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2921文章
45657瀏覽量
384843 -
點(diǎn)火器
+關(guān)注
關(guān)注
6文章
58瀏覽量
36183 -
語(yǔ)音控制
+關(guān)注
關(guān)注
5文章
494瀏覽量
28546 -
Alexa
+關(guān)注
關(guān)注
2文章
197瀏覽量
23604
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
燃?xì)?b class='flag-5'>點(diǎn)火器電路圖

脈沖點(diǎn)火器的原理是什么?
點(diǎn)火器電路設(shè)計(jì)原理

高能點(diǎn)火器原理圖及結(jié)構(gòu)_高能點(diǎn)火器廠家介紹

摩托直流點(diǎn)火器的好處_摩托車直流點(diǎn)火器和交流點(diǎn)火器有什么區(qū)別
脈沖點(diǎn)火器的特點(diǎn)及用途
高能點(diǎn)火器工作原理_高能點(diǎn)火器不打火原因及解決
高能點(diǎn)火器的參數(shù)_高能點(diǎn)火器安裝使用
高能點(diǎn)火器故障現(xiàn)象及解決_高能點(diǎn)火器應(yīng)用
電子點(diǎn)火器電路圖(燃?xì)鉄崴麟娮?b class='flag-5'>點(diǎn)火器電路/汽車電子點(diǎn)火器電路/電子點(diǎn)火器電路)

評(píng)論