This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:yannick.koning [2024/05/25 21:07] yannick.koning [Software Design] |
pm:prj2024:ccontasel:yannick.koning [2024/05/26 20:11] (current) yannick.koning [Hardware Design] |
||
---|---|---|---|
Line 16: | Line 16: | ||
* Modul RTC (Real-Time Clock) | * Modul RTC (Real-Time Clock) | ||
* Baterie sau sursă de alimentare | * Baterie sau sursă de alimentare | ||
- | * Carcasă pentru protejarea componentelor | + | * Senzor ultrasonic |
* Rezervor pentru apă | * Rezervor pentru apă | ||
* Conectori și fire pentru conexiuni | * Conectori și fire pentru conexiuni | ||
</note> | </note> | ||
- | {{schema_electrica_water_disp.png}} | + | {{schema_electrica_water_disp.png?769}} |
<note tip> | <note tip> | ||
Conexiuni: | Conexiuni: | ||
- | Senzor de nivel al apei (HC-SR04) | + | Senzor ultrasonic |
* VCC la 3.3V de la Arduino | * VCC la 3.3V de la Arduino | ||
Line 38: | Line 38: | ||
*B (bază) de la tranzistor NPN printr-o rezistență de 220Ω la pinul digital 3 de la Arduino (PWM) | *B (bază) de la tranzistor NPN printr-o rezistență de 220Ω la pinul digital 3 de la Arduino (PWM) | ||
- | Senzor de calitate a apei (turbiditate) | + | Senzor de nivevl apa |
*VCC la 3.3V de la Arduino | *VCC la 3.3V de la Arduino | ||
Line 85: | Line 85: | ||
* Pornește pompa dacă nivelul apei este prea scăzut. | * Pornește pompa dacă nivelul apei este prea scăzut. | ||
* Trimite un mesaj MQTT dacă pompa a fost activată de mai multe ori. | * Trimite un mesaj MQTT dacă pompa a fost activată de mai multe ori. | ||
+ | |||
+ | ===== 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**: | ||
+ | * `pinMode()`: Setarea modului pinilor ca intrare sau ieșire. | ||
+ | * `digitalWrite()`: Scrierea valorilor HIGH sau LOW pe pini pentru a controla senzorii și pompa. | ||
+ | |||
+ | **2. UART (Universal Asynchronous Receiver-Transmitter)** | ||
+ | * **Comunicare Serială**: Utilizarea interfeței seriale pentru a debuga și monitoriza activitatea sistemului. | ||
+ | * **Operații UART**: | ||
+ | * `Serial.begin(9600)`: Inițializarea comunicării seriale la o viteză de 9600 bps. | ||
+ | * `Serial.print()` și `Serial.println()`: Trimiterea mesajelor și datelor către monitorul serial pentru diagnosticare. | ||
+ | |||
+ | **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. | ||
+ | * **Operații ADC**: | ||
+ | * `analogRead(sensorPin)`: Citirea valorii analogice de la pinul senzorului pentru a determina nivelul 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. | ||
+ | |||
Line 90: | Line 136: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Codul trebuie modificat pentru a schimba refill-ul cu formula 10 umpleri/L. |
+ | |||
+ | |||
+ | **Video cum functioneaza**: | ||
+ | https://drive.google.com/file/d/1RldX3eXIpAgX2A6bU9fj-tDBX_Kzxtoz/view?usp=sharing | ||
</note> | </note> | ||
Line 102: | Line 152: | ||
| 13 Mai – 17 Mai | Integrare senzori | Implementarea funcționalităților pentru senzorii de nivel și calitate a apei. | | | 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ă. | | | 13 Mai – 17 Mai | Control PWM și întreruperi | Configurarea PWM pentru pompa de apă și întreruperilor pentru nivelul scăzut de apă. | | ||
- | | | Testare și calibrare | Testarea sistemului și ajustarea parametrilor pentru funcționare optimă. || | + | | 17 Mai - 22 Mai | Testare și calibrare | Testarea sistemului și ajustarea parametrilor pentru funcționare optimă. || |
- | | | Documentare finală | Redactarea documentației pentru proiect. || | + | | 17 Mai - 22 Mai | Documentare finală | Redactarea documentației pentru proiect. || |
- | | | Prezentare și revizuire | Prezentarea proiectului și revizuirea finală pe baza feedback-ului. || | + | | 17 Mai - 22 Mai | Prezentare și revizuire | Prezentarea proiectului și revizuirea finală pe baza feedback-ului. || |
Line 111: | Line 161: | ||
https://github.com/YANNICKKO/SmartWaterDispenser | https://github.com/YANNICKKO/SmartWaterDispenser | ||
- | <note warning> | ||
- | 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**. | ||
- | </note> | ||
- | ===== Jurnal ===== | + | ===== Bibliografie/Resurse ===== |
- | <note tip> | + | Biblioteci: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * https://github.com/knolleary/pubsubclient |
- | </note> | + | * https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFi.h |
- | ===== Bibliografie/Resurse ===== | + | Software: |
+ | * https://ocw.cs.pub.ro/courses/iothings/laboratoare/lab7 | ||
+ | * https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/ | ||
+ | * https://lastminuteengineers.com/water-level-sensor-arduino-tutorial/ | ||
- | <note> | + | Hardware: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://www.adafruit.com/product/2821 |
- | </note> | + | |
<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> | ||