Proiectul meu este un sistem de umplere automata a unui bol cu apa pentru animale de companie. Acesta re-umple bolul odata la o perioada setata, si pana la un anumit nivel al apei. De asemenea, cand sistemul intra in functiune trimite o notificare pe telefonul utilizatorului.
Ideea a pornit de la nevoia mea de a automatiza acest lucru, avand 2 pisici acasa. Consider ca sistemul ar fi de ajutor oricarui proprietar de pisici sau caini.
Proiectul foloseste o placa Arduino UNO pentru a comanda o pompa de apa odata la o perioada setata (pentru showcase probabil 30s-1min, in realitate ar fi la nivelul 1h-4h).
Legatura dintre pompa de apa si placa ar fi facuta printr-un relay module de 5v cu un channel. Pentru alimentarea pompei voi folosi 4 baterii tip AA (1.5v).
Pompa va umple un container de apa pana la un anumit nivel, informatie obtinuta cu ajutorul unui senzor de nivel al apei. De asemenea, cand este activata pompa, va fi trimisa o notificare la utilizator prin intermediul modulului de Wi-Fi.
#define PUMP_COMMAND 5 #define WLS_VCC 13 #define WLS_IN A0 int count = 0; ISR(TIMER1_COMPA_vect) { count = count + 1; if (count == 10) { int level = 0; Serial.println("Refilling bowl"); digitalWrite(WLS_VCC, HIGH); level = analogRead(WLS_IN); Serial.print("Starting level: "); Serial.println(level); while (level < 400) { digitalWrite(PUMP_COMMAND, HIGH); delay(10); level = analogRead(WLS_IN); } digitalWrite(PUMP_COMMAND, LOW); Serial.print("End level: "); Serial.println(level); digitalWrite(WLS_VCC, LOW); Serial.println("Done refilling"); count = 0; } } // Gonna have to count 10 times for ~ 45 seconds timer void configure_timer1() { TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A = 65535; // compare match register TCCR1B |= (1 << WGM12); // CTC mode TCCR1B |= (1 << CS12) | (1 << CS10); // 1024 prescaler } void init_timer1() { TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt } void setup() { pinMode(PUMP_COMMAND, OUTPUT); pinMode(WLS_VCC, OUTPUT); pinMode(WLS_IN, INPUT); Serial.begin(9600); Serial.println("Hello"); cli(); configure_timer1(); init_timer1(); sei(); } void loop() { }