This shows you the differences between two versions of the page.
pm:prj2025:ccristi:alex.moldoveanu0510 [2025/05/27 10:33] alex.moldoveanu0510 |
pm:prj2025:ccristi:alex.moldoveanu0510 [2025/05/30 09:10] (current) alex.moldoveanu0510 [Software Design] |
||
---|---|---|---|
Line 47: | Line 47: | ||
{{:pm:prj2025:ccristi:poza.png|}} | {{:pm:prj2025:ccristi:poza.png|}} | ||
+ | |||
+ | Mai jos se ragaseste o poza hardware a proiectului: | ||
+ | |||
+ | {{:pm:prj2025:ccristi:poza3.png?300|}} | ||
+ | |||
+ | De asemenea si un video demonstrativ: | ||
+ | |||
+ | https://youtu.be/8lZL-eniPDA | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 55: | Line 63: | ||
Am utilizat SoftwareSerial si DFRobotDFPlayerMini drept biblioteci. | Am utilizat SoftwareSerial si DFRobotDFPlayerMini drept biblioteci. | ||
+ | <code> | ||
#include "Arduino.h" | #include "Arduino.h" | ||
#include "SoftwareSerial.h" | #include "SoftwareSerial.h" | ||
#include "DFRobotDFPlayerMini.h" | #include "DFRobotDFPlayerMini.h" | ||
+ | #include "LiquidCrystal_I2C.h" | ||
+ | |||
+ | // LCD pe adresa 0x27, cu 16 coloane si 2 randuri | ||
+ | |||
+ | LiquidCrystal_I2C lcd(0x27, 16, 2); | ||
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX | SoftwareSerial mySoftwareSerial(10, 11); // RX, TX | ||
DFRobotDFPlayerMini myDFPlayer; | DFRobotDFPlayerMini myDFPlayer; | ||
+ | |||
void printDetail(uint8_t type, int value); | void printDetail(uint8_t type, int value); | ||
+ | |||
int play_in_progress=0; // if = 1 then player is working | int play_in_progress=0; // if = 1 then player is working | ||
+ | |||
const int buttonPin = 2; | const int buttonPin = 2; | ||
const int buttonPin2 = 7; | const int buttonPin2 = 7; | ||
- | const int relayPin = 4; | + | const int relayPin = 2; |
int buttonState = 0; | int buttonState = 0; | ||
Line 86: | Line 103: | ||
digitalWrite(relayPin, HIGH); | digitalWrite(relayPin, HIGH); | ||
| | ||
- | Serial.println(F("Bun venit!")); | + | lcd.begin(); |
+ | lcd.backlight(); | ||
+ | lcd.clear(); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Sistem activ"); | ||
myDFPlayer.begin(mySoftwareSerial); | myDFPlayer.begin(mySoftwareSerial); | ||
Line 110: | Line 131: | ||
digitalWrite(relayPin, HIGH); | digitalWrite(relayPin, HIGH); | ||
+ | |||
+ | lcd.begin(); | ||
+ | lcd.backlight(); | ||
+ | lcd.clear(); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Sistem activ"); | ||
+ | | ||
} | } | ||
Line 127: | Line 155: | ||
if (waterSensor < 100 && lightSensor < 50) { | if (waterSensor < 100 && lightSensor < 50) { | ||
digitalWrite(relayPin, LOW); | digitalWrite(relayPin, LOW); | ||
+ | |||
+ | lcd.clear(); | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Udare automata"); | ||
+ | |||
delay(2000); | delay(2000); | ||
digitalWrite(relayPin, HIGH); | digitalWrite(relayPin, HIGH); | ||
Line 141: | Line 174: | ||
manual_watering(); | manual_watering(); | ||
} | } | ||
- | } | + | } |
+ | </code> | ||
+ | <code> | ||
+ | setup() – initializeaza comunicarea seriala, seteaza pinii si porneste modulul audio DFPlayer. | ||
+ | |||
+ | music_switch() – comuta intre redarea si oprirea muzicii in functie de starea curenta. | ||
+ | |||
+ | manual_watering() – activeaza pompa atata timp cat butonul de udare manuala este apasat. | ||
+ | |||
+ | loop() – ruleaza continuu, citeste senzorii, ajusteaza volumul, face udarea automata si gestioneaza actiunile butoanelor. | ||
+ | </code> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 148: | Line 191: | ||
Care au fost rezultatele obţinute în urma realizării proiectului vostru. | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
</note> | </note> | ||
+ | |||
+ | Irigarea s-a realizat automat in functie de umiditatea solului, un senzor analogic declansand pornirea unei pompe de apa printr-un releu, la sesizarea lipsei de lumina data de la fotorezistenta. | ||
+ | |||
+ | Dupa udare, utilizatorul a fost notificat sonor printr-o melodie redata de un buzzer (+ vizual pe LCD). | ||
+ | |||
+ | Sistemul a functionat stabil, fara blocaje, cu afisari corecte si control fiabil al releului, optimizat printr-o logica eficienta de initializare. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul propus ofera o solutie practica si eficienta pentru monitorizarea si udarea automata a plantelor, fara ca utilizatorul sa intervina zilnic. Prin folosirea senzorilor si a componentelor de afisare si control, sistemul poate gestiona parametri importanti precum umiditatea solului, temperatura si nivelul apei. | ||
+ | |||
+ | Proiectul este usor de refacut, adaptabil si poate fi extins. Desi a fost gandit pentru plante de apartament, structura modulara permite folosirea lui si in aplicatii mai complexe, inclusiv in sisteme IoT. | ||
===== Download ===== | ===== Download ===== | ||
Line 173: | Line 225: | ||
<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> | ||
+ | |||
+ | - Pentru modulul MP3: https://www.instructables.com/Tutorial-of-MP3-TF-16P/ | ||
+ | Cat si datasheetul: https://www.electronicoscaldas.com/datasheet/DFR0299-DFPlayer-Mini-Manual.pdf?srsltid=AfmBOopRyqEZlLLECGWZad9qkzdOQHsyO3ZfRmh8OgPTLugA3A6b7Q1f | ||
+ | |||
+ | - Releu datasheet: https://www.electronicoscaldas.com/datasheet/DFR0299-DFPlayer-Mini-Manual.pdf?srsltid=AfmBOopRyqEZlLLECGWZad9qkzdOQHsyO3ZfRmh8OgPTLugA3A6b7Q1f | ||
+ | |||
+ | - ALPHA TEST: displayul LCD: https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html?search_query=lcd+&results=215 | ||
+ |