This shows you the differences between two versions of the page.
pm:prj2023:adarmaz:sistem-inregistrare-date [2023/05/28 20:58] ioan_tudor.cohea [Software Design] |
pm:prj2023:adarmaz:sistem-inregistrare-date [2023/05/28 22:03] (current) ioan_tudor.cohea [Jurnal] |
||
---|---|---|---|
Line 44: | Line 44: | ||
* Led-uri si fire care conecteaza intre ele modulele | * Led-uri si fire care conecteaza intre ele modulele | ||
* Rezistente pentru protectia let-urilor | * Rezistente pentru protectia let-urilor | ||
- | |||
- | Diferite challenge-uri pe care le-am intalnit: | ||
Line 62: | Line 60: | ||
==== Setup function ==== | ==== Setup function ==== | ||
- | vewbbbbbbb | + | In aceasta functie se seteaza pinii corespunzatori pe in sau pe out, se initializeaza LCD-ul si baude rate-ul. De asemenea, aici se verifica si daca operatiile facute pe cardul SD sunt corecte. |
+ | <code cpp> | ||
+ | // initializarea pinilor, output pentru led-uri si buzzer si input pentru senzori | ||
+ | pinMode(greenLed, OUTPUT); | ||
+ | pinMode(redLed, OUTPUT); | ||
+ | pinMode(buzzer, OUTPUT); | ||
+ | pinMode(smokeA0, INPUT); | ||
+ | pinMode(data_pin, OUTPUT); | ||
+ | |||
+ | // setare lcd | ||
+ | lcd.init(); | ||
+ | lcd.clear(); | ||
+ | lcd.backlight(); | ||
+ | |||
+ | if (SD.begin(sd_cs)) { | ||
+ | Serial.println("SD card initialization successful."); | ||
+ | } else { | ||
+ | Serial.println("SD card initialization failed."); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | File data_file = SD.open("data.txt", FILE_WRITE); | ||
+ | </code> | ||
+ | |||
+ | De asemenea, aici se seteaza si registrele folosite pentru a initializa ADC-ul cu care se citeste de pe pinul anbalogic valoarea data de catre senzorul de fum | ||
+ | <code cpp> | ||
+ | // setup-ul pentru citirea pinului smokeA0 folosind registri si ADC | ||
+ | ADMUX = 0; | ||
+ | |||
+ | // setez canalul 1 pentru multiplexor | ||
+ | ADMUX |= (0 << MUX0); | ||
+ | ADMUX |= (1 << REFS0); | ||
+ | ADCSRA = 0; | ||
+ | |||
+ | // prescaler la 128 | ||
+ | ADCSRA |= (7 << ADPS0); | ||
+ | |||
+ | // enable ADC | ||
+ | ADCSRA |= (1 << ADEN); | ||
+ | </code> | ||
==== Initializari ==== | ==== Initializari ==== | ||
<code cpp> | <code cpp> | ||
Line 138: | Line 176: | ||
} | } | ||
</code> | </code> | ||
- | Laboratoarele folosite sunt: I2C, ADC, SPI, UART, PWM. | + | |
+ | Senzorul de fum MQ-135 este folosit pentru a inregistra nivelul de fum din atmosfera. Acesta foloseste ADc pentru a citi de pe pinul analogic. De asemenea, la acest senzor este conectat un buzzer care este implementat pentru a se activa in momentul in care se depaseste o valoare de threashold care poate fi modificata din cod | ||
+ | <code cpp> | ||
+ | int sensorThres; | ||
+ | |||
+ | while (!(ADCSRA & (1 << ADIF))); | ||
+ | uint16_t analogSensor = ADC; | ||
+ | |||
+ | // daca media calculata cu inregistrarile senzorului depaseste | ||
+ | // pargul admis, atunci se activeaza buzzerul, altfel nu | ||
+ | if (static_cast<float>(sum) / count > sensorThres) { | ||
+ | // aprind becul | ||
+ | digitalWrite(redLed, HIGH); | ||
+ | digitalWrite(greenLed, LOW); | ||
+ | // buzzer | ||
+ | tone(buzzer, 1000, 200); | ||
+ | } else { | ||
+ | digitalWrite(redLed, LOW); | ||
+ | digitalWrite(greenLed, HIGH); | ||
+ | noTone(buzzer); | ||
+ | } | ||
+ | </code> | ||
+ | Laboratoarele folosite sunt: I2C, ADC, SPI, UART. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | Semnalul generat de catre senzorul de fum in momentul in care este supus unei surse de gaz: | ||
- | <note tip> | + | {{smoke_detector_capture.png?760}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | Semnalul generat de catre senzorul de temperatura si umiditate in cazul in care acesta inregistreaza: | ||
+ | |||
+ | * temperatura in cazul in care se inregistreaza o crestere de un grad | ||
+ | {{temperature_sensor_capture.png?760}} | ||
+ | |||
+ | * umiditatea in cazul in care se inregistreaza o crestere aproape exponentiala a umiditatii | ||
+ | {{humidity_sensor_capture.png?760}} | ||
+ | |||
+ | De asemenea, este interesant de mentionat si cum arata output-ul generat in fisierul de pe cardul SD: | ||
+ | <code cpp> | ||
+ | AS: 78, | ||
+ | AS: 78, | ||
+ | AS: 78, | ||
+ | AS: 78, | ||
+ | AS: 78, | ||
+ | AS: 78, | ||
+ | </code> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Acest proiect a fost foarte interesant pentru ca nu ne lovim in fiecare zi de problema implementarii unui sistem cu tot cu partea de hardware. Lucrul cu care am ramas din acest proiect este ca este foare important sa iti cunosti piesele si tool-urile cu care lucrezi si sa nu te arunci in a implementa pana nu citesti cu atentie documnetatia despre piesa respectiva. De asemenea, proiectul a adus si o satisfactie in momentul in care puteai sa zici ca inregistrarile pe care le primeai erau facut aproape integral de catre tine. | ||
+ | Un alt lucru cu care am ramas dupa acest proiect este ca nu este obligatoriu ca soft-ul sa fie bun pentru ca si hardware-ul sa fie bun. Am invatat ca sunt doua entitati separate care trebuie tratate si separat si impreuna pentru buna functionare a proiectului. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{pm.zip}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | + | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 162: | Line 236: | ||
24.04.2023 - Achizitie piese | 24.04.2023 - Achizitie piese | ||
- | 16 mai - Finalizare etapa hardware | + | 16.05.2023 - Finalizare etapa hardware |
- | 25 mai - Finalizare etapa software | + | 25.05.2023- Finalizare etapa software |
- | 28 mai - finalizare pagină documentație | + | 28.05.2023 - finalizare pagină documentație |
</note> | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **Resurse Hardware** |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://cleste.ro/promo/17-electric-sales |
- | </note> | + | * https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621 |
+ | **Resurse software** | ||
+ | * https://microcontrollerslab.com/interfacing-mq-135-gas-sensor-arduino/ | ||
+ | * https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621 | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||