Differences

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

Link to this comparison view

pm:prj2023:alexau:cat_water_dispenser [2023/05/07 19:21]
florin.berchez [Hardware Design]
pm:prj2023:alexau:cat_water_dispenser [2023/05/30 08:24] (current)
florin.berchez [Descriere generală]
Line 14: Line 14:
 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). 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 ​baterii tip AA (1.5v). ​+Legatura dintre pompa de apa si placa ar fi facuta printr-un relay module de 5v cu un channel. Pentru alimentarea pompei voi folosi ​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. 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.
Line 21: Line 21:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-=== Hardware ​diagram ​===+=== Hardware ​Diagram ​===
  
 {{:​pm:​prj2023:​alexau:​circuit_hardware_razvan.png?​600|}} {{:​pm:​prj2023:​alexau:​circuit_hardware_razvan.png?​600|}}
Line 39: Line 39:
   - Water Level Sensor   - Water Level Sensor
   - 1k and 2k resistors   - 1k and 2k resistors
 +
 +=== Physical hardware ===
 +
 +{{:​pm:​prj2023:​alexau:​circuit_fizic.jpeg?​600|}}
  
 ===== Software Design ===== ===== Software Design =====
  
-===== Rezultate Obţinute =====+<​code>​ 
 +#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() {
 +  ​
 +}
 +</​code>​
 +===== Rezultate Obţinute =====
 +[[https://​youtube.com/​shorts/​IWTUQnzX_lU?​feature=share|Demo proiect]]
 ===== Concluzii ===== ===== Concluzii =====
  
pm/prj2023/alexau/cat_water_dispenser.1683476484.txt.gz · Last modified: 2023/05/07 19:21 by florin.berchez
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