Want to create interactive content? It’s easy in Genially!
Exam house
Alex Rizzo
Created on June 14, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
The house
Review
Smart home
A sustainability aiming smart home
The schematics
The code
The code
The schematics
Arduino UNO
Arduino Nano
The code
Arduino UNO
Arduino Nano
Temperature/humidity sensor
Movement sensor
NFC/RFID Reader
LCD Display
#include <SPI.h> #include <MFRC522.h> #include <LiquidCrystal.h> #include <Servo.h> Servo servo; const int rs = 8, en = 7, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); #define SS_PIN 10 #define RST_PIN 6 MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0x04, 0x70, 0x2A, 0xA4}; int button = A0; int door = 0; void setup() { servo.attach(9); servo.write(70); Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); Serial.println("Tap RFID/NFC Tag on reader"); l cd.begin(16, 2); lcd.print("Tap RFID/NFC Tag"); pinMode(button, INPUT);}
void loop() { if (rfid.PICC_IsNewCardPresent()) { if (rfid.PICC_ReadCardSerial()) { MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] && door == 0 ) { Serial.println("Authorized Tag"); servo.write(160); door = 1; lcd.clear(); delay(100); lcd.print("Authorized Tag"); delay(1000); lcd.clear(); delay(100); lcd.print("Tap RFID/NFC Tag"); }else if( rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] && door == 1 ){ servo.write(70); door = 0; lcd.clear(); delay(100); lcd.print("Authorized Tag"); delay(1000); lcd.clear(); delay(100); lcd.print("Tap RFID/NFC Tag"); }
else{ Serial.print("Unauthorized Tag with UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); lcd.clear(); delay(100); lcd.print("Unauthorized Tag"); delay(1000); lcd.clear(); delay(100); lcd.print("Tap RFID/NFC Tag"); } rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } } if(door == 0 && digitalRead(button) == HIGH){ servo.write(160); door = 1; delay(300); } if(door == 1 && digitalRead(button) == HIGH){ servo.write(70); door = 0; delay(300); } }
#include "DHT.h" #define button 2 #define cooling_led 3 #define heatingLed 4 #define lamp 5 #define sensor 6 #define tent_up 7 #define tent_down 8 #define window_opening 9 #define window_closing 10 #define green 12 #define light A0 #define temperature A1 #define humidity A2 #define DHT11_PIN A3 #define red A4 #define blue A5 DHT dht11(DHT11_PIN, DHT11); int lamp_state = 0; int window_state = 0; int tent_state = 0; int lamp_counter = 0; int counter = 0; int fake = 0; int lux; int temp; int humi; int red_val; int blue_val; void setup() { Serial.begin(9600); pinMode(button, INPUT); pinMode(sensor, INPUT); pinMode(light, INPUT); pinMode(cooling_led, OUTPUT); pinMode(heatingLed, OUTPUT); pinMode(lamp, OUTPUT); pinMode(tent_up, OUTPUT); pinMode(window_opening, OUTPUT); pinMode(window_closing, OUTPUT); pinMode(tent_down, OUTPUT); pinMode(cooler, OUTPUT); pinMode(green, OUTPUT); pinMode(red, OUTPUT); pinMode(blue, OUTPUT); dht11.begin(); }
void loop() { if(counter%10 == 0){ lux = analogRead(light); temp = analogRead(temperature); humi = analogRead(humidity); float humid = dht11.readHumidity(); float tempC = dht11.readTemperature(); float tempF = dht11.readTemperature(true); if (isnan(humi) || isnan(tempC) || isnan(tempF)) { Serial.println("Failed to read from DHT11 sensor!"); } else { Serial.print("DHT11# Humidity: "); Serial.print(humid); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } if(tempC < 18){ blue_val = map(tempC, 0, 18, 255, 125); digitalWrite(green, HIGH); analogWrite(blue, blue_val); analogWrite(red, 0); } if(tempC >= 18 && tempC <= 22){ digitalWrite(green, HIGH); analogWrite(blue, 0); analogWrite(red, 0); } if(tempC > 22 && tempC <= 30){ red_val = map(tempC, 23, 30, 125, 255); digitalWrite(green, HIGH); analogWrite(blue, 0); analogWrite(red, red_val); } if(tempC > 30){ blue_val = map(tempC, 30, 50, 255, 90); digitalWrite(green, LOW); analogWrite(blue, blue_val); analogWrite(red, 255); } }
v counter++; lamp_counter++; if(digitalRead(button) == HIGH && lamp_state == 0 ){ lamp_state = 1; lamp_counter = 0; digitalWrite(lamp, HIGH); delay(200); } if(digitalRead(button) == HIGH && lamp_state == 1){ lamp_state = 0; lamp_counter = 0; digitalWrite(lamp, LOW); delay(200); } if(lamp_counter >= 33 && digitalRead(sensor) == LOW){ digitalWrite(lamp, LOW); lamp_state = 0; } if(lux >= 650 && tent_state == 0){ digitalWrite(tent_up, HIGH); delay(200); digitalWrite(tent_up, LOW); tent_state = 1; } if(lux <= 350 && tent_state == 1){ digitalWrite(tent_down, HIGH); delay(100); digitalWrite(tent_down, LOW); tent_state = 0; }
if(temp >= 800){ digitalWrite(cooling_led, HIGH); }else if(temp <= 700){ digitalWrite(cooling_led, LOW); } if(temp <= 200){ digitalWrite(heatingLed, HIGH); }else if(temp >= 300){ digitalWrite(heatingLed, LOW); } if(humi >= 500 && window_state == 0){ window_state = 1; digitalWrite(window_opening, HIGH); delay(50); digitalWrite(window_opening, LOW); } if(humi <= 300 && window_state == 1){ window_state = 0; digitalWrite(window_closing, HIGH); delay(200); digitalWrite(window_closing, LOW); } delay(150); }