วิธีสร้างระบบอัตโนมัติในบ้านอัจฉริยะโดยใช้โมดูล 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: การประกอบส่วนประกอบ

ตอนนี้เมื่อเรามีวิสัยทัศน์ที่ชัดเจนเกี่ยวกับสิ่งที่เราต้องการจะทำในโครงการนี้ อย่าปล่อยให้เสียเวลาอีกต่อไปและเริ่มประกอบส่วนประกอบต่างๆ

  1. ใช้เขียงหั่นขนมและติดตั้งไมโครคอนโทรลเลอร์ ESP32 ไว้ในนั้น ตอนนี้ใช้โมดูลรีเลย์สองตัวแล้วเชื่อมต่อ Vcc และกราวด์ของโมดูลเข้ากับ Vin และกราวด์ของบอร์ดไมโครคอนโทรลเลอร์ ESP32 แบบขนาน เชื่อมต่อ ในพิน ของโมดูลรีเลย์ไปยังพิน 34 และพิน 35 ของบอร์ด ESP32 คุณจะเห็นว่าตอนนี้รีเลย์เปิดอยู่
  2. เชื่อมต่อเครื่องใช้ภายในบ้านเข้ากับโมดูลรีเลย์ ตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณตรงกับการเชื่อมต่อที่แสดงในรูปในขั้นตอนที่ 2

เมื่อเราเชื่อมต่อส่วนฮาร์ดแวร์ของระบบของเรา เราจะพัฒนาแอปพลิเคชัน Android ที่จะเชื่อมต่อกับฐานข้อมูล firebase เราจะสร้างฐานข้อมูลและแอปพลิเคชัน Android ในส่วนที่ 2 ของบทความนี้

ขั้นตอนที่ 5: เริ่มต้นใช้งาน ESP32

หากคุณไม่เคยทำงานกับ Arduino IDE มาก่อนไม่ต้องกังวลเพราะขั้นตอนในการตั้งค่า Arduino IDE แสดงอยู่ด้านล่าง

  1. ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก Arduino
  2. เชื่อมต่อบอร์ด Arduino ของคุณกับพีซีและเปิดแผงควบคุม คลิกที่ ฮาร์ดแวร์และเสียง.เปิดให้บริการแล้ว อุปกรณ์และเครื่องพิมพ์ และค้นหาพอร์ตที่บอร์ดของคุณเชื่อมต่ออยู่ ในกรณีของฉันมันคือ COM14แต่มันแตกต่างกันในคอมพิวเตอร์แต่ละเครื่อง
  3. คลิกที่ไฟล์จากนั้นคลิกที่การตั้งค่า คัดลอกลิงค์ต่อไปนี้ในไฟล์ URL ของ Board Manager เพิ่มเติม “https://dl.espressif.com/dl/package_esp32_index.json”
  4. ตอนนี้ในการใช้ ESP32 กับ Arduino IDE เราจำเป็นต้องนำเข้าไลบรารีพิเศษที่จะช่วยให้เราสามารถเบิร์นโค้ดบน ESP32 และใช้งานได้ ไลบรารีทั้งสองนี้แนบอยู่ในลิงค์ด้านล่าง หากต้องการรวมไลบรารี goto ร่าง> รวมไลบรารี> เพิ่มไลบรารี ZIP. กล่องจะปรากฏขึ้น ค้นหาโฟลเดอร์ ZIP ในคอมพิวเตอร์ของคุณและคลิกตกลงเพื่อรวมโฟลเดอร์
  5. ตอนนี้ goto ร่าง> รวมไลบรารี> จัดการไลบรารี
  6. เมนูจะเปิดขึ้น ในแถบค้นหาพิมพ์ Arduino JSONรายการจะปรากฏขึ้น ติดตั้ง Arduino JSON โดย Benoit Blanchon
  7. ตอนนี้คลิกที่ไฟล์ เครื่องมือเมนูแบบเลื่อนลงจะปรากฏขึ้น ตั้งค่าบอร์ดเป็น โมดูล ESP Dev
  8. คลิกที่เมนูเครื่องมืออีกครั้งและตั้งค่าพอร์ตที่คุณสังเกตเห็นในแผงควบคุมก่อนหน้านี้
  9. ตอนนี้อัปโหลดรหัสที่แนบมาในลิงค์ด้านล่างและคลิกที่ปุ่มอัปโหลดเพื่อเบิร์นโค้ดบนไมโครคอนโทรลเลอร์ 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 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 และส่งข้อมูลไป

เพื่อไปที่บทช่วยสอนถัดไปคลิกที่นี่

Facebook Twitter Google Plus Pinterest