DIY: Skapa en SmartLock för ditt hem som bara öppnas med din smartphone
Numera finns det så många lås tillgängliga på marknaden som behöver något slags lösenord för att öppna det. Dessa lås är mycket effektiva men mycket kostsamma. Om vi behöver göra ett lås för småskaligt syfte som är automatiserat och är upplåst eller låst utan något lösenord men med en smartphone kan vi göra det med hjälp av några komponenter som är lätt tillgängliga på marknaden.
Detta lås kommer att kosta mycket lågt och fungerar perfekt i liten skala. Ett Android-applikation kommer att behövas för att manövrera detta lås. Låt oss nu gå mot att installera ESP32, installera nödvändiga paket på den och göra vissa hårdvaruändringar!
Utan att slösa bort tid, låt oss börja studera viktiga begrepp och arbeta med detta projekt.
Hur man gör Android-styrd SmartLock?
Steg 1: Samla in komponenterna
Innan du startar något projekt, om det finns en rädsla för att du kommer att fastna mitt i projektet och slösa bort tid, finns det ett utmärkt sätt att undvika det. Gör en fullständig lista över alla komponenter som du kommer att behöva i projektet och köp dem i första hand. Nedan följer en fullständig lista över alla komponenter som vi ska använda i detta projekt. Alla dessa komponenter är lätt tillgängliga på marknaden.
Steg 2: Gör appen
Eftersom vi ska göra ett smart lås som kommer att drivas av en mobiltelefon, måste vi utveckla en Android-app som innehåller en knapp. Genom att trycka på den knappen kommer vi att kunna öppna eller stänga smartlåset. Tidigare har vi utvecklat flera Android-applikationer. Vi har redan utvecklat en applikation som bara består av en knapp i den. Denna knapp används för att skicka data till databasen. om '1' trycks in i databasen Firebase öppnas omkopplarlåset och om '0' trycks in i databasen stängs låset.
Se vår artikel med namnet Skapa en trådlös strömbrytare för din PC för att ta hjälp med att utveckla din egen Android-applikation som kommer att användas för att använda smartlåset.
Steg 3: Montering av komponenterna
Eftersom vi har en komplett lista över alla komponenter som vi behöver för att slutföra detta projekt, låt oss gå ett steg framåt och sätta ihop alla komponenterna.
Ta servomotorn och anslut dess Vcc och jord till Vcc respektive jord på ESP-kortet. Anslut PWM-stiftet på din servomotor till stiftet 34 på din ESP32-kort. Se nu att det finns en växelvred på en servomotor. Ta ut spärrhandtaget genom att vrida det och fäst vredet på växelmotorn i låset med hjälp av vissa lim.
Borra nu några hål på dörren med hjälp av borrmaskinen där du vill placera detta smarta lås. Se till att du borrar hålen på ett sådant sätt att hålen på låset överlappar hålen i dörren, vilket gör att skruven kan fästas.
Steg 4: Arbeta
Eftersom vi nu vet huvudidén bakom detta projekt, låt oss förstå hur detta projekt kommer att fungera.
ESP32 är hjärtat i detta projekt. En servomotor är ansluten till detta kort och den här mikrokontrollern har en anslutning till Firebase-databasen. När knappen i appen trycks in för att öppna låset, trycks '1' in i firebase-databasen och när knappen trycks in för att stänga låset trycks '0' in i firebase-databasen. ESP-kortet läser kontinuerligt detta värde i Firebase-databasen. Så länge det finns 0 kommer ESP32 att rikta servomotorn att förbli i sitt ursprungliga läge. Så snart 1 kommer in i eldplatsen kommer ESP-kortet att läsa den och be servomotorn att göra en rotation som öppnar låset.
Steg 5: Komma igång med ESP32
Om du inte har arbetat med Arduino IDE tidigare, oroa dig inte för att steg för steg för att ställa in Arduino IDE visas nedan.
- Ladda ner den senaste versionen av Arduino IDE från Arduino.
- Anslut ditt Arduino-kort till datorn och öppna Kontrollpanelen. Klicka på Hårdvara och ljud.Nu öppen Enheter och skrivare och hitta porten som kortet är anslutet till. I mitt fall är det COM14men det är annorlunda på olika datorer.
- Klicka på Arkiv och sedan på Inställningar. Kopiera följande länk i Ytterligare styrelsens webbadress. “https://dl.espressif.com/dl/package_esp32_index.json ”
- För att använda ESP32 med Arduino IDE måste vi importera speciella bibliotek som gör att vi kan bränna kod på ESP32 och använda den. dessa två bibliotek bifogas i länken nedan. För att inkludera biblioteket, gå till Skiss> Inkludera bibliotek> Lägg till ZIP-bibliotek. En ruta visas. Hitta ZIP-mappen på din dator och klicka på OK för att inkludera mapparna.
- Nu går det Skiss> Inkludera bibliotek> Hantera bibliotek.
- En meny öppnas. Skriv i sökfältet Arduino JSON.En lista visas. Installera Arduino JSON av Benoit Blanchon.
- Klicka nu på Verktyg.En rullgardinsmeny visas. Ställ in brädet på ESP Dev-modul.
- Klicka på verktygsmenyn igen och ställ in porten som du observerade på kontrollpanelen tidigare.
- Ladda nu upp koden som är bifogad i länken nedan och klicka på uppladdningsknappen för att bränna koden på ESP32-mikrokontrollern.
Så nu när du laddar upp koden kan ett fel inträffa. Detta är det vanligaste felet som kan uppstå om du använder en ny version av Arduino IDE och Arduino JSON. Följande är de fel som du kan se på skärmen.
I filen ingår från C: \ Users \ Pro \ Documents \ Arduino \ bibliotek \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, från C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C : \ Users \ Pro \ Documents \ Arduino \ bibliotek \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: fel: StaticJsonBuffer är en klass från ArduinoJson 5. Se arduinojson.org/upgrade för att lära dig hur du uppgraderar ditt program till ArduinoJson version 6 StaticJsonBufferjsonBuffer; ^ I filen ingår från C: \ Users \ Pro \ Documents \ Arduino \ bibliotek \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, från C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C: \ Users \ Pro \ Documents \ Arduino \ bibliotek \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: fel: StaticJsonBuffer är en klass från ArduinoJson 5. Se arduinojson.org/upgrade för att lära dig hur du uppgraderar ditt program till ArduinoJson version 6 returnerar StaticJsonBuffer () .parseObject (_data); ^ Flera bibliotek hittades för "WiFi.h" Används: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ Packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotek \ WiFi Används inte: C: \ Program Files ( x86) \ Arduino \ bibliotek \ WiFi Använda biblioteket WiFi i version 1.0 i mappen: C: \ Användare \ Pro \ AppData \ Lokalt \ Arduino15 \ paket \ esp32 \ hårdvara \ esp32 \ 1.0.2 \ bibliotek \ WiFi Använda biblioteket IOXhop_FirebaseESP32-master i mapp: C: \ Users \ Pro \ Documents \ Arduino \ bibliotek \ IOXhop_FirebaseESP32-master (äldre) Använda biblioteket HTTPClient i version 1.2 i mapp: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ Packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotek \ HTTPClient Använda biblioteket WiFiClientSecure vid version 1.0 i mappen: C: \ Användare \ Pro \ AppData \ Local \ Arduino15 \ paket \ esp32 \ hårdvara \ esp32 \ 1.0.2 \ bibliotek \ WiFiClientSecure Använda biblioteket ArduinoJson på version 6.12.0 i mapp: C: \ Användare \ Pro \ Dokument \ Arduino \ bibliotek \ ArduinoJson utgångsstatus 1 Fel vid kompilering för ESP32 Dev-modul.
Det finns inget att oroa sig för eftersom vi kan eliminera dessa fel genom att följa några enkla steg. Dessa fel uppstår eftersom den nya versionen av Arduino JSON har en annan klass istället för StaticJsonBuffer.Detta är klassen för JSON 5. Så vi kan helt enkelt eliminera detta fel genom att nedgradera versionen av Arduino JSON av vår Arduino IDE. Gå helt enkelt till Skiss> Inkludera bibliotek> Hantera bibliotek.Söka efterArduino JSON av Benoit Blanchonsom du har installerat tidigare. Avinstallera den först och ställ sedan in versionen till 5.13.5. Nu när vi har ställt in en gammal version av Arduino JSON, installera den igen och kompilera om koden. Den här gången kommer din kod att kompileras framgångsrikt.
Klicka här för att ladda ner koden.
Steg 6: Kod
koden för detta projekt är väldigt enkel men ändå förklaras några bitar av det nedan.
1. I början av koden kommer vi att inkludera tre bibliotek. Det första är att aktivera Wifi på ESP-kortet, det andra är att göra det möjligt för ESP att använda servomotor och den tredje är att ansluta ESP-kortet till Firebase-databasen. Därefter lägger vi till firebase-värd, autentisering, namnet på vår lokala internetanslutning och dess lösenord i koden. Efter att ha gjort det, skapa ett objekt för att använda servomotorn.
#omfatta// inkludera bibliotek för att använda WiFi # inkludera // inkludera bibliotek för servomotor # inkludera // inkludera bibliotek för att ansluta till Firebase #define FIREBASE_HOST "xxxxxxxxxx" // ersätt xxxxxxxxxx av din firebase-värd här #definiera FIREBASE_AUTH "xxxxxxxxxx" // ersätt xxxxxxxxxx med din Firebase-autentisering här #definiera WIFI_SSIDxxxx xx, " xxxxxxxxxx med namnet på vår Wifi-anslutning # definiera WIFI_PASSWORD "xxxxxxxxxx" // ersätt xxxxxxxxxx med ditt wifi-lösenord Servo myservo; // skapa objekt för servomotor int pos = 0; // skapa variabelt int-tillstånd; // skapa variabel
2. ogiltig installation () är en funktion som endast körs en gång i ett program när mikrokontrollkortet är påslaget eller aktiveringsknappen tryckt. Baudhastigheten ställs in i denna funktion. Baudhastighet är faktiskt kommunikationshastigheten i bitar per sekund genom vilken mikrokontrollern kommunicerar med de externa enheterna. Servomotorn är ansluten till stiftet 34 på ESP-kortet. kod skrivs i denna funktion för att ansluta mikrokontrollern till den lokala internetanslutningen.
ogiltig installation () {Serial.begin (115200); // ställa in överföringshastigheten myservo.attach (34); // anslut PWM-stift på servomotorn till stift 34 på ESP32 myservo.write (60); fördröjning (1000); // ansluta till wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ("anslutande"); medan (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); fördröjning (500); } Serial.println (); Serial.print ("ansluten:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }
3. ogiltig slinga () är en funktion som körs om och om igen i en slinga. I den här funktionen berättar vi för mikrokontrollern, vilka operationer som ska utföras och hur. Här läses data från firebasen och lagras i variabeln som heter stat. Om tillståndet har värdet '0', är servomotorns läge inställt på 8 grader. Om värdet i variabelt tillstånd är lika med '1' kommer servomotorns läge att ställas in till 55 grader.
void loop () {state = Serial.println (Firebase.getFloat ("motor")); // läs data från eldplatsen // om tillståndet är '0' kommer DC-motorn att stängas av om (tillstånd == '0') {myservo.write (8); // inställningsposition för servomotorfördröjningen (1000) // vänta på onw andra Serial.println ("Dörrlåst"); } annat om (state == '1') {myservo.write (55); // ställa in ny position för servomotorfördröjningen (1000); // vänta en sekund Serial.println ("Dörr olåst"); } // hanteringsfel om (Firebase.failed ()) {Serial.print ("inställning / nummer misslyckades:"); Serial.println (Firebase.error ()); lämna tillbaka; } fördröjning (1000);