Differences

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

Link to this comparison view

iothings:proiecte:2025sric:windowopener [2025/04/23 13:24]
matei.neaga
iothings:proiecte:2025sric:windowopener [2025/05/18 18:18] (current)
matei.neaga [Window opener, based on gas detection]
Line 4: Line 4:
   * Email: mateineaga@outlook.com,​ matei.neaga@stud.mec.upb.ro   * Email: mateineaga@outlook.com,​ matei.neaga@stud.mec.upb.ro
   * Master: IA   * Master: IA
 +
 +====== Introduction ======
 +
 +This project aims to build a setup based on a servomechanism and a sensor MQ-5, with the purpose of opening a window in case the gas concentration rises above a desired value.
 +
 +====== Context ======
 +
 +Block diagram of the project
 +
 +{{ :​iothings:​proiecte:​2025sric:​block-diagram-neaga-matei.png |}}
 +
 +Flowchart of the project
 +
 +{{ :​iothings:​proiecte:​2025sric:​flowchart-neaga-matei.png |}}
 +
 +
 +====== Hardware ======
 +  * ESP32 board
 +  * MQ-4 sensor, detecting SnO2
 +  * SG90 servomechanism
 +  * microusb - usb A cable
 +  * dupont cables
 +
 +====== Software ======
 +
 +Code snippets
 +
 +<code cpp>
 +#include <​WiFi.h>​
 +#include <​WebServer.h>​
 +#include <​ESP32Servo.h>​
 +
 +const char* ssid = "";​
 +const char* password = "";​
 +
 +#define ANALOG_PIN 34  // Pinul conectat la AO al senzorului MQ-4
 +#define SERVO_PIN 13   // Pinul conectat la servomotor
 +
 +int valoare_analogica = 0;
 +String nivelGaz = "";​
 +String culoareNivel = "​green";​
 +bool servoActiv = false;
 +bool modAutomat = true;
 +int pragActivare = 800;  ​
 +
 +Servo myservo;
 +</​code>​
 +
 +<code cpp>
 +void loop() {
 +  server.handleClient();​
 +  ​
 +  ​
 +  valoare_analogica = analogRead(ANALOG_PIN);​
 +  ​
 +  ​
 +  if (modAutomat) {
 +    if (valoare_analogica >= pragActivare && !servoActiv) {
 +      activeazaServo();​
 +    } else if (valoare_analogica < pragActivare && servoActiv) {
 +      dezactiveazaServo();​
 +    }
 +  }
 +  ​
 +  delay(100); ​
 +}
 +
 +// Funcție pentru activarea servomotorului
 +void activeazaServo() {
 +  myservo.write(90); ​
 +  servoActiv = true;
 +  Serial.println("​Servo activat!"​);​
 +}
 +
 +// Funcție pentru dezactivarea servomotorului
 +void dezactiveazaServo() {
 +  myservo.write(0); ​
 +  servoActiv = false;
 +  Serial.println("​Servo dezactivat!"​);​
 +}
 +
 +</​code>​
 +
 +====== Challenges ======
 +
 +Figuring out a way to design the webpage to allow me to switch the servomechanism to "​automated"​ or "​manual"​ mode.
 +
 +====== References ======
 +
 +-
iothings/proiecte/2025sric/windowopener.1745403897.txt.gz · Last modified: 2025/04/23 13:24 by matei.neaga
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