- ตัวเรียกใช้จรวดที่ควบคุมด้วยเสียงของ Alexa - ใช้งานได้
- Launchpad สำหรับ NodeMCU Rocket Launch Controller ของเรา
- ส่วนประกอบที่จำเป็นสำหรับ Alexa Controlled Rocket Launcher
- แผนภาพวงจร Arduino Rocket Launcher
- การสร้างวงจรบน PerfBoard
- การเขียนโปรแกรม NodeMCU สำหรับ Alexa Controlled Rocket Launcher
- การกำหนดค่า Alexa ด้วยแอปพลิเคชัน Alexa Android
- Alexa Controlled Rocket Launcher - การทดสอบ
เมื่อฤดูหนาวใกล้เข้ามา มาถึงเวลาของปีที่ว่าเมื่อเทศกาลแห่งแสง มีการเฉลิมฉลอง ใช่เรากำลังพูดถึง Diwali ซึ่งเป็นเทศกาลของอินเดียที่มีการเฉลิมฉลองไปทั่วโลก ในปีนี้ Diwali สิ้นสุดลงแล้วและเมื่อได้เห็นผู้คนจุดประทัดฉันจึงได้แนวคิดในการสร้างเครื่องยิงจรวดที่ควบคุมด้วยเสียงหรือ Igniterของ Alexaซึ่งสามารถยิงจรวดได้ด้วยคำสั่งเสียงทำให้ปลอดภัยและสนุกสนานสำหรับเด็ก ๆ
เพื่อให้ชัดเจนฉันไม่ได้มาที่นี่เพื่อสนับสนุนให้ผู้คนยิงแครกเกอร์บน Diwali รัฐบาลอินเดียได้บังคับใช้ข้อ จำกัด เกี่ยวกับแคร็กเกอร์เพื่อลดมลพิษและเป็นความรับผิดชอบของเราที่จะต้องปฏิบัติตาม แนวคิดที่นี่คือแทนที่จะใช้เวลาทั้งวันในการยิงแครกเกอร์เรามาสร้างเครื่องจุดระเบิดจรวด Arduino ที่ควบคุมด้วยเสียงและยิงจรวดสองสามอันอย่างมีสไตล์ ฉันเห็นว่าเป็น win-win
เครื่องยิงจรวด Arduinoนี้จะแตกต่างจากที่อื่นมาก มันมีแชสซีที่แข็งแรงมากที่ทำจากไม้อัดกลไกการควบคุมแบบรีเลย์ที่เชื่อถือได้และกลไกที่เป็นเอกลักษณ์มากสำหรับการยิงและบรรจุจรวดดังนั้นไม่ต้องรอช้าเข้าสู่กระบวนการสร้างกันเลย
ตัวเรียกใช้จรวดที่ควบคุมด้วยเสียงของ Alexa - ใช้งานได้
กลไกการทำงานของวงจรนั้นง่ายมากส่วนประกอบหลักที่ทำหน้าที่ในการปล่อยจรวดคือลวดนิโครมและอยู่ในรูปของขดลวดความร้อน ลวดนิโครมนี้จะทำหน้าที่เป็นตัวจุดระเบิดของจรวด อย่างไร? ฉันจะแสดงให้คุณเห็นในภายหลัง
ดังที่คุณเห็นในภาพด้านบนลวดนิโครมมาในรูปแบบของขดลวดฮีตเตอร์สำหรับฉันมันเป็นวิธีที่ง่ายที่สุดในการรับมัน เราต้องดึงให้ตรงและงอให้ได้รูปทรงดังรูปด้านล่าง
เมื่อเราทำเสร็จแล้วเราจะจ่ายไฟด้วยแบตเตอรี่ตะกั่วกรด 12V และมันจะเรืองแสงสีแดงร้อน นี่จะเพียงพอที่จะจุดผงสีดำภายในจรวดและมันจะทำงานเหมือนกับปริมาณฟิวส์ปกติ โปรดทราบว่านี่คือเครื่องควบคุมการยิงจรวดกำลังสูงกระแสที่ต้องใช้ในการทำให้สายไฟแดงร้อนสูง ปฏิบัติตามคำแนะนำด้านความปลอดภัยเมื่อทำงานกับกระแสไฟฟ้าสูง
เมื่อการทดสอบเสร็จสิ้นสิ่งเดียวที่เหลืออยู่คือกระบวนการควบคุมซึ่งเราจะดำเนินการต่อไปในบทความต่อไป
Launchpad สำหรับ NodeMCU Rocket Launch Controller ของเรา
สำหรับโครงสร้างนี้เรามาสร้าง Launchpad กัน เมื่อเสร็จสิ้นการเปิดตัวแพดเราสามารถโหลดแคร็กเกอร์ใหม่และเปิดใช้งานได้อย่างง่ายดาย ฉันได้สร้าง Launchpad ที่มีลักษณะเหมือนที่แสดงในภาพด้านล่าง
มาดูขั้นตอนการสร้าง Launchpad กัน สำหรับกรอบทั้งสองด้านฉันใช้ไม้อัดยาว (25X3X1.5) นิ้วสองชิ้น สำหรับส่วนด้านบนฉันใช้ไม้อัดยาว (20X3X1.5) นิ้วและสำหรับฐานฉันใช้ไม้อัดยาว (20X6X1.5) นิ้วซึ่งจะทำให้มีความมั่นคงมากขึ้นเล็กน้อย ภาพด้านล่างจะให้แนวคิดที่ชัดเจน
ตอนนี้ถึงเวลาที่จะสร้างเส้นใยที่ใช้ลวดนิโครมซึ่งจะทำหน้าที่เป็นฟิวส์สำหรับจรวดของเรา สำหรับสิ่งนั้นฉันได้ซื้อขดลวดความร้อนฐานลวดนิโครม 1000W ยืดขึ้นและสร้างโครงสร้างตามที่แสดงด้านล่าง ฉันต้องใช้คีมและใบมีดสองข้างเพื่อสร้างลวดนิโครมตามที่แสดงด้านล่าง
เมื่อเสร็จแล้วฉันก็แบ่งบล็อกไม้อัดขนาด 20 นิ้วออกเป็น 7 ชิ้นวัดและเจาะรูเพื่อใส่เส้นใยที่ทำจากลวดนิโครมเข้าไปและเมื่อทำเสร็จแล้วจะมีลักษณะเหมือนภาพด้านล่าง
แต่ก่อนที่จะวางเส้นใยฉันได้ติดลวดทองแดงหนา 1 ตารางมม. ในแต่ละขั้วและผ่านรูเมื่อทุกอย่างเสร็จเรียบร้อยแล้วดูเหมือนภาพด้านล่าง
อย่างที่คุณเห็นฉันได้ใส่กาวสองส่วนเพื่อยึดลวดและเส้นใยให้เข้าที่ เมื่อเสร็จแล้ว Launchpad ของเราก็เสร็จสมบูรณ์ และอย่างที่คุณเห็นจากภาพแรกในส่วนนี้ฉันได้ต่อสายไฟเข้ากับ PCB โดยตรงเพราะเรากำลังจัดการกับกระแสที่สูงมากดังนั้นฉันจึงไม่ต้องกังวลกับการวางขั้วสกรูและนั่นคือจุดสิ้นสุดของแชสซีของเรา กระบวนการสร้าง
ส่วนประกอบที่จำเป็นสำหรับ Alexa Controlled Rocket Launcher
สำหรับด้านฮาร์ดแวร์เราได้ใช้ชิ้นส่วนทั่วไปซึ่งคุณสามารถหาได้อย่างง่ายดายจากร้านขายอุปกรณ์งานอดิเรกในพื้นที่ของคุณรายการทั้งหมดจะได้รับด้านล่าง
- รีเลย์ 12V - 3
- BD139 ทรานซิสเตอร์ - 3
- 1N4004 ไดโอด - 3
- 5.08 มม. ขั้วต่อสกรู - 1
- LM7805 - ตัวควบคุมแรงดันไฟฟ้า - 1
- 100uF ตัวเก็บประจุแบบแยกตัว - 2
- 5.1V ซีเนอร์ไดโอด - 1
- บอร์ด NodeMCU (ESP8266-12E) - 1
- Dotted Perf Board - ½
- การเชื่อมต่อสาย - 10
แผนภาพวงจร Arduino Rocket Launcher
แผนผังที่สมบูรณ์สำหรับAlexa Controlled Rocket Launcherมีดังต่อไปนี้ ฉันใช้แท็กเพื่อเชื่อมต่อพินหนึ่งกับอีกอันหนึ่ง หากคุณดูใกล้พอก็ไม่น่าจะยากที่จะตีความแผนผัง
การสร้างวงจรค่อนข้างตรงไปตรงมาดังนั้นฉันจะไม่ลงรายละเอียดมากนัก
อันดับแรกเรามี IC1 ซึ่งเป็นตัวควบคุมแรงดันไฟฟ้า LM7805 พร้อมตัวเก็บประจุแบบแยกตัว 100uF ที่แสดงโดย C1 และ C2 หลังจากนั้นเรามีหัวใจหลักของโครงการคือบอร์ด NodeMCU ซึ่งเป็นที่ตั้งของโมดูล ESP-12E เนื่องจากเราใช้แบตเตอรี่ตะกั่วกรด 12V เพื่อจ่ายไฟให้กับวงจรทั้งหมดนั่นคือเหตุผลที่เราต้องใช้ LM7805 เพื่อแปลงเป็น 12V เป็น 5V ก่อนเพื่อจ่ายไฟให้กับบอร์ด NodeMCU เรากำลังดำเนินการดังกล่าวเนื่องจากตัวควบคุมแรงดันไฟฟ้า AMS1117 บนบอร์ดไม่เพียงพอที่จะแปลง 12V เป็น 3.3V โดยตรงซึ่งเป็นเหตุผลว่าทำไมจึงจำเป็นต้องใช้ 7805
เรามีรีเลย์ 12V สามตัวสำหรับการสาธิตนี้เรากำลังใช้รีเลย์สามตัว แต่อย่างที่เราได้กล่าวไปก่อนหน้านี้ Launchpad มีตัวยึดสำหรับจรวด 7 ตัว คุณสามารถปรับรหัสเล็กน้อยและวางจรวดทั้งเจ็ดเพื่อยิงพร้อมกัน รีเลย์ทั้งสามตัวขับเคลื่อนด้วย T1, T2 และ T3 ซึ่งเป็นทรานซิสเตอร์ NPN สามตัวและเพียงพอที่จะขับเคลื่อนภาระของจริง ในที่สุดเรามีไดโอดอิสระสามตัวที่ปกป้องวงจรจากแรงดันไฟฟ้าสูงที่สร้างโดยรีเลย์
การสร้างวงจรบน PerfBoard
ดังที่คุณเห็นจากภาพหลักแนวคิดคือการสร้างวงจรง่ายๆที่สามารถรองรับกระแสไฟฟ้าจำนวนมากในช่วงเวลาสั้น ๆ ตามการทดสอบของเรา 800 มิลลิวินาทีก็เพียงพอที่จะทำให้กระดาษสว่างขึ้น ดังนั้นเราจึงสร้างวงจรบนแผ่นเพอร์บอร์ดและเชื่อมต่อการเชื่อมต่อที่สำคัญทั้งหมดด้วยลวดทองแดงหนา 1 ตร.มม. หลังจากที่เราบัดกรีบอร์ดเสร็จแล้ว เมื่อเราทำเสร็จแล้วดูเหมือนสิ่งที่แสดงด้านล่าง
การเขียนโปรแกรม NodeMCU สำหรับ Alexa Controlled Rocket Launcher
เมื่อฮาร์ดแวร์พร้อมแล้วก็ถึงเวลาเริ่มเขียนโค้ดสำหรับเครื่องยิงจรวดที่ควบคุมด้วยเสียงของ Alexa คุณสามารถดูโค้ดทั้งหมดได้ที่ส่วนท้ายของหน้านี้ แต่ก่อนที่เราจะเริ่มสิ่งสำคัญคือต้องเพิ่มไลบรารีที่จำเป็นให้กับ Arduino IDE ของคุณ ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มไลบรารีที่ถูกต้องจากลิงค์ด้านล่างมิฉะนั้นโค้ดจะส่งข้อผิดพลาดเมื่อคอมไพล์
- ดาวน์โหลด Espalexa Library
หลังจากเพิ่มไลบรารีที่ต้องการแล้วคุณสามารถอัปโหลดรหัสที่ให้ไว้ที่ด้านล่างของหน้านี้ได้โดยตรงเพื่อตรวจสอบว่าวงจรทำงานหรือไม่ หากคุณต้องการทราบว่าโค้ดทำงานอย่างไรให้อ่านต่อไป
เช่นเคยเราเริ่มโปรแกรมด้วยการเพิ่มไฟล์ส่วนหัวที่ต้องการและกำหนดชื่อพินและข้อมูลรับรองสำหรับฮอตสปอตของเรา
# รวม
ด้วยรหัสของเราเรามีต้นแบบฟังก์ชันและคำจำกัดความของฟังก์ชันเรียกกลับ
ฟังก์ชัน connectToWiFi () ใช้เพื่อเชื่อมต่อกับเครือข่าย Wi-Fi และฟังก์ชันนี้จะคืนค่าจริงเมื่อเชื่อมต่อ Wi-Fi สำเร็จ
ต่อไปเรามีฟังก์ชั่น เรียกกลับ ของเราฟังก์ชั่นนี้จะถูกเรียกเมื่อเราให้คำสั่งกับ Alexa espalexa API จะจัดการกับฟังก์ชันเหล่านี้
โมฆะ allrockets (ความสว่าง uint8_t); เป็นโมฆะ firstrocket (ความสว่าง uint8_t); โมฆะ secondrocket (ความสว่าง uint8_t); โมฆะ Thirdrocket (ความสว่าง uint8_t);
ต่อไปเราจะกำหนดชื่ออุปกรณ์ ชื่ออุปกรณ์ที่กำหนดเหล่านี้จะแสดงในแอป Alexa และเมื่อเราพูดคำสั่ง Alexa จะจดจำอุปกรณ์ด้วยชื่อเหล่านี้ ดังนั้นชื่อเหล่านี้จึงมีความสำคัญมาก
// ชื่ออุปกรณ์ String First_Device_Name = "All Rockets"; สตริง Secound_Device_Name = "Rocket One"; สตริง Third_Device_Name = "จรวดสอง"; สตริง Forth_Device_Name = "จรวดสาม";
ต่อไปเราจะกำหนด wifiStatus ตัวแปรบูลีนซึ่งจะเก็บสถานะการเชื่อมต่อของ Wi-Fi สุดท้ายเราสร้าง Espalexa object espalexa เราจะใช้วัตถุนี้เพื่อกำหนดค่า NodeMCU
// ตรวจสอบสถานะ wifi บูลีน wifiStatus = false; // Espalexa Object Espalexa espalexa;
ต่อไปเรามีส่วน การตั้งค่าโมฆะ () ของเรา ในส่วนนี้เราเริ่มต้นการสื่อสารแบบอนุกรมสำหรับการดีบักกับ Serial.begin () ฟังก์ชั่น เราตั้งค่าพินที่กำหนดไว้ก่อนหน้าทั้งหมดเป็นเอาต์พุตด้วย ฟังก์ชัน pinMode () ต่อไปเราเรียกว่า ฟังก์ชัน connectToWiFi () มันจะพยายามเชื่อมต่อกับ Wi-Fi เป็นเวลาสิบห้าครั้งหากมีการเชื่อมต่อมันจะคืนค่าจริงหากไม่ ได้รับการเชื่อมต่อมันจะส่งคืนเท็จและรหัสจะดำเนินการ while () วนซ้ำ ตลอดไป หากการเชื่อมต่อ Wi-Fi สำเร็จเราจะเพิ่มอุปกรณ์ที่กำหนดไว้ก่อนหน้านี้ไปยังออบเจ็กต์ Alexa โดยใช้ ฟังก์ชัน espalexa.addDevice () ฟังก์ชันนี้ใช้อาร์กิวเมนต์สองตัวอันดับแรกคือชื่ออุปกรณ์ ประการที่สองคือชื่อของฟังก์ชันการโทรกลับเมื่อเราออกคำสั่งไปยัง Alexa ฟังก์ชันที่อยู่ติดกันจะถูกเรียก เมื่อเราทำมันกับอุปกรณ์ทั้งสี่ของเราเสร็จแล้วเราจะเรียกเมธอด start () สำหรับอ็อบเจกต์ espalexa
การตั้งค่าเป็นโมฆะ () {Serial.begin (115200); // เปิดใช้งาน Serial สำหรับการดีบักข้อความ pinMode (ROCKET_1_PIN, OUTPUT); // ตั้งค่าพิน ESP เป็นพินเอาต์พุต (ROCKET_2_PIN, OUTPUT); // ตั้งค่าพิน ESP เป็นพินเอาต์พุต (ROCKET_3_PIN, OUTPUT); // ตั้งค่าพิน ESP เป็นเอาต์พุต wifiStatus = connectToWiFi (); // เชื่อมต่อกับเครือข่าย Wi-Fi ในพื้นที่หาก (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 (); } else {while (1) {Serial. println ("ไม่สามารถเชื่อมต่อกับ WiFi โปรดตรวจสอบข้อมูลและรีเซ็ต ESP"); ล่าช้า (2500); }}}
ในส่วนการ วนซ้ำ เราเรียกวิธีการ loop () ของวัตถุ espalexa ซึ่งจะตรวจสอบคำสั่งที่เข้ามาและเรียกใช้ฟังก์ชันเรียกกลับหากพบว่าเป็นจริง
ห่วงเป็นโมฆะ () {espalexa.loop (); ล่าช้า (1); }
ต่อไปเราจะกำหนดฟังก์ชันการโทรกลับทั้งหมดของเราในส่วนนี้เราจะกำหนดสิ่งที่จะเกิดขึ้นเมื่อเรียกใช้ฟังก์ชันเรียกกลับนี้ เมื่อเรียกใช้ฟังก์ชั่น allrockets () จรวดทั้งหมดจะถูกเปิดตัวพร้อมกัน เพื่อที่เราจะเปิดรีเลย์เป็นเวลา 00 ms และหลังจากนั้นเราจะปิดรีเลย์ ในการทดสอบของฉันฉันพบว่าสำหรับความยาวที่ระบุของลวดนิโครมฉันต้องการความล่าช้า 800 มิลลิวินาทีเพื่อให้ลวดร้อนจนหมดซึ่งอาจเป็นหรือไม่เป็นเช่นนั้นสำหรับคุณ ดังนั้นเลือกความล่าช้าตาม
โมฆะ allrockets (ความสว่าง uint8_t) {if (ความสว่าง == 255) {digitalWrite (ROCKET_1_PIN, สูง); digitalWrite (ROCKET_2_PIN, สูง); digitalWrite (ROCKET_3_PIN, สูง); ล่าช้า (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("เปิดตัวจรวดทั้งหมด"); }}
ต่อไปเรามี จรวดตัวแรก () ซึ่ง จะถูกเรียกเมื่อเราเรียก Alexa และพูดคำสั่ง tie เพื่อเปิดจรวดตัวแรก กระบวนการนี้คล้ายกันมากเราเปิดรีเลย์เป็นเวลา 800 มิลลิวินาทีและปิด
เป็นโมฆะ firstrocket (uint8_t ความสว่าง) {if (ความสว่าง == 255) {digitalWrite (ROCKET_1_PIN, HIGH); ล่าช้า (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("เปิดตัวจรวดครั้งแรก"); }}
สุดท้ายเรามีของเรา connectToWiFi () ฟังก์ชั่น ฟังก์ชั่นนี้ค่อนข้างทั่วไปและอธิบายตัวเองได้ดังนั้นฉันจะไม่ลงรายละเอียดเกี่ยวกับฟังก์ชันนี้ ฟังก์ชันนี้จะเชื่อมต่อ ESP กับ Wi-Fi และส่งคืนสถานะการเชื่อมต่อ
บูลีน connectToWiFi () {สถานะบูลีน = จริง; int ผม = 0; WiFi.mode (WIFI_STA); WiFi.begin (ssid รหัสผ่าน); Serial.println (""); Serial.println ("การเชื่อมต่อกับ WiFi"); // รอการเชื่อมต่อ Serial.print ("กำลังเชื่อมต่อ… "); ในขณะที่ (WiFi.status ()! = WL_CONNECTED) {ล่าช้า (500); Serial.print ("."); ถ้า (ฉัน> 15) {state = false; หยุดพัก; } ผม ++; } Serial.println (""); ถ้า (สถานะ) {Serial.print ("เชื่อมต่อกับ"); Serial.println (ssid); Serial.print ("ที่อยู่ IP:"); Serial.println (WiFi.localIP ()); } else {Serial.println ("การเชื่อมต่อล้มเหลว"); } คืนสถานะ; }
ฟังก์ชันที่กำหนดไว้นี้ถือเป็นจุดสิ้นสุดของส่วนการเข้ารหัส
การกำหนดค่า Alexa ด้วยแอปพลิเคชัน Alexa Android
Alexa จะยอมรับคำสั่งก็ต่อเมื่อมันรู้จักอุปกรณ์ esp8866 เท่านั้น สำหรับสิ่งนั้นเราต้องกำหนดค่า Alexa ด้วยความช่วยเหลือของแอพ Alexa บน Android สิ่งสำคัญอย่างหนึ่งที่ต้องทำก่อนที่เราจะดำเนินการต่อไปคือเราต้องตรวจสอบให้แน่ใจว่า Alexa ได้รับการกำหนดค่าด้วยแอปพลิเคชัน Android ของเรา
ต้องการทำเช่นนั้นไปที่ส่วนอื่น ๆ ของแอปพลิเค Alexa และคลิกที่เพิ่มอุปกรณ์ตัวเลือกคลิกที่แสง จากนั้นเลื่อนลงที่ด้านล่างของหน้าและคลิกที่อื่น ๆ
จากนั้นคลิกที่DISCOVER DEVICEและ รอสักครู่หลังจากนั้น Alexa จะพบอุปกรณ์ใหม่ เมื่อ Alexa พบอุปกรณ์คุณจะต้องคลิกที่อุปกรณ์เหล่านั้นและเพิ่มลงในสถานที่ / หมวดหมู่ตามลำดับและคุณก็ทำเสร็จแล้ว
Alexa Controlled Rocket Launcher - การทดสอบ
สำหรับขั้นตอนการทดสอบฉันไปที่สวนของฉันดึงฟิวส์ทั้งหมดออกจากจรวดวางไว้ในตำแหน่งที่เกี่ยวข้องแล้วฉันก็ตะโกนว่า Alexa …! เปิดจรวดทั้งหมดโดยใช้นิ้วไขว้กัน และจรวดทั้งหมดก็บินโดยทำเครื่องหมายความพยายามของฉันว่าประสบความสำเร็จอย่างมาก มันเป็นแบบนี้
ในที่สุดฉันก็พูดอีกครั้งว่า Alexa …! เปิดจรวดทั้งหมดเพื่อให้ได้ภาพที่ยิ่งใหญ่ของเส้นใยซึ่งคุณสามารถดูได้ด้านล่าง
เพื่อประสบการณ์ที่ยิ่งใหญ่กว่านี้ขอแนะนำให้คุณดูวิดีโอนี้