ปัจจุบันมีล็อคมากมายในตลาดที่ต้องใช้รหัสผ่านเพื่อเปิด ล็อคเหล่านี้มีประสิทธิภาพมาก แต่มีราคาแพงมาก หากเราจำเป็นต้องทำการล็อคเพื่อวัตถุประสงค์ขนาดเล็กที่เป็นแบบอัตโนมัติและปลดล็อกหรือล็อกโดยไม่ต้องใช้รหัสผ่านใด ๆ แต่ด้วยสมาร์ทโฟนเราสามารถทำได้โดยใช้ส่วนประกอบบางอย่างที่หาได้ง่ายในตลาด
การล็อคนี้จะมีต้นทุนต่ำมากและจะทำงานได้อย่างสมบูรณ์แบบในขนาดเล็ก อัน แอปพลิเคชัน 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 แสดงอยู่ด้านล่าง
- ดาวน์โหลด 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
Arduino JSON
- ตอนนี้คลิกที่ไฟล์ เครื่องมือ เมนูแบบเลื่อนลงจะปรากฏขึ้น ตั้งค่าบอร์ดเป็น โมดูล 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 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);