Arduino & Android baserat Bluetooth Controll lösenord beskyddat Smart dörrlås (spara ditt hem) (5 / 8 steg)
Steg 5: Arduino Program för Bluetooth kontroll lösenord beskyddat dörrlåset
Koden för bluetooth kontroll smart dörrlåset är mycket enkel. Jag har designat android ansökan i så att det skickas ett kommando med lösenord. Faktiskt jag ställa två kommando, är en "öppen =" och en annan är "Nära =" lösenordet kan innehålla någon siffra, senare eller symbol eller kombination av dem som du vill. I appen använde jag två knappar en för öppna dörren och en annan för att stänga dörren. När lösenord ges till lösenordsrutan och öppna knappen klickas än app gemensamma den "öppna =" kommandot med lösenord och skickat det till arduino. Jag tillägga '=' logga med kommandot för det kommer jag separat kommando och lösenord med hjälp av detta '='. Efter att ha fått strängen från telefonen arduino program avskiljer kommando och lösenord från strängen och ta emot och spara dem i två separata variabler. Sedan kontrollera lösenordet först, om lösenordet matchas med sparade lösenord och sedan öppna dörren för kommandot "Öppna" och stänga dörren för "Nära" kommandot. "=" hjälper till att skilja kommando och password.Complete arduino skiss ges nedan.
Komplett Arduino kod
< code stil = "display: block; white-space: pre-wrap; färg: grön" >
/ * Athor: Md. Khairul Alam
Datum: 1 September, 2015
Detta program är för lösenord beskyddat smart dörrlåset * /
String inputString = "";
String kommando = "";
Strängvärde = "";
Sträng lösenord = "arduPi"; Detta är lösenordet för att öppna och stänga din dörr
Du kan ange något lösenord du vill använda siffror och symboler
booleska stringComplete = false;
int motorPin1 = 10; stift 2 på L293D IC
int motorPin2 = 11; stift 7 på L293D IC
int motorEnablePin = 9; stift 1 på L293D IC
int hastighet = 100;
void setup() {
Starta seriell anslutning
Serial.BEGIN(9600); överföringshastigheten är 9600 måste matcha med bluetooth
Funktionen sträng reserve() kan du allokera en buffert i minnet för att manipulera strängar.
inputString.reserve(50); reservera 50 byte i minnet att spara för string manipulation
Command.Reserve(50);
Value.Reserve(50);
booleska stringOK = false;
pinMode (motorPin1, produktionen);
pinMode (motorPin2, produktionen);
pinMode (motorEnablePin, produktionen);
}
void loop() {
om arduino får en sträng uppsägning karaktär som \n stringComplete vilja sätta till sann
om (stringComplete) {
Serial.println(inputString);
Delay(100);
identifierade posiion av '=' i sträng och ange dess index till pos variabel
int pos = inputString.indexOf('=');
pos variabelns värde > eller = 0 betyder '=' i fått sträng.
om (pos > -1) {
delsträng (start, stopp) funktionen klippa en del av sträng från början att stoppa
Här kommer kommandot att mottagna strängen till '='
Låt mottagna sträng är öppen = test123
sedan är kommandot "öppna"
kommandot = inputString.substring (0, pos);
värdet kommer att vara från efter = newline-kommandot
i exemplet ovan är värde test123
vi bara ignorerar den '=' tar första parametern i delsträng som "pos + 1"
Vi använder '=' som avgränsare mellan kommandot och vale
utan '=' kan alla andra tecken användas
Vi använder = betyder vårt kommando eller lösenord inte måste innehåller någon '=', annars det kommer att orsaka fel
värde = inputString.substring (pos + 1, inputString.length()-1); extrahera kommandot upp till \n studerandena
Serial.println(Command);
Serial.println(Value);
password.compareTo(value) jämför mellan lösenord och värdet strängen, om matcha avkastning 0
IF(!Password.compareTo(Value) & & (kommandot == "Öppna")) {
om lösenord matchade och kommandot "Öppna" än bör dörren öppna
openDoor(); funktionen Ring upp openDoor()
Serial.println ("öppna"); skickade öppen feedback till telefon
Delay(100);
}
annat if(!password.compareTo(value) & & (kommandot == "Nära")) {
om lösenordet matchas och kommandot Stäng' än dörren ska stänga
closeDoor();
Serial.println ("Stäng"); skickade "Stäng" strängen till telefonen
Delay(100);
}
annat if(password.compareTo(value)) {
om lösenordet inte matchas än skickade fel feedback till telefon
Serial.println ("fel");
Delay(100);
}
}
Rensa strängen för nästa iteration
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
samtidigt (Serial.available()) {
få den nya byten:
char inChar = (char)Serial.read();
Serial.write(inChar);
Lägg till det inputString:
inputString += inChar;
om den inkommande karaktären är en ny rad eller en vagnretur, ange en flagga
så den viktigaste loopen kan göra något åt det:
om (inChar == '\n' || inChar == '\r') {
stringComplete = sant;
}
}
}
void openDoor() {
digitalWrite (motorPin1, hög);
digitalWrite (motorPin2, låg);
digitalWrite (motorEnablePin, hög);
använda följande rad om du vill ändra hastighet och sedan använda millis() i stället om delay()
analogWrite (motorEnablePin, hastighet);
Delay(1500);
digitalWrite (motorEnablePin, låg); av motor
}
void closeDoor() {
digitalWrite (motorPin1, låg);
digitalWrite (motorPin2, hög);
digitalWrite (motorEnablePin, hög);
analogWrite (motorEnablePin, hastighet);
Delay(1500);
digitalWrite (motorEnablePin, låg);
}
Om arduino fått fel lösenord skickat ett meddelande till android telefonen att lösenordet är fel. Arduino skickade "Fel" sträng. Android program sedan visar fel lösenord meddelande.