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.
Codul necesar funcționării proiectului a fost dezvoltat în Arduino IDE în fișierele:
Pentru a facilita comunicarea cu modulul Bluetooth HC-05, am folosit MIT App Inventor, o platformă web concepută pentru a permite utilizatorilor să creeze aplicații mobile pentru dispozitive Android printr-o interfață simplă de tip drag-and-drop.
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.