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/06 12:54]
florin.berchez [Introducere]
pm:prj2023:alexau:cat_water_dispenser [2023/05/30 08:24] (current)
florin.berchez [Descriere generală]
Line 1: Line 1:
 ====== Automatic cat drinking water dispenser ====== ====== Automatic cat drinking water dispenser ======
 +
 +<​note>​
 +  * **Nume**: [[florin.berchez@stud.acs.upb.ro|Florin-Razvan Berchez]]
 +  * **Grupa**: 332CB
 +</​note>​
 ===== Introducere ===== ===== Introducere =====
  
 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. 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. 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.
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<​note>​ +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). 
-TODO + 
-</​note>​+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.
  
 +{{:​pm:​prj2023:​alexau:​block_diagram_razvan.png?​700|}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<​note>​ +=== Hardware Diagram === 
-TODO + 
-</​note>​+{{:​pm:​prj2023:​alexau:​circuit_hardware_razvan.png?​600|}} 
 + 
 +=== Hardware Schematic === 
 + 
 +{{:​pm:​prj2023:​alexau:​hardware_schematic_razvan.png?​600|}} 
 + 
 +=== Components === 
 + 
 +  - Arduino UNO board 
 +  - Breadboard & wires 
 +  - HC-06 Bluetooth Module 
 +  - Single-channel 5v Relay Module 
 +  - 3v-6v Water Pump 
 +  - 3x 1.5v AA Batteries + Holder 
 +  - Water Level Sensor 
 +  - 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 =====
  
Line 28: Line 119:
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +[[https://​components101.com/​switches/​5v-single-channel-relay-module-pinout-features-applications-working-datasheet|5v Relay Explanation & Datasheet]] 
-TODO + 
-</note>+[[https://​www.instructables.com/​Tutorial-Using-HC06-Bluetooth-to-Serial-Wireless-U-1|HC-06 Bluetooth Module Guide]] 
 + 
 +[[https://​lastminuteengineers.com/​water-level-sensor-arduino-tutorial/​|Water Level Sensor Guide]] 
 + 
 +[[https://​www.robotique.tech/​robotics/​control-a-water-pump-by-arduino/|Water Pump Connection Guide]]
  
 <​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>​
  
pm/prj2023/alexau/cat_water_dispenser.1683366860.txt.gz · Last modified: 2023/05/06 12:54 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