Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino en Android-gebaseerd wachtwoordbeveiligd deurslot

Componenten en benodigdheden

Arduino UNO
× 1
HC-05 Bluetooth-module
× 1
Servo's (Tower Pro MG996R)
× 1

Benodigde gereedschappen en machines

3D-printer (algemeen)

Apps en online services

Arduino IDE

Over dit project

Inleiding

Dit slimme slot is het veilige, eenvoudige en gemakkelijk te beheren slot van uw huis. Dit slot heeft geen sleutels nodig en het slot zit aan de binnenkant van de deur en je bedient het van buitenaf via Bluetooth. Omdat het slot zich in de deur bevindt, is er geen manier om de deur door een dief te breken. Een Android-applicatie is vereist om het slot te openen en te sluiten en ik zal in het laatste deel van de tutorial uitleggen hoe je een Android-app kunt ontwikkelen. Er wordt een wachtwoord naar het slot gestuurd met behulp van de Android-app en als het wachtwoord overeenkomt met uw vooraf ingestelde vergrendelingswachtwoord, wordt het slot geopend en wordt een feedback naar uw telefoon verzonden alsof het slot open is.

Deurslot 3D-ontwerp

Alle onderdelen van het slot zijn 3D geprint. Ik wil graag Thingiverse-gebruiker ridercz bedanken voor zijn mooie ontwerp. Hij ontwierp en publiceerde dit op servo gebaseerde deurslot in thingiverse.com. Alle bestanden behalve Rack_Holder.stl zijn afkomstig uit zijn ontwerp. U kunt de bestanden hieronder downloaden of van Thingiverse.com.

Sommige bestanden hebben een LT-versie. De lichte versie vereist minder PLA in vergelijking met de normale versie en is minder sterk. Ik heb de LT-versie afgedrukt en werkte goed. Ik gebruikte Anet A8 voor het afdrukken van alle onderdelen. Foto's van de geprinte delen zijn bijgevoegd..

3D-geprinte onderdelen assembleren

Monteer alle afgedrukte onderdelen één voor één zoals weergegeven in de foto's. U kunt ook de video-instructies volgen die bij de eerste stap zijn bijgevoegd. Gebruik na montage vier schroeven om alle onderdelen stevig vast te zetten.

Arduino-programma voor Bluetooth-bediening Met wachtwoord beveiligd deurslot

De code voor bluetooth-besturing slim deurslot is heel eenvoudig. Ik heb de Android-applicatie zo ontworpen dat deze een opdracht met het wachtwoord heeft verzonden. Eigenlijk heb ik twee commando's ingesteld, een is "OPEN=" en een andere is "CLOSE=" en het wachtwoord kan elk cijfer, later of symbool of een combinatie daarvan bevatten, zoals je wilt. In de app heb ik twee knoppen gebruikt, één om de deur te openen en een andere om de deur te sluiten. Wanneer het wachtwoord wordt gegeven aan het wachtwoordvak en op de open-knop wordt geklikt, voegt de app het "OPEN="-commando met het wachtwoord toe en stuurt het naar arduino. Ik voeg een '='-teken met een opdracht toe, daarvoor zal ik de opdracht en het wachtwoord scheiden door deze '=' te gebruiken. Na ontvangst van de string van de telefoon scheidt het arduino-programma de opdracht en het wachtwoord van de ontvangststring en slaat ze op in twee afzonderlijke variabelen. Controleer vervolgens eerst het wachtwoord, als het wachtwoord overeenkomt met het opgeslagen wachtwoord, open dan de deur voor het commando "OPEN" en sluit de deur voor het commando "CLOSE". "=" helpt om commando en wachtwoord te scheiden. De volledige Arduino-schets wordt hieronder gegeven.

Schematisch

De verbinding tussen de componenten is heel eenvoudig. Verbind eerst de Bluetooth-module HC-05 met de Arduino. Let op het schema. De TX-pin van het Arduino-bord is verbonden met de RX-pin van de Bluetooth-module en de RX-pin van de Arduino is verbonden met de TX-pin van de Bluetooth-module.

Het slot op de deur zetten

Ik hoop dat je je Arduino-bord hebt geprogrammeerd met de schets die in de vorige stap is bijgevoegd en dat je alle verbindingen al hebt getest volgens het schema. Als je alle stappen hebt doorlopen dan is het de hoogste tijd om het slot op de juiste plek van de deur te plaatsen. Plaats eerst het slot met vier schroeven. Bevestig vervolgens de Bluetooth-module op de juiste plaats van het slot en voeg wat hete lijm toe om de module goed af te stellen met het slot. Plaats daarna het Arduino-bord aan de onderkant van het slot en sluit alle draden aan volgens het schema. Na het plaatsen van het slot en het maken van de aansluitingen dient u het slot aan te zetten. Ik heb een 5V, 1A-muuradapter gebruikt om het circuit van stroom te voorzien.

Android-app-ontwikkeling voor wachtwoordbeveiligd deurslot

Ik zal je laten zien hoe je een Bluetooth-app voor Android kunt ontwikkelen met MIT App Inventor. Ik gebruik App Inventor omdat er geen codering voor nodig is en er geen software hoeft te worden geïnstalleerd. Je hebt alleen een Google-account nodig. Ga naar http://ai2.appinventor.mit.edu/, u zult vragen om in te loggen met een Google-account.

Log in op App Inventor met Gmail en volg de onderstaande stappen:

  • ik. Algemene voorwaarden accepteren afbeelding 1
  • ii. Klik op 'enquête later invullen' en vervolgens op 'doorgaan' om het opstartscherm te sluiten afbeelding 2, 3
  • iii. Start een nieuw project (geen spaties!) afbeelding 4
  • iv. Noem het project "BluetoothControlDoorLock" (geen spaties!) afbeelding 5

U bevindt zich nu in de Designer, waar u de "gebruikersinterface" van uw app indeelt (afbeelding 6). In het Designer-venster legt u het uiterlijk van uw app vast en specificeert u welke functionaliteiten deze moet hebben. U kiest dingen voor de gebruikersinterface, zoals knoppen, afbeelding, label, tekstvakken en functionaliteiten zoals tekst-naar-spraak, Bluetooth, sensoren en GPS.

Volg nu figuur 7 en voeg een lijstkiezer toe aan de viewer. Hernoem het naar "Verbinden met Bluetooth-apparaat" (afbeelding 8). Voeg één label, één wachtwoordtekstvak en twee knoppen toe die worden getoond in afbeelding 10. Wijzig de teksteigenschappen van de componenten als respectievelijk "Voer wachtwoord in", "Open deur" en "Close deur". De uiteindelijke gebruikersinterface zou eruit moeten zien als figuur 11. Voeg nu een Bluetooth-client toe aan de viewer. Het is een onzichtbaar onderdeel en het heeft geen gebruikersinterface. Zie afbeelding 12.

Schakel over naar de blokkeneditor

Het is tijd om uw app te vertellen wat hij moet doen! Klik op "Blocks" om naar de Blocks Editor te gaan (afbeelding 13). Denk aan de Designer- en Blocks-knoppen zoals tabbladen - u gebruikt ze om heen en weer te gaan tussen de twee gebieden van App Inventor. In de Blocks Editor programmeer je het gedrag van je app. Er zijn ingebouwde blokken die zaken als wiskunde, logica en tekst afhandelen. Daaronder staan ​​de blokken die bij elk van de componenten in uw app horen. Om ervoor te zorgen dat de blokken voor een bepaald onderdeel in de Blokkeneditor verschijnen, moet je dat onderdeel eerst via de Designer aan je app toevoegen.

Laten we blokken ontwerpen voor List Picker. Lijstkiezer is een UI-element wanneer erop wordt geklikt, het toont een lijst met bijbehorende elementen. Hier is het gekoppelde Bluetooth-apparaat. We moeten twee blokken ListPicker.BeforePicking en ListPicker.AfterPicking toevoegen (afbeelding 14). Volledige blokken worden getoond in figuur 18 &19.

APK-bestand maken

Ons ontwerp is voltooid, nu moeten we het apk-bestand voor onze Android-telefoon bouwen. Klik om het menu te bouwen en selecteer "App (save .apk to my computer)". Wacht een minuut. Een apk-bestand wordt gedownload naar uw standaard downloadmap. Installeer en gebruik het.

Een Android-app met meer functies

In de vorige stap heb ik je laten zien hoe je een eenvoudige bluetooth-app kunt ontwikkelen in App Inventor. Maar die app is niet zo gebruiksvriendelijk. Het zal u geen bericht laten zien, of uw deur is open of gesloten of bluetooth kan niet worden aangesloten voor een fout. Ik heb hier een meer geavanceerde app voor ons project bijgevoegd.

Wanneer u uw app uitvoert, controleert u of uw Bluetooth-radio is ingeschakeld of niet, als u deze niet inschakelt, verschijnt er een dialoogvenster voor het inschakelen van Bluetooth. Klik op ja om uw bluetooth-radio in te schakelen. Koppel het apparaat vervolgens met de knop Apparaat koppelen. Klik vervolgens op de knop om verbinding te maken. Als er verbinding is gemaakt met een apparaat, toont de applicatie het MAC-adres en de naam van het aangesloten apparaat. Voer het wachtwoord in het wachtwoordvak in en klik vervolgens op de knop deur openen. Als u het juiste wachtwoord hebt ingevoerd, zal de deur open zijn en de toepassing toont u een bericht dat uw deur nu open is. Voer vervolgens nogmaals het wachtwoord in als u de deur wilt sluiten. Als u het verkeerde wachtwoord opgeeft, geeft de app een bericht met het verkeerde wachtwoord weer.

Het volledige App Inventor-bronbestand (BTcontrol.aia) is hierbij bijgevoegd. Als je het niet leuk vond om je eigen app te maken of aan te passen, download dan gewoon de BTcontrol.apk en installeer deze op je Android-telefoon.

Je kunt het ook downloaden van Google Play Store via de link:

https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.BTcontrol&hl=nl

Voor het wijzigen van de bron klikt u op het menu "Projecten" en selecteert u "Importeer project (.aia) van mijn computer" weergegeven in afbeelding 24 en bladert u door het BTcontrol.aia-bestand vanaf uw computer. Na het importeren kun je het gemakkelijk aanpassen.

Als je meer wilt weten over het ontwikkelen van Android-apps met App Inventor, blader dan door:http://appinventor.mit.edu/explore/ai2/tutorials.html. Je kunt ook http://meta-guide.com/videography/100-best-appinventor-videos/

proberen

Code

  • Arduino-schets
Arduino SchetsArduino
#include Servo mijnservo; // maak een servo-object om een ​​servoString te besturen inputString ="";String command ="";String value ="";String wachtwoord ="arduPi"; // dit is het wachtwoord voor het openen en sluiten van uw deur // u kunt elk gewenst wachtwoord instellen met behulp van cijfers en symbolenboolean stringComplete =false; void setup () { // start seriële verbinding Serial.begin (9600); // baudrate is 9600 moet overeenkomen met bluetooth // Met de functie String reserve() kunt u een buffer in het geheugen toewijzen voor het manipuleren van strings. inputString.reserve(50); // reserveer 50 bytes in het geheugen om op te slaan voor stringmanipulatie command.reserve(50); waarde.reserve(50); booleaanse stringOK =false; mijnservo.attach(9); // koppelt de servo op pin 9 aan het servo-object }void loop(){ // als arduino een tekenreeksbeëindiging ontvangt zoals \n stringComplete wordt ingesteld op true if (stringComplete) { //Serial.println(inputString); vertraging (100); // identificeerde de positie van '=' in string en stelde de index in op pos variabele int pos =inputString.indexOf('='); // waarde van pos variabele> of =0 betekent '=' aanwezig in ontvangen string. if (pos> -1) { // substring (start, stop) functie knipt een specifiek deel van de string van start tot stop // hier zal het commando het deel van de ontvangen string zijn tot '=' // laat ontvangen string is open=test123 // dan is het commando 'open' commando =inputString.substring (0, pos); // waarde zal zijn van after =tot newline commando // voor de bovenstaande voorbeeldwaarde is test123 // we negeren gewoon de '=' en nemen de eerste parameter van substring als 'pos+1' // we gebruiken '=' als een scheidingsteken tussen commando en vale // zonder '=' kan elk ander teken worden gebruikt // we gebruiken =menas ons commando of wachtwoord mag geen '=' bevatten, anders veroorzaakt het een foutwaarde =inputString.substring(pos+1 , inputString.length()-1); // extraheer commando tot \n uitgesloten //Serial.println(commando); //Serial.println(waarde); // password.compareTo(value) vergelijk tussen wachtwoord tring en value string, if match return 0 if(!password.compareTo(value) &&(command =="OPEN")){ // if password matched and command is 'OPEN' ' dan moet de deur openDoor(); // bel openDoor() functie Serial.println ("OPEN"); // stuurde open feedback naar telefoonvertraging (100); } else if(!password.compareTo(value) &&(command =="CLOSE")){ // als het wachtwoord overeenkomt en het commando 'CLOSE' is, dan moet de deur closeDoor(); Serial.println(" SLUITEN"); // stuurde "CLOSE" string naar de telefoon vertraging (100); } else if(password.compareTo(value)){ // als wachtwoord niet overeenkomt dan verkeerde feedback naar telefoon Serial.println(" WRONG"); vertraging (100); } } // wis de string voor de volgende iteratie inputString =""; stringComplete =onwaar; } }void serialEvent() { while (Serial.available()) { // haal de nieuwe byte op:char inChar =(char)Serial.read(); //Serial.write(inChar); // voeg het toe aan de inputString:inputString +=inChar; // als het inkomende teken een nieuwe regel of een regelterugloop is, stel dan een vlag in // zodat de hoofdlus er iets aan kan doen:if (inChar =='\n' || inChar =='\r') { stringComplete =waar; } }} ongeldig openDoor(){ myservo.write(0); vertraging (100); }void closeDoor(){ myservo.write(65); vertraging (100); }

Aangepaste onderdelen en behuizingen

Thingiverse
https://www.thingiverse.com/thing:2350856CAD-bestand op thingiverse.com

Schema's

door-lock_android_source_PDi5PbxDwC.aia door-lock_android_app_K05l3Csr61.apk

Productieproces

  1. Bankkluis
  2. Kanaal en sluis
  3. Arduino RFID Lock-zelfstudie
  4. Universele afstandsbediening met Arduino, 1Sheeld en Android
  5. LCD-animatie en gaming
  6. Een Roomba-robot besturen met Arduino en Android-apparaat
  7. Op wachtwoord gebaseerd deurslot
  8. Python3- en Arduino-communicatie
  9. Arduino en OLED-gebaseerde mobiele automaten
  10. Op Arduino gebaseerde RPM-teller met een nieuw en sneller algoritme
  11. Slim deurslot met WiFi-aanmeldingspagina door Arduino &ESP8266