This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.jipa2803:ema_ioana.banescu [2026/05/22 01:02] ema_ioana.banescu [Software Design] |
pm:prj2026:alexandru.jipa2803:ema_ioana.banescu [2026/05/25 03:15] (current) ema_ioana.banescu [Bibliografie] |
||
|---|---|---|---|
| Line 81: | Line 81: | ||
| ===== Poză cu sistemul ===== | ===== Poză cu sistemul ===== | ||
| - | {{https://i.imgur.com/8D1D1aN.jpeg?700| Fotografie cu sistemul}} | + | {{https://i.imgur.com/kdkKjA9.jpeg?700| Fotografie cu sistemul}} |
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 113: | Line 113: | ||
| | <stdlib.h> | funcții auxiliare standard | | <stdlib.h> | funcții auxiliare standard | ||
| === Funcționalități implementate din laboratoare === | === Funcționalități implementate din laboratoare === | ||
| - | |||
| - | === Arhitectura software === | ||
| Sistemul utilizează concepte din mai multe laboratoare: | Sistemul utilizează concepte din mai multe laboratoare: | ||
| Line 125: | Line 123: | ||
| - Întreruperi | - Întreruperi | ||
| - I2C | - I2C | ||
| + | |||
| + | === Arhitectura software === | ||
| * Sistemul utilizează o arhitectură software modulară, construită în jurul unui scheduler, al unor task-uri periodice independente. Spre deosebire de o implementare clasică bazată pe delay(), aplicația folosește o abordare non-blocantă, în care fiecare funcționalitate rulează independent, la intervale regulate de timp, folosind un timer hardware și funcția uptime_ms(). | * Sistemul utilizează o arhitectură software modulară, construită în jurul unui scheduler, al unor task-uri periodice independente. Spre deosebire de o implementare clasică bazată pe delay(), aplicația folosește o abordare non-blocantă, în care fiecare funcționalitate rulează independent, la intervale regulate de timp, folosind un timer hardware și funcția uptime_ms(). | ||
| Line 130: | Line 130: | ||
| * Această abordare mi-a permis să rulez simultan mai multor componente ale sistemului fără blocarea microcontrollerului. Astfel, sistemul poate: | * Această abordare mi-a permis să rulez simultan mai multor componente ale sistemului fără blocarea microcontrollerului. Astfel, sistemul poate: | ||
| - | - citi periodic senzorii | + | - citi periodic senzorii \\ |
| - | - actualiza afișajul LCD | + | - actualiza afișajul LCD \\ |
| - | - controla pompa și ventilatorul | + | - controla pompa și ventilatorul \\ |
| - | - procesa comenzile Bluetooth | + | - procesa comenzile Bluetooth \\ |
| - | - detecta apăsările butonului | + | - detecta apăsările butonului \\ |
| - | - trimite informații către aplicația Android. | + | - trimite informații către aplicația Android. \\ |
| + | \\ | ||
| * În centrul sistemului se află Timer0, configurat în modul CTC (Clear Timer on Compare Match), care generează întreruperi periodice și incrementează variabila globală g_millis. Această variabilă este utilizată pentru sincronizarea tuturor task-urilor sistemului. | * În centrul sistemului se află Timer0, configurat în modul CTC (Clear Timer on Compare Match), care generează întreruperi periodice și incrementează variabila globală g_millis. Această variabilă este utilizată pentru sincronizarea tuturor task-urilor sistemului. | ||
| Line 306: | Line 307: | ||
| - | ===== Rezultate obținute ===== | + | |
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | În cadrul acestui proiect am realizat un sistem inteligent pentru monitorizare și irigarea automată a plantelor, lucru foarte util pentru mine și care în același timp a putut fi transformat într-un proiect destul de complex. Proiectul combină partea hardware cu partea software, integrează senzori, actuatoare, dar și o comunicație Bluetooth care face legătura dintre o aplicația mobile și sistem. | ||
| + | |||
| + | Pe parcursul dezvoltării m-am distrat foarte mult experimentând cu partea hardware - partea care mi s-a părut și cea mai interesantă, întrucât a fost prima dată când am avut ocazia să implementez de la zero un sistem embedded complet și să văd efectiv cum toate componentele ajung să funcționeze împreună. Mi s-a părut foarte satisfăcător momentul în care am reușit să controlez pompa, ventilatorul și LCD-ul direct prin microcontroller și să observ cum sistemul reacționează în timp real la datele venite de la senzori. În același timp, proiectul m-a ajutat să înțeleg mult mai bine conceptele din cadrul laboratoarelor și să văd cum se leagă împreună într-un sistem unitar. | ||
| + | |||
| + | Deși pe parcurs au existat și probleme legate de conexiunile hardware (în sepcial la partea bluetooth, dar și în ceea ce privește asigurarea unei funționări corecte d.p.d.v. hardware a pompei submersibile și a motorului DC) și de calibrarea senzorilor, tocmai aceste challenge-uri au făcut proiectul să fie interesant. | ||
| + | |||
| + | Aș vrea să extind proiectul prin adăugarea unui modul Wi-Fi și a unui server web, care să vină ca alternativă la aplicația mobilă curentă. | ||
| ===== Cod sursă - GitHub Repository ===== | ===== Cod sursă - GitHub Repository ===== | ||
| {{https://github.com/banescuema101/SmartPlantPM}} | {{https://github.com/banescuema101/SmartPlantPM}} | ||
| Line 315: | Line 323: | ||
| 18 Mai - Primul prototip software, crearea repository-ului pe github. Am avut câteva probleme cu conexiunea bluetooth spre microcontroller și a trebuit să schimb niște legături \\ | 18 Mai - Primul prototip software, crearea repository-ului pe github. Am avut câteva probleme cu conexiunea bluetooth spre microcontroller și a trebuit să schimb niște legături \\ | ||
| 22 Mai - Finalizare software și integrare a aplicației Android \\ | 22 Mai - Finalizare software și integrare a aplicației Android \\ | ||
| - | Documentarea software-ului pentru pagina ocw este acum in lucru | + | 24 Mai - Am terminat documentarea software-ului pentru pagina ocw \\ |
| ===== Bibliografie ==== | ===== Bibliografie ==== | ||
| Multe componente au fost comandate de pe website-ul Bitmi, unde la aproape fiecare componentă am găsit și instrucțiuni referitoare la modul în care le pot conecta la Arduino UNO, precum și specificațiile necesare.\\ | Multe componente au fost comandate de pe website-ul Bitmi, unde la aproape fiecare componentă am găsit și instrucțiuni referitoare la modul în care le pot conecta la Arduino UNO, precum și specificațiile necesare.\\ | ||
| Line 321: | Line 329: | ||
| [[https://www.bitmi.ro/module-electronice/modul-wireless-esp8266-esp-01-compatibil-arduino-10433.html]] | [[https://www.bitmi.ro/module-electronice/modul-wireless-esp8266-esp-01-compatibil-arduino-10433.html]] | ||
| [[https://www.bitmi.ro/senzori-electronici/senzor-de-umiditate-a-solului-higrometru-10461.html]] | [[https://www.bitmi.ro/senzori-electronici/senzor-de-umiditate-a-solului-higrometru-10461.html]] | ||
| + | |||
| + | Datasheet Arduino UNO R3 (pentru a vedea cum s-au mapat pinii la regiștrii: | ||
| + | [[https://www.alldatasheet.com/datasheet-pdf/view/1943445/ARDUINO/ARDUINO-UNO.html]] | ||
| + | |||
| + | Si datasheet-urile componentelor: \\ | ||
| + | Senzorul de temperatură: [[https://www.alldatasheet.com/html-pdf/2193416/OSEPP/DHT11/1246/7/DHT11.html]] \\ | ||
| + | [[https://github.com/eshansurendra/liquid_crystal_i2c_avr/blob/main/src/main.c]] \\ | ||
| + | Modulul bluetooth HC-05: [[https://components101.com/sites/default/files/component_datasheet/HC-05%20Datasheet.pdf]] | ||
| + | |||