Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:atoader:aureliu.antonie [2026/05/21 00:14]
aureliu.antonie [Software Design]
pm:prj2026:atoader:aureliu.antonie [2026/05/22 23:33] (current)
aureliu.antonie [Jurnal]
Line 113: Line 113:
 Am folosit bibliotecile:​ Am folosit bibliotecile:​
  
-HX711 pentru a putea conecta senzorul de greutate la breadboard, cât și pentru a putea interpreta datele primite+HX711 pentru a putea conecta senzorul de greutate la breadboard, cât și pentru a putea interpreta datele primite
  
-LiquidCrystal_I2C pentru a afișa diferite mesaje pe ecranul LCD+LiquidCrystal_I2C pentru a afișa diferite mesaje pe ecranul LCD
  
-RTClib pentru a putea realiza statisticile menționate,​ spre exemplu câtă apă am băut în ziua respectivă+RTClib pentru a putea realiza statisticile menționate,​ spre exemplu câtă apă am băut în ziua respectivă
  
-* EEPROM ​pentru a putea salva statisticile chiar și dacă dozatorul nu mai este alimentat+- SoftPWM ​pentru a varia intensitatea ledurilor
  
-Wire pentru comunicarea I2C+- EEPROM pentru a putea salva statisticile chiar și dacă dozatorul nu mai este alimentat 
 + 
 +Wire pentru comunicarea I2C
  
 Elementele de noutate ale proiectului sunt reprezentate de funcționalitățile diverse: Elementele de noutate ale proiectului sunt reprezentate de funcționalitățile diverse:
  
-utilizatorul poate seta la început volumul sticlei folosite (de la 50 ml la 1000 ml, increment de 50 ml)+utilizatorul poate seta la început volumul sticlei folosite (de la 50 ml la 1000 ml, increment de 50 ml)
  
-după ce se așază sticla cu apa inițială, senzorul detectează exact masa, luând în calcul masa sticlei goale și a furtunului+după ce se așază sticla cu apa inițială, senzorul detectează exact masa, luând în calcul masa sticlei goale
  
-la pornirea dozatorului,​ progresul este afișat atât pe baza LED-urilor (acestea se aprind alternativ, variind intensitatea pe măsura trecerii timpului), cât și prin intermediul ecranului LCD (afișează volumul rămas)+la pornirea dozatorului,​ progresul este afișat atât pe baza LED-urilor (acestea se aprind alternativ, variind intensitatea pe baza volumului rămas), cât și prin intermediul ecranului LCD (afișează volumul rămas)
  
-există mai multe moduri de afișaj (timpul ​rămas sau cantitatea de apă consumată în ziua respectivă,​ acest lucru fiind foarte important în nutriție)+există mai multe moduri de afișaj (volumul ​rămas sau cantitatea de apă consumată în ziua respectivă,​ acest lucru fiind foarte important în nutriție)
  
-* după ce sticla se umple, ​se poate pune o nouă sticlă, ră a fi necesară repornirea aparatului+- dozatorul ​se poate pune pe pauză în orice momentrespectiv se poate relua activitatea ​masă
  
-Codul propriu zis se bazeaza pe un automat de stariastfel:+- după ce sticla ​se umplese poate pune o nouă sticlă, fără a fi necesară repornirea aparatului
  
-starea 0 (+Codul propriu-zis se bazează pe un automat de stări circular, astfel: 
 + 
 +starea 0 (selecția) - se citește starea butoanelor. În această etapă, butoanele sunt utilizate pentru selectarea volumului sticlei 
 + 
 +- starea 1 (așteptare) - se așteaptă punerea sticlei pe cântar și calcularea masei 
 + 
 +- starea 2 (umplere) - microcontrolerul acționează releul, pornind pompa 
 + 
 +- starea 3 (pauză) - pompa este oprită, iar totul (LCD, releul etc.) este pus pe pauză, în standby 
 + 
 +- starea 4 (finalizarea) - pompa s-a oprit, se salvează statisticile în EEPROM și se așteaptă ca sticla să fie ridicată. După ce se ridică sticla, se pornește din nou din starea 0
  
 Senzorul de greutate a fost calibrat pe baza unui cod software. Acesta poate fi vizualizat pe [[https://​github.com/​AntonieValentin/​Dozator-de-apa-inteligent/​commit/​44f2458279bb0449c95a98473be8f0663289ac63|git]]. Am pus pe cântar o sticlă cu masă cunoscută (250 ml), iar apoi am reglat, prin UART, factorul de calibrare din software. Senzorul de greutate a fost calibrat pe baza unui cod software. Acesta poate fi vizualizat pe [[https://​github.com/​AntonieValentin/​Dozator-de-apa-inteligent/​commit/​44f2458279bb0449c95a98473be8f0663289ac63|git]]. Am pus pe cântar o sticlă cu masă cunoscută (250 ml), iar apoi am reglat, prin UART, factorul de calibrare din software.
Line 143: Line 155:
 Optimizări:​ Optimizări:​
  
-întreruperi externe (ca să nu facem polling) - proiectul este destul de complex. Fără întreruperi nu puteam detecta simultan și masa sticlei, și starea butonului etc.+întreruperi externe (ca să nu facem polling) - proiectul este destul de complex. Fără întreruperi nu puteam detecta simultan și masa sticlei, și starea butonului etc.
  
-debouncing (software) - pentru a se înregistra o singură apăsare+debouncing (software) - pentru a se înregistra o singură apăsare
  
-variabile volatile - pentru a nu fi optimizat accesul de către compilator+variabile volatile - pentru a nu fi optimizat accesul de către compilator
  
-timere în loc de delay - pentru a nu bloca execuția inutil+timere în loc de delay - pentru a nu bloca execuția inutil
  
-accesul EEPROM - modificăm cantitatea de apă băută numai după ce sticla s-a umplut complet, pentru a proteja memoria sensibilă EEPROM+accesul EEPROM - modificăm cantitatea de apă băută numai după ce sticla s-a umplut complet, pentru a proteja memoria sensibilă EEPROM
  
 Ca mediu de dezvoltare am folosit VS Code cu extensia PlatformIO, framework Arduino. Ca mediu de dezvoltare am folosit VS Code cu extensia PlatformIO, framework Arduino.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-[[https://​www.youtube.com/​shorts/​JMbjXX_uIwk|Demonstrație Video]]+[[https://​www.youtube.com/​shorts/​JMbjXX_uIwk|Demonstrație Video Prima Versiune]] 
 + 
 +[[https://​youtube.com/​shorts/​HjKurvxfl2s|Demonstrație Video A Doua Versiune]]
  
 [[https://​github.com/​AntonieValentin/​Dozator-de-ap-inteligent|Link github]] [[https://​github.com/​AntonieValentin/​Dozator-de-ap-inteligent|Link github]]
Line 170: Line 184:
  
 ===== Jurnal ===== ===== Jurnal =====
-Am terminat ​montajul hardware, iar partea de software este aproape finalizată.+Am terminat ​proiectul
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
Line 205: Line 219:
  
 [[https://​github.com/​adafruit/​RTClib|RTClib]] [[https://​github.com/​adafruit/​RTClib|RTClib]]
 +
 +[[https://​github.com/​bhagman/​SoftPWM|SoftPWM]]
  
 [[https://​docs.arduino.cc/​learn/​built-in-libraries/​eeprom/​|EEPROM]] [[https://​docs.arduino.cc/​learn/​built-in-libraries/​eeprom/​|EEPROM]]
pm/prj2026/atoader/aureliu.antonie.1779311651.txt.gz · Last modified: 2026/05/21 00:14 by aureliu.antonie
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