Ulesanne 8

Tark maja

Töökirjeldus

Targas kodus kasutatakse liikumisandureid, mille tõttu hakkab maja helisid tegema ja sulgeb uksi. Lisaks oskab see näidata praegust temperatuuri ja madala valgustuse korral hakkab põlema LED.

Komponendid

1 Arduino plaat

1 Prototüüpplaat

1 LED

1 servomootor

1 ultraheli kaugusandur

3 takistit

1 LCD-ekraan

1 summer

1 temperatuuriandur

1 fototakisti

Juhtmeid

Kasutamine

Tark maja (või nutikas kodu) tähendab kodu, kus kasutatakse erinevaid tehnoloogilisi lahendusi ja seadmeid, et automatiseerida ja juhtida kodu funktsioone. Selliseid süsteeme kasutatakse mugavuse, energiatõhususe ja turvalisuse parandamiseks.

Näited kasutusvaldkondadest:

  1. Automatiseeritud valgustus: Tuled, mis süttivad liikumise tuvastamisel või hämaras.
  2. Kütte ja jahutuse juhtimine: Nutikad termostaadid, mis reguleerivad temperatuuri vastavalt eelistustele ja kohalolekule.
  3. Turvasüsteemid: Kaamerad ja andurid, mis tuvastavad liikumise ja teavitavad omanikku.
  4. Kodu meelelahutus: Nutikad audio- ja videoseadmed, mida saab juhtida hääle või rakenduse kaudu.
  5. Energiatõhusus: Seadmed, mis jälgivad ja optimeerivad energiatarbimist.

Tark maja saab teha igapäevaelu mugavamaks ja turvalisemaks, pakkudes samal ajal ka võimalust energiat säästa.

Kood

#include <Servo.h> // библиотека серво двигателя
#include <LiquidCrystal.h> // библиотека LCD экрана
 
const int rs = 12, e = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; 
LiquidCrystal lcd(rs, e, d4, d5, d6, d7);
 
#define trigger_sensor_pin 9 
#define echo_sensor_pin 8 
 
#define servo_pin 7
 
const int LED_PIN = 10; // Пин для обычного светодиода
const int buzzerPin = 13;
int sensorPin1 = A0; // Пин для температурного датчика
int sensorPin2 = A1; // Пин для фоторезистора
 
Servo servo;
 
int duration, distance;
 
void setup()
{
  pinMode(LED_PIN, OUTPUT); // Настройка пина для обычного светодиода
  pinMode(buzzerPin, OUTPUT); // Настройка пина для зуммера
  pinMode(trigger_sensor_pin, OUTPUT); 
  pinMode(echo_sensor_pin, INPUT);
  servo.attach(servo_pin);
  lcd.begin(16, 2);
  Serial.begin(9600);
}
 
void ring_doorbell()
{
  for (int i = 0; i < 3; i++) { 
    digitalWrite(buzzerPin, HIGH);
    delay(100);
    digitalWrite(buzzerPin, LOW);
    delay(100);
  }
}
 
float readTemperature()
{
  int sensorVal = analogRead(sensorPin1); 
  float voltage = sensorVal * (5.0 / 1023.0); 
  float temperatureC = (voltage - 0.5) * 100; 
  return temperatureC;
}
 
int readLightLevel()
{
  int lightLevel = analogRead(sensorPin2);
  return lightLevel;
}
 
void loop()
{
  delay(100);
 
  // Ультразвуковой датчик
  digitalWrite(trigger_sensor_pin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigger_sensor_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger_sensor_pin, LOW);
 
  duration = pulseIn(echo_sensor_pin, HIGH);
  distance = duration / 58;
 
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
 
  if (distance > 34 && distance < 100)
  {
    servo.write(0); 
    ring_doorbell(); // Дверной звонок
    delay(1500);
  }
  else
  {
    servo.write(90); 
  }
 
  // Чтение температуры
  float temperature = readTemperature();
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" C");
 
  lcd.clear();
  lcd.setCursor(0, 0);
 
  if (temperature > 30)
  {
    lcd.print("Very hot! ");
    lcd.print(temperature);
    lcd.print(" C");
  }
  else if (temperature < 10)
  {
    lcd.print("Very cold! ");
    lcd.print(temperature);
    lcd.print(" C");
  }
  else
  {
    lcd.print("Temp: ");
    lcd.print(temperature);
    lcd.print(" C");
  }
 
  // Чтение уровня освещенности
  int lightLevel = readLightLevel();
  Serial.print("Light level: ");
  Serial.println(lightLevel);
 
   
  if (lightLevel < 500) { // Условие для низкой освещенности
    digitalWrite(LED_PIN, LOW); // Включить светодиод при низкой освещенности
     
  } else {
    digitalWrite(LED_PIN, HIGH); // Выключить светодиод при высокой освещенности
     
  }
 
  delay(1000);
}

Link

https://youtube.com/watch?v=x2gE0WxXsSQ%3Ffeature%3Doembed

Konstruktsioon Tinkercad