DIY: een SmartLock voor uw huis maken die alleen met uw smartphone wordt geopend
Tegenwoordig zijn er zoveel sloten op de markt die een soort wachtwoord nodig hebben om het te openen. Deze sloten zijn zeer efficiënt maar erg kostbaar. Als we een slot moeten maken voor een kleinschalig doel dat geautomatiseerd is en wordt ontgrendeld of vergrendeld zonder wachtwoord maar met een smartphone, kunnen we dit maken door een aantal componenten te gebruiken die gemakkelijk op de markt verkrijgbaar zijn.
Dit slot zal erg goedkoop zijn en zal perfect werken op kleine schaal. Een Android-applicatie zal nodig zijn om dit slot te bedienen. Laten we nu verder gaan met het instellen van de ESP32, het installeren van de benodigde pakketten erop en het aanbrengen van bepaalde hardwarewijzigingen!
Laten we, zonder tijd te verspillen, beginnen met het bestuderen van belangrijke concepten en aan dit project werken.
Hoe een Android-bediende SmartLock te maken?
Stap 1: de componenten verzamelen
Als u, voordat u met een project begint, bang bent dat u midden in het project vast komt te zitten en tijd verspilt, dan is er een uitstekende aanpak om dit te vermijden. Maak een volledige lijst van alle componenten die u nodig zult hebben in het project en koop ze in de eerste plaats. Hieronder volgt de volledige lijst van alle componenten die we in dit project gaan gebruiken. Al deze componenten zijn gemakkelijk verkrijgbaar in de markt.
Stap 2: De app maken
Omdat we een slim slot gaan maken dat wordt bediend door een mobiele telefoon, moeten we een Android-app ontwikkelen die een knop bevat. Door op die knop te drukken, kunnen we het slimme slot openen of sluiten. Eerder hebben we er meerdere ontwikkeld Android-applicaties. We hebben al een applicatie ontwikkeld die er maar uit één knop in bestaat. Deze knop wordt gebruikt om gegevens naar de database te sturen. als ‘1’ in de firebase-database wordt gedrukt, wordt de schakelaarvergrendeling geopend en als ‘0 'in die database wordt gedrukt, wordt de vergrendeling gesloten.
Raadpleeg ons artikel met de naam Een draadloze aan / uit-schakelaar voor uw pc maken om hulp te zoeken bij het ontwikkelen van uw eigen Android-applicatie die zal worden gebruikt om het slimme slot te bedienen.
Stap 3: De componenten monteren
Aangezien we een volledige lijst hebben van alle componenten die we nodig hebben om dit project te voltooien, gaan we een stap verder en assembleren we alle componenten samen.
Neem de servomotor en verbind zijn Vcc en aarde met respectievelijk de Vcc en aarde van het ESP-bord. Sluit de PWM-pin van uw servomotor aan op pin 34 van uw ESP32-kaart. Zie nu dat er een versnellingspookknop op een servomotor zit. Haal de hendel van het slot eruit door deze te draaien en bevestig de knop van de reductiemotor in het slot met behulp van wat lijmen.
Boor nu met behulp van de boormachine enkele gaten in de deur waar je dit slimme slot wilt plaatsen. Zorg ervoor dat u de gaten zo boort dat de gaten van het slot de gaten in de deur overlappen, zodat de schroef erin kan worden vastgezet.
Stap 4: werken
Aangezien we nu het belangrijkste idee achter dit project kennen, laten we ons begrijpen hoe dit project zal werken.
ESP32 vormt het hart van dit project. Op dit bord is een servomotor aangesloten en deze microcontroller heeft een verbinding met de firebase-database. Wanneer de knop in de app wordt ingedrukt om het slot te openen, wordt '1' in de Firebase-database gedrukt en wanneer op de knop wordt gedrukt om het slot te sluiten, wordt '0' in de Firebase-database gedrukt. Het ESP-bord leest deze waarde continu in de firebase-database. Zolang er 0 is, zal de ESP32 de servomotor sturen om in zijn beginpositie te blijven. Zodra er 1 in de vuurbasis komt, zal het ESP-bord het lezen en de servomotor vertellen om een rotatie te maken die het slot opent.
Stap 5: Aan de slag met ESP32
Als u nog niet eerder aan Arduino IDE hebt gewerkt, hoeft u zich geen zorgen te maken, want hieronder wordt stap voor stap weergegeven hoe u de Arduino IDE instelt.
- Download de nieuwste versie van Arduino IDE van Arduino.
- Verbind je Arduino-bord met de pc en open het Configuratiescherm. Klik op Hardware en geluid.Nu open Apparaten en printer en zoek de poort waarop uw bord is aangesloten. In mijn geval wel COM14maar het is anders op verschillende computers.
- Klik op Bestand en vervolgens op Voorkeuren. Kopieer de volgende link in het URL van aanvullende Board Manager. "https://dl.espressif.com/dl/package_esp32_index.json ”
- Om ESP32 met Arduino IDE te gebruiken, moeten we speciale bibliotheken importeren waarmee we code op ESP32 kunnen branden en gebruiken. deze twee bibliotheken zijn bijgevoegd in de onderstaande link. Ga naar om de bibliotheek op te nemen Schets> Bibliotheek opnemen> ZIP-bibliotheek toevoegen. Er verschijnt een vak. Zoek de ZIP-map op uw computer en klik op OK om de mappen op te nemen.
- Ga nu naar Schets> Bibliotheek opnemen> Bibliotheken beheren.
- Er wordt een menu geopend. Typ in de zoekbalk Arduino JSON.Er verschijnt een lijst. Installeren Arduino JSON door Benoit Blanchon.
- Klik nu op het Hulpmiddelen.Er verschijnt een vervolgkeuzemenu. Zet het bord op ESP-ontwikkelmodule.
- Klik opnieuw op het menu Tool en stel de poort in die u eerder in het configuratiescherm hebt waargenomen.
- Upload nu de code die is bijgevoegd in de onderstaande link en klik op de uploadknop om de code op de ESP32-microcontroller te branden.
Dus wanneer u de code uploadt, kan er een fout optreden. Dit is de meest voorkomende fout die kan optreden als u een nieuwe versie van de Arduino IDE en de Arduino JSON gebruikt. Hieronder volgen de fouten die u mogelijk op het scherm ziet.
In bestand opgenomen uit C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, vanuit C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C : \ Users \ Pro \ Documents \ Arduino \ bibliotheken \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: fout: StaticJsonBuffer is een klasse van ArduinoJson 5. Zie arduinojson.org/upgrade om te zien hoe u uw programma kunt upgraden naar ArduinoJson versie 6 StaticJsonBufferjsonBuffer; ^ In bestand opgenomen in C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, vanuit C: \ Users \ Pro \ Desktop \ smartHome \ code \ code.ino: 2: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: fout: StaticJsonBuffer is een klasse van ArduinoJson 5. Zie arduinojson.org/upgrade om te zien hoe u uw programma kunt upgraden naar ArduinoJson versie 6 retourneert StaticJsonBuffer () .parseObject (_data); ^ Er zijn meerdere bibliotheken gevonden voor "WiFi.h" Gebruikt: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFi Niet gebruikt: C: \ Program Files ( x86) \ Arduino \ bibliotheken \ WiFi Bibliotheek-WiFi gebruiken op versie 1.0 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFi Bibliotheek gebruiken IOXhop_FirebaseESP32-master in map: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ IOXhop_FirebaseESP32-master (legacy) Met behulp van bibliotheek HTTPClient op versie 1.2 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ packages \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ HTTPClient Bibliotheek WiFiClientSecure gebruiken op versie 1.0 in map: C: \ Users \ Pro \ AppData \ Local \ Arduino15 \ pakketten \ esp32 \ hardware \ esp32 \ 1.0.2 \ bibliotheken \ WiFiClientSecure Bibliotheek ArduinoJson gebruiken op versie 6.12.0 in map: C: \ Users \ Pro \ Documents \ Arduino \ libraries \ ArduinoJson exit status 1 Fout bij compileren voor board ESP32 Dev Module.
U hoeft zich nergens zorgen over te maken, want we kunnen deze fouten verhelpen door enkele eenvoudige stappen te volgen. Deze fouten ontstaan omdat de nieuwe versie van Arduino JSON een andere klasse heeft in plaats van StaticJsonBuffer.Dit is de klasse van JSON 5. We kunnen deze fout dus eenvoudig elimineren door de versie van Arduino JSON van onze Arduino IDE te downgraden. Ga gewoon naar Schets> Bibliotheek opnemen> Bibliotheken beheren.Zoeken naarArduino JSON door Benoit Blanchondie je eerder hebt geïnstalleerd. Verwijder het eerst en stel vervolgens de versie in op 5.13.5. Nu we een oude versie van Arduino JSON hebben ingesteld, installeer je deze opnieuw en compileer je de code opnieuw. Deze keer wordt je code succesvol gecompileerd.
Klik hier om de code te downloaden.
Stap 6: Code
de code van dit project is heel eenvoudig, maar toch worden enkele delen ervan hieronder uitgelegd.
1. Aan het begin van de code zullen we drie bibliotheken opnemen. De eerste is om wifi in te schakelen op het ESP-bord, de tweede is om ESP in staat te stellen servomotor te gebruiken en de derde is om het ESP-bord te verbinden met de firebase-database. Daarna zullen we de firebase-host, authenticatie, naam van onze lokale internetverbinding en het wachtwoord in de code toevoegen. Maak daarna een object om de servomotor te gebruiken.
#inclusief// include bibliotheek om WiFi te gebruiken #include // include bibliotheek voor servomotor #include // voeg bibliotheek toe om verbinding te maken met Firebase #define FIREBASE_HOST "xxxxxxxxxx" // vervang xxxxxxxxxx door uw firebase-host hier #define FIREBASE_AUTH "xxxxxxxxxx" // vervang xxxxxxxxxx door uw firebase-authenticatie hier #define WIFI_SSID "xx-code, xxxxxxxx" // vervang xxxxxxxxxx door de naam van onze wifi-verbinding #define WIFI_PASSWORD "xxxxxxxxxx" // vervang xxxxxxxxxx door uw wifi-wachtwoord Servo myservo; // maak object voor servomotor int pos = 0; // variabele int-status maken; // creëren variabele
2. leegte setup () is een functie die slechts één keer in een programma wordt uitgevoerd wanneer de microcontroller-kaart wordt ingeschakeld of de inschakelknop wordt ingedrukt. In deze functie wordt de baudrate ingesteld. De baudrate is eigenlijk de communicatiesnelheid in bits per seconde waarmee de microcontroller communiceert met de externe apparaten. De servomotor is verbonden met pin34 van het ESP-bord. code wordt in deze functie geschreven om de microcontroller met de lokale internetverbinding te verbinden.
leegte setup () {Serial.begin (115200); // instellen van de baudrate myservo.attach (34); // verbind de PWM-pin van de servomotor met pin34 van ESP32 myservo.write (60); vertraging (1000); // maak verbinding met wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ("verbinden"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } Serial.println (); Serial.print ("verbonden:"); Serial.println (WiFi.localIP ()); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); }
3. leegte lus () is een functie die keer op keer in een lus wordt uitgevoerd. In deze functie vertellen we de microcontroller, welke bewerkingen moeten worden uitgevoerd en hoe. Hier worden gegevens van de firebase gelezen en opgeslagen in de genoemde variabele staat. Als de toestand de waarde ‘0’ bevat, wordt de positie van de servomotor ingesteld op 8 graden. Als de waarde in de variabele toestand gelijk is aan ‘1’, wordt de positie van de servomotor ingesteld op 55 graden.
void loop () {state = Serial.println (Firebase.getFloat ("motor")); // lees de gegevens van de firebase // als de status '0' is, wordt de DC-motor uitgeschakeld als (state == '0') { myservo.write (8); // stel de positie van de servomotorvertraging in (1000); // wacht op een tweede Serial.println ("Deur vergrendeld"); } else if (state == '1') {myservo.write (55); // stel nieuwe positie van de servomotorvertraging in (1000); // wacht een seconde Serial.println ("Door UnLocked"); } // afhandelingsfout if (Firebase.failed ()) {Serial.print ("instelling / nummer mislukt:"); Serial.println (Firebase.error ()); terugkeren; } vertraging (1000);