Alexandru NEGURĂ - Alcoolmetru/Etilotest

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul este destinat utilizarii personale pentru precautie inainte de a executa actiuni ce necesita claritate mentala cat si atentie.

Alcoolmetrul va masura concentratia de alcool din aerul expirat(mg/L), astfel determinand daca o persoana este apta pentru diferite activitati.

Descriere generală

Senzorul de alcool va masura informatiile din aer si le va trimite placii.

Placa va converti acea valoare folosind modulul ADC. Apoi acea valoare va fi afisata pe:

  1. LCD text, sub forma numerica + diferite mesaje de avertizare
  2. 6 LED-uri ce vor reprezenta intensitatea alcoolemiei
  3. Buzzer ce va atentiona daca alcoolemia trece de valoarea maxima admisa.
  4. Wifi ce va converti si trimite datele la un server cloud ce le va afisa online.

Hardware Design

Lista piese :

Nume Numar bucati Distribuitor
Placa de baza PM 2018 1 Echipa PM
Pachet 5V - 3.3V 1 Farnell
Senzor de gaz MQ-3 1 Optimus Digital
Buzzer 1 Optimus Digital
Led 6 Optimus Digital
LCD 1 Optimus Digital
Wi-Fi 1 Optimus Digital

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare
    1. CLion facut sa mearga cu librariile AVR. (De mare ajutor)
    2. BootLoaderHID pentru a incarca programul pe placuta
  • printre surse se pot mentiona:
    1. lcd.c/.h pentru LCD-ul text, din cadrul laboratorului modificata pentru pinii nostrii
    2. led.c/.h contine functii de initializare si aprindere/stingere leduri
    3. buzzer.c/.h contine functii de initializare si de folosire a buzzerului
    4. converter.c/.h un convertor ce transforma din double → string gasit pe internet (:!: aparent nu am reusit sa transfer date de tip %f nicaieri asa ca le-am convertit la %s si a mers ^_^)
    5. usart(*).c/.h biblioteca USART ce a venit la pachet odata cu:
    6. wifi.c/.h o biblioteca gasita online pentru ESP8266 compatibil cu AVR (modificata putin ca sa o transform intr-un serviciu ce expune niste functii pe care sa apoi sa le folosesc separat)
    7. adc.c/.h contine codul principal al aplicatiei. Pentru a primi info de la senzorul de alcool MQ3 am folosit un timer configurat pe 100ms care atunci cand “expira” face trigger la o conversie ADC. Pentru rezultatul conversiei am folosit interupt enable pentru ADC iar in rutina de tratare a acesteia am:
      1. memorat rezultatu, adunat la un acumulator ce va face media unui numar de iteratii si il va transmite prin Wifi la un server online pentru vizualizare
      2. va afisa pe LCD-ul text concentratia de alcool in mg/l din aerul expirat
      3. va aprinde x / 6 leduri corespunzatoare concentratiei de alcool citite
      4. va semnala un nivel foarte ridicat de alcoolemie printr-un sunet al buzzerului
  • Pentru formula de conversie de la semnalul primit pe pinul PA0 si valoarea in mg/L am folosit o formula gasita pe internet intr-o documentatie pe care nu o mai gasesc :)). Am tunat putin aceasta formula deoarece ea masura mult peste posibilitatile senzorului (care masoara un maxim de 0.4 mg/L in aerul expirat).
  • Daca am timp pana la PM fair doresc sa fac un “batch upload”. Serverul pe care il folosesc eu, Thingspeak, permite un update al datelor odata la 15 secunde. Mai bine zis primeste un singur request odata la 15 secunde ceea ce face aplicatia putin greu de urmarit si de vizualizat. Ceea ce vreau sa fac e ca la 15 secunde sa primeasca mai multe date din acel interval pentru o discretizare mai mare a valorilor.
  • P.S. pentru sunetul buzzerului am folosit pinul DO al MQ3 care se pune pe :!: 0 :!: atunci cand nivelul alcoolemiei creste suficient de mult. Acel pin ses pune pe 0 intern, nu de catre mine, ceea ce poate determina o masurare mai precisa. De asemenea e timpul sa te opresti din baut ca nu esti OK :)).

Rezultate Obţinute

A fost cea mai misto experienta de la PM. Semestrul a inceput greoi, laboratoarele de neinteles dar apoi dupa ce am primit acel MAGIC cheatsheet totul a fost clarificat si a inceput sa imi placa foarte mult ce am facut aici.

Cel mai greu lucru la acest proiect a fost sa construiesc acea casuta din lego. Experienta din copilarie cu aceste magnifice blocuri de jucarie a dat roade.

Concluzii

A fost o experienta de programare pe cinste. Ma bucur ca am invatat si ceva embedded in aceasta facultate si poate pe viitor ma voi juca in continuare si voi mai face separat alte mici proiecte, pentru amuzament.

Download

Bibliografie/Resurse

pm/prj2018/imatesica/alcoolmetrualex.txt · Last modified: 2021/04/14 17:07 (external edit)
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