- แผนภาพวงจรสำหรับ Google Assistant ที่ควบคุมระบบอัตโนมัติในบ้าน
- การตั้งค่าแอปพลิเคชัน Blynk
- การตั้งค่า IFTTT ด้วย Google Assistant และ Blynk เพื่ออ่านสตริง
- การเขียนโปรแกรม Arduino สำหรับ Blynk Home Automation
- ผลิต PCB โดยใช้ PCBGoGo
- การประกอบ PCB
- การเชื่อมต่อบอร์ดกับหน่วยไฟ AC / บอร์ดต่อ
ด้วยความก้าวหน้าในผู้ช่วยเสมือนเช่น Google Assistant และ Alexa ทำให้แอปพลิเคชันในบ้านอัตโนมัติและควบคุมด้วยเสียงกลายเป็นเรื่องปกติ ตอนนี้เราเองได้สร้างโครงการระบบอัตโนมัติภายในบ้านหลายโครงการตั้งแต่ไฟบันไดอัตโนมัติแบบธรรมดาไปจนถึง Home Automation ที่ควบคุมด้วยเว็บ IoT โดยใช้ Raspberry Pi แต่โครงการนี้แตกต่างออกไปแนวคิดในที่นี้คือการสร้างบอร์ดระบบอัตโนมัติในบ้านที่ใช้งานได้จริงซึ่งสามารถใส่เข้ากับหน่วยไฟฟ้ากระแสสลับของเราบนผนังของเราและซ่อนอยู่ภายใน บอร์ดไม่ควรขัดขวางการทำงานปกติของสวิตช์หน่วยกำลังของเรานั่นคือควรเปิดหรือปิดด้วยสวิตช์แบบแมนนวลเช่นกัน และหากไม่มีการพูดก็ควรจะสามารถควบคุมการโหลดเดียวกันด้วยเสียงโดยใช้ Google Assistant และยังตั้งเวลาเพื่อให้การโหลดใด ๆ สามารถเปิดหรือปิดโดยอัตโนมัติในช่วงเวลาที่กำหนดไว้ล่วงหน้าของวัน
โครงการนี้คล้ายกับปลั๊ก ESP8266 Smart Wi-Fi ของเรา แต่ที่นี่เนื่องจากเราจะใช้ ESP12 เราจะมีพิน GPIO เพิ่มขึ้นเพื่อให้เราควบคุมโหลด AC สี่ตัวพร้อมกันได้ นอกจากนี้เนื่องจากเราได้รวม Blynk และ Google Assistant เข้าด้วยกันโครงการจึงน่าสนใจและใช้งานได้จริง สำหรับโครงการนี้เราได้สร้างแผงวงจรโดยใช้บริการการผลิต PCBGOGO PCB ในส่วนต่อมาของบทความเราได้จัดเตรียมไฟล์ Gerber ที่ออกแบบมาสำหรับวงจรและอธิบายขั้นตอนทั้งหมดในการสั่งซื้อ PCB จาก PCBGOGO
คำเตือน:โครงการนี้เกี่ยวข้องกับการทำงานกับแรงดันไฟ AC ควรใช้ความระมัดระวังอย่างยิ่งเมื่อทำงานกับแรงดันไฟฟ้ากระแสสลับสูง ตรวจสอบให้แน่ใจว่าคุณได้รับการดูแลโดยผู้มีประสบการณ์หากคุณยังใหม่
แผนภาพวงจรสำหรับ Google Assistant ที่ควบคุมระบบอัตโนมัติในบ้าน
แผนภาพวงจรทั้งหมดสำหรับระบบอัตโนมัติในบ้านมีอยู่ด้านล่าง
อย่างที่คุณเห็นวงจรนั้นง่ายมากเรามาเริ่มคำอธิบายจากโมดูล Wi-Fi ESP12E คุณยังสามารถดูวิดีโอด้านล่างสำหรับคำอธิบายโครงการโดยละเอียด โมดูลนี้สามารถตั้งโปรแกรมได้เช่นเดียวกับบอร์ดพัฒนา nodeMCU และช่วยลดพื้นที่ได้มาก โดยค่าเริ่มต้นเมื่อเปิดเครื่อง ESP12E จะเข้าสู่โหมดการทำงาน ในการตั้งโปรแกรมเราต้องใช้ปุ่มรีเซ็ตและแฟลช นั่นคือให้ ESP12 อยู่ในโหมดการเขียนโปรแกรมกดปุ่มรีเซ็ตและแฟลชค้างไว้จากนั้นปล่อยปุ่มรีเซ็ต สิ่งนี้จะบูต ESP12E เมื่อกดปุ่มแฟลชจากนั้นปล่อยปุ่มแฟลชจากนั้น ESP12E จะเข้าสู่โหมดการเขียนโปรแกรม หลังจากการเขียนโปรแกรมคุณต้องกดปุ่มรีเซ็ตอีกครั้งเพื่อบูต ESP12E ในโหมดการทำงานปกติเพื่อรันโปรแกรมที่อัปโหลด หมุดการเขียนโปรแกรม Rx, Rx,และกราวด์ถูกขยายออกเพื่อให้สามารถเชื่อมต่อกับบอร์ด FTDI หรือตัวแปลง USB เป็น TTL ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อพิน Tx ของ ESP12 เข้ากับพิน Rx ของโปรแกรมเมอร์แล้วหนีบในทางกลับกัน
หมุดแฟล็กอื่น ๆ I1 ถึง I4 และ R1 ถึง R4 ใช้เพื่อเชื่อมต่อสวิตช์และรีเลย์ หมุด I1 ถึง I4 ยืนสำหรับพินอินพุต พินทั้งหมดนี้รองรับตัวต้านทานแบบดึงขึ้นภายในดังนั้นเราจึงต้องเชื่อมต่อสวิตช์บนกล่องส่วนขยายกับขาอินพุตของเราผ่านตัวต้านทานแบบดึงลงดังที่แสดงด้านล่าง
ในทำนองเดียวกันพินเอาต์พุตรีเลย์ R1 ถึง R4 ถูกใช้เพื่อควบคุมรีเลย์ เราได้ใช้วงจรขับรีเลย์มาตรฐานกับ BC547 และ IN4007 Diode ดังที่แสดงด้านล่าง โปรดทราบว่ารีเลย์ควรเปิดใช้งานด้วย 5V แต่พินเอาต์พุต ESP12E เป็นเพียง 3.3V ดังนั้นจึงจำเป็นต้องใช้ทรานซิสเตอร์เพื่อขับเคลื่อนรีเลย์ นอกจากนี้เรายังได้วาง LED ไว้ในเส้นทางฐานของทรานซิสเตอร์เพื่อที่เมื่อใดก็ตามที่ทรานซิสเตอร์ถูกทริกเกอร์ไฟ LED จะเปิดขึ้นด้วย
ในที่สุดเพื่อจ่ายไฟให้กับวงจรทั้งหมดของเราเราได้ใช้ตัวแปลง Hi-Link AC-DC เพื่อแปลง 220V AC เป็น 5V DC จากนั้น 5V DC นี้จะถูกแปลงเป็น 3.3V โดยใช้ตัวควบคุมแรงดันไฟฟ้า AMS117-3.3V 5V ใช้เพื่อทริกเกอร์รีเลย์และ 3.3V ใช้เพื่อจ่ายไฟให้กับโมดูล Wi-Fi ESP21
การตั้งค่าแอปพลิเคชัน Blynk
ก่อนหน้านี้เราได้สร้างโครงการ Blynkมากมายเช่นหุ่นยนต์ Arduino ที่ควบคุมด้วย Wi-Fi ดังนั้นเราจะไม่ลงรายละเอียดเกี่ยวกับการตั้งค่าแอปพลิเคชัน blynk แต่ถ้าจะพูดง่ายๆก็แค่ติดตั้งแอปพลิเคชันสร้างโปรเจ็กต์ใหม่สำหรับ NodeMCU และเริ่มวางวิดเจ็ตของคุณ
ฉันใช้พินเสมือน V1 ถึง V4 เพื่อควบคุมรีเลย์ 1 ถึง 4 ในโครงการของเรา อย่าลืมเปลี่ยนประเภทของปุ่มที่จะเปลี่ยน นอกจากนี้ยังสามารถใช้ตัวเลือกตัวจับเวลาเพื่อทริกเกอร์พินเสมือนโดยอัตโนมัติตามเวลาที่กำหนดแม้ว่าโทรศัพท์จะปิดอยู่ก็ตาม ฉันใช้ตัวจับเวลาสำหรับพินเสมือน V1 ที่นี่เท่านั้น แต่คุณสามารถใช้กับพินทั้งสี่ได้หากจำเป็น
ตรวจสอบให้แน่ใจว่าได้รับค่าโทเค็นการตรวจสอบสิทธิ์ blynk จากหน้าโครงการของคุณ เพียงคลิกที่ไอคอนถั่ว (วงกลมเป็นสีแดงในภาพด้านบน) และคัดลอกโทเค็นรับรองความถูกต้องโดยใช้ตัวเลือกคัดลอกทั้งหมดและวางไว้ในที่ที่ปลอดภัยเราจะต้องใช้เมื่อตั้งโปรแกรมบอร์ด Arduino
การตั้งค่า IFTTT ด้วย Google Assistant และ Blynk เพื่ออ่านสตริง
วิธีที่ง่ายที่สุดในการใช้ Google Assistant สำหรับระบบอัตโนมัติในบ้านคือการใช้ IFTTT นอกจากนี้เรายังได้สร้างโครงการ IFTTT จำนวนมากก่อนหน้านี้ด้วย NodeMCU และ Raspberry Pi ในโปรเจ็กต์นี้เราจะใช้แอพBlynkเพื่อทริกเกอร์เว็บฮุกโดยใช้ Google Assistant คล้ายกับระบบอัตโนมัติภายในบ้านที่ควบคุมด้วยเสียงและโครงการวิทยุ FM ที่ควบคุมด้วยเสียง ยกเว้นที่นี่เราจะใช้ blynk กับ IFTTT เพื่อส่งสตริงซึ่งทำให้ง่ายและน่าสนใจมาก
โดยทั่วไปเราจะใช้พินเสมือน V5 และ V6 บน blynk เพื่อส่งคำสั่งทริกเกอร์ V5 จะใช้สำหรับคำสั่งเปิดเครื่องและ V6 จะใช้สำหรับคำสั่งปิด ตัวอย่างเช่นถ้าเราบอกว่าเปิดทีวีและหลอดไฟ คำสั่งสตริงที่นี่“ TV and Lamp” จะถูกส่งไปยัง NodeMCU โดยใช้ API ไวยากรณ์ของ API มีดังต่อไปนี้
http://188.166.206.43//update/V5?value=TV และ Lamp
ตอนนี้สิ่งที่เราต้องทำใน IFTTT คือใช้ผู้ช่วยของ Google เป็น IF และ webhooks ตามที่ฟังคำสั่งนี้และส่งข้อมูลไปยัง NodeMCU โดยใช้ API ที่กล่าวถึงข้างต้น รูปแบบแอพเพล็ตเทิร์นออนที่เหมือนกันดังแสดงด้านล่าง
โปรดทราบว่าคุณต้องเลือกพูดวลีที่มีตัวเลือกส่วนผสมของข้อความเมื่อสร้างสูตรสำหรับ Google Assistant ในทำนองเดียวกันคุณต้องทำซ้ำเหมือนกันสำหรับพินเสมือน V6 เพื่อปิดรีเลย์ คุณสามารถตรวจสอบวิดีโอที่ด้านล่างของหน้านี้เพื่อดูข้อมูลโดยละเอียด
การเขียนโปรแกรม Arduino สำหรับ Blynk Home Automation
รหัส Arduino ที่สมบูรณ์สำหรับโครงการนี้สามารถพบได้ที่ด้านล่างของหน้านี้ คำอธิบายเดียวกันมีดังนี้ ก่อนหน้านั้นตรวจสอบให้แน่ใจว่าคุณสามารถใช้ Blynk และ Program NodeMCU จาก Arduino IDE ได้ หากไม่ปฏิบัติตามบทความเริ่มต้นใช้งาน ESP12 เพิ่มไลบรารี blynk ไปยัง Arduino IDE โดยใช้ตัวจัดการบอร์ด
เช่นเคยเราเริ่มต้นรหัสของเราโดยกำหนดพินอินพุตและเอาต์พุตที่นี่อินพุตจะมาจากสวิตช์และเอาต์พุตจะมาจากรีเลย์ เราได้กำหนดชื่อพินสำหรับสวิตช์ทั้งสี่เป็น sw และรีเลย์เป็น rel ดังที่คุณเห็นด้านล่าง
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
ในขั้นต่อไปคุณต้องป้อนข้อมูลประจำตัวบางอย่างเช่น blynk auth token และชื่อผู้ใช้และรหัสผ่านสำหรับเราเตอร์ Wi-Fi ที่ nodeMCU ของคุณควรเชื่อมต่อด้วย สามารถรับโทเค็นการตรวจสอบสิทธิ์กะพริบได้จากแอปพลิเคชัน blynk เราจะเรียนรู้เพิ่มเติมในส่วนการตั้งค่าแอปพลิเคชัน blynk
ถ่าน auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // รับจากแอปพลิเคชัน blynk char ssid = "home_wifi"; ถ่านผ่าน = "fakepass123";
ต่อไปเราจะได้ให้คำนิยามสำหรับฟังก์ชั่นที่เรียกว่า read_switch_toggle () ในฟังก์ชั่นนี้เราจะเปรียบเทียบสถานะปัจจุบันและสถานะก่อนหน้าของสวิตช์ของเรา หากสวิตช์ถูกเปิดหรือปิดเช่นหากสวิตช์ถูกสลับ จะมีการเปลี่ยนแปลงสถานะของสวิตช์ฟังก์ชันจะตรวจสอบการเปลี่ยนแปลงนี้และส่งคืนหมายเลขสวิตช์ หากตรวจไม่พบการเปลี่ยนแปลงจะคืนค่าเป็น 0
int read_switch_toggle () {ผลลัพธ์ int = 0; // สังเกตค่าก่อนหน้าทั้งหมดสำหรับ (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // อ่านสถานะปัจจุบันของสวิตช์ crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // เปรียบเทียบสถานะปัจจุบันและ pvs สำหรับ (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // หากมีการสลับสวิตช์ใด ๆ เราจะได้รับหมายเลขสวิตช์เป็นผลลัพธ์ที่ได้ } ผลลัพธ์อื่น = 0; // ถ้าไม่มีผลการเปลี่ยนแปลง 0} ส่งคืนผลลัพธ์; // ส่งคืน resul}
ต่อไปเรามีรหัสสำหรับแอปพลิเคชัน blynk เราจะใช้พินเสมือน V1 ถึง V6 เพื่อควบคุมกล่องรวมสัญญาณอัจฉริยะของเรา Pins V1 ถึง V4 จะใช้เพื่อควบคุมรีเลย์ 1 ถึง 4 ตามลำดับโดยตรงจากแอปพลิเคชัน blynk โค้ดด้านล่างแสดงสิ่งที่เกิดขึ้นเมื่อ V1 ถูกทริกเกอร์จากแอปพลิเคชัน blynk เพียงแค่อ่านสถานะ (สูงหรือต่ำ) และควบคุมรีเลย์ให้เหมาะสม
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
ในทำนองเดียวกันพินเสมือนยังสามารถใช้เพื่ออ่านสตริงจากแอปพลิเคชัน blynk เราจะเรียนรู้วิธีการส่งสตริงจาก Google Assistant ไปยัง NodeMCU โดยใช้ IFTTT และผู้ช่วยของ Google ในภายหลัง แต่สำหรับตอนนี้เรามาดูกันว่าโค้ด NodeMCU อ่านสตริงนี้และค้นหาคีย์เวิร์ดเฉพาะอย่างไรและเรียกรีเลย์ตามนั้น
ในด้านล่างของรหัสที่คุณจะเห็นว่าเมื่อ V5 ขาเสมือนจะถูกเรียกเราได้รับสตริงผ่านไปมันกลายเป็นตัวแปรสตริงที่เรียกว่าON_messageจากนั้นใช้ตัวแปรสตริงนี้และเมธอด inderOf เราค้นหาว่ามีคำหลักเช่น "โคมไฟ" "LED" "เพลง" "ทีวี" หรือไม่ถ้าใช่เราจะเปิดการโหลดนั้น หากตรวจพบคีย์เวิร์ด“ ทุกอย่าง” เราจะเปิดทุกอย่าง เช่นเดียวกันสามารถทำได้สำหรับ V6 เพื่อปิดรีเลย์ เราจะเข้าใจมากขึ้นเกี่ยวกับเรื่องนี้เมื่อเข้าสู่ส่วน IFTTT
BLYNK_WRITE (V5) {สตริง ON_message = param.asStr (); Serial.println (ON_message); ถ้า (ON_message.indexOf ("โคมไฟ")> = 0) digitalWrite (rel1, HIGH); ถ้า (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); ถ้า (ON_message.indexOf ("เพลง")> = 0) digitalWrite (rel3, HIGH); ถ้า (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); ถ้า (ON_message.indexOf ("everything")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
สุดท้ายภายในฟังก์ชั่นลูปเราต้องตรวจสอบว่าปุ่มใด ๆ ที่เปลี่ยนตำแหน่งสวิตช์หรือไม่ ถ้าใช่เราจะใช้เคสสวิตช์ดังที่แสดงด้านล่างเพื่อสลับตำแหน่งของรีเลย์นั้น ๆ
สวิตช์ (toggle_pin) {case 0: break; กรณีที่ 1: Serial.println ("Toggling Relay 1"); digitalWrite (rel1, relay_state); หยุดพัก; กรณีที่ 2: Serial.println ("Toggling Relay 2"); digitalWrite (rel2, relay_state); หยุดพัก; กรณีที่ 3: Serial.println ("Toggling Relay 3"); digitalWrite (rel3, relay_state); หยุดพัก; กรณีที่ 4: Serial.println ("Toggling Relay 4"); digitalWrite (rel4, relay_state); หยุดพัก; }}
ผลิต PCB โดยใช้ PCBGoGo
ตอนนี้เราเข้าใจแล้วว่าแผนผังทำงานอย่างไรเราสามารถดำเนินการสร้าง PCB สำหรับโครงการ Home Automationของเราได้ เค้าโครง PCB สำหรับวงจรข้างต้นสามารถดาวน์โหลดได้ในชื่อ Gerber จากลิงค์
- ดาวน์โหลด GERBER สำหรับระบบอัตโนมัติภายในบ้านที่ควบคุมด้วยเสียงโดยใช้ Google Assistant
ตอนนี้การออกแบบของเราพร้อมแล้วก็ได้เวลาประดิษฐ์โดยใช้ไฟล์ Gerber ในการทำ PCB จาก PCBGOGO นั้นค่อนข้างง่ายเพียงทำตามขั้นตอนด้านล่าง -
ขั้นตอนที่ 1: เข้าสู่ www.pcbgogo.com ลงทะเบียนหากนี่เป็นครั้งแรกของคุณ จากนั้นในแท็บ PCB Prototype ให้ป้อนขนาดของ PCB จำนวนเลเยอร์และจำนวน PCB ที่คุณต้องการ สมมติว่า PCB มีขนาด 80 ซม. × 80 ซม. คุณสามารถกำหนดขนาดตามที่แสดงด้านล่าง
ขั้นตอนที่ 2: ดำเนินการต่อโดยคลิกที่ปุ่ม ใบเสนอราคา ทันที คุณจะเข้าสู่หน้าที่ตั้งค่าพารามิเตอร์เพิ่มเติมบางอย่างหากจำเป็นเช่นวัสดุที่ใช้ระยะห่างแทร็กเป็นต้น แต่ส่วนใหญ่แล้วค่าเริ่มต้นจะใช้ได้ดี สิ่งเดียวที่เราต้องพิจารณาที่นี่คือราคาและเวลา อย่างที่คุณเห็นเวลาสร้างเพียง 2-3 วันและมีค่าใช้จ่ายเพียง $ 5 สำหรับ PCB ของเรา จากนั้นคุณสามารถเลือกวิธีการจัดส่งที่ต้องการตามความต้องการของคุณ
ขั้นตอนที่ 3: ขั้นตอนสุดท้ายคือการอัปโหลดไฟล์ Gerber และดำเนินการชำระเงิน เพื่อให้แน่ใจว่ากระบวนการนี้ราบรื่น PCBGOGO จะตรวจสอบว่าไฟล์ Gerber ของคุณถูกต้องหรือไม่ก่อนดำเนินการชำระเงิน ด้วยวิธีนี้คุณจะมั่นใจได้ว่า PCB ของคุณเป็นมิตรต่อการผลิตและจะไปถึงคุณอย่างมุ่งมั่น
การประกอบ PCB
หลังจากสั่งซื้อบอร์ดแล้วมันก็มาถึงฉันหลังจากผ่านไปหลายวันโดยผู้ให้บริการจัดส่งในกล่องบรรจุอย่างดีที่มีฉลากกำกับอย่างดีและเช่นเคยคุณภาพของ PCB นั้นยอดเยี่ยมมาก PCB ที่ฉันได้รับแสดงอยู่ด้านล่าง อย่างที่คุณเห็นทั้งชั้นบนและชั้นล่างเป็นไปตามที่คาดไว้
ช่องว่างและแผ่นอิเล็กโทรดมีขนาดที่เหมาะสม ฉันใช้เวลาประมาณ 15 นาทีในการประกอบเข้ากับบอร์ด PCB เพื่อให้ได้วงจรการทำงาน บอร์ดประกอบดังแสดงด้านล่าง
การเชื่อมต่อบอร์ดกับหน่วยไฟ AC / บอร์ดต่อ
บอร์ดได้รับการออกแบบมาเพื่อยึดติดกับปลั๊กไฟ AC ในบ้าน แต่เพื่อประโยชน์ของโครงการนี้เราจะใช้กล่องส่วนขยาย หากคุณต้องการวิธีแก้ปัญหาที่ถาวรกว่านี้ให้ต่อสายไฟภายในซ็อกเก็ตไฟ AC ของคุณดังที่คุณเห็นด้านล่างความยาวของ PCB มีขนาดกะทัดรัดพอที่จะวางไว้ในเต้ารับไฟฟ้า AC
ตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามข้อควรระวังเพื่อความปลอดภัยขณะใช้งานกับสายไฟ AC ทำตามแผนผังวงจรด้านล่างเพื่อทำความเข้าใจวิธีการเชื่อมต่อรีเลย์ของคุณและเปลี่ยนไปใช้บอร์ด PCB ของเรา
แผนภาพการเชื่อมต่อจะลดลงสำหรับรีเลย์และสวิตช์เดียวเท่านั้น แต่คุณสามารถทำซ้ำแบบเดียวกันสำหรับสามตัวที่เหลือได้เช่นกัน เมื่อเชื่อมต่อเสร็จแล้วบอร์ดของคุณควรมีลักษณะดังนี้
เมื่อทำการเชื่อมต่อแล้วตรวจสอบให้แน่ใจว่าคุณได้ยึดให้แน่นด้วยขั้วสกรูและใช้กาวร้อนเพื่อความปลอดภัยเพิ่มเติม แพ็คทุกอย่างกลับเข้าไปในกล่องและเราควรพร้อมสำหรับการทดสอบ คุณสามารถดูการทำงานทั้งหมดของโครงการนี้ได้ในวิดีโอด้านล่าง
ฉันหวังว่าคุณจะสนุกกับบทความนี้และเรียนรู้สิ่งที่เป็นประโยชน์ หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นด้านล่างหรือใช้ฟอรัมของเรา