This is an old revision of the document!
Smart Pet Water Dispenser
Introducere
Soluție inovatoare concepută pentru a asigura confortul și sănătatea animalelor de companie prin furnizarea automatizată a apei proaspete. Acest dispozitiv utilizează tehnologii avansate pentru a monitoriza nivelul apei, a reumple rezervorul la nevoie și a oferi notificări în timp real către proprietari. Plecând de la ideea de a simplifica și automatiza procesul de aprovizionare cu apă pentru animalele de companie, proiectul își propune să ofere o soluție eficientă și inteligentă, atât pentru proprietari, cât și pentru animalele lor de companie.
Descriere generală
Hardware Design
Lista de piese:
Microcontroller (Arduino Uno sau Arduino Nano)
Senzor de nivel de apă
Pompă de apă submersibilă
Modul WiFi (ESP8266)
Modul RTC (Real-Time Clock)
Baterie sau sursă de alimentare
Senzor ultrasonic
Rezervor pentru apă
Conectori și fire pentru conexiuni
Conexiuni:
Senzor ultrasonic
VCC la 3.3V de la Arduino
GND la GND de la Arduino
Trig la pinul digital 9 de la Arduino
Echo la pinul digital 10 de la Arduino
Pompă de apă (controlată prin tranzistor)
Senzor de nivevl apa
Software Design
Mediu de Dezvoltare (IDE) : Arduino IDE
Librarii Utilizate:
Structura:
Librării și Constante:
Include librăriile necesare.
Definește credențialele WiFi, detaliile broker-ului MQTT, pinii senzorilor și variabilele globale.
Funcții:
setup_wifi(): Conectează ESP8266 la rețeaua WiFi specificată.
callback(char topic, byte payload, unsigned int length): Funcție de tip callback pentru procesarea mesajelor MQTT primite.
reconnect(): Reconectează la broker-ul MQTT dacă conexiunea este pierdută.
setup(): Inițializează comunicarea serială, WiFi, MQTT și pinii senzorilor.
loop(): Bucla principală care verifică conexiunea MQTT și verifică periodic prezența animalului de companie.
checkPetPresence(): Folosește senzorul ultrasonic pentru a detecta prezența unui animal și verifică nivelul apei dacă nu este detectat niciun animal.
readSensor(): Citește senzorul de nivel al apei și returnează citirea curentă.
Algoritmi Implementați
==Concepte Folosite
1. GPIO (General Purpose Input/Output)
* Pini de Senzori și Actuatori: Utilizarea pinilor GPIO pentru a controla senzorii și pompa de apă.
Pini Definiți:
`sensorPower` (pin 13): Controlul alimentării senzorului de nivel al apei.
`trigPin` (pin 12) și `echoPin` (pin 14): Controlul senzorului ultrasonic pentru măsurarea distanței.
`pumpPin` (pin 15): Controlul pompei de apă.
Operații GPIO:
2. UART (Universal Asynchronous Receiver-Transmitter)
* Comunicare Serială: Utilizarea interfeței seriale pentru a debuga și monitoriza activitatea sistemului.
3. ADC (Analog-to-Digital Converter)
* Citirea Senzorului de Nivel al Apei: Utilizarea pinului analogic pentru a citi valorile de la senzorul de nivel al apei.
4. Timere
* Managementul Timpului: Utilizarea funcțiilor de delay și millis pentru a gestiona temporizarea în sistem.
Operații cu Timere:
`delay()`: Introducerea unor întârzieri pentru stabilizarea senzorilor și activarea pompei.
`millis()`: Verificarea timpului scurs pentru a efectua verificări periodice ale senzorilor (de exemplu, verificarea prezenței animalului de companie la fiecare 5 secunde).
5. WiFi
* Conectivitate la Rețea: Utilizarea modulului WiFi integrat în ESP8266 pentru a conecta dispozitivul la o rețea WiFi și pentru a comunica cu broker-ul MQTT.
Operații WiFi:
`WiFi.begin(ssid, password)`: Inițierea conexiunii la rețeaua WiFi specificată prin SSID și parolă.
`WiFi.status()`: Verificarea stării conexiunii WiFi.
`WiFi.localIP()`: Obținerea adresei IP alocate dispozitivului în rețeaua locală.
6. MQTT (Message Queuing Telemetry Transport)
* Protocol pentru Comunicarea M2M: Utilizarea MQTT pentru transmiterea datelor între dispozitivele IoT și broker-ul MQTT.
Operații MQTT:
`client.setServer()`: Configurarea serverului MQTT.
`client.setCallback()`: Setarea funcției de callback pentru gestionarea mesajelor primite.
`client.connect()`: Conectarea la broker-ul MQTT.
`client.subscribe()`: Abonarea la un anumit topic MQTT.
`client.publish()`: Publicarea unui mesaj pe un topic MQTT.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Săptămâna | Sarcină | Descriere | |
21 Apr – 5 Mai | Documentare inițială | Cercetare privind componentele și soluțiile similare. | |
21 Apr – 5 Mai | Achiziționare componente | Achiziționarea microcontrolerului, senzorilor, pompei, etc. | |
21 Apr – 5 Mai | Prototipare hardware | Asamblarea circuitului pe breadboard. | |
13 Mai – 17 Mai | Programare inițială | Scrierea codului pentru citirea senzorilor și controlul pompei. | |
13 Mai – 17 Mai | Integrare senzori | Implementarea funcționalităților pentru senzorii de nivel și calitate a apei. | |
13 Mai – 17 Mai | Control PWM și întreruperi | Configurarea PWM pentru pompa de apă și întreruperilor pentru nivelul scăzut de apă. | |
17 Mai - 22 Mai | Testare și calibrare | Testarea sistemului și ajustarea parametrilor pentru funcționare optimă. |
17 Mai - 22 Mai | Documentare finală | Redactarea documentației pentru proiect. |
17 Mai - 22 Mai | Prezentare și revizuire | Prezentarea proiectului și revizuirea finală pe baza feedback-ului. |
Download
https://github.com/YANNICKKO/SmartWaterDispenser
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
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.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF