Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:amocanu:lampa-interactiva [2023/05/04 21:32]
vladislav.tiftilov
pm:prj2023:amocanu:lampa-interactiva [2023/05/29 21:55] (current)
vladislav.tiftilov [Concluzii]
Line 23: Line 23:
  
 De asemenea as vrea sa implementez si afisarea mesajelor pe un display LCD. De asemenea as vrea sa implementez si afisarea mesajelor pe un display LCD.
 +
  
 {{:​pm:​prj2023:​amocanu:​iot_lamp.png?​700|}} {{:​pm:​prj2023:​amocanu:​iot_lamp.png?​700|}}
Line 37: Line 38:
  
 Lista piese: Lista piese:
-* NodeMCU cu ESP8266 +    ​* NodeMCU cu ESP8266 
-* Banda LED adresabila WS2812B +    * Banda LED adresabila WS2812B 
-* Display LCD 16x2 +    * Display LCD 16x2 
-Aliemntator ​5V 2A +    Aliementator ​5V 2A
  
 +{{:​pm:​prj2023:​amocanu:​lampa_hardware_vlad_tiftilov.png?​800|}}
 ===== Software Design ===== ===== Software Design =====
  
 +Mediu de dezvoltare: Arduino IDE + VSCode
 +Librarii: ESP8266WiFi,​ PubSubClient,​ FastLED, LiquidCrystal_I2C,​ Wire
  
-<note tip> +Structuri folosit:
-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 +
-</​note>​+
  
 +<code c++>
 +// enum pentru modurile de efecte
 +enum EffectMode { GREEN_STATIC,​ RED_STATIC, BLUE_STATIC,​ RAINBOW };
 +
 +// structura pentru efectul de picaturi de ploaie
 +struct Raindrop {
 +  int position;
 +  int intensity;
 +};
 +
 +
 +// coada de mesaje
 +String messageQueue[MAX_QUEUE_SIZE];​
 +
 +void enqueueMessage(String message) {
 +  ...
 +}
 +
 +String dequeueMessage() {
 +  ...
 +}
 +
 +</​code>​
 +
 +Metode folosite:
 +<code c++>
 +// implementarea efectelor
 +void normalModeEffects() {
 +  FastLED.clear();​
 +
 +  if (currentEffectMode == GREEN_STATIC) {
 +    fill_solid(leds,​ NUM_LEDS, CRGB(0, 255, 0)); // Green
 +  }
 +
 +  if (currentEffectMode == RED_STATIC) {
 +    fill_solid(leds,​ NUM_LEDS, CRGB(255, 0, 0)); // Red
 +  }
 +
 +  if (currentEffectMode == BLUE_STATIC) {
 +    fill_solid(leds,​ NUM_LEDS, CRGB(0, 0, 255)); // Blue
 +  }
 +
 +  if (currentEffectMode == RAINBOW) {
 +    static uint8_t hue = 0;
 +    fill_rainbow(leds,​ NUM_LEDS, hue, 255 / NUM_LEDS);
 +    hue+=3;
 +  }
 +
 +  FastLED.show();​
 +}
 +
 +
 +// bucla principala
 +void loop() {
 +  displayNextMessage();​
 +
 +  if (isRaining()) {
 +    rainEffect();​
 +  } else {
 +    normalModeEffects();​
 +  }
 +
 +  if (!client.connected()) {
 +    reconnect();​
 +  }
 +
 +  client.loop();​
 +}
 +
 +</​code>​
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2023:​amocanu:​lampa_poza_1.jpeg?300|}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+{{:​pm:​prj2023:​amocanu:​vladtf_lamp_2.jpeg?​300|}}
  
 +{{:​pm:​prj2023:​amocanu:​vladtf_lamp_3.jpeg?​300|}}
 ===== Concluzii ===== ===== Concluzii =====
  
 +  - Pentru a alimenta banda LED si display-ul LCD am folosit iesirea de 5V de la un Arduino UNO.
 +  - Pentru server MQTT am folosit Mosquitto.
 +  - Pentru a trimite mesaje catre server am folosit un script bash care apeleaza comanda mosquitto_pub.
 +  - Placa NodeMCU cu ESP8266 se conecteaza la brokerul MQTT si asteapta mesaje.
 +  - In functie de mesajul primit lampa schimba culoarea LED-urilor.
 +  - Mesajele sunt afisate pe display-ul LCD folosind o coada de mesaje.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Codul sursa
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +{{:pm:prj2023:amocanu:code.txt|}}
- +
-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>​+
  
 +Script pentru trimitere mesaje:
 +<code bash>
 +#!/bin/bash
 +mosquitto_pub -h 91.121.93.94 -p 1883 -t "​weather-project/​data"​ -m "​r"​
 +</​code>​
 ===== Jurnal ===== ===== Jurnal =====
  
pm/prj2023/amocanu/lampa-interactiva.1683225162.txt.gz · Last modified: 2023/05/04 21:32 by vladislav.tiftilov
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