DIY: การสร้าง SmartLock สำหรับบ้านของคุณที่เปิดได้ด้วยสมาร์ทโฟนของคุณเท่านั้น
ปัจจุบันมีล็อคมากมายในตลาดที่ต้องใช้รหัสผ่านเพื่อเปิด ล็อคเหล่านี้มีประสิทธิภาพมาก แต่มีราคาแพงมาก หากเราจำเป็นต้องทำการล็อคสำหรับวัตถุประสงค์ขนาดเล็กที่เป็นแบบอัตโนมัติและปลดล็อคหรือล็อคโดยไม่ต้องใช้รหัสผ่านใดๆ แต่ด้วยสมาร์ทโฟน เราสามารถทำได้โดยใช้ส่วนประกอบบางอย่างที่หาซื้อได้ง่ายในตลาด
การล็อคนี้จะมีต้นทุนต่ำมากและจะทำงานได้อย่างสมบูรณ์แบบในขนาดเล็ก อัน แอปพลิเคชัน Android จะต้องใช้งานล็อคนี้ ตอนนี้เรามาดูการตั้งค่า ESP32 ติดตั้งแพ็คเกจที่จำเป็นและทำการเปลี่ยนแปลงฮาร์ดแวร์บางอย่าง!
โดยไม่ต้องเสียเวลามาเริ่มศึกษาแนวคิดที่สำคัญและทำงานในโครงการนี้
วิธีการสร้าง SmartLock ที่ใช้ Android
ขั้นตอนที่ 1: การรวบรวมส่วนประกอบ
ก่อนเริ่มโครงการใดๆ หากมีความกลัวว่าจะติดอยู่กลางโครงการและเสียเวลาเปล่า มีวิธีที่ยอดเยี่ยมในการหลีกเลี่ยง ทำรายการส่วนประกอบทั้งหมดที่คุณต้องการในโครงการและซื้อตั้งแต่แรก ต่อไปนี้เป็นรายการส่วนประกอบทั้งหมดที่เราจะใช้ในโครงการนี้ ส่วนประกอบทั้งหมดนี้หาซื้อได้ง่ายในตลาด
ขั้นตอนที่ 2: การสร้างแอป
ในขณะที่เรากำลังจะสร้างสมาร์ทล็อคที่จะใช้งานโดยโทรศัพท์มือถือ เราจำเป็นต้องพัฒนาแอพสำหรับ Android ที่จะมีปุ่ม เมื่อกดปุ่มนั้นเราจะสามารถเปิดหรือปิดล็อคอัจฉริยะได้ ก่อนหน้านี้เราได้พัฒนาหลาย ๆ แอปพลิเคชัน Android เราได้พัฒนาแอปพลิเคชันที่ประกอบด้วยปุ่มเพียงปุ่มเดียวอยู่แล้ว ปุ่มนี้ใช้เพื่อส่งข้อมูลไปยังฐานข้อมูล ถ้า "1" ถูกผลักเข้าไปในฐานข้อมูล firebase การล็อกสวิตช์จะเปิดขึ้นและถ้า "0" ถูกผลักเข้าไปในฐานข้อมูลนั้นการล็อกจะถูกปิด
โปรดดูบทความของเราที่ชื่อ การสร้างสวิตช์เปิด / ปิดแบบไร้สายสำหรับพีซีของคุณ เพื่อรับความช่วยเหลือในการพัฒนาแอปพลิเคชัน Android ของคุณเองที่จะใช้ในการใช้งานสมาร์ทล็อค
ขั้นตอนที่ 3: การประกอบส่วนประกอบ
เนื่องจากเรามีรายการส่วนประกอบทั้งหมดที่จำเป็นในการทำโครงการนี้ให้เสร็จสมบูรณ์ ให้เราก้าวไปข้างหน้าหนึ่งก้าวและรวบรวมส่วนประกอบทั้งหมดเข้าด้วยกัน
ใช้เซอร์โวมอเตอร์และเชื่อมต่อ Vcc และกราวด์เข้ากับ Vcc และกราวด์ของบอร์ด ESP ตามลำดับ เชื่อมต่อพิน PWM ของเซอร์โวมอเตอร์ของคุณกับพิน 34 ของคุณ บอร์ด ESP32. ตอนนี้จะเห็นว่ามีลูกบิดแบบเฟืองบนเซอร์โวมอเตอร์ ดึงที่จับของตัวล็อคออกโดยหมุนและยึดลูกบิดของมอเตอร์เกียร์ในล็อคโดยใช้กาวบางชนิด
ตอนนี้ด้วยความช่วยเหลือของเครื่องเจาะให้เจาะรูบนประตูที่คุณต้องการวางล็อคอัจฉริยะนี้ ตรวจสอบให้แน่ใจว่าคุณได้เจาะรูในลักษณะที่รูของตัวล็อคทับซ้อนกับรูที่ประตูเพื่อให้สกรูยึดเข้าได้
ขั้นตอนที่ 4: ทำงาน
เมื่อเราทราบแนวคิดหลักที่อยู่เบื้องหลังโครงการนี้แล้วขอให้เราเข้าใจว่าโครงการนี้จะดำเนินไปอย่างไร
ESP32 ถือเป็นหัวใจสำคัญของโครงการนี้ เซอร์โวมอเตอร์เชื่อมต่อกับบอร์ดนี้และไมโครคอนโทรลเลอร์นี้มีการเชื่อมต่อกับฐานข้อมูล firebase เมื่อกดปุ่มในแอปเพื่อเปิดล็อค "1" จะถูกดันเข้าไปในฐานข้อมูล firebase และเมื่อกดปุ่มเพื่อปิดการล็อก "0" จะถูกดันเข้าไปในฐานข้อมูล firebase บอร์ด ESP กำลังอ่านค่านี้ในฐานข้อมูล firebase อย่างต่อเนื่อง ตราบเท่าที่มี 0 ESP32 จะสั่งให้เซอร์โวมอเตอร์ยังคงอยู่ในตำแหน่งเริ่มต้น ทันทีที่ 1 เข้ามาใน firebase บอร์ด ESP จะอ่านและบอกเซอร์โวมอเตอร์ให้ทำการหมุนเพื่อเปิดล็อค
ขั้นตอนที่ 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 สถานะการออก 1 ข้อผิดพลาดในการคอมไพล์สำหรับบอร์ด ESP32 Dev Module
ไม่มีอะไรต้องกังวลเพราะเราสามารถกำจัดข้อผิดพลาดเหล่านี้ได้โดยทำตามขั้นตอนง่ายๆ ข้อผิดพลาดเหล่านี้เกิดขึ้นเนื่องจาก Arduino JSON เวอร์ชันใหม่มีคลาสอื่นแทน StaticJsonBuffer.นี่คือคลาสของ JSON 5 ดังนั้นเราจึงสามารถกำจัดข้อผิดพลาดนี้ได้โดยการดาวน์เกรด Arduino JSON เวอร์ชัน Arduino IDE ของเรา เพียงไปที่ ร่าง> รวมไลบรารี> จัดการไลบรารีค้นหาArduino JSON โดย Benoit Blanchonที่คุณเคยติดตั้งมาก่อน ถอนการติดตั้งก่อนจากนั้นตั้งค่าเวอร์ชันเป็น 5.13.5. ตอนนี้เราได้ตั้งค่า Arduino JSON เวอร์ชันเก่าแล้ว ให้ติดตั้งอีกครั้งและคอมไพล์โค้ดใหม่ คราวนี้ รหัสของคุณจะคอมไพล์สำเร็จ
ดาวน์โหลดรหัสคลิกที่นี่
ขั้นตอนที่ 6: รหัส
รหัสของโครงการนี้ง่ายมาก แต่ก็ยังมีบางส่วนอธิบายไว้ด้านล่าง
1. เมื่อเริ่มต้นรหัสเราจะรวมไลบรารีสามไลบรารี อย่างแรกคือการเปิดใช้ Wifi บนบอร์ด ESP อันดับที่สองคือการเปิดใช้ ESP เพื่อใช้เซอร์โวมอเตอร์และอย่างที่สามคือการเชื่อมต่อบอร์ด ESP กับฐานข้อมูล firebase หลังจากนั้นเราจะเพิ่มโฮสต์ firebase การตรวจสอบสิทธิ์ชื่อการเชื่อมต่ออินเทอร์เน็ตในพื้นที่ของเราและรหัสผ่านในรหัส หลังจากทำเช่นนั้น ให้สร้างวัตถุเพื่อใช้เซอร์โวมอเตอร์
# รวม// รวมไลบรารีเพื่อใช้ WiFi #include // รวมไลบรารีสำหรับเซอร์โวมอเตอร์ #include // รวมไลบรารีเพื่อเชื่อมต่อกับ Firebase #define FIREBASE_HOST "xxxxxxxxxx" // แทนที่ xxxxxxxxxx ด้วยโฮสต์ firebase ของคุณที่นี่ #define FIREBASE_AUTH "xxxxxxxxxx" // แทนที่ xxxxxxxxxx โดยการตรวจสอบสิทธิ์ firebase ที่นี่ #define WIFI_SSID "รหัส xx, xxxxxxxx" // แทนที่ xxxxxxxxxx ตามชื่อการเชื่อมต่อ Wifi ของเรา #define WIFI_PASSWORD "xxxxxxxxxx" // แทนที่ xxxxxxxxxx ด้วยรหัสผ่าน wifi ของคุณ Servo myservo; // สร้างวัตถุสำหรับเซอร์โวมอเตอร์ int pos = 0; // การสร้างตัวแปร int state; // การสร้างตัวแปร
2. การตั้งค่าเป็นโมฆะ () เป็นฟังก์ชันที่ทำงานเพียงครั้งเดียวในโปรแกรมเมื่อเปิดบอร์ดไมโครคอนโทรลเลอร์หรือกดปุ่มเปิดใช้งาน อัตราการส่งข้อมูลถูกกำหนดไว้ในฟังก์ชันนี้ อัตราบอดคือความเร็วในการสื่อสารในหน่วยบิตต่อวินาทีที่ไมโครคอนโทรลเลอร์สื่อสารกับอุปกรณ์ภายนอก เซอร์โวมอเตอร์เชื่อมต่อกับพิน 34 ของบอร์ด ESP เขียนโค้ดในฟังก์ชันนี้เพื่อเชื่อมต่อไมโครคอนโทรลเลอร์กับการเชื่อมต่ออินเทอร์เน็ตในพื้นที่
การตั้งค่าเป็นโมฆะ () {Serial.begin (115200); // การตั้งค่า baud rate myservo.attach (34); // เชื่อมต่อพิน PWM ของเซอร์โวมอเตอร์เข้ากับพิน 34 ของ ESP32 myservo.write (60); ล่าช้า (1,000); // เชื่อมต่อกับ 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. ห่วงเป็นโมฆะ () เป็นฟังก์ชันที่ทำงานซ้ำแล้วซ้ำอีกในลูป ในฟังก์ชั่นนี้เราจะบอกไมโครคอนโทรลเลอร์ถึงสิ่งที่ต้องดำเนินการและวิธีการ ที่นี่ข้อมูลจะถูกอ่านจาก firebase และเก็บไว้ในตัวแปรที่ชื่อ สถานะ. หากสถานะมีค่าเป็น "0" ตำแหน่งของเซอร์โวมอเตอร์จะตั้งไว้ที่ 8 องศา หากค่าในสถานะตัวแปรเท่ากับ ‘1’ ตำแหน่งของเซอร์โวมอเตอร์จะตั้งไว้ที่ 55 องศา
โมฆะ loop () {state = Serial.println (Firebase.getFloat ("motor")); // อ่านข้อมูลจาก firebase // หากสถานะเป็น '0' มอเตอร์กระแสตรงจะปิดถ้า (state == '0') {myservo.write (8); // กำหนดตำแหน่งของเซอร์โวมอเตอร์ล่าช้า (1,000); // รอ Serial.println ในวินาทีที่สอง ("Door Locked"); } else if (สถานะ == '1') {myservo.write (55); // กำหนดตำแหน่งใหม่ของเซอร์โวมอเตอร์ล่าช้า (1,000); // รอหนึ่งวินาที Serial.println ("Door UnLocked"); } // จัดการข้อผิดพลาดถ้า (Firebase.failed ()) {Serial.print ("setting / number failed:"); Serial.println(Firebase.error()); กลับ; } ล่าช้า (1000);