Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:sseverin:robert.nastase0609 [2024/05/23 22:19]
robert.nastase0609 [Software Design]
pm:prj2024:sseverin:robert.nastase0609 [2024/05/27 16:28] (current)
robert.nastase0609 [Bibliografie/Resurse]
Line 32: Line 32:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-**Listă de componente:**+==Listă de componente:==
   * 2x Arduino Uno R3 ATMega328P   * 2x Arduino Uno R3 ATMega328P
-  * 2x Breadboard+  * 1x Breadboard ​HQ (830p) 
 +  * 1x Breadboard HQ (400p)
   * 1x Modul LCD 1602 cu Interfață I2C și Backlight Galben-Verde   * 1x Modul LCD 1602 cu Interfață I2C și Backlight Galben-Verde
   * 1x Modul LCD de 2.8" cu SPI și Controller ILI9341 (240x320 px)   * 1x Modul LCD de 2.8" cu SPI și Controller ILI9341 (240x320 px)
Line 44: Line 45:
   * 1x Senzor Ultrasonic HC-SR04   * 1x Senzor Ultrasonic HC-SR04
   * 4x Condensator 100uF 35V   * 4x Condensator 100uF 35V
 +  * 1x Rezistor 10kΩ
   * 1x Rezistor 4.7kΩ   * 1x Rezistor 4.7kΩ
 +  * 1x Rezistor 2kΩ
 +  * 1x Rezistor 1kΩ
 +  * 1x Rezistor 220Ω
   * 2x Rezistor 100Ω   * 2x Rezistor 100Ω
-  * 1x Modul Bluetooth ​Master Slave HC-05 cu Adaptor+  * 1x Modul Bluetooth HC-05 cu Adaptor
   * LED-uri   * LED-uri
   * Jumper Wires   * Jumper Wires
Line 54: Line 59:
 </​note>​ </​note>​
  
-**Diagrama Circuitului din Exteriorul Casei:**+==Diagrama Circuitului din Exteriorul Casei:==
  
 {{ :​pm:​prj2024:​sseverin:​diagrama_circuit_exterior.png?​650 |}} {{ :​pm:​prj2024:​sseverin:​diagrama_circuit_exterior.png?​650 |}}
  
-**Schema Electrică a Circuitului din Exteriorul Casei:**+==Schema Electrică a Circuitului din Exteriorul Casei:==
  
-{{ :​pm:​prj2024:​sseverin:​schematic_circuit_exterior.png?650 |}}+{{ :​pm:​prj2024:​sseverin:​smart_home_system_schematic_exterior.png?650 |}}
  
-**Diagrama Circuitului din Interiorul Casei:**+==Diagrama Circuitului din Interiorul Casei:==
  
 {{ :​pm:​prj2024:​sseverin:​diagrama_circuit_interior.png?​650 |}} {{ :​pm:​prj2024:​sseverin:​diagrama_circuit_interior.png?​650 |}}
  
-**Schema Electrică a Circuitului din Interiorul Casei:**+==Schema Electrică a Circuitului din Interiorul Casei:==
  
-{{ :​pm:​prj2024:​sseverin:​schematic_circuit_Interior.png?650 |}}+{{ :​pm:​prj2024:​sseverin:​smart_home_system_schematic_interior.png?650 |}}
  
-**Stadiul Actual al părții Hardware:**+==Stadiul Actual al părții Hardware:==
  
 {{ :​pm:​prj2024:​sseverin:​smart_home_system.jpeg?​650 |}} {{ :​pm:​prj2024:​sseverin:​smart_home_system.jpeg?​650 |}}
 ===== Software Design ===== ===== Software Design =====
  
-Codul necesar funcționării proiectului a fost dezvoltat în Arduino IDE.+==Mediu de Dezvoltare==
  
-Am folosit următoarele biblioteci externe+Codul necesar funcționării proiectului a fost dezvoltat în Arduino IDE în fișierele
-  * LiquidCrystal I2C [[https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal-i2c/​]] +  * **circuit_interior.ino** 
-  * DHT11 [[https://​www.arduino.cc/​reference/​en/​libraries/​dht11/​]] +  * **circuit_exterior.ino**
-  ​Adafruit ST7735 and ST7789 [[https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-st7735-and-st7789-library/​]]+
  
-**Snippet Code:**+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.
  
-<​code>​ +==Biblioteci utilizate pentru Circuitul Interior== 
-#include <​LiquidCrystal_I2C.h> +  * **Wire.h** -pentru comunicația I2C între microcontroller și dispozitive periferice, cum ar fi senzori și ecrane LCD. 
-#include <dht11.h> +  * **Servo.h** -pentru controlul servomotoarelor,​ permițând poziționarea precisă a acestora prin semnale PWM. 
-#include <Wire.h> ​ +  * **LiquidCrystal_I2C.h** -pentru controlul ecranelor LCD compatibile cu interfața I2C, facilitând afișarea de texte și date
-#include <Servo.h> +  * **dht11.h** -pentru utilizarea senzorului de temperatură și umiditate DHT11, oferind metode pentru citirea valorilor de temperatură și umiditate.
-#include <​Adafruit_ST7789.h> +
-#include <SPI.h>+
  
-#define DHT11_PIN 7 +==Biblioteci utilizate pentru Circuitul Exterior== 
-#define MQ2_PIN A0 +  * **Adafruit_GFX.h** -> pentru desenarea formelor și textului pe afișaje, oferind funcții esențiale pentru interfețe grafice. 
-#define LED_PIN 13 +  * **Adafruit_ST7789.h** -> pentru controlul ecranelor TFT bazate pe driverul ST7789, facilitând afișarea de imagini și texte. 
-#define PIR_SENSOR 2 +  * **Servo.h** ​-> pentru controlul servomotoarelor,​ permițând poziționarea precisă a acestora prin semnale PWM. 
-#define TFT_CS ​    10 +  * **SPI.h** -> pentru comunicația serială de mare viteză între microcontroller și dispozitivele periferice folosind protocolul SPI (Serial Peripheral Interface).
-#define TFT_RST ​   9   // Can also be set to -1 and connected to Arduino'​s reset +
-#define TFT_DC ​    8+
  
-// Temperature & Humidity Sensor ​DHT11 +==Laboratoare utilizate== 
-dht11 DHT11_PIN;+  * **Laboratorul 1: USART. Debugging** ​-> Utilizat pentru comunicarea serială și debugging. 
 +  * **Laboratorul 3: Timere. Pulse Width Modulation (PWM)** -> Utilizat pentru controlul precis al servomotoarelor prin PWM. 
 +  * **Laboratorul 4: Analog Digital Convertor (ADC)** -> Utilizat pentru citirea și procesarea datelor de la senzorii analogici (ex: senzorul de gaz MQ-2). 
 +  * **Laboratorul 5: Serial Peripheral Interface (SPI)** -> Utilizat pentru comunicația între microcontroller și LCD-ul ST7789 în circuitul exterior. 
 +  * **Laboratorul 6: Inter-Integrated Circuit (I2C)** -> Utilizat pentru comunicația cu LCD-ul I2C în circuitul interior.
  
-// Servomotors +==Descrierea logicii și a metodelor implementate în Circuitul Interior== 
-Servo myservo1; +  * **setup()** -> folosită pentru inițializarea următoarelor componente:​ 
-Servo myservo2; ​+    * Serial Monitor la 9600 Baud Rate pentru debug. 
 +    * Senzorul PIR setat ca input și LED-ul, buzzerul setate ca output. 
 +    * Butonul setat ca input cu pull-up intern. 
 +    * Servomotoare atașate și setate la poziția inițială. 
 +    * LCD-ul inițializat și setat să afișeze un mesaj inițial. 
 +    * Calibrarea senzorilor timp de 30 secunde. 
 +  * **loop()** 
 +    * Verifică starea butonului pentru a comuta între activarea/dezactivarea sistemului de securitate. 
 +    * Monitorizarea senzorului MQ-2 pentru detectarea gazelor și controlul servomotoarelor. 
 +    * Actualizarea afișajului LCD la fiecare 3 secunde pentru a afișa temperatura,​ umiditatea, valoarea senzorului MQ-2 și starea sistemului de securitate. 
 +    * Monitorizarea senzorului PIR și controlul LED-ului și buzzer-ului.
  
-// Gas Sensor ​MQ2 +==Descrierea logicii și a metodelor implementate în Circuitul Exterior== 
-int mq2Pin = MQ2_PIN;+  * **setup()** ​-> folosită pentru inițializarea următoarelor componente: 
 +    * Serial Monitor la 9600 Baud Rate pentru debug. 
 +    * Senzorul ultrasonic (TRIG_PIN ca OUTPUT și ECHO_PIN ca INPUT). 
 +    * Buzzer-ul, LED-ul setate ca OUTPUT și inițializate la LOW. 
 +    * Servomotorul atașat la pinul specific și setat la poziția inițială. 
 +    * LCD-ul ST7789 inițializat și setat să afișeze mesajele inițiale.
  
-// int pos = 0;+  * **loop()** 
 +    * Verifică intrările Bluetooth și actualizează starea LED-ului și poziția servomotorului,​ respectiv a barierei, în funcție de comenzi. 
 +    * Măsoară distanța folosind senzorul ultrasonic și afișează pe LCD. 
 +    * Actualizează starea de securitate pe baza distanței măsurate.
  
-// LCD Display +==Descrierea logicii din aplicația de control a Circuitului Exterior==
-LiquidCrystal_I2C lcd(0x27, 16, 2);+
  
-// Buzzer +{{ :​pm:​prj2024:​sseverin:​aplicatie_smart_home_system.png?​650 |}}
-const int buzzer = 8;+
  
-// PIR Module +===== Rezultate Obţinute =====
-int led LED_PIN +
-int sensor ​PIR_SENSOR;​ +
-int state LOW; +
-int val 0;+
  
-// Ultrasonic Sensor +==Testul Final al Implementarii Proiectului==
-const int trigPin ​5; +
-const int echoPin ​6; +
-long duration; +
-int distance;+
  
-// 240x320 LCD Display +Testul final a constat în verificarea funcționalității tuturor sistemelor integrate atât în circuitul din interiorul caseicât și în circuitul din exteriorul casei.
-Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CSTFT_DC, TFT_RST);+
  
-void setup() ​{ +{{ :​pm:​prj2024:​sseverin:​smart_home_system_test_final.jpeg?650 |}}
-  Serial.begin(9600);​+
  
-  pinMode(mq2Pin, INPUT);+==Rezultatul final (1- Interior ==
  
-  pinMode(led,​ OUTPUT); +{{ :​pm:​prj2024:​sseverin:​smart_home_system_fara_acoperis.jpeg?​650 |}}
-  pinMode(sensor,​ INPUT);+
  
-  pinMode(buzzer, OUTPUT);+==Rezultatul final (2- Exterior ==
  
-  lcd.init(); +{{ :​pm:​prj2024:​sseverin:​smart_home_system_cu_acoperis.jpeg?650 |}}
-  lcd.backlight();​ +
-  lcd.setCursor(0,​ 0); +
-  lcd.print("​Hello!"​);​ +
-  lcd.setCursor(0,​ 1); +
-  lcd.print("​Welcome Home!"​);​+
  
-  myservo1.attach(9);​ +===== Concluzii =====
-  myservo2.attach(10);​+
  
-  pinMode(trigPinOUTPUT); +"Smart Home System"​ reprezintă o metodă de integrare a diferitelor tehnologii pentru a îmbunătăți securitatea și confortul unei locuințe. Utilizând o varietate de senzori și componente electronicesistemul monitorizează și reacționează la diverse condiții din jurul caseiprecum și la cerințele celui care îl folosește.
-  pinMode(echoPinINPUT);+
  
-  tft.init(240320); +Implementarea oferă un sistem de securitate cuprinzător atât prin intermediul senzorilor care pot detecta mișcări nedorite în cadrul proprietății,​ cât și prin intermediul senzorului care activează sistemul automat de aerisire a casei. Integrarea ecranelor LCD permite afișarea în timp real a informațiilor relevante, facilitând utilizatorului monitorizarea constantă a stării sistemului. Controlul servomotoarelor și al altor dispozitive prin intermediul semnalelor PWM și al comunicației Bluetooth adaugă un nivel suplimentar de funcționalitate și flexibilitateDe asemeneasistemul demonstrează eficiența comunicării seriale pentru debug și control.
-  tft.fillScreen(ST77XX_BLACK);​+
  
-  tft.setCursor(010); +În concluzieacest proiect ilustrează cum tehnologia poate fi folosită pentru a crea soluții interconectate pentru securitatea și gestionarea unei locuințeoferind o bază solidă pentru extinderea și îmbunătățirea viitoarelor sisteme de automatizare casnică
-  tft.setTextColor(ST77XX_WHITEST77XX_BLACK);​ +===== Download & GitHub Repository =====
-  tft.setTextSize(2);​ +
-  ​tft.println("​Hello,​ ST7789!"​);​+
  
-  tft.drawRect(10,​ 50, 220, 40, ST77XX_RED);​ +<​note>​ 
- +Proiectul care constă în aplicație pentru dispozitive Androidcod sursă și alte resurse grafice sunt disponibile pe [[https://github.com/robert-nst/Smart-Home-System|GitHub]].
-  tft.fillCircle(120160, 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);​ +
-+
-</​code>​ +
- +
- +
-===== Rezultate Obţinute ===== +
- +
-<note tip> +
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+
 </​note>​ </​note>​
  
-===== Concluzii =====+<​note>​De asemenea, puteți descărca direct întreg conținutul proiectului accesând: {{:​pm:​prj2024:​sseverin:​smart-home-system.zip|}}</​note>​
  
-===== Download ===== 
  
-<note warning>​ +===== Bibliografie/​Resurse =====
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-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**. +==Resurse Software== 
-</note>+  ​https://​docs.arduino.cc/​learn/​microcontrollers/​analog-input/​ 
 +  ​https://​docs.arduino.cc/​learn/​microcontrollers/​analog-output/​ 
 +  ​https://www.arduino.cc/​reference/​en/​libraries/​liquidcrystal-i2c/ 
 +  ​https://​www.arduino.cc/​reference/​en/​libraries/​dht11/​ 
 +  ​https://​www.arduino.cc/​reference/​en/​language/​functions/​communication/​spi/​ 
 +  * https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-st7735-and-st7789-library/​ 
 +  ​https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-gfx-library/​ 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2023 
 +  ​https://ocw.cs.pub.ro/​courses/​pm/​lab/​lab1-2023 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2023 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab4-2023-2024 
 +  * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab5-2023-2024 
 +  ​https://ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024 
 +  * https://​ai2.appinventor.mit.edu/
  
-===== Jurnal ===== +==Resurse Hardware== 
- +  * https://​docs.arduino.cc/​learn/​electronics/​servo-motors/​ 
-<note tip> +  * https://​docs.arduino.cc/​learn/​electronics/​lcd-displays/​ 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului+  * https://​support.arduino.cc/​hc/​en-us/​articles/​4403050020114-Troubleshooting-PIR-Sensor-and-sensitivity-adjustment 
-</note> +  * https://​newbiely.com/​tutorials/​arduino-nano/​arduino-nano-gas-sensor 
- +  * https://​docs.arduino.cc/​learn/​communication/​bluetooth
-===== Bibliografie/Resurse ===== +  * https://​docs.arduino.cc/​learn/​electronics/​servo-motors/ 
- +  ​https://www.waveshare.com/​wiki/​2.4inch_LCD_Module 
-<​note>​ +  * https://​maxbotix.com/​blogs/​blog/​how-ultrasonic-sensors-work
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2024/sseverin/robert.nastase0609.1716491945.txt.gz · Last modified: 2024/05/23 22:19 by robert.nastase0609
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0