This is an old revision of the document!
Smart Home System este un proiect destinat creării unei case inteligente folosind tehnologie accesibilă și integrată. Scopul acestui sistem este de a monitoriza și controla condițiile ambientale, precum și securitatea locuinței, făcând astfel viața mai confortabilă și sigură pentru utilizatori.
Ideea proiectului a pornit de la dorința de a folosi tehnologia pentru a îmbunătăți securitatea și eficiența energetică în locuințe. Prin monitorizarea temperaturii, a umidității, a prezenței gazelor și a mișcărilor nedorite, sistemul poate oferi un răspuns rapid în cazul unei probleme sau poate informa utilizatorul de necesitatea optimizării condițiilor ambientale într-un mod ușor accesibil.
Acest sistem este util atât pentru persoanele interesate de tehnologie, care doresc să își automatizeze locuințele, cât și pentru cei care au nevoie de un sistem robust de monitorizare și control al mediului casnic, crescând astfel confortul și securitatea celor care îl folosesc.
Listă de componente:
Diagrama Circuitului din Exteriorul Casei:
Schema Electrică a Circuitului din Exteriorul Casei:
Diagrama Circuitului din Interiorul Casei:
Schema Electrică a Circuitului din Interiorul Casei:
Stadiul Actual al părții Hardware:
Codul necesar funcționării proiectului a fost dezvoltat în Arduino IDE.
Am folosit următoarele biblioteci externe:
Snippet Code:
#include <LiquidCrystal_I2C.h> #include <dht11.h> #include <Wire.h> #include <Servo.h> #include <Adafruit_ST7789.h> #include <SPI.h> #define DHT11_PIN 7 #define MQ2_PIN A0 #define LED_PIN 13 #define PIR_SENSOR 2 #define TFT_CS 10 #define TFT_RST 9 // Can also be set to -1 and connected to Arduino's reset #define TFT_DC 8 // Temperature & Humidity Sensor - DHT11 dht11 DHT11_PIN; // Servomotors Servo myservo1; Servo myservo2; // Gas Sensor - MQ2 int mq2Pin = MQ2_PIN; // int pos = 0; // LCD Display LiquidCrystal_I2C lcd(0x27, 16, 2); // Buzzer const int buzzer = 8; // PIR Module int led = LED_PIN int sensor = PIR_SENSOR; int state = LOW; int val = 0; // Ultrasonic Sensor const int trigPin = 5; const int echoPin = 6; long duration; int distance; // 240x320 LCD Display Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); void setup() { Serial.begin(9600); pinMode(mq2Pin, INPUT); pinMode(led, OUTPUT); pinMode(sensor, INPUT); pinMode(buzzer, OUTPUT); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Hello!"); lcd.setCursor(0, 1); lcd.print("Welcome Home!"); myservo1.attach(9); myservo2.attach(10); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); tft.init(240, 320); tft.fillScreen(ST77XX_BLACK); tft.setCursor(0, 10); tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK); tft.setTextSize(2); tft.println("Hello, ST7789!"); tft.drawRect(10, 50, 220, 40, ST77XX_RED); tft.fillCircle(120, 160, 30, ST77XX_BLUE); tft.drawLine(0, 250, 240, 320, ST77XX_GREEN); } void loop() { Serial.println(); // Temperature & Humidity Sensor - DHT11 int chk = DHT11.read(DHT11PIN); Serial.print("Humidity (%): "); Serial.println((float)DHT11.humidity, 2); Serial.print("Temperature (C): "); Serial.println((float)DHT11.temperature, 2); // PIR Module int sensorValue = analogRead(mq2Pin); // Read the analog value from MQ-2 sensor float voltage = sensorValue * (5.0 / 1023.0); // Convert the analog reading to voltage Serial.print("Sensor Value: "); Serial.print(sensorValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(2000); val = digitalRead(sensor); if (val == HIGH) { digitalWrite(led, HIGH); delay(100); if (state == LOW) { Serial.println("Motion detected!"); state = HIGH; } } else { digitalWrite(led, LOW); delay(200); if (state == HIGH){ Serial.println("Motion stopped!"); state = LOW; } } // Buzzer tone(buzzer, 1000); delay(1000); noTone(buzzer); delay(1000); // Servomotors for (pos = 0; pos <= 90; pos += 1) { myservo1.write(pos); myservo2.write(pos); delay(15); } for (pos = 90; pos >= 0; pos -= 1) { myservo1.write(pos); myservo2.write(pos); delay(15); } // Ultrasonic Sensor digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; Serial.print("Distance: "); Serial.println(distance); }
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.