Table of Contents

Ambient Lamp

Autor: Vasilache Andra
Grupa: 336CA

Prezentarea pe scurt a proiectului:

  • proiectul consta intr-o lampa care isi regleaza luminozitatea si culoarea in functie de diversi factori din mediul ambient
  • scopul este de a valorifica cunostintele in cadrul cursului/laboratoarelor de Proiectare cu Microprocesoare
  • ideea de la care am pornit este foarte simpla: mi-as dori sa am o lampa care se regleza automat pentru birou

Schema bloc

Hardware Design

Pentru a realiza acest proiect vom avea nevoie de:

Componente Numar Descriere generală
Placa de dezvoltare Arduino Uno 1 Placa de dezvoltare folosita si in cadrul laboratoarelor.
Senzor lumina ambientala TEMT6000 1 Folosit pentru ajustarea automata a luminii lampii (Sensibilitate maxima: 570nm).
Modul Bluetooth 4.0BLE (TI CC2251) 1 Permite controlul bluetooth al lampii.
Senzor de temperatură (KY-028) 1 Permite schimbarea culorii lampii in functie de temperatura ambientala.
Butoane 3 Pentru controlul manual al modulelor (unu de pornire, unul pentru luminozitate si unul pentru temperatura).
Led RGB 4 Pentru lampa propriu-zisa.


Pe langa aceste componente am mai fost utilizate 3 butoane, doua breadborduri, rezistoare si diverse tipuri de fire (tata-tata si mama-tata)

Schema electrica:

Software Design

Functiile principale ale codului de implementare sunt:

void setBrightnessByLight() {
int Lvalue = analogRead(lightSensor); // read the light value
    if (Lvalue < LIGHT_LOW_MED) {
      brightness = 2;
    } else if (Lvalue > LIGHT_MED_HIGH) {
      brightness = 0;
    } else {
      brightness = 1;
    }
}
int getBrightnessValue() {
  switch (brightness) {
    case 0:
      return LED_LOW;
    case 1:
      return LED_MED;
    case 2:
      return LED_HIGH;
    default:
      return LED_OFF;
  }
}
void setTemperature() {
    int Tvalue = analogRead(tempSensor);// read the temperature value

    if (Tvalue < TEMP_LOW_MED) {
      temperature = HOT;
    } else if (Tvalue > TEMP_MED_HIGH) {
      temperature = COLD;
    } else {
      temperature = TEMPERATE;
    }
}
void handleBluetoothCommand(char command) {
  switch (command) {
    case 'm':
      operationMode = AUTOMATIC;
      break;

    case 'M':
      operationMode = MANUAL;
      break;
      
    case 'b':
      operationMode = MANUAL;
      brightness = (brightness + 1) % 3;
      break;

    case 'B':
      operationMode = MANUAL;
      brightness = brightness == 0 ? 2 : (brightness - 1);
      break;

    case 't':
      operationMode = MANUAL;
      temperature = (temperature + 1) % 3;
      break;

    case 'T':
      operationMode = MANUAL;
      temperature = temperature == 0 ? 2 : (temperature - 1);
      break;

    case 'p':
    case 'P':
      poweredOn = !poweredOn;
      if (!poweredOn) {
        analogWrite(RED_PIN, 255);
        analogWrite(GREEN_PIN, 255);
        analogWrite(BLUE_PIN, 255);
      } else {
        operationMode = AUTOMATIC;
      }
      break;
    default:;
   }
}

Am folosit libraria ButtonDebounce.h pentru a putea folosi in mod corespunzator butoanele.

Am ales sa folosesc drept mediu de dezvoltare Arduino IDE.


Rezultate Obţinute

Poze circuit

Poze lampa

Concluzii

A iesit dragut si am facut tot ce mi-am propus.

Download

Link pagina: https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/ambientlamp
Link documentatie: https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/ambientlamp?do=export_pdf
Cod: Cod software proiect
Demo: Playlist demos

Jurnal

  • Saptamana 0: alegerea proiectului
  • Saptamana 1: procurare piese necesare si realizare documentatie
  • Saptamana 2: verificarea pieselor si lipirea pieselor cu pistol de lipit
  • Saptamana 3: implementarea circuitului de baza si legarea tuturor pieselor; crearea codului prototip
  • Saptamana 4: finalizarea proiectului, terminarea documentatiei

Bibliografie/Resurse

Export to PDF