DIY: การสร้าง SmartLock สำหรับบ้านของคุณที่เปิดได้ด้วยสมาร์ทโฟนของคุณเท่านั้น

ปัจจุบันมีล็อคมากมายในตลาดที่ต้องใช้รหัสผ่านเพื่อเปิด ล็อคเหล่านี้มีประสิทธิภาพมาก แต่มีราคาแพงมาก หากเราจำเป็นต้องทำการล็อคเพื่อวัตถุประสงค์ขนาดเล็กที่เป็นแบบอัตโนมัติและปลดล็อกหรือล็อกโดยไม่ต้องใช้รหัสผ่านใด ๆ แต่ด้วยสมาร์ทโฟนเราสามารถทำได้โดยใช้ส่วนประกอบบางอย่างที่หาได้ง่ายในตลาด



การล็อคนี้จะมีต้นทุนต่ำมากและจะทำงานได้อย่างสมบูรณ์แบบในขนาดเล็ก อัน แอปพลิเคชัน Android จะต้องใช้งานล็อคนี้ ตอนนี้เรามาดูการตั้งค่า ESP32 โดยติดตั้งแพ็คเกจที่จำเป็นและทำการเปลี่ยนแปลงฮาร์ดแวร์บางอย่าง!

ล็อคประตูอัตโนมัติ



โดยไม่ต้องเสียเวลามาเริ่มศึกษาแนวคิดที่สำคัญและทำงานในโครงการนี้



วิธีการสร้าง SmartLock ที่ใช้ Android

ขั้นตอนที่ 1: การรวบรวมส่วนประกอบ

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



  • ESP32
  • สายจัมเปอร์
  • เซอร์โวมอเตอร์
  • สกรู
  • ล็อค
  • เครื่องเจาะ

ขั้นตอนที่ 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 แสดงอยู่ด้านล่าง

  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

    Arduino JSON

  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 สถานะการออก 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 การตรวจสอบสิทธิ์ชื่อของการเชื่อมต่ออินเทอร์เน็ตในพื้นที่ของเราและรหัสผ่านในรหัส หลังจากนั้นให้สร้างวัตถุเพื่อใช้เซอร์โวมอเตอร์

#include // รวมไลบรารีเพื่อใช้ WiFi #include // รวมไลบรารีสำหรับเซอร์โวมอเตอร์ #include // รวมไลบรารีเพื่อเชื่อมต่อกับ Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // แทนที่ xxxxxxxxxx โดยโฮสต์ firebase ของคุณที่นี่ #define FIREBASE_AUTH 'xxxxxxxxxx' / / แทนที่ xxxxxxxxxx โดยการรับรองความถูกต้องของ firebase ที่นี่ #define WIFI_SSID 'xx code, 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 ()); กลับ; } ล่าช้า (1,000);