Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta intr-un dispozitiv de tip etilotest, care masoara cantitatea de alcool in aerul expirat. Acesta transmite datele spre afisare prin intermediul unui modul Bluetooth catre o aplicatie Android de pe telefon. Am ales acest proiect deoarece mi s-a parut fun, iar dispozitivul mi se pare util in viata de zi cu zi, mai ales pentru soferi, oferindu-le posibilitatea de a-si testa alcoolemia inainte de a se urca la volan(Don't drink and drive).
Senzorul masoara cantitatea de alcool din aerul expirat si transmite rezultatul prin intermediul unui modul Bluetooth catre un smartphone, care afiseaza rezultatul printr-o aplicatie simpla.
Lista de piese:
#include <avr/io.h> #include <stdio.h> #include <stdlib.h> #include <util/delay.h> #include <string.h>
/* set LEDs as output */ void io_init(void);
/* initiate adc for sensor reading */ void adc_init(void);
/* initiate usart for bluetooth communication */ void usart_init(void);
* read sensor value */ uint16_t adc_read(uint8_t channel);
/* reads 100 samples determine the alcohol concentration in clean air */ uint16_t calibrate(void);
/* convert sensor value to (dg/L) */ uint16_t convert(uint16_t mq3Value, uint16_t mq3Normal, uint16_t alcNormal);
/* send value to usart */ void usart_send(char data);
Cand se apasa butonul de 'START TEST' din aplicatie, senzorul incepe sa citeasca.
/* receive data from usart */ uint16_t usart_receive(void);
Se trimite un string caracter cu caracter pe USART, pentru a fi preluat de aplicatie
/* send a string character by character */ void usart_string(char *data);
- Cand se alimenteaza placa, se aprinde LED-ul galben, ce semnifica ca senzorul se calibreaza: se face media a 100 de citiri, pentru a determina la fiecare rulare concentratia de alcool din mediul test.
- Dupa ce s-a terminat calibrarea, se aprinde LED-ul verde, semn ca senzorul este gata sa citeasca.
- La apasarea unui buton din aplicatia Android se trimite un byte prin bluetooth, si comunica programului sa inceapa un test. Se aprinde LED-ul galben.
- Un test consta in citirea a 50 de valori(aprox 10s), se face o medie, si se trimite catre modulul de bluetooth prin intermediul USART, pentru a fi afisata in aplicatie. In functie de concentratia de alcool detectata, se aprinde led-ul verde sau led-ul rosu si se transmite si un mesaj sugestiv.
- Dupa incheirea testului, senzorul nu mai citeste, si se aprinde LED-ul verde.
- Programul asteapta mesaj de la aplicatie pentru inceperea unui nou test.
Am reusit sa creez un etilotest functional, cu o acuratete decenta, care comunica prin intermediul unui modul Bluetooth cu o aplicatie Android de pe smartphone.
Am atasat si cateva poze cu proiectul.
Proiectul mi s-a parut o experienta foarte interesanta si m-a captivat de la prima “lipitura” ca sa zic asa . Satisfactia vine de la faptul ca am pornit cu acest proiect de la zero, o placa goala si niste piese si am reusit sa construiesc ceva util, care si functioneaza. De asemenea, am imbinat mai multe cunostinte, de la hardware si electronica si pana la programare.
Per total, sunt multumit de ce a iesit si urmaresc sa il imbunatatesc pe viitor cu o calibrare mai buna a senzorului si poate o carcasa.