Isetegemine: oma kodu jaoks SmartLocki loomine, mis avaneb ainult teie nutitelefoniga

Tänapäeval on turul saadaval nii palju lukke, mis vajavad selle avamiseks mingit parooli. Need lukud on väga tõhusad, kuid väga kulukad. Kui peame tegema väikesemahulise lukustuse, mis on automatiseeritud ja mis on lukustamata või lukustatud ilma paroolita, vaid nutitelefoniga, saame selle teha mõne turul hõlpsasti kättesaadava komponendi abil.



See lukk on väga madala maksumusega ja töötab väikeses mahus suurepäraselt. An android rakendus selle luku kasutamiseks on vaja. Nüüd liigume ESP32 seadistamise, vajalike pakettide installimise ja riistvaraliste muudatuste tegemise suunas!

Automaatne ukselukk



Aega raiskamata alustame oluliste kontseptsioonide uurimist ja selle projektiga töötamist.



Kuidas muuta Androidiga töötav SmartLock?

1. samm: komponentide kogumine

Enne kui hakkate enne projekti alustamist kartma, et jääte keset projekti kinni ja raiskate aega, on selle vältimiseks suurepärane lähenemine. Koostage täielik loetelu kõigist komponentidest, mida projektis vajate, ja ostke need kõigepealt. Järgneb kõigi komponentide täielik loetelu, mida selles projektis kasutame. Kõik need komponendid on turul hõlpsasti kättesaadavad.



  • ESP32
  • Hüppaja juhtmed
  • Servomootor
  • Kruvid
  • Lukusta
  • Puurmasin

2. samm: rakenduse loomine

Kuna teeme nutiteluku, mida saab juhtida mobiiltelefon, peame välja töötama androidi rakenduse, mis sisaldab nuppu. Sellele nupule vajutades saame nutiluku avada või sulgeda. Varem oleme välja töötanud mitu androidrakendused. Oleme juba välja töötanud rakenduse, mis koosneb ainult ühest nupust selles. Seda nuppu kasutatakse andmete andmebaasi saatmiseks. kui '1' lükatakse firebase'i andmebaasi, avaneb lülitilukk ja kui '0' lükatakse sellesse andmebaasi, siis lukk suletakse.

Palun vaadake meie artiklit nimega Traadita sisse / välja lülitilüliti loomine arvutile nutiteluku käitamiseks kasutatava Androidi rakenduse väljatöötamiseks abi saamiseks.

3. samm: komponentide kokkupanek

Kuna meil on täielik loetelu kõikidest komponentidest, mida me selle projekti lõpuleviimiseks vajame, siis liigutagem samm edasi ja paneme kõik komponendid kokku.



Võtke servomootor ja ühendage selle Vcc ja maandus vastavalt ESP plaadi Vcc ja maandusega. Ühendage servomootori PWM-tihvt oma kontakti 34-ga ESP32 plaat . Nüüd vaadake, kas servomootoril on käigukujuline nupp. Võtke luku käepide seda pöörates välja ja kinnitage käigumootori nupp mõne liimi abil luku sisse.

Puurige nüüd puurmasina abil uksele mõned augud, kuhu soovite selle nutiluku panna. Puurige augud kindlasti nii, et luku augud kattuksid ukse aukudega, võimaldades kruvi kinnitamiseks.

4. samm: töötamine

Kuna me teame nüüd selle projekti peamist ideed, andke meile mõista, kuidas see projekt töötab.

ESP32 on selle projekti keskmes. Selle plaadiga on ühendatud servomootor ja sellel mikrokontrolleril on ühendus firebase'i andmebaasiga. Kui lukustuse avamiseks rakenduse nuppu vajutatakse, lükatakse ‘1’ Firebase'i andmebaasi ja kui luku sulgemiseks nuppu vajutatakse, siis Firebase'i andmebaasi „0“. ESP-plaat loeb seda väärtust Firebase'i andmebaasis pidevalt. Kuni on 0, suunab ESP32 servomootori oma algasendisse. Niipea kui 1 tuleb tuletõrjebaasi, loeb ESP-plaat selle ette ja käsib servomootoril teha pöörde, mis avab luku.

5. samm: ESP32-ga alustamine

Kui te pole Arduino IDE-ga varem töötanud, ärge muretsege, sest allpool on toodud samm-sammult Arduino IDE seadistamine.

  1. Laadige alla Arduino IDE uusim versioon saidilt Arduino.
  2. Ühendage oma Arduino tahvel arvutiga ja avage juhtpaneel. Kliki Riistvara ja heli. Nüüd avatud Seadmed ja printer ja leidke port, millega teie laud on ühendatud. Minu puhul on see nii KOM14 kuid see on erinevates arvutites erinev.

    Sadama leidmine

  3. Klõpsake File ja seejärel Preferences. Kopeerige järgmine link saidile Täiendav juhihalduri URL. ' https://dl.espressif.com/dl/package_esp32_index.json '

    Eelistused

  4. Nüüd, et kasutada ESP32 koos Arduino IDE-ga, peame importima spetsiaalsed teegid, mis võimaldavad meil koodi ESP32-l kirjutada ja seda kasutada. need kaks teeki on lisatud allpool toodud lingile. Raamatukogu kaasamiseks minge Visand> Kaasa teek> Lisa ZIP-kogu . Ilmub kast. Leidke oma arvutis ZIP-kaust ja klõpsake kaustade kaasamiseks nuppu OK.

    Kaasa teek

  5. Nüüd mine Visand> Kaasa teek> Halda raamatukogusid.

    Raamatukogude haldamine

  6. Avaneb menüü. Tippige otsinguribale Arduino JSON. Ilmub loend. Installige Aroitino JSON, autor Benoit Blanchon.

    Arduino JSON

  7. Nüüd klõpsake nuppu Tööriistad. Ilmub rippmenüü. Pange tahvel asendisse ESP Dev moodul.

    Laua määramine

  8. Klõpsake uuesti menüül Tööriist ja määrake port, mida jälgisite juhtpaneelil varem.

    Pordi seadistamine

  9. Nüüd laadige üles kood, mis on lisatud allolevale lingile, ja klõpsake ESP32 mikrokontrolleris koodi põletamiseks nuppu üleslaadimine.

    Laadi üles

Nii et nüüd koodi üleslaadimisel võib ilmneda tõrge. See on kõige tavalisem viga, mis võib ilmneda, kui kasutate Arduino IDE ja Arduino JSON uut versiooni. Järgnevad vead, mida võite ekraanil näha.

Failis, mis sisaldub kataloogis C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, failist 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 on ArduinoJson'i klass. Palun lugege arduinojson.org/upgrade, et õppida, kuidas oma programmi ArduinoJsonile uuendada. versioon 6 StaticJsonBuffer jsonBuffer; ^ Failis, mis sisaldub kataloogis C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, failist C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: tõrge: StaticJsonBuffer on klass ArduinoJsonist 5. Programmi täiendamiseks õppige saidilt arduinojson.org/upgrade. ArduinoJsoni versioon 6 tagastab StaticJsonBuffer (). ParseObject (_data); ^ 'WiFi.h' jaoks leiti mitu kogu x86)  Arduino  libraries  WiFi Kasutades teegi WiFi versiooni 1.0 kaustas: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  librarys  WiFi  Kasutades teeki IOXhop_FirebaseESP32-master kaustas: C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master (pärand) Teegi HTTPClienti kasutamine versioonis 1.2 kaustas: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  teekid  HTTPClient teegi WiFiClientSecure kasutamine versiooni 1.0 kaustas: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  librarys  WiFiClientSecure Teegi ArduinoJson kasutamine aadressil Versioon 6.12.0 kaustas: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Viga plaadi ESP32 Dev mooduli koostamisel.

Muretsemiseks pole midagi, sest me saame need vead kõrvaldada, järgides mõningaid lihtsaid samme. Need vead ilmnevad seetõttu, et Arduino JSONi uues versioonis on teise klassi asemel StaticJsonBuffer. See on JSON 5 klass. Nii et saame selle vea lihtsalt kõrvaldada, alandades meie Arduino IDE versiooni Arduino JSON-i. Lihtsalt minge Visand> Kaasa teek> Halda raamatukogusid. Otsima Aroitino JSON, autor Benoit Blanchon mille olete varem installinud. Kõigepealt desinstallige see ja määrake seejärel selle versiooniks 5.13.5. Nüüd, kui oleme määranud Arduino JSONi vana versiooni, installige see uuesti ja kompileerige kood uuesti. Seekord kompileeritakse teie kood edukalt.

Koodi allalaadimiseks klõpsake siin.

6. samm: kood

selle projekti kood on väga lihtne, kuid siiski selgitatakse allpool mõnda selle tükki.

1. Koodi alguses lisame kolm teeki. Esimene on lubada Wifi ESP-plaadil, teine ​​on võimaldada ESP-l kasutada servomootorit ja kolmas on ühendada ESP-plaat Firebase'i andmebaasiga. Pärast seda lisame koodi sisse Firebase'i host, autentimine, meie kohaliku Interneti-ühenduse nimi ja selle parool. Pärast seda looge servomootori kasutamiseks objekt.

#include // kaasata WiFi WiFi kasutamiseks #include // lisada teegi servomootorile #include // kaasata teek Firebase'iga ühenduse loomiseks #define FIREBASE_HOST 'xxxxxxxxxx' // asendage xxxxxxxxxx oma firebase'i hostiga siin #define FIREBASE_AUTH 'xxxxxxxxxx' / / asenda xxxxxxxxxx oma firebase'i autentimisega siin #define WIFI_SSID 'xx code, xxxxxxxx' // asenda xxxxxxxxxx meie Wifi-ühenduse nimega #define WIFI_PASSWORD 'xxxxxxxxxx' // asenda xxxxxxxxxx oma wifi parooliga Servo myservo; // loo objekt servomootorile int pos = 0; // muutuja int oleku loomine; // muutuja loomine

2. kehtetu seadistamine () on funktsioon, mis töötab programmis ainult üks kord, kui mikrokontrolleri plaat on sisse lülitatud või lubamisnuppu vajutatakse. Selles funktsioonis on määratud andmeedastuskiirus. Baudi kiirus on tegelikult sidekiirus bitti sekundis, mille kaudu mikrokontroller suhtleb välisseadmetega. Servomootor on ühendatud ESP-plaadi pin34-ga. Selles funktsioonis kirjutatakse kood mikrokontrolleri ühendamiseks kohaliku Interneti-ühendusega.

void setup () {Serial.begin (115200); // baudi määra seadmine myservo.attach (34); // ühendage servomootori PWM-tihvt ESP32 myservo.write (60) pin34-ga; viivitus (1000); // ühendage wifi-ga. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('ühendamine'); while (WiFi.staatus ()! = WL_CONNECTED) {Seerianumber. ('.'); viivitus (500); } Serial.println (); Serial.print ('ühendatud:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () on funktsioon, mis töötab ikka ja jälle silmusena. Selles funktsioonis ütleme mikrokontrollerile, milliseid toiminguid teha ja kuidas. Siin loetakse firebase'ist andmeid ja salvestatakse nimetatud muutuja sisse riik . Kui olekus on väärtus 0, on servomootori asend 8 kraadi. Kui muutuva oleku väärtus on võrdne ‘1’, määratakse servomootori asend 55 kraadiks.

void loop () {olek = Serial.println (Firebase.getFloat ('mootor')); // loe andmeid tulebaasist // kui olek on '0', lülitub alalisvoolumootor välja, kui (olek == '0') {myservo.write (8); // servomootori viivituse asend (1000); // oota teist sekundit Serial.println ('Uks lukus'); } else if (olek == '1') {myservo.write (55); // määrake servomootori viivituse uus asend (1000); // oodake üks sekund Serial.println ('uks lukustamata'); } // käivitusviga, kui (Firebase.failed ()) {Serial.print ('seade / number ebaõnnestus:'); Serial.println (Firebase.error ()); tagasi; } viivitus (1000);