Table of Contents

Truck alcohol safety check

Introducere

Proiectul constă în implementarea unui sistem de siguranță pentru camioane, șoferul fiind nevoit să treacă un test de alcool pentru a putea porni motorul, pentru demonstratie contine un servo motor. Acesta utilizează o cartelă RFID pentru a verifica identitatea șoferului, dispune de un ecran LCD pentru afișarea informațiilor, un buzzer pentru a alerta utilizatorul în timpul procesului și un card SD pentru stocarea rezultatelor și prevenirea fraudei. (Ideal) Cardul SD este plasat strategic în interiorul camionului, astfel încât să fie inaccesibil.

Implementarea acestui sistem de siguranță pentru camioane este utilă pentru prevenirea accidentelor rutiere și protejarea vieților, cerința de a trece un test de alcool înainte de a porni motorul contribuind la asigurarea că șoferii sunt în stare bună și în deplină capacitate de a conduce.

Consider că proiectul reprezintă un prototip viabil, care, cu ajustări minime, ar putea fi adaptat și implementat în sistemul unui camion.

Descriere generală

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Pasii pe care soferul trebuie sa ii urmeze sunt:

Soferul trebuie sa astepte pana cand senzorul de alcool este pregatit (senzorul MQ3 are un timp necesar pentru incalzire). Soferul valideaza cardul sau la cititorul RFID pentru a confirma identitatea. Daca identitatea este confirmata atunci se va afisa numele sau si este gata sa inceapa testul. Senzorul de alcool MQ3 preia aerul suflat spre el si transmite rezultatul la arduino. Arduino-ul proceseaza rezultatul primit de la senzor si dupa procesarea calculului exista 2 situatii: nivelul de alcool este egal cu 0 sau mai mare decat 0. Pentru testul negativ se transmite prin USB “ENGINE_STARTING”, se afiseaza pe LCD ca se poate porni motorul si porneste servo motorul. In cazul in care testul este pozitiv la alcool, atunci soferul nu poate porni motorul, este afisat un mesaj conform pe LCD si primeste un delay de 15 minute pana cand va putea reincepe procesul.

Hardware Design

Aici puneţi tot ce ţine de hardware design:

Lista componente:

Schema electrica:

Explicatii pini:

1) Pentru motorul servo SG90 am ales drept pin de semnal, pinul 6 digital PWM(orice pin digital PWM era bun).

2) Pentru senzorul de alcool MQ3 am ales sa il folosesc in mod analogic, astfel am conectat la A0, respectiv A0 la arduino (orice pin analog era ok).

3) Pentru LCD I2C am urmat varianta standard de conectare. (https://projecthub.arduino.cc/arduino_uno_guy/i2c-liquid-crystal-displays-5eb615). Am folosit pinii A4 si A5 pentru a obtine SDA respectiv SCL.

4) Buzzerul pasiv l-am conectat la pinul digital 2 deoarece imi era mai accesibil. Orice pin digital liber este perfect okay.

Problema a fost la RFID si SD card reader, ambele folosind SPI deci aveau MISO, MOSI si SCK comun. O solutie de pe internet care m-a ajutat in conectarea si cardului SD, dar si a RFID-ului simultan: https://forum.arduino.cc/t/sd-card-and-rfid-not-working-together-spi-conflict/995287/6

Astfel:

5) Pentru RFID am conectat la pinii digitali: 11 pentru MOSI, 12 pentru MISO, 13 pentru SCK, 10 pentru SDA si 9 pentru RST.

6) Pentru SD card reader am conectat la pinii digitali: 11 pentru MOSI, 12 pentru MISO, 13 pentru SCK, am adaugat rezistenta de 220 in plus pentru MISO, si 4 pentru CS.

PENTRU DEMO: Am pus link cu video pe YT la “Rezultate obtinute”

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Mediul de dezvoltare folosit este Arduino IDE. Este o alegere excelenta pentru un incepator, avand un setup foarte simplu.

Stadiul actual al implementarii: Proiectul implementeaza tot ce mi-am propus, acesta are drept functionalitati software:

Motivatia alegerii bibliotecilor:

Elementul de noutate al proiectului: unicitatea este ideea de integrare a unui sistem in plus de siguranta, pentru a preveni condusul sub influenta alcoolului.

Utilizarea functionalitatilor din laborator in cadrul proiectului:

Scheletul proiectului:

setup(): am initializat lcd-ul, sd card reader-ul si rfid-ul. Am setat pinii pentru servo motor si pentru buzzer. Am afisat un mesaj de informare, ca trebuie asteptate 3 beep-uri. Am setat un delay pentru a astepta sa se incalzeasca senzorul de alcool. Dupa delay am folosit functia tone() pentru a reda 3 sunete, pentru a alerta utilizatorul ca senzorul este gata.

loop(): am folosit functia PICC_IsNewCardPresent() pentru a detecta aparitia unei cartele RFID. Cu ajutorul PICC_ReadCardSerial() este citita valoarea cartelei. Daca este egala cu o anumita valoare (cunoscuta), afisez “Hello Marian” si varsta random de 22 de ani. (Marian e ales arbitrar) Ulterior actualizez lcd-ul si apelez functia performBreathalyzerTest(). Am incercat sa folosesc functii pentru fiecare componenta pentru un coding style mai bun. Functia foloseste analogRead() si citeste valoarea de la senzorul de alcool. Aici intervine logica explicata in calibrarea elementelor de senzoristica. Dupa intoarcerea rezultatului functiei, se apeleaza saveDataToSD() care verifica initializarea cardului SD si folosind SD.open() obtine un dataFile, pe care apeleaza metoda print() si println() pentru a scrie concentratia de alcool si UID-ul soferului in fisier. Dupa salvarea rezultatului, daca valoarea a fost zero atunci apelez functia servoSpin(), care folosind 2 for uri realizeaza 10 miscari ale servo motorului. In schimb, daca valoarea este pozitiva, atunci afisez un mesaj si pun un delay de 2 minute, care folosind un while afiseaza live cat a mai ramas.

Calibrarea elementelor de senzoristica:

Ideea mea a fost sa iau o valoare de baza, senzorul depinde si de camera in care te afli, poluarea din ea, pentru ca el nu analizeaza strict alcoolul. Astfel, salvez valoarea intiala si apoi intr-un while extrag valori. Daca diferenta este mai mare de un prag intre cele doua (pragul setat este de 100) atunci inseamna ca e alcool detectat.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Video proiect: https://www.youtube.com/watch?v=3NGuXG7dtdw&ab_channel=OnelAlexandruGabriel Video proiect final: https://youtu.be/h2ZpldwdIC8

Concluzii

Probleme intalnite:

Download

Codul se poate descarca de mai jos.

proiect_pm_onel_alexandru_332cb.zip

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

M-am incadrat in toate deadline-urile la timp. Initial, cand aveam ideea deja lucram la proiect si a fost gata inainte de deadline hard si soft. Ulterior, m-am ocupat de aranjarea site-ului de pe ocw.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Resurse hardware:

Resurse software:

Laboratoare:

Export to PDF