ในยุคปัจจุบันนี้แนวคิดของระบบอัตโนมัติในบ้านกำลังเติบโตอย่างรวดเร็ว มีการติดตั้งระบบอัจฉริยะในเกือบทุกแห่ง ระบบบ้านอัจฉริยะเป็นแนวคิดที่ควบคุมเครื่องใช้ไฟฟ้าหรืออุปกรณ์ทั้งหมดโดยใช้รีโมทคอนโทรลเพียงชุดเดียว ในระบบเหล่านี้โดยส่วนใหญ่รีโมทคอนโทรลเป็นแอปพลิเคชันบนมือถือ เนื่องจากแอนดรอยด์มือถือเป็นสิ่งที่คนทั่วไปใช้บ่อยที่สุดดังนั้นแอปพลิเคชัน Android จึงเป็นตัวเลือกที่ดีที่สุดในการควบคุมอุปกรณ์เหล่านี้
ระบบอัตโนมัติในบ้าน
ดังนั้นในโครงการนี้เราจะเชื่อมต่อเครื่องใช้ไฟฟ้าในบ้านกับโมดูลรีเลย์และควบคุมผ่านไมโครคอนโทรลเลอร์ ESP32 เราจะสร้างฐานข้อมูลเรียลไทม์ของ firebase และเชื่อมต่อจากแอพ android แอป Android นี้จะส่งข้อมูลไปยังระบบคลาวด์จากนั้นจะส่งไปยังไมโครคอนโทรลเลอร์เพื่อเปิดหรือปิดเครื่องใช้ไฟฟ้า ส่วนที่ดีที่สุดคือคุณสามารถควบคุมการเปลี่ยนเครื่องใช้ไฟฟ้าของคุณได้อย่างเต็มที่จากทุกที่ในโลก คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อใช้งานแอปพลิเคชัน Android
วิธีควบคุมเครื่องใช้ในบ้านผ่าน WiFi
ระบบ Home Automation ที่มีอยู่แล้วในตลาดมีค่าใช้จ่ายสูงมาก เราสามารถใช้บอร์ด ESP32 เพื่อเชื่อมต่อเครื่องใช้ในบ้านต่างๆและควบคุมโดยใช้แอพ Android ซึ่งจะมีต้นทุนต่ำมากและเป็นวิธีที่มีประสิทธิภาพในการทำให้บ้านเป็นอัตโนมัติ ตอนนี้ให้เราก้าวไปข้างหน้าและเริ่มรวบรวมข้อมูลเพื่อเริ่มโครงการ
ขั้นตอนที่ 1: รวบรวมส่วนประกอบ
แนวทางที่ดีที่สุดในการเริ่มต้นโครงการคือการจัดทำรายการส่วนประกอบและทำการศึกษาส่วนประกอบเหล่านี้โดยสังเขปเนื่องจากไม่มีใครต้องการยึดติดอยู่ตรงกลางของโครงการเพียงเพราะส่วนประกอบที่ขาดหายไป รายการส่วนประกอบที่เราจะใช้ในโครงการนี้มีดังต่อไปนี้:
- ESP32
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
ขั้นตอนที่ 2: ศึกษาส่วนประกอบ
เมื่อเราทราบบทคัดย่อของโครงการนี้แล้วให้เราก้าวไปข้างหน้าหนึ่งก้าวและศึกษาสั้น ๆ เกี่ยวกับการทำงานของส่วนประกอบหลักที่เราจะใช้
ESP32 เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ใช้พลังงานต่ำและราคาประหยัดซึ่งมี WiFi ในตัวและโมดูลบลูทู ธ แบบดูอัลโหมด บอร์ดไมโครคอนโทรลเลอร์นี้สร้างและพัฒนาโดย ระบบ Espressif . บอร์ดนี้มีเพาเวอร์แอมป์ในตัวแอมพลิฟายเออร์รับสัญญาณต่ำตัวกรองและสวิตช์เสาอากาศ ใช้พลังงานจากสายเคเบิลข้อมูล Android และสามารถให้ได้ถึง 3.3V ที่เอาต์พุต ESP32 รัน TCP / IP, 802.11 b / g / n / e / I แบบเต็มรูปแบบ WLAN MAC และ Wi-Fi Direct โดยเฉพาะ นี่หมายความว่า ESP 32 สามารถจัดการกับเราเตอร์ WiFi ส่วนใหญ่ได้เมื่อใช้ในโหมดสถานี (ไคลเอนต์) ในทำนองเดียวกันสามารถสร้างจุดเชื่อมต่อที่มี 802.11 b / g / n / e / I เต็มรูปแบบ ESP32 ไม่ได้เป็นเพียงแค่รองรับ BLE Bluetooth 4.2 ล่าสุดเท่านั้น แต่ยังเสริมบลูทู ธ ที่ยอดเยี่ยมอีกด้วย โดยพื้นฐานแล้วมันสามารถระบุโทรศัพท์ / ตารางบลูทู ธ เก่าและใหม่ได้ หากคุณไม่มีโมดูล ESP32 คุณยังสามารถใช้ ESP8266 หรือ Node MCU ได้ บอร์ดเหล่านี้สามารถใช้เพื่อทำงานเดียวกันได้หากเชื่อมต่อกับ WiFi
ESP32
โมดูลรีเลย์เป็นอุปกรณ์สวิตชิ่ง ทำงานในสองโหมด ปกติเปิด (ไม่) และ โดยปกติ ปิด (NC) . ในโหมด NO วงจรจะเสียเสมอเว้นแต่คุณจะส่งสัญญาณสูงไปยังรีเลย์ผ่าน Arduino โหมด NC แย่ลงในทางกลับกันวงจรจะสมบูรณ์เสมอเว้นแต่คุณจะเปิดโมดูลรีเลย์ ตรวจสอบให้แน่ใจว่าคุณได้เชื่อมต่อสายบวกของเครื่องใช้ไฟฟ้าเข้ากับโมดูลรีเลย์ตามวิธีที่แสดงด้านล่าง
การประกอบวงจรโมดูลรีเลย์
ขั้นตอนที่ 3: บล็อกไดอะแกรม
แผนภาพบล็อก
ในแผนภาพบล็อกด้านบนจะแสดงขั้นตอนของโครงการนี้ รีเลย์เชื่อมต่อกับเครื่องใช้ไฟฟ้าหรืออุปกรณ์ภายในบ้าน แอปพลิเคชันมือถือจะส่งไฟล์ บน หรือ ปิด คำสั่งไปยังฐานข้อมูล ระบบคลาวด์นี้เชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ ESP32 ผ่าน WiFi ในการเปิดอุปกรณ์อิเล็กทรอนิกส์เราจะส่ง“ 1” ในฐานข้อมูลและหากต้องการปิดเราจะส่ง“ 0” ในฐานข้อมูล คำสั่งนี้จะถูกดึงโดยไมโครคอนโทรลเลอร์เนื่องจากมีการเชื่อมต่อกับฐานข้อมูลด้วย ตาม 0 หรือ 1 นี้ไมโครคอนโทรลเลอร์จะเปิดหรือปิดโมดูลรีเลย์ซึ่งจะส่งผลให้เครื่องใช้ไฟฟ้าเปลี่ยนไปในที่สุด
ดังนั้นในบทความนี้ฉันจะใช้โมดูลรีเลย์สองโมดูลเพื่อแสดงขั้นตอนทั้งหมด แต่คุณสามารถเพิ่มจำนวนรีเลย์และเพิ่มโค้ดกลุ่มเดียวกันในโปรแกรมของคุณได้หากคุณต้องการควบคุมเครื่องใช้ไฟฟ้าในบ้านจำนวนมากขึ้น
ขั้นตอนที่ 4: การประกอบส่วนประกอบ
ตอนนี้เมื่อเรามีวิสัยทัศน์ที่ชัดเจนว่าเราต้องการทำอะไรในโครงการนี้อย่าให้เสียเวลาอีกต่อไปและเริ่มประกอบชิ้นส่วนต่างๆ
- ใช้เขียงหั่นขนมและติดตั้งไมโครคอนโทรลเลอร์ ESP32 ไว้ในนั้น ตอนนี้ใช้โมดูลรีเลย์สองตัวแล้วเชื่อมต่อ Vcc และกราวด์ของโมดูลเข้ากับ Vin และกราวด์ของบอร์ดไมโครคอนโทรลเลอร์ ESP32 แบบขนาน เชื่อมต่อ ในพิน ของโมดูลรีเลย์ไปยังพิน 34 และพิน 35 ของบอร์ด ESP32 คุณจะเห็นว่าตอนนี้รีเลย์เปิดอยู่
- เชื่อมต่อเครื่องใช้ภายในบ้านกับโมดูลรีเลย์ ตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณตรงกับการเชื่อมต่อที่แสดงในรูปในขั้นตอนที่ 2
ตอนนี้เมื่อเราเชื่อมต่อส่วนฮาร์ดแวร์ของระบบของเรา เราจะพัฒนาแอปพลิเคชัน Android ที่จะเชื่อมต่อกับฐานข้อมูล firebase เราจะสร้างฐานข้อมูลและแอปพลิเคชัน Android ในส่วนที่ 2 ของบทความนี้
ขั้นตอนที่ 5: เริ่มต้นใช้งาน ESP32
หากคุณไม่เคยทำงานกับ Arduino IDE มาก่อนไม่ต้องกังวลเพราะขั้นตอนในการตั้งค่า Arduino IDE แสดงอยู่ด้านล่าง
- ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก Arduino
- เชื่อมต่อบอร์ด Arduino ของคุณเข้ากับพีซีและเปิดแผงควบคุม คลิกที่ ฮาร์ดแวร์และเสียง. เปิดให้บริการแล้ว อุปกรณ์และเครื่องพิมพ์ และค้นหาพอร์ตที่บอร์ดของคุณเชื่อมต่ออยู่ ในกรณีของฉันมันคือ COM14 แต่คอมพิวเตอร์คนละเครื่องกัน
กำลังค้นหาพอร์ต
- คลิกที่ไฟล์จากนั้นคลิกที่การตั้งค่า คัดลอกลิงค์ต่อไปนี้ในไฟล์ URL ของ Board Manager เพิ่มเติม “ https://dl.espressif.com/dl/package_esp32_index.json '
ค่ากำหนด
- ตอนนี้ในการใช้ ESP32 กับ Arduino IDE เราจำเป็นต้องนำเข้าไลบรารีพิเศษที่จะช่วยให้เราสามารถเบิร์นโค้ดบน ESP32 และใช้งานได้ ไลบรารีทั้งสองนี้แนบอยู่ในลิงค์ด้านล่าง หากต้องการรวมไลบรารี goto ร่าง> รวมไลบรารี> เพิ่มไลบรารี ZIP . กล่องจะปรากฏขึ้น ค้นหาโฟลเดอร์ ZIP ในคอมพิวเตอร์ของคุณและคลิกตกลงเพื่อรวมโฟลเดอร์
รวมห้องสมุด
- ตอนนี้ goto ร่าง> รวมไลบรารี> จัดการไลบรารี
จัดการไลบรารี
- เมนูจะเปิดขึ้น ในแถบค้นหาพิมพ์ Arduino JSON รายการจะปรากฏขึ้น ติดตั้ง Arduino JSON โดย Benoit Blanchon
Arduino JSON
- ตอนนี้คลิกที่ไฟล์ เครื่องมือ เมนูแบบเลื่อนลงจะปรากฏขึ้น ตั้งบอร์ดเป็น โมดูล ESP Dev
คณะกรรมการการตั้งค่า
- คลิกที่เมนูเครื่องมืออีกครั้งและตั้งค่าพอร์ตที่คุณสังเกตเห็นในแผงควบคุมก่อนหน้านี้
การตั้งค่าพอร์ต
- ตอนนี้อัปโหลดรหัสที่แนบมาในลิงค์ด้านล่างและคลิกที่ปุ่มอัปโหลดเพื่อเบิร์นโค้ดบนไมโครคอนโทรลเลอร์ ESP32
ที่อัพโหลด
ตอนนี้เมื่อคุณจะอัปโหลดโค้ดอาจเกิดข้อผิดพลาดขึ้น นี่เป็นข้อผิดพลาดทั่วไปที่อาจเกิดขึ้นหากคุณใช้ Arduino IDE และ Arduino JSON เวอร์ชันใหม่ ต่อไปนี้เป็นข้อผิดพลาดที่คุณอาจเห็นบนหน้าจอ
ในไฟล์รวมจาก C: Users Pro Documents Arduino libraries IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0 จาก C: Users Pro Desktop smartHome code code.ino: 2: C : Users Pro Documents Arduino libraries IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer เป็นคลาสจาก ArduinoJson 5 โปรดดู arduinojson.org/upgrade เพื่อเรียนรู้วิธีอัปเกรดโปรแกรมของคุณเป็น ArduinoJson รุ่น 6 StaticJsonBuffer jsonBuffer; ^ ในไฟล์ที่มาจาก C: Users Pro Documents Arduino libraries IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, จาก C: Users Pro Desktop smartHome code code.ino: 2: C: Users Pro Documents Arduino libraries IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: StaticJsonBuffer เป็นคลาสจาก ArduinoJson 5 โปรดดู arduinojson.org/upgrade เพื่อเรียนรู้วิธีอัปเกรดโปรแกรมของคุณเป็น ArduinoJson เวอร์ชัน 6 ส่งคืน StaticJsonBuffer () parseObject (_data); ^ พบหลายไลบรารีสำหรับ 'WiFi.h' ที่ใช้: C: Users Pro AppData Local Arduino15 package esp32 hardware esp32 1.0.2 libraries WiFi ไม่ได้ใช้: C: Program Files ( x86) Arduino libraries WiFi โดยใช้ไลบรารี WiFi ที่เวอร์ชัน 1.0 ในโฟลเดอร์: C: Users Pro AppData Local Arduino15 package esp32 hardware esp32 1.0.2 libraries WiFi โดยใช้ไลบรารี IOXhop_FirebaseESP32-master ในโฟลเดอร์: C: Users Pro Documents Arduino libraries IOXhop_FirebaseESP32-master (ดั้งเดิม) โดยใช้ไลบรารี HTTPClient ที่เวอร์ชัน 1.2 ในโฟลเดอร์: C: Users Pro AppData Local Arduino15 package esp32 hardware esp32 1.0.2 libraries HTTPClient การใช้ไลบรารี WiFiClientSecure ที่เวอร์ชัน 1.0 ในโฟลเดอร์: C: Users Pro AppData Local Arduino15 package esp32 hardware esp32 1.0.2 libraries WiFiClientSecure โดยใช้ไลบรารี ArduinoJson ที่ เวอร์ชัน 6.12.0 ในโฟลเดอร์: C: Users Pro Documents Arduino libraries ArduinoJson สถานะการออก 1 ข้อผิดพลาดในการคอมไพล์สำหรับบอร์ด ESP32 Dev Module
ไม่มีอะไรต้องกังวลเพราะเราสามารถกำจัดข้อผิดพลาดเหล่านี้ได้โดยทำตามขั้นตอนง่ายๆ ข้อผิดพลาดเหล่านี้เกิดขึ้นเนื่องจาก Arduino JSON เวอร์ชันใหม่มีคลาสอื่นแทน StaticJsonBuffer นี่คือคลาสของ JSON 5 ดังนั้นเราจึงสามารถกำจัดข้อผิดพลาดนี้ได้โดยการดาวน์เกรด Arduino JSON ของ Arduino IDE ของเรา เพียงไปที่ ร่าง> รวมไลบรารี> จัดการไลบรารี ค้นหา Arduino JSON โดย Benoit Blanchon ที่คุณเคยติดตั้งมาก่อน ถอนการติดตั้งก่อนจากนั้นตั้งค่าเวอร์ชันเป็น 5.13.5 ตอนนี้เมื่อเราตั้ง Arduino JSON เวอร์ชันเก่าแล้วให้ติดตั้งอีกครั้งและคอมไพล์โค้ดใหม่ คราวนี้โค้ดของคุณจะคอมไพล์สำเร็จ
ในการดาวน์โหลดรหัส คลิก ที่นี่.
ขั้นตอนที่ 6: การทำความเข้าใจรหัส
รหัสของโครงการนี้ง่ายมากและแสดงความคิดเห็นได้ดี แต่ถึงกระนั้นรหัสจะอธิบายสั้น ๆ ด้านล่าง
1. ในการเริ่มต้นจะมีการรวมไลบรารีเพื่อให้บอร์ด ESP32 สามารถเชื่อมต่อกับการเชื่อมต่อ WiFi ภายในบ้านหรือที่ทำงาน หลังจากนี้จะมีการกำหนดลิงก์ไปยังโปรเจ็กต์ firebase และการตรวจสอบสิทธิ์ของโปรเจ็กต์ firebase จากนั้นชื่อและรหัสผ่านของการเชื่อมต่อ wifi ในพื้นที่ของคุณจะถูกกำหนดเพื่อให้สามารถเชื่อมต่อ ESP32 กับ Wifi ได้ หมุดบางตัวของ ESP32 ถูกกำหนดให้เชื่อมต่อกับโมดูลรีเลย์ และในที่สุดก็มีการประกาศตัวแปรที่จะเก็บข้อมูลชั่วคราวบางส่วนที่จะมาจาก firebase cloud
#include // รวมไลบรารีเพื่อเชื่อมต่อกับการเชื่อมต่อ Wifi ในพื้นที่ #include // รวมไลบรารีเพื่อเชื่อมต่อกับฐานข้อมูล Firebase #define FIREBASE_HOST 'coma-patient.firebaseio.com' // รวมลิงก์ของโครงการ firebase ของคุณ #define FIREBASE_AUTH 'UrzlDZXMBNRhNdc5i73DRW10KFEuwl '// รวมการตรวจสอบสิทธิ์โครงการ firebase ของคุณ #define WIFI_SSID' abcd '// ชื่อการเชื่อมต่อ WiFi ของบ้านหรือที่ทำงานของคุณ # กำหนด WIFI_PASSWORD' abcd '// รหัสผ่านของการเชื่อมต่อ WiFi ของบ้านหรือที่ทำงานของคุณ int r1 = 34; // พินเพื่อเชื่อมต่อรีเลย์ 1 int r2 = 35; // พินเพื่อเชื่อมต่อรีเลย์ 2 อุณหภูมิ int; // ตัวแปรที่จะนำข้อมูล
2. การตั้งค่าเป็นโมฆะ () เป็นฟังก์ชั่นที่เราเตรียมใช้งานพิน INPUT หรือ OUTPUT ฟังก์ชันนี้ยังกำหนดอัตราการส่งข้อมูลโดยใช้ Serial.begin () คำสั่ง Baud Rate คือความเร็วในการสื่อสารของไมโครคอนโทรลเลอร์ มีการเพิ่มโค้ดบางบรรทัดที่นี่เพื่อเชื่อมต่อ ESP32 กับการเชื่อมต่อ wifi ในพื้นที่ บอร์ดจะพยายามเชื่อมต่อกับการเชื่อมต่อ wifi ท้องถิ่นและจะพิมพ์คำว่า 'connection' ในจอภาพแบบอนุกรม มันจะพิมพ์คำว่า“ Connected” เมื่อสร้างการเชื่อมต่อแล้ว ดังนั้นในการตรวจสอบสิ่งนี้จึงเป็นการดีกว่าที่จะเปิดจอภาพแบบอนุกรมและตรวจสอบจุดหยุดที่นั่น
การตั้งค่าเป็นโมฆะ () {Serial.begin (115200); // การตั้งค่าอัตราการส่งข้อมูล // เชื่อมต่อกับ wifi WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('การเชื่อมต่อ'); ในขณะที่ (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); ล่าช้า (500); } Serial.println (); Serial.print ('เชื่อมต่อ:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }
3. ห่วงเป็นโมฆะ () เป็นฟังก์ชันที่ทำงานซ้ำ ๆ ในวง ในลูปนี้เราจะเขียนโค้ดเพื่อบอกบอร์ดไมโครคอนโทรลเลอร์ว่าต้องทำอะไรและทำอย่างไร เราได้ดึงข้อมูลจาก เบา และ AC จากฐานข้อมูลและเก็บไว้ในตัวแปรชั่วคราวสองตัว จากนั้นจะใช้เงื่อนไขสี่ประการเพื่อสลับอุปกรณ์ทั้งสองตาม 0 หรือ 1 ที่ดึงมาจากฐานข้อมูล
void loop () {// รับค่า temp1 = Serial.println (Firebase.getFloat ('light')); // รับค่าสำหรับการสลับของ light temp2 = Serial.println (Firebase.getFloat ('AC')); // รับ vaue สำหรับการเปลี่ยน Fan delay (1000); ถ้า (temp1 == 1 && temp2 == 1) {// เปิดไฟและพัดลม digitalWrite (r1, HIGH); digitalWrite (r2, สูง); } if (temp1 == 0 && temp2 == 1) {// ในการเปิดพัดลมและปิดไฟ digitalWrite (r1, LOW); digitalWrite (r2, สูง); } if (temp1 == 1 && temp2 == 0) {// ในการปิดพัดลมและเปิดไฟ digitalWrite (r1, HIGH); digitalWrite (r2, LOW); } if (temp1 == 0 && temp2 == 0) {// ปิดพัดลมและปิดไฟ digitalWrite (r1, LOW); digitalWrite (r2, LOW); }}
นี่เป็นส่วนหนึ่งของไฟล์ “ วิธีสร้างระบบบ้านอัจฉริยะโดยใช้ ESP32” คุณสามารถเพิ่มโมดูลรีเลย์เพิ่มเติมได้หากต้องการควบคุมเครื่องใช้ไฟฟ้าภายในบ้านเพิ่มเติมสิ่งเดียวที่คุณต้องทำคืออ่านข้อมูลจาก firebase และเพิ่มเงื่อนไขเพิ่มเติมสำหรับการเปลี่ยน ในบทความถัดไปฉันจะอธิบายวิธีการพัฒนาแอปพลิเคชัน Android และฐานข้อมูล Firebase ฉันจะอธิบายขั้นตอนทีละขั้นตอนเพื่อเชื่อมต่อแอพ Android กับ firebase และส่งข้อมูลไป
เพื่อไปที่บทช่วยสอนถัดไป คลิกที่นี่