This is an old revision of the document!
Proiectul va realiza diminuarea problemelor dintr-o încăpere atunci când este prezent un incendiu. Acesta va semnala pe un display faptul că un incendiu are loc și pe un card SD va salva toate log-urile relevante pentru evenimentele anterioare(timestamp, temperatură, etc.). De asemenea, printr-un difuzor va avea si un efect de alarmă.
Scopul lui este de a preveni incendiile într-o încăpere.
Am pornit de la ideea de alarmă de incendiu simplu. Elementele de log-uri și de afișare pe un display au venit ulterior pentru a ține evidența evenimentelor.
La acțiunea unui stimul extern pentru senzorul de temperatură se va transmite un semnal către microcontroller. Apoi, software-ul de pe microcontroller va putea transmite către celelalte componente semnale.
Pentru programarea plăcii am folosit Arduino IDE, fără biblioteci specifice Arduino. Singurele biblioteci incluse sunt `<avr/io.h>` și `<util/delay.h>`, în rest s-au folosit funcții implementate manual (fiind un proiect orientat pe software). La baza design-ului software stau laboratoarele de I2C, SPI și datasheet-ul pentru senzorul DHT22, practic am încercat să integrez cât mai mult cod similar cu cel din laborator (plăcile fiind aproape identice). Particularități de implementare:
{ bool readDHT(float &temperature, float &humidity) { uint8_t data[5] = {0}; pinMode(DHTPIN, OUTPUT); digitalWrite(DHTPIN, LOW); _delay_ms(20); digitalWrite(DHTPIN, HIGH); _delay_us(40); pinMode(DHTPIN, INPUT_PULLUP);
// Așteptare pentru răspunsul senzorului if (!waitForSignal(LOW, 80) || !waitForSignal(HIGH, 80) || !waitForSignal(LOW, 80)) { return false; }
// Citire date for (uint8_t i = 0; i < 5; i++) { data[i] = readByte(); }
// Verificare checksum if (data[4] == ((data[0] + data[1] + data[2] + data[3]) & 0xFF)) { humidity = ((data[0] << 8) + data[1]) * 0.1; temperature = (((data[2] & 0x7F) << 8) + data[3]) * 0.1; if (data[2] & 0x80) { temperature = -temperature; } return true; } return false; } } - Pasii functiei sunt luati din datasheet-ul DHT22
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.