วิธีสร้างระบบอัตโนมัติในบ้านอัจฉริยะโดยใช้โมดูล ESP32
ในยุคปัจจุบันนี้แนวคิดของระบบอัตโนมัติในบ้านกำลังเติบโตอย่างรวดเร็ว มีการติดตั้งระบบอัจฉริยะในเกือบทุกสถานที่ ระบบบ้านอัจฉริยะเป็นแนวคิดที่ควบคุมเครื่องใช้ไฟฟ้าหรืออุปกรณ์ทั้งหมดโดยใช้รีโมทคอนโทรลเพียงชุดเดียว ในระบบเหล่านี้โดยส่วนใหญ่รีโมทคอนโทรลเป็นแอปพลิเคชันบนมือถือ เนื่องจากแอนดรอยด์มือถือเป็นที่นิยมมากที่สุดในหมู่ผู้คนดังนั้นแอปพลิเคชัน Android จึงเป็นตัวเลือกที่ดีที่สุดในการควบคุมอุปกรณ์เหล่านี้ทั้งหมด
ดังนั้นในโครงการนี้เราจะเชื่อมต่อเครื่องใช้ไฟฟ้าในบ้านบางส่วนเข้ากับโมดูลรีเลย์และควบคุมผ่านไมโครคอนโทรลเลอร์ ESP32 เราจะสร้างฐานข้อมูลเรียลไทม์ของ firebase และเชื่อมต่อจากแอพ android แอป Android นี้จะส่งข้อมูลไปยังระบบคลาวด์จากนั้นจะส่งไปยังไมโครคอนโทรลเลอร์เพื่อเปิดหรือปิดเครื่องใช้ไฟฟ้า ส่วนที่ดีที่สุดคือคุณสามารถควบคุมการสลับเครื่องใช้ของคุณได้อย่างเต็มที่จากทุกที่ในโลก คุณเพียงแค่ต้องเชื่อมต่ออินเทอร์เน็ตเพื่อใช้งานแอปพลิเคชัน Android
จะควบคุมเครื่องใช้ในบ้านผ่าน WiFi ได้อย่างไร?
ระบบ Home Automation ที่มีอยู่แล้วในตลาดมีค่าใช้จ่ายสูงมาก เราสามารถใช้บอร์ด ESP32 เพื่อเชื่อมต่อเครื่องใช้ในบ้านต่างๆและควบคุมโดยใช้แอพ Android สิ่งนี้จะมีต้นทุนต่ำมากและเป็นวิธีที่มีประสิทธิภาพในการทำให้บ้านเป็นอัตโนมัติ ตอนนี้ให้เราก้าวไปข้างหน้าและเริ่มรวบรวมข้อมูลเพื่อเริ่มโครงการ
ขั้นตอนที่ 1: รวบรวมส่วนประกอบ
วิธีที่ดีที่สุดในการเริ่มโครงการคือการทำรายการส่วนประกอบและศึกษาส่วนประกอบเหล่านี้โดยย่อ เพราะไม่มีใครอยากติดอยู่ตรงกลางของโครงการเพียงเพราะองค์ประกอบที่ขาดหายไป รายการส่วนประกอบที่เราจะใช้ในโครงการนี้มีดังต่อไปนี้:
ขั้นตอนที่ 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
โมดูลรีเลย์เป็นอุปกรณ์สวิตชิ่ง ทำงานในสองโหมด ปกติเปิด (NO) และ โดยปกติ ปิด (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
- ตอนนี้คลิกที่ไฟล์ เครื่องมือเมนูแบบเลื่อนลงจะปรากฏขึ้น ตั้งค่าบอร์ดเป็น โมดูล 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 StaticJsonBufferjsonBuffer; ^ ในไฟล์ที่มาจาก 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 exit status 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
#รวม// รวมไลบรารีเพื่อเชื่อมต่อกับการเชื่อมต่อ Wifi ในพื้นที่ #include // รวมไลบรารีเพื่อเชื่อมต่อกับฐานข้อมูล Firebase #define FIREBASE_HOST "coma-patient.firebaseio.com" // รวมลิงก์ของโปรเจ็กต์ firebase ของคุณ #define FIREBASE_AUTH "UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf" // รวมการตรวจสอบสิทธิ์ของโครงการ firebase ของคุณ "// ชื่อการเชื่อมต่อ WiFi ของบ้านหรือที่ทำงานของคุณ # กำหนด WIFI_PASSWORD" abcd "// รหัสผ่านของการเชื่อมต่อ WiFi ของบ้านหรือที่ทำงานของคุณ int r1 = 34; // ปักหมุดเพื่อเชื่อมต่อรีเลย์ 1 int r2 = 35; // พินเพื่อเชื่อมต่อรีเลย์ 2 อุณหภูมิ int; // ตัวแปรในการพกพาข้อมูล
2. การตั้งค่าเป็นโมฆะ ()เป็นฟังก์ชั่นที่เราเตรียมใช้งานพิน INPUT หรือ OUTPUT ฟังก์ชั่นนี้ยังกำหนดอัตราการรับส่งข้อมูลโดยใช้ Serial.begin () คำสั่ง Baud Rate คือความเร็วในการสื่อสารของไมโครคอนโทรลเลอร์ มีการเพิ่มโค้ดบางบรรทัดที่นี่เพื่อเชื่อมต่อ ESP32 กับการเชื่อมต่อ wifi ในพื้นที่ บอร์ดจะพยายามเชื่อมต่อกับการเชื่อมต่อ wifi ในพื้นที่และจะพิมพ์ "การเชื่อมต่อ" ในจอภาพแบบอนุกรม มันจะพิมพ์คำว่า“ 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")); // รับค่าสำหรับการสลับไฟ 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 และส่งข้อมูลไป
เพื่อไปที่บทช่วยสอนถัดไปคลิกที่นี่