This is an old revision of the document!
Autor: Belibova Daniela
Grupa: 333CD
Îndrumător: Ionuț Oțelea
Componente:
Interacțiunea componentelor:
Arduino acționează ca centru de control, procesând datele de la senzori și luând decizii în funcție de acestea. Prin intermediul interacțiunii între componente, sistemul oferă o soluție automată și inteligentă pentru udarea și monitorizarea plantelor, asigurându-le un mediu de creștere adecvat și reducând intervenția umană necesară pentru îngrijirea lor.
Lista de piese
Schema Hardware
Schema Electrica
Mediu de dezvoltare Codul aplicației este dezvoltat folosind platforma Arduino IDE, care oferă un mediu integrat pentru scrierea, compilarea și încărcarea codului pe microcontrolerele Arduino. Platforma Arduino IDE este bine adaptată pentru dezvoltarea rapidă a prototipurilor și simplifică procesul de programare prin furnizarea unei biblioteci extinse și a unui mediu de dezvoltare ușor de utilizat.
Hardware utilizat Proiectul folosește o placă Arduino Uno, care este bine potrivită pentru acest tip de aplicație datorită numărului suficient de pini de intrare/ieșire digitală și analogică, precum și datorită suportului larg din partea comunității și a documentației extinse disponibile.
Librării şi surse 3rd-party Codul folosește următoarele librării externe:
Algoritmi şi structuri implementate
Descriere pe scurt a fiecărei funcții
void checkBMP280() { float temperature = bmp.readTemperature(); float pressure = bmp.readPressure() / 100.0F; Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C"); Serial.print("Pressure: "); Serial.print(pressure); Serial.println(" hPa"); lcd.setCursor(0, 0); lcd.print(temperature); lcd.print("C "); lcd.print(pressure); lcd.print("hPa"); }
void checkWater() { digitalWrite(Trig, LOW); delayMicroseconds(1); digitalWrite(Trig, HIGH); delayMicroseconds(11); digitalWrite(Trig, LOW); Duration = pulseIn(Echo, HIGH); if (Duration > 0) { Distance = (Duration / 2.0); Distance = Distance*340*100/1000000; Serial.print("Distance: "); Serial.print(Distance); Serial.println(" cm"); if (Distance > 4) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } }
void checkMoisture() { int moisture = analogRead(A0); if(moisture <= 300) { water_count++; if(water_count == 3) { watering(); water_count = 0; } } Serial.print("Moisture Sensor Value: "); Serial.println(moisture); lcd.setCursor(0, 1); lcd.print("Moisture: "); lcd.print(moisture); lcd.print(" "); }
void watering() { digitalWrite(relay, LOW); delay(3000); digitalWrite(relay, HIGH); delay(1000); completeWatering(); counter++; }
void completeWatering() { lcd.setCursor(0, 0); lcd.print(" Thank You! "); lcd.setCursor(0, 1); lcd.print(" (^0^)/ "); tone(PIN, DO, BEAT); // C delay(BEAT); tone(PIN, RE, BEAT); // D delay(BEAT); tone(PIN, MI, 1200); // E delay(BEAT); delay(BEAT); delay(BEAT); tone(PIN, RE, BEAT); // D delay(BEAT); tone(PIN, DO, BEAT); // C delay(BEAT); delay(BEAT); tone(PIN, DO, BEAT); // C delay(BEAT); tone(PIN, RE, BEAT); // D delay(BEAT); tone(PIN, MI, BEAT); // E delay(BEAT); tone(PIN, RE, BEAT); // D delay(BEAT); tone(PIN, DO, BEAT); // C delay(BEAT); tone(PIN, RE, 1200); // D delay(BEAT); delay(BEAT); delay(4400); lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); int moisture = analogRead(A0); lcd.setCursor(0, 1); lcd.print("Moisture: "); lcd.print(moisture); }
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.