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

  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 สถานะการออก 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); 
Facebook Twitter Google Plus Pinterest