DIY: Tạo SmartLock cho ngôi nhà của bạn mà chỉ mở bằng điện thoại thông minh của bạn

Ngày nay, có rất nhiều ổ khóa có sẵn trên thị trường cần một số loại mật khẩu để mở nó. Những ổ khóa này rất hiệu quả nhưng rất tốn kém. Nếu chúng ta cần tạo một ổ khóa cho mục đích quy mô nhỏ được tự động hóa và mở khóa hoặc khóa mà không cần mật khẩu nhưng với điện thoại thông minh, chúng ta có thể tạo khóa bằng cách sử dụng một số linh kiện dễ dàng có sẵn trên thị trường.



Khóa này sẽ có chi phí rất thấp và sẽ hoạt động hoàn hảo ở quy mô nhỏ. An ứng dụng android sẽ cần thiết để vận hành khóa này. Bây giờ, hãy chuyển sang thiết lập ESP32, cài đặt các gói cần thiết trên đó và thực hiện một số thay đổi phần cứng nhất định!

Khóa cửa tự động



Không lãng phí thời gian, hãy bắt đầu nghiên cứu các khái niệm quan trọng và thực hiện dự án này.



Làm thế nào để vận hành Android SmartLock?

Bước 1: Thu thập các thành phần

Trước khi bắt đầu bất kỳ dự án nào, nếu bạn lo sợ rằng bạn sẽ bị mắc kẹt ở giữa dự án và lãng phí thời gian, thì có một cách tuyệt vời để tránh nó. Lập danh sách đầy đủ tất cả các thành phần mà bạn sẽ cần trong dự án và mua chúng ngay từ đầu. Sau đây là danh sách đầy đủ của tất cả các thành phần mà chúng tôi sẽ sử dụng trong dự án này. Tất cả các thành phần này dễ dàng có sẵn trên thị trường.



  • ESP32
  • Dây nhảy
  • Động cơ servo
  • Vít
  • Khóa
  • Máy khoan

Bước 2: Tạo ứng dụng

Vì chúng tôi sẽ tạo ra một khóa thông minh sẽ được vận hành bởi điện thoại di động, chúng tôi cần phát triển một ứng dụng Android có chứa một nút. Bằng cách nhấn nút đó, chúng ta sẽ có thể mở hoặc đóng khóa thông minh. Trước đây, chúng tôi đã phát triển một số các ứng dụng android. Chúng tôi đã phát triển một ứng dụng chỉ bao gồm một nút trong đó. Nút này được sử dụng để gửi dữ liệu vào cơ sở dữ liệu. nếu ‘1’ được đẩy vào cơ sở dữ liệu firebase, khóa chuyển sẽ mở và nếu ‘0’ được đẩy vào cơ sở dữ liệu đó, khóa sẽ bị đóng.

Hãy tham khảo bài viết của chúng tôi có tên Tạo công tắc Bật / Tắt không dây cho PC của bạn để được giúp đỡ để phát triển ứng dụng Android của riêng bạn sẽ được sử dụng để vận hành khóa thông minh.

Bước 3: Lắp ráp các thành phần

Khi chúng ta có một danh sách đầy đủ tất cả các thành phần mà chúng ta cần để hoàn thành dự án này, chúng ta hãy đi trước một bước và lắp ráp tất cả các thành phần lại với nhau.



Lấy động cơ servo và kết nối Vcc và nối đất của nó với Vcc và nối đất của bảng ESP tương ứng. Kết nối chân PWM của động cơ servo với chân 34 của Bảng ESP32 . Bây giờ thấy rằng có một núm kiểu bánh răng trên động cơ servo. Lấy tay cầm của khóa ra bằng cách xoay nó và cố định núm của động cơ bánh răng trong ổ khóa với sự trợ giúp của một số chất kết dính.

Bây giờ, với sự hỗ trợ của máy khoan, hãy khoan một số lỗ trên cánh cửa nơi bạn muốn đặt ổ khóa thông minh này. Đảm bảo rằng bạn khoan các lỗ sao cho các lỗ của khóa chồng lên các lỗ trên cửa, tạo điều kiện cho vít cố định vào.

Bước 4: Làm việc

Như bây giờ chúng ta đã biết ý tưởng chính đằng sau dự án này, chúng ta hãy hiểu dự án này sẽ hoạt động như thế nào.

ESP32 là trung tâm của dự án này. Một động cơ servo được kết nối với bo mạch này và bộ vi điều khiển này có kết nối với cơ sở dữ liệu firebase. Khi nhấn nút trong ứng dụng để mở khóa, ‘1’ được đẩy vào cơ sở dữ liệu firebase và khi nhấn nút để đóng khóa, ‘0’ sẽ được đẩy vào cơ sở dữ liệu firebase. Bảng ESP đang đọc giá trị này liên tục trong cơ sở dữ liệu firebase. Miễn là có 0, ESP32 sẽ hướng động cơ servo giữ nguyên vị trí ban đầu của nó. Ngay khi 1 vào cơ sở lửa, bảng ESP sẽ đọc nó và yêu cầu động cơ servo thực hiện một vòng quay để mở khóa.

Bước 5: Bắt đầu với ESP32

Nếu bạn chưa làm việc với Arduino IDE trước đây, đừng lo lắng vì từng bước thiết lập Arduino IDE được hiển thị bên dưới.

  1. Tải xuống phiên bản Arduino IDE mới nhất từ Arduino.
  2. Kết nối bảng Arduino của bạn với PC và mở Bảng điều khiển. Bấm vào Phần cứng và Âm thanh. Bây giờ mở Thiết bị và Máy in và tìm cổng mà bo mạch của bạn được kết nối. Trong trường hợp của tôi, nó là COM14 nhưng nó khác nhau trong các máy tính khác nhau.

    Tìm cổng

  3. Bấm vào Tệp và sau đó bấm vào Tùy chọn. Sao chép liên kết sau trong URL của Người quản lý Hội đồng Quản trị bổ sung. “ https://dl.espressif.com/dl/package_esp32_index.json '

    Sở thích

  4. Bây giờ, để sử dụng ESP32 với Arduino IDE, chúng ta cần nhập các thư viện đặc biệt cho phép chúng ta ghi mã trên ESP32 và sử dụng nó. hai thư viện này được đính kèm trong liên kết dưới đây. Để bao gồm thư viện, goto Phác thảo> Bao gồm Thư viện> Thêm Thư viện ZIP . Một hộp sẽ xuất hiện. Tìm thư mục ZIP trên máy tính của bạn và nhấp vào OK để bao gồm các thư mục.

    Bao gồm Thư viện

  5. Bây giờ goto Phác thảo> Bao gồm Thư viện> Quản lý Thư viện.

    Quản lý thư viện

  6. Một Menu sẽ mở ra. Trong thanh tìm kiếm, nhập Arduino JSON. Một danh sách sẽ xuất hiện. Tải về Arduino JSON của Benoit Blanchon.

    Arduino JSON

  7. Bây giờ hãy nhấp vào Công cụ. Một menu thả xuống sẽ xuất hiện. Đặt bảng thành Mô-đun nhà phát triển ESP.

    Ban thiết lập

  8. Nhấp lại vào menu Công cụ và đặt cổng mà bạn đã quan sát trong bảng điều khiển trước đó.

    Thiết lập cổng

  9. Bây giờ Tải lên mã được đính kèm trong liên kết bên dưới và nhấp vào nút tải lên để ghi mã trên vi điều khiển ESP32.

    Tải lên

Vì vậy, bây giờ khi bạn tải lên mã, một lỗi có thể xảy ra. Đây là lỗi phổ biến nhất có thể xảy ra nếu bạn đang sử dụng phiên bản mới của Arduino IDE và Arduino JSON. Sau đây là những lỗi mà bạn có thể thấy trên màn hình.

Trong tệp được bao gồm từ C:  Users  Pro  Documents  Arduino  thư viện  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, từ C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer là một lớp từ ArduinoJson 5. Vui lòng xem arduinojson.org/upgrade để tìm hiểu cách nâng cấp chương trình của bạn lên ArduinoJson phiên bản 6 StaticJsonBuffer jsonBuffer; ^ Trong tệp được bao gồm từ C:  Users  Pro  Documents  Arduino  thư viện  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, từ C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: StaticJsonBuffer là một lớp từ ArduinoJson 5. Vui lòng xem arduinojson.org/upgrade để tìm hiểu cách nâng cấp chương trình của bạn lên ArduinoJson phiên bản 6 return StaticJsonBuffer (). ParseObject (_data); ^ Đã tìm thấy nhiều thư viện cho 'WiFi.h' Được sử dụng: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  thư viện  WiFi Không được sử dụng: C:  Program Files ( x86)  Arduino  thư viện  WiFi Sử dụng thư viện WiFi tại phiên bản 1.0 trong thư mục: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  thư viện  WiFi Sử dụng thư viện IOXhop_FirebaseESP32-master trong thư mục: C:  Users  Pro  Documents  Arduino  architects  IOXhop_FirebaseESP32-master (kế thừa) Sử dụng thư viện HTTPClient tại phiên bản 1.2 trong thư mục: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  thư viện  HTTPClient Sử dụng thư viện WiFiClientSecure tại phiên bản 1.0 trong thư mục: C:  Users  Pro  AppData  Local  Arduino15  pack  esp32  hardware  esp32  1.0.2  thư viện  WiFiClientSecure Sử dụng thư viện ArduinoJson tại phiên bản 6.12.0 trong thư mục: C:  Users  Pro  Documents  Arduino  architects  ArduinoJson trạng thái thoát 1 Lỗi biên dịch cho bảng ESP32 Dev Module.

Không có gì phải lo lắng vì chúng ta có thể loại bỏ những lỗi này bằng một số bước đơn giản. Những lỗi này đang phát sinh do phiên bản mới của Arduino JSON có một lớp khác thay vì StaticJsonBuffer. Đây là lớp của JSON 5. Vì vậy, chúng tôi có thể đơn giản loại bỏ lỗi này bằng cách hạ cấp phiên bản Arduino JSON của Arduino IDE của chúng tôi. Đơn giản chỉ cần đi đến Phác thảo> Bao gồm Thư viện> Quản lý Thư viện. Tìm kiếm Arduino JSON của Benoit Blanchon mà bạn đã cài đặt trước đó. Gỡ cài đặt nó trước rồi đặt phiên bản của nó thành 5.13.5. Bây giờ khi chúng ta đã thiết lập phiên bản Arduino JSON cũ, hãy cài đặt lại nó và biên dịch lại mã. Lần này, mã của bạn sẽ biên dịch thành công.

Để tải xuống mã, nhấp chuột đây.

Bước 6: Mã

Mã của dự án này rất đơn giản nhưng vẫn còn, một số phần của nó được giải thích bên dưới.

1. Khi bắt đầu mã, chúng ta sẽ bao gồm ba thư viện. Đầu tiên là kích hoạt Wifi trên board ESP, thứ hai là kích hoạt ESP để sử dụng động cơ servo và thứ ba là kết nối board ESP với cơ sở dữ liệu firebase. Sau đó, chúng tôi sẽ thêm máy chủ firebase, xác thực, tên kết nối internet cục bộ của chúng tôi và mật khẩu của nó trong mã. Sau khi làm điều đó, hãy tạo một đối tượng để sử dụng động cơ servo.

#include // bao gồm thư viện để sử dụng WiFi #include // bao gồm thư viện cho động cơ servo #include // bao gồm thư viện để kết nối với Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // thay xxxxxxxxxx bằng máy chủ firebase của bạn tại đây #define FIREBASE_AUTH 'xxxxxxxxxx' / / thay xxxxxxxxxx bằng xác thực firebase của bạn tại đây #define WIFI_SSID 'mã xx, xxxxxxxx' // thay xxxxxxxxxx bằng tên kết nối Wifi của chúng tôi #define WIFI_PASSWORD 'xxxxxxxxxx' // thay xxxxxxxxxx bằng mật khẩu wifi Servo myservo; // tạo đối tượng cho động cơ servo int pos = 0; // tạo trạng thái biến int; // tạo biến

2. void setup () là một chức năng chỉ chạy một lần trong chương trình khi bo mạch vi điều khiển được bật nguồn hoặc nhấn nút bật. Tốc độ truyền được đặt trong chức năng này. Tốc độ truyền thực sự là tốc độ giao tiếp tính bằng bit trên giây mà thông qua đó bộ vi điều khiển giao tiếp với các thiết bị bên ngoài. Động cơ servo được kết nối với chân34 của bảng ESP. mã được viết trong chức năng này để kết nối bộ vi điều khiển với kết nối internet cục bộ.

void setup () {Serial.begin (115200); // thiết lập tốc độ truyền myservo.attach (34); // kết nối chân PWM của động cơ servo với chân34 của ESP32 myservo.write (60); chậm trễ (1000); // kết nối với wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('đang kết nối'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); chậm trễ (500); } Serial.println (); Serial.print ('đã kết nối:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () là một hàm chạy đi chạy lại trong một vòng lặp. Trong chức năng này, chúng tôi cho bộ vi điều khiển biết, các hoạt động cần thực hiện và cách thức thực hiện. Tại đây, dữ liệu đang được đọc từ firebase và được lưu trữ trong biến có tên tiểu bang . Nếu trạng thái có giá trị ‘0’ trong đó, vị trí của động cơ servo được đặt thành 8 độ. Nếu giá trị ở trạng thái thay đổi bằng ‘1’, vị trí của động cơ servo sẽ được đặt thành 55 độ.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // đọc dữ liệu từ firebase // nếu trạng thái là '0' thì động cơ DC sẽ tắt if (state == '0') {myservo.write (8); // thiết lập vị trí của độ trễ động cơ servo (1000); // đợi onw thứ hai Serial.println ('Cửa đã khóa'); } else if (state == '1') {myservo.write (55); // thiết lập vị trí mới của độ trễ động cơ servo (1000); // đợi một giây Serial.println ('Door UnLocked'); } // xử lý lỗi if (Firebase.failed ()) {Serial.print ('setting / number failed:'); Serial.println (Firebase.error ()); trở về; } delay (1000);