RoomEnviroClock: R.E.C.

Introducere

RoomEnviroClock este un proiect IoT care integrează o placă Arduino Nano cu un senzor de temperatură și umiditate, împreună cu un senzor de gaz, pentru a oferi informații despre condițiile meteorologice și calitatea aerului în timp real.

Facilitați:

  • Afișarea timpului
  • Monitorizarea temperaturii și umidității
  • Detectarea calității aerului
  • Avertizări și notificări

Scopul principal al acestui proiect este de a oferi utilizatorului informații utile și practice despre mediul înconjurător din interiorul unei încăperi, cum ar fi temperatura, umiditatea și calitatea aerului.

Descriere generală

Ceasul se porneste automat la conectarea acestuia la o sursa de energie. Pe ecran va aparea o animatie draguta cu denumirea ceasului, dupa care utilizatorul va fi indemnat sa apese unul dintre butoane. Exista trei butoane cu functii specifice:

  • Primul buton afiseaza ora cu un font frumos si mare pe tot ecranul. E afisat ora si minutele, iar cele 2 puncte dintre ora si minute pulseaza aratand secundele.
  • Al doilea buton va afisa temperatura si umiditatea. Temperatura e calculata intr-un mod specific avand la dispozitie si umiditatea, aceasta e mai degraba “se simte ca” decat temperatura actuala.
  • Al treilea buton arata un numar pe nume AQI (Air quality index), care se masoara in ppm. Utilizatorul primeste un raspuns pe oscara anumita referitor la AQI, in dependenta de valoarea obtinuta.

Hardware Design

Componente folosite:

  • Senzor de temperatura DHT11
  • Senzor de gaz MQ135
  • RTC DS1302
  • LCD 1602 cu interfata I2C
  • Arduino nano (ATMega328p)
  • Push Buttons
  • Cabluri mama-tata
  • Cabluri pentru lipit
  • Bread board PCB 15×9

Schema Hardware

Module folosite
  • DHT11

  • MQ135

  • DS1302

  • LCD 1602 cu I2C

Cablaj

fata_placa.jpg spate_placa.jpg

Software Design

Codul este scris în Arduino IDE și utilizează bibliotecile Wire, LiquidCrystal_I2C, DHT, MQ135, ThreeWire și RtcDS1302.

  • Wire - Pentru comunicația I2C.
  • LiquidCrystal_I2C - Pentru afișajul LCD.
  • DHT - Pentru senzorul de temperatură și umiditate.
  • MQ135 - Pentru senzorul de calitate a aerului.
  • ThreeWire - Pentru comunicația cu RTC-ul DS1302.
  • RtcDS1302 - Pentru gestionarea datelor și timpului cu RTC-ul DS1302.
Structura Codului
  • th_sensor()

Afișează temperatura și umiditatea pe ecranul LCD.

  • mqsensor()

Afișează calitatea aerului (AQI) pe ecranul LCD, împreună cu o față simbolică reprezentând starea calității aerului.

  • rtc_sensor()

Afișează ora curentă pe ecranul LCD folosind caractere personalizate pentru a forma cifrele mari.

  • printNumber(int val)

Afișează un număr format din două cifre la o poziție specificată pe LCD.

  • custom0() - custom9()

Desenează cifrele de la 0 la 9 folosind caractere personalizate pe LCD.

  • printDigits(int digits, int x)

Afișează cifra corespunzătoare la o poziție specificată pe LCD.

  • setup()

Inițializează comunicația serială. Setează modurile pinilor pentru senzorii și butoanele utilizate. Configurează RTC-ul cu data și ora curentă. Inițializează senzorul de temperatură și umiditate. Inițializează LCD-ul și afișează mesajul de întâmpinare.

  • loop()

Verifică starea fiecărui buton la intervale regulate (debouncing).Actualizează afișajul LCD în funcție de butonul apăsat, la fiecare două secunde.

Variabile Importante
  • lastButtonStateA, lastButtonStateB, lastButtonStateC - Starea anterioară a fiecărui buton pentru debouncing.
  • lastTimeButtonStateChangedA, lastTimeButtonStateChangedB, lastTimeButtonStateChangedC - Timpul la care a fost detectată ultima schimbare a stării butoanelor.
  • lastUpdateTimeA, lastUpdateTimeB, lastUpdateTimeC - Ultimul timp la care afișajul a fost actualizat pentru fiecare buton.
  • buttonA, buttonB, buttonC - Flaguri pentru a determina ce funcție să fie apelată în loop.

Rezultate Obţinute

Ora

hour_iulian.jpg

Temperatura si umiditatea

temp_iulian.jpg

Air Quality Index

aqi_iulian.jpg

Download

pm/prj2024/fstancu/iulian.cozmac.txt · Last modified: 2024/05/27 05:10 by iulian.cozmac
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