Vrata za kućne ljubimce

OŠ Franje Krežme

Vrata za kućne ljubimce rade pomoću međusobne komunikacije dvije Arduino pločice, MKR1000 i Arduino Uno. Arduino MKR1000 upravlja s procesom otključavanja i zaključavanja vrata, prati nalazi li se kućni ljubimac ispred vrata te provjerava vlažnost i temperaturu zraka na vanjskoj strani vrata. Arduino Uno postavljen je kako bi koristio RFID senzor pomoću kojeg prepoznaje kućnog ljubimca s određenom RFID oznakom te samo njemu otključava vrata.

Video snimka

Izrada projekta

Testiranje senzora na eksperimentalnoj pločici

Lemljenje i postavljanje senzora

Izrada programa.

Ožičavanje projekta.

“Šminkanje” i posljednje sređivanje koda.

Mobilna aplikacija

Mobilna aplikacija povezana je s Arduinom MKR1000. Na zaslonu pametnog telefona
korisniku se prikazuju vanjski vremenski uvjeti, vlažnost i temperatura zraka, pomoću kojih
korisnik odlučuje hoće li dopustiti svome kućnom ljubimcu prolazak kroz vrata ili će zabraniti.
Vremenski uvjeti očitavaju se pomoću DHT11 senzora vlage i temperature te se podatci šalju
svakih 30 sekundi na mobilnu aplikaciju. Dozvola prolaska radi pomoću prekidača. Ako je
prolaz zabranjen bez obzira nalazi li se kućni ljubimac ispred vrata, ona ostaju zaključana. Ako
je prolaz dozvoljen, vrata su zaključana sve dok se kućni ljubimac ne približi vratima s vanjske
ili unutarnje strane.

Shema projekta

Shema prikazuje priključene senzore i međusobnu povezanost oba korištena Arduina.

Shemu ovoga projekta možete preuzeti ovdje.

Arduino program

#define BLYNK_PRINT /*

#define BLYNK_PRINT SerialUSB
 
#include 
#include 
#include 
#include 
#include "Servo.h"
#include 
#include 

#define DHTPIN A0 
#define DHTTYPE DHT11

const int trigPin1 = 6;
const int echoPin1 = 7 ;
const int trigPin2 = 8;
const int echoPin2 = 9 ;
int rsig=digitalRead(A1);
int sig=1;
int prekidac;
long trajanje1 ;
int udaljenost1;
long trajanje2;
int udaljenost2;

DHT dht(DHTPIN, DHTTYPE);
Servo servo;
int pos;

char auth[] = "2c63cb58555045598dd1fb0842c978e4";
char ssid[] = "pametnakuca";
char pass[] = "kuca1234";

BLYNK_WRITE(V10)
{
  prekidac = param.asInt(); 
}


void setup() {
  Blynk.begin(auth, ssid, pass);
  
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(rsig, INPUT);
  pinMode(sig, OUTPUT);
  
  Serial.begin(9600);
  servo.attach(10);
  dht.begin();
  
}
void loop() {
  Blynk.run();

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  rsig=digitalRead(A1);

  Blynk.virtualWrite(V11,t);
  Blynk.virtualWrite(V12, h);
  
  if(prekidac==LOW){
    servo.write(90);
  }else {
    if (rsig==LOW){
      ultrazvuk();
      } else {
      servo.write(180);
      delay(3000);
      }
  }
}

void ultrazvuk(){
  servo.write(90);
  
  digitalWrite(trigPin1, LOW);
  delayMicroseconds(20);
  digitalWrite(trigPin1, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin1, LOW);
  trajanje1 = pulseIn(echoPin1, HIGH);
  udaljenost1 = trajanje1 * 0.034 / 2;
  
  digitalWrite(trigPin2, LOW);
  delayMicroseconds(20);
  digitalWrite(trigPin2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin2, LOW);
  trajanje2 = pulseIn(echoPin2, HIGH);
  udaljenost2 = trajanje2 * 0.034 / 2;

  if(udaljenost1<15 or udaljenost2<15){
      digitalWrite(sig, HIGH);
      } else {
        digitalWrite(sig, LOW);
      }
}



Arduino program ovoga projekta možete preuzeti ovdje.

#define BLYNK_PRINT /*

#include 
#include 
 
#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);   


int uz=analogRead(A0);

void setup(){
  Serial.begin(9600); 
  SPI.begin();      
  mfrc522.PCD_Init();   
  pinMode(2, OUTPUT);
  pinMode(uz, INPUT);
}

void loop() 
  {
    uz=analogRead(A0);
    if (uz<500){
      digitalWrite(2, LOW);
    }else {
      kartica();
    }
}

void kartica() {
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }

  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  
  content.toUpperCase();
  if (content.substring(1) == "84 D3 41 83"){
     digitalWrite(2, HIGH);
     delay(2000);
     digitalWrite(2, LOW);
    }
}

Arduino program ovoga projekta možete preuzeti ovdje.

Autori

Projekt su izradili Jona Važić i Helena Floreani uz mentorstvo Tomislava Pandurića iz OŠ Franje Krežme.

Projekt je prijavljen na temu: Internet of Things: Kućni ljubimci i domaće životinje.

Drugi projekti