Zrób to sam: tworzenie blokady SmartLock dla Twojego domu, która otwiera się tylko za pomocą smartfona

Obecnie na rynku dostępnych jest tak wiele zamków, które wymagają hasła, aby je otworzyć. Te zamki są bardzo wydajne, ale bardzo kosztowne. Jeśli potrzebujemy zrobić zamek na małą skalę, który jest zautomatyzowany i jest odblokowywany lub blokowany bez hasła, ale za pomocą smartfona, możemy to zrobić za pomocą niektórych łatwo dostępnych na rynku komponentów.



Ten zamek będzie bardzo tani i będzie działał doskonale na małą skalę. Na aplikacja na Androida będzie potrzebny do obsługi tego zamka. Teraz przejdźmy do skonfigurowania ESP32, zainstalowania na nim niezbędnych pakietów i wprowadzenia pewnych zmian sprzętowych!

Automatyczny zamek do drzwi



Nie marnując czasu, zacznijmy studiować ważne koncepcje i pracować nad tym projektem.



Jak zrobić SmartLock obsługiwany przez Androida?

Krok 1: Zbieranie komponentów

Przed rozpoczęciem jakiegokolwiek projektu, jeśli istnieje obawa, że ​​utkniesz w środku projektu i stracisz czas, istnieje doskonałe podejście, aby tego uniknąć. Zrób pełną listę wszystkich komponentów, których będziesz potrzebować w projekcie i kup je w pierwszej kolejności. Poniżej znajduje się pełna lista wszystkich komponentów, których będziemy używać w tym projekcie. Wszystkie te komponenty są łatwo dostępne na rynku.



  • ESP32
  • Przewody połączeniowe
  • Siłownik
  • Śruby
  • Zamek
  • Wiertarka

Krok 2: Tworzenie aplikacji

Ponieważ zamierzamy stworzyć inteligentny zamek, który będzie obsługiwany przez telefon komórkowy, musimy opracować aplikację na Androida, która będzie zawierała przycisk. Naciskając ten przycisk będziemy mogli otworzyć lub zamknąć inteligentny zamek. Wcześniej opracowaliśmy kilka aplikacje na Androida. Stworzyliśmy już aplikację, która składa się tylko z jednego przycisku. Ten przycisk służy do wysyłania danych do bazy danych. jeśli „1” zostanie wprowadzone do bazy danych Firebase, blokada przełącznika otworzy się, a jeśli „0” zostanie wstawione do tej bazy danych, blokada zostanie zamknięta.

Zapoznaj się z naszym artykułem o nazwie Tworzenie bezprzewodowego włącznika / wyłącznika dla twojego komputera pomoc w opracowaniu własnej aplikacji na Androida, która będzie używana do obsługi inteligentnego zamka.

Krok 3: Montaż komponentów

Ponieważ mamy pełną listę wszystkich komponentów, których potrzebujemy do ukończenia tego projektu, przejdźmy o krok do przodu i złóżmy razem wszystkie komponenty.



Weź serwomotor i podłącz jego Vcc i masę odpowiednio do Vcc i masy na karcie ESP. Podłącz pin PWM twojego silnika serwo do pin 34 twojego Płyta ESP32 . Teraz zobacz, że na serwomotorze jest gałka zmiany biegów. Wyjmij uchwyt zamka obracając go i zamocuj gałkę motoreduktora w zamku za pomocą kleju.

Teraz, za pomocą wiertarki, wywierć otwory w drzwiach, w których chcesz umieścić ten inteligentny zamek. Upewnij się, że otwory są wywiercone w taki sposób, aby otwory zamka zachodziły na otwory w drzwiach, umożliwiając wkręcenie śruby.

Krok 4: Praca

Ponieważ znamy teraz główną ideę tego projektu, pozwól nam zrozumieć, jak ten projekt będzie działał.

ESP32 jest sercem tego projektu. Do tej płytki jest podłączony serwomotor, a ten mikrokontroler ma połączenie z bazą danych Firebase. Gdy przycisk w aplikacji zostanie naciśnięty, aby otworzyć blokadę, do bazy danych Firebase zostanie wprowadzona wartość „1”, a po naciśnięciu przycisku w celu zamknięcia blokady do bazy danych Firebase zostanie wstawione „0”. Płyta ESP w sposób ciągły odczytuje tę wartość w bazie danych Firebase. Dopóki jest 0, ESP32 kieruje serwomotor tak, aby pozostał w jego początkowej pozycji. Jak tylko 1 pojawi się w bazie Firebase, płyta ESP odczyta ją i powie serwomotorowi, aby wykonał obrót, który otworzy zamek.

Krok 5: Pierwsze kroki z ESP32

Jeśli wcześniej nie pracowałeś z Arduino IDE, nie martw się, ponieważ poniżej przedstawiono krok po kroku konfigurację Arduino IDE.

  1. Pobierz najnowszą wersję Arduino IDE ze strony Arduino.
  2. Podłącz swoją płytkę Arduino do komputera i otwórz Panel sterowania. Kliknij Sprzęt i dźwięk. Teraz otwarte Urządzenia i drukarka i znajdź port, do którego jest podłączona twoja płyta. W moim przypadku tak COM14 ale jest inaczej na różnych komputerach.

    Znajdowanie portu

  3. Kliknij Plik, a następnie kliknij Preferencje. Skopiuj poniższy link w Dodatkowy adres URL menedżera zarządu. „ https://dl.espressif.com/dl/package_esp32_index.json ”

    Preferencje

  4. Teraz, aby używać ESP32 z Arduino IDE, musimy zaimportować specjalne biblioteki, które pozwolą nam wypalić kod na ESP32 i go używać. te dwie biblioteki są dołączone w linku podanym poniżej. Aby dołączyć bibliotekę, gotowe Szkic> Dołącz bibliotekę> Dodaj bibliotekę ZIP . Pojawi się pole. Znajdź folder ZIP na komputerze i kliknij OK, aby dołączyć foldery.

    Uwzględnij bibliotekę

  5. Teraz gotowe Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami.

    Zarządzaj bibliotekami

  6. Otworzy się menu. Na pasku wyszukiwania wpisz Arduino JSON. Pojawi się lista. zainstalować Arduino JSON autorstwa Benoit Blanchon.

    Arduino JSON

  7. Teraz kliknij Przybory. Pojawi się menu rozwijane. Ustaw tablicę na Moduł deweloperski ESP.

    Tablica nastawcza

  8. Kliknij ponownie menu Narzędzie i ustaw port, który obserwowałeś wcześniej w panelu sterowania.

    Ustawianie portu

  9. Teraz prześlij kod, który znajduje się w linku poniżej i kliknij przycisk przesyłania, aby wypalić kod na mikrokontrolerze ESP32.

    Przekazać plik

Więc teraz, kiedy prześlesz kod, może wystąpić błąd. Jest to najczęstszy błąd, który może wystąpić, jeśli używasz nowej wersji Arduino IDE i Arduino JSON. Poniżej przedstawiono błędy, które mogą pojawić się na ekranie.

W pliku zawartym z C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, z 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 to klasa z ArduinoJson 5. Odwiedź arduinojson.org/upgrade, aby dowiedzieć się, jak zaktualizować swój program do ArduinoJson wersja 6 StaticJsonBuffer jsonBuffer; ^ W pliku zawartym z C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, z 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 to klasa z ArduinoJson 5. Odwiedź arduinojson.org/upgrade, aby dowiedzieć się, jak zaktualizować program do ArduinoJson wersja 6 zwraca StaticJsonBuffer (). ParseObject (_data); ^ Znaleziono wiele bibliotek dla 'WiFi.h' Używany: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Nieużywane: C:  Program Files ( x86)  Arduino  libraries  WiFi Korzystanie z biblioteki WiFi w wersji 1.0 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Korzystanie z biblioteki IOXhop_FirebaseESP32-master w folderze: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Korzystanie z biblioteki HTTPClient w wersji 1.2 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Korzystanie z biblioteki WiFiClientSecure w wersji 1.0 w folderze: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Korzystanie z biblioteki ArduinoJson pod adresem wersja 6.12.0 w folderze: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson status wyjścia 1 Błąd kompilacji dla modułu deweloperskiego ESP32.

Nie ma się czym martwić, ponieważ możemy wyeliminować te błędy, wykonując kilka prostych kroków. Te błędy pojawiają się, ponieważ nowa wersja Arduino JSON ma inną klasę zamiast StaticJsonBuffer. To jest klasa JSON 5. Możemy więc po prostu wyeliminować ten błąd, obniżając wersję Arduino JSON naszego Arduino IDE. Po prostu przejdź do Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami. Szukaj Arduino JSON autorstwa Benoit Blanchon które zainstalowałeś wcześniej. Najpierw odinstaluj go, a następnie ustaw jego wersję na 5.13.5. Teraz, gdy ustawiliśmy starą wersję Arduino JSON, zainstaluj ją ponownie i ponownie skompiluj kod. Tym razem Twój kod zostanie pomyślnie skompilowany.

Aby pobrać kod, Kliknij tutaj.

Krok 6: Kod

kod tego projektu jest bardzo prosty, ale mimo to niektóre jego fragmenty są wyjaśnione poniżej.

1. Na początku kodu uwzględnimy trzy biblioteki. Pierwsza to włączenie Wi-Fi na płycie ESP, druga to umożliwienie ESP korzystania z serwomotoru, a trzecia to połączenie płyty ESP z bazą danych firebase. Następnie dodamy do kodu hosta firebase, uwierzytelnienie, nazwę naszego lokalnego połączenia internetowego i jego hasło. Po wykonaniu tej czynności utwórz obiekt, który będzie używał silnika serwo.

#include // dołącz bibliotekę do korzystania z WiFi #include // dołącz bibliotekę dla serwomotoru #include // dołącz bibliotekę do połączenia z Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // zamień xxxxxxxxxx na swój host firebase tutaj # zdefiniuj FIREBASE_AUTH 'xxxxxxxxxx' / / zamień xxxxxxxxxx na uwierzytelnianie firebase tutaj # zdefiniuj kod WIFI_SSID 'xx, xxxxxxxx' // zamień xxxxxxxxxx na nazwę naszego połączenia Wi-Fi # zdefiniuj WIFI_PASSWORD 'xxxxxxxxxx' // zamień xxxxxxxxxx na swoje hasło do sieci Wi-Fi Servo myservo; // utwórz obiekt dla serwomotoru int pos = 0; // tworzenie zmiennej int stan; // tworzenie zmiennej

2. void setup () to funkcja, która działa tylko raz w programie, gdy płyta mikrokontrolera jest włączona lub wciśnięty jest przycisk włączania. W tej funkcji ustawia się prędkość transmisji. Szybkość transmisji to w rzeczywistości prędkość komunikacji w bitach na sekundę, przez którą mikrokontroler komunikuje się z urządzeniami zewnętrznymi. Silnik serwo jest podłączony do styku 34 karty ESP. w tej funkcji jest napisany kod, który łączy mikrokontroler z lokalnym łączem internetowym.

void setup () {Serial.begin (115200); // ustawienie szybkości transmisji myservo.attach (34); // podłącz pin PWM serwomotoru do pinu34 ESP32 myservo.write (60); opóźnienie (1000); // połącz się z Wi-Fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('łączenie'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); opóźnienie (500); } Serial.println (); Serial.print ('connected:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () to funkcja, która działa wielokrotnie w pętli. W tej funkcji informujemy mikrokontroler, jakie operacje ma wykonać i jak. Tutaj dane są odczytywane z bazy Firebase i przechowywane w zmiennej o nazwie stan . Jeśli stan ma wartość „0”, położenie serwomotoru jest ustawiane na 8 stopni. Jeżeli wartość w stanie zmiennej jest równa „1”, położenie serwomotoru zostanie ustawione na 55 stopni.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // odczytaj dane z bazy Firebase // jeśli stan to '0', silnik prądu stałego wyłączy się if (stan == '0') {myservo.write (8); // ustaw pozycję opóźnienia serwomotoru (1000); // czekaj na onw second Serial.println ('Door Locked'); } else if (state == '1') {myservo.write (55); // ustaw nową pozycję opóźnienia serwomotoru (1000); // czekaj jedną sekundę Serial.println ('Door UnLocked'); } // obsłuż błąd if (Firebase.failed ()) {Serial.print ('ustawienie / numer nie powiodło się:'); Serial.println (Firebase.error ()); powrót; } opóźnienie (1000);