This shows you the differences between two versions of the page.
|
pm:prj2026:victor.stoica0203:stefan.gherghel [2026/05/18 12:38] stefan.gherghel [Software Design] |
pm:prj2026:victor.stoica0203:stefan.gherghel [2026/05/19 21:42] (current) stefan.gherghel [Bill of Materials] |
||
|---|---|---|---|
| Line 42: | Line 42: | ||
| * în cazul unei baterii descărcate (LED-ul RGB pulsează roșu). | * în cazul unei baterii descărcate (LED-ul RGB pulsează roșu). | ||
| - | **Mod automat (bazat pe umiditate)** | + | **Mod automat (bazat pe umiditate) - HUMIDITY** |
| În acest mod, sistemul realizează udarea în funcție de nivelul de umiditate al solului. | În acest mod, sistemul realizează udarea în funcție de nivelul de umiditate al solului. | ||
| Line 51: | Line 51: | ||
| - | **Mod periodic (pe bază de timp)** | + | **Mod periodic (pe bază de timp) - TIMED** |
| În acest mod, udarea se realizează la un interval regulat de timp, indiferent de valoarea umidității. | În acest mod, udarea se realizează la un interval regulat de timp, indiferent de valoarea umidității. | ||
| Line 60: | Line 60: | ||
| - | **Mod manual** | + | **Mod manual - MANUAL** |
| În acest mod, utilizatorul are control direct asupra pompei. | În acest mod, utilizatorul are control direct asupra pompei. | ||
| Line 67: | Line 67: | ||
| - | **Meniuri** | + | **Afișare** |
| Sunt prezente două tipuri de meniuri afișate pe ecranul OLED (schimbarea lor are loc prin apăsarea unui buton). | Sunt prezente două tipuri de meniuri afișate pe ecranul OLED (schimbarea lor are loc prin apăsarea unui buton). | ||
| - | * **Meniul principal:** afișează temperatura, nivelul umidității, modul de funcționare și tensiunea bateriei. | + | * **Ecran principal - STANDARD:** afișează temperatura, nivelul umidității, modul de funcționare și tensiunea bateriei. |
| - | * **Meniul de setări:** afișeaza listele de valori prestabilitate pentru intervalul de timp de udare și pragul de umiditate. Prin utilizarea a doua butoane se pot seta noile valori. | + | * **Ecranul de setări - MENU:** afișeaza listele de valori prestabilitate pentru intervalul de timp de udare și pragul de umiditate. Prin utilizarea a doua butoane se pot seta noile valori. |
| + | |||
| + | Al treilea ecran - **WATERING** - este afișat atunci când display-ul nu este în Standby și are loc o udare. | ||
| **Standby** | **Standby** | ||
| Line 92: | Line 94: | ||
| | Senzor nivel lichid | 1 | [[https://sigmanortec.ro/Senzor-nivel-apa-lichid-p125423486|Link]]|1.78 | | | Senzor nivel lichid | 1 | [[https://sigmanortec.ro/Senzor-nivel-apa-lichid-p125423486|Link]]|1.78 | | ||
| | Breadboard | 1 | [[https://sigmanortec.ro/Breadboard-830-puncte-MB-102-p125923983?SubmitCurrency=1&id_currency=2&gad_source=1&gad_campaignid=23069763085&gbraid=0AAAAAC3W72PBuF6Df89seiG5IBgyKFSyA&gclid=CjwKCAjw5NvPBhAoEiwA_2egfvnjWx796G7XdKClzlANxI8qtKPl7Z6DwUZmnwgj5yPg7DoV3nerURoCL4oQAvD_BwE| Link]] |11.30 | | | Breadboard | 1 | [[https://sigmanortec.ro/Breadboard-830-puncte-MB-102-p125923983?SubmitCurrency=1&id_currency=2&gad_source=1&gad_campaignid=23069763085&gbraid=0AAAAAC3W72PBuF6Df89seiG5IBgyKFSyA&gclid=CjwKCAjw5NvPBhAoEiwA_2egfvnjWx796G7XdKClzlANxI8qtKPl7Z6DwUZmnwgj5yPg7DoV3nerURoCL4oQAvD_BwE| Link]] |11.30 | | ||
| - | | Buton PCB | 3 | [[https://sigmanortec.ro/buton-mini-6x6x5-4-pini?SubmitCurrency=1&id_currency=2&gad_source=1&gad_campaignid=23069763085&gbraid=0AAAAAC3W72PBuF6Df89seiG5IBgyKFSyA&gclid=CjwKCAjw5NvPBhAoEiwA_2egfmsItqpvT16gITwAPm81dIsD8kGZn3W0oWMjqXBfd4HNz3I-ESa7sxoCvIkQAvD_BwE| Link]]|0.36 | | + | | Buton PCB | 4 | [[https://sigmanortec.ro/buton-mini-6x6x5-4-pini?SubmitCurrency=1&id_currency=2&gad_source=1&gad_campaignid=23069763085&gbraid=0AAAAAC3W72PBuF6Df89seiG5IBgyKFSyA&gclid=CjwKCAjw5NvPBhAoEiwA_2egfmsItqpvT16gITwAPm81dIsD8kGZn3W0oWMjqXBfd4HNz3I-ESa7sxoCvIkQAvD_BwE| Link]]|0.36 | |
| | LED RGB | 1 | [[https://sigmanortec.ro/LED-RGB-5mm-4-pini-Anod-comun-p126008495| Link]]|1.51 | | | LED RGB | 1 | [[https://sigmanortec.ro/LED-RGB-5mm-4-pini-Anod-comun-p126008495| Link]]|1.51 | | ||
| | Suport 4AA | 1 | [[https://sigmanortec.ro/Suport-4-baterii-AA-cu-capac-si-intrerupator-p172447738 | Link]]|6.34 | | | Suport 4AA | 1 | [[https://sigmanortec.ro/Suport-4-baterii-AA-cu-capac-si-intrerupator-p172447738 | Link]]|6.34 | | ||
| | Fire Dupont 10cm Tata-Tata |TBD | [[https://sigmanortec.ro/40-fire-Dupont-10cm-Tata-Tata-p210856288 | Link]]|0.15| | | Fire Dupont 10cm Tata-Tata |TBD | [[https://sigmanortec.ro/40-fire-Dupont-10cm-Tata-Tata-p210856288 | Link]]|0.15| | ||
| | Fire Dupont 20cm Tata-Mama |TBD | [[https://sigmanortec.ro/40-Fire-Dupont-20cm-Tata-Mama-p210854317 | Link]]|0.25| | | Fire Dupont 20cm Tata-Mama |TBD | [[https://sigmanortec.ro/40-Fire-Dupont-20cm-Tata-Mama-p210854317 | Link]]|0.25| | ||
| - | | Rezistență 470 | 3 | [[https://sigmanortec.ro/Rezistor-p126025265| Link]]|0.15 | | + | | Rezistență 470 | 2 | [[https://sigmanortec.ro/Rezistor-p126025265| Link]]|0.15 | |
| | Diodă 1N4007 | 1 | [[https://www.optimusdigital.ro/ro/componente-electronice-diode/7457-dioda-1n4007.html?search_query=dioda+1n4007&results=3| Link]]|0.49 | | | Diodă 1N4007 | 1 | [[https://www.optimusdigital.ro/ro/componente-electronice-diode/7457-dioda-1n4007.html?search_query=dioda+1n4007&results=3| Link]]|0.49 | | ||
| | Rezistență 10k | 2 | [[https://sigmanortec.ro/Rezistor-p126025265| Link]]|0.15 | | | Rezistență 10k | 2 | [[https://sigmanortec.ro/Rezistor-p126025265| Link]]|0.15 | | ||
| Line 105: | Line 107: | ||
| ==== Schema electrică ==== | ==== Schema electrică ==== | ||
| - | {{ :pm:prj2026:victor.stoica0203:final_scheme_gherghel.png?600 }} | + | {{ :pm:prj2026:victor.stoica0203:final_scheme_gherghel_2.png?600 }} |
| ==== Pinout (principale conexiuni) ==== | ==== Pinout (principale conexiuni) ==== | ||
| Line 135: | Line 137: | ||
| ^ Pin componentă ^ Pin arduino ^Pin microcontroller ^ Mențiuni ^ | ^ Pin componentă ^ Pin arduino ^Pin microcontroller ^ Mențiuni ^ | ||
| | Anod | 5V | | | | | Anod | 5V | | | | ||
| - | | Red | 11 | PB3 | PWM | | + | | Red | 10 | PB2 | PWM | |
| - | | Green | 10 | PB2 | PWM | | + | |
| | Blue | 9 | PB1 | PWM | | | Blue | 9 | PB1 | PWM | | ||
| Line 189: | Line 190: | ||
| **Biblioteci utilizate:** | **Biblioteci utilizate:** | ||
| - | * Adafruit_GFX | + | * ''Adafruit_GFX'' |
| - | * Adafruit_SSD1306 - oferă funcții optimizate pentru afișarea a diferite forme geometrice și a bitmap-urilor. | + | * ''Adafruit_SSD1306'' - oferă funcții optimizate pentru afișarea a diferite forme geometrice și a bitmap-urilor. |
| - | * EEPROM - oferă metoda ''update()'' pentru a prevenii scrierile redundante. | + | *'' EEPROM'' - oferă metoda ''update()'' pentru a preveni scrierile redundante. |
| **Funcționare:** | **Funcționare:** | ||
| Line 211: | Line 212: | ||
| * **Interacțiunea cu utilizatorul:** | * **Interacțiunea cu utilizatorul:** | ||
| * Întreruperile sunt configurate cu regiștrii iar cele externe sunt pe frontul descrescător. | * Întreruperile sunt configurate cu regiștrii iar cele externe sunt pe frontul descrescător. | ||
| - | * Pentru evitarea declanșărilor neintenționate este utilizată variabila ''lastRelayCommand''. | + | * Pentru evitarea declanșărilor neintenționate este utilizată variabila ''lastRelayCommand'' în interiorul ISR. |
| * ''INT0 - BTN1'': Schimbă modul de funcționare în ecranul ''STANDARD'' sau selectează parametrul de modificat în ecranul ''MENIU''. | * ''INT0 - BTN1'': Schimbă modul de funcționare în ecranul ''STANDARD'' sau selectează parametrul de modificat în ecranul ''MENIU''. | ||
| * ''INT1 - BTN2'': Incrementează ciclic indexul pragului de umiditate sau al intervalului de timp în ecranul ''MENIU''. | * ''INT1 - BTN2'': Incrementează ciclic indexul pragului de umiditate sau al intervalului de timp în ecranul ''MENIU''. | ||
| Line 221: | Line 222: | ||
| * Prin intermediul funcției ''updateEEPROM()'', stările curente ale variabilelor - ''mode'', ''humidityIndex'' și ''timedIndex'' - sunt salvate automat în memorie (''EEPROM_MODE_ADDR'', ''EEPROM_HUMIDITY_ADDR'', ''EEPROM_TIMED_ADDR''). Această scriere se efectuează doar în momentul în care utilizatorul părăsește ecranul de ''MENIU'' sau când sistemul intră automat în starea de ''Standby'', utilizând metoda ''EEPROM.update()'' pentru a scrie datele doar dacă acestea s-au modificat. | * Prin intermediul funcției ''updateEEPROM()'', stările curente ale variabilelor - ''mode'', ''humidityIndex'' și ''timedIndex'' - sunt salvate automat în memorie (''EEPROM_MODE_ADDR'', ''EEPROM_HUMIDITY_ADDR'', ''EEPROM_TIMED_ADDR''). Această scriere se efectuează doar în momentul în care utilizatorul părăsește ecranul de ''MENIU'' sau când sistemul intră automat în starea de ''Standby'', utilizând metoda ''EEPROM.update()'' pentru a scrie datele doar dacă acestea s-au modificat. | ||
| * **Temporizare:** | * **Temporizare:** | ||
| - | * Pentru gestionarea intervalelor de timp în bucla principală este apelat ''millis()'', rezultatul fiind salvat în variabila ''currentMillis'' care este folosită de restul funcțiilor (și de ISR-uri). | + | * Pentru gestionarea intervalelor de timp este folosit un timer software implementat cu ajutorul ''Timer2'' configurat în modul ''CTC'', întreruperea ''TIMER2_COMPA_vect'' incrementând variabila ''currentMillis'' la 1ms. |
| * **PWM:** | * **PWM:** | ||
| - | * Pentru PWM pe LED-ul RGB este folosită funcția din biblioteca Arduino ''analogWrite()''. | + | * Pentru PWM pe LED-ul RGB este folosit PWM hardware configurat prin ''Timer1'' (Fast PWM) pe canalele ''OC1A'' și ''OC1B''. |
| **Calibrare senzori:** | **Calibrare senzori:** | ||
| Line 235: | Line 236: | ||
| * **PWM:** obținerea efectului de luminozitate variabilă pe LED-ul RGB. | * **PWM:** obținerea efectului de luminozitate variabilă pe LED-ul RGB. | ||
| * **Întreruperi:** evitarea polling-ului pe butoane. | * **Întreruperi:** evitarea polling-ului pe butoane. | ||
| - | * **Timere:** funcția ''millis()'' folosește intern ''Timer0'' iar aceasta este folosită pentru temporizare. | + | * **Timere:** se utilizează ''Timer2'' pentru obținerea unei funcționalități echivalente cu ''millis()''. |
| ** Element de noutate **: Combinarea celor trei moduri de funcționare diferite. | ** Element de noutate **: Combinarea celor trei moduri de funcționare diferite. | ||
| Line 259: | Line 260: | ||
| <html> | <html> | ||
| <center></html> | <center></html> | ||
| - | **Ecran MENIU** | + | **Ecran MENU** |
| <html> | <html> | ||
| </center></html> | </center></html> | ||
| - | {{ :pm:prj2026:victor.stoica0203:display_3_gherghel.jpeg?200 | Ecran MENIU}} | + | {{ :pm:prj2026:victor.stoica0203:display_3_gherghel.jpeg?200 | Ecran MENU}} |
| <html> | <html> | ||
| Line 295: | Line 296: | ||
| * 11.05.2026 - Toate conexiunile sunt realizate dar am stricat pompa (funcționează doar uneori). | * 11.05.2026 - Toate conexiunile sunt realizate dar am stricat pompa (funcționează doar uneori). | ||
| * 17.05.2026 - Finalizare software. Videoclipuri realizate. Rupt picior senzor LM35. | * 17.05.2026 - Finalizare software. Videoclipuri realizate. Rupt picior senzor LM35. | ||
| + | * 19.05.2026 - Realizat PWM și millis() cu regiștrii. | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||