Differences

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

Link to this comparison view

pm:prj2025:vradulescu:razvan.galeseanu [2025/05/25 15:32]
razvan.galeseanu
pm:prj2025:vradulescu:razvan.galeseanu [2025/05/27 14:42] (current)
razvan.galeseanu
Line 1: Line 1:
-====== Sniffer și Transmitator de Coduri IR folosind ESP32 ======+====== Sniffer și Transmitator de Coduri IR ======
  
 ===== Introducere ===== ===== Introducere =====
Line 14: Line 14:
 <note tip> <note tip>
 🔹 Componente utilizate: 🔹 Componente utilizate:
-  * ESP32 DevKit +  * ESP32 DevKit ​  
-  * LCD 1602 cu interfață I2C (0x27) +  * LCD 1602 cu interfață I2C (0x27) ​  
-  * Receptor IR CHQ1838 +  * Receptor IR CHQ1838 ​  
-  * LED IR 5mm, 940nm +  * LED IR 5mm, 940nm   
-  * Rezistor 220Ω (pentru LED) +  * Rezistor 220Ω (pentru LED)   
-  * 3 butoane tactile 6x6mm (pentru ​SAVE, SCROLL, SEND) +  * 3 butoane tactile 6x6mm (pentru ​DELETE, SCROLL, SEND)   
-  * Rezistori 4.7kΩ pentru pull-down +  * Rezistori 4.7kΩ pentru pull-down ​  
-  * Breadboard HQ (400 puncte) +  * Breadboard HQ (400 puncte) ​  
-  * Fire jumper Mamă-Mamă și Mamă-Tată+  * Fire jumper Mamă-Mamă și Mamă-Tată ​ 
   * Suport 4xR6 (AA)   * Suport 4xR6 (AA)
  
 🔹 Conexiuni: 🔹 Conexiuni:
-  * GPIO 35 → Receptor IR +  * GPIO 35 → Receptor IR   
-  * GPIO 32 → LED IR prin rezistor +  * GPIO 32 → LED IR prin rezistor ​  
-  * GPIO 34 → Buton SEND +  * GPIO 34 → Buton SEND   
-  * GPIO 33 → Buton SCROLL +  * GPIO 33 → Buton SCROLL ​  
-  * GPIO 25 → Buton DELETE+  * GPIO 25 → Buton DELETE ​ 
   * GPIO 21, 22 → LCD I2C (SDA, SCL)   * GPIO 21, 22 → LCD I2C (SDA, SCL)
 </​note>​ </​note>​
Line 42: Line 42:
  
 🔹 Biblioteci utilizate: 🔹 Biblioteci utilizate:
-  * IRremoteESP8266 – pentru recepție și transmitere coduri IR +  * IRremoteESP8266 – pentru recepție și transmitere coduri IR   
-  * LiquidCrystal_I2C – pentru afișajul LCD+  * LiquidCrystal_I2C – pentru afișajul LCD  
   * Preferences – pentru stocare coduri (opțional)   * Preferences – pentru stocare coduri (opțional)
  
 🔹 Funcționalități implementate:​ 🔹 Funcționalități implementate:​
-  * Recepție cod IR și afișare protocol + cod HEX pe LCD +  * Recepție cod IR și afișare protocol + cod HEX pe LCD   
-  * Verificare cod duplicat înainte de salvare +  * Verificare cod duplicat înainte de salvare ​  
-  * Navigare între coduri prin scroll +  * Navigare între coduri prin scroll ​  
-  * Retransmitere coduri salvate +  * Retransmitere coduri salvate ​  
-  * Ștergere totală coduri+  * Ștergere totală coduri ​ 
   * Afișare stare și index curent pe LCD   * Afișare stare și index curent pe LCD
  
 Exemplu logică afișare cod: Exemplu logică afișare cod:
-- Protocol: NEC +- Protocol: NEC   
-- Cod HEX: e01fbf40+- Cod HEX: e01fbf40 ​ 
 - Pe LCD: `NEC e01fbf40` (rând 1), `Cod 5/5` (rând 2) - Pe LCD: `NEC e01fbf40` (rând 1), `Cod 5/5` (rând 2)
 +</​note>​
 +
 +===== Fragment de cod =====
 +<note tip>
 +Următorul exemplu de cod evidențiază funcțiile principale ale dispozitivului:​ captarea codului IR, afișarea pe LCD, salvarea în memorie, navigarea între coduri și retransmiterea acestora. Butoanele conectate la GPIO permit interacțiunea directă cu utilizatorul.
 +</​note>​
 +
 +<code cpp>
 +#include &​lt;​Arduino.h&​gt;​
 +#include &​lt;​IRremote.hpp&​gt;​
 +#include &​lt;​LiquidCrystal_I2C.h&​gt;​
 +
 +#define IR_RECEIVE_PIN 35
 +#define IR_SEND_PIN 32
 +#define BUTTON_SEND_PIN 34
 +#define BUTTON_SCROLL_PIN 33
 +#define BUTTON_DELETE_PIN 25
 +
 +LiquidCrystal_I2C lcd(0x27, 16, 2);
 +
 +struct CodIR {
 +  uint32_t cod;
 +  String protocol;
 +};
 +
 +CodIR coduri[20];
 +int nrCoduri = 0;
 +int indexAfisat = -1;
 +unsigned long ultimaInregistrare = 0;
 +bool tocmaiAmSalvat = false;
 +
 +void afiseazaPeLCD(String protocol, String codHex, String stare) {
 +  lcd.clear();​
 +  lcd.setCursor(0,​ 0);
 +  lcd.print(protocol + " " + codHex);
 +  lcd.setCursor(0,​ 1);
 +  if (nrCoduri > 0)
 +    lcd.print("​Cod " + String(indexAfisat + 1) + "/"​ + String(nrCoduri));​
 +  else
 +    lcd.print(stare);​
 +}
 +
 +void setup() {
 +  Serial.begin(115200);​
 +  IrReceiver.begin(IR_RECEIVE_PIN,​ ENABLE_LED_FEEDBACK);​
 +  IrSender.begin(IR_SEND_PIN);​
 +  IrSender.enableIROut(38);​
 +  pinMode(BUTTON_SEND_PIN,​ INPUT);
 +  pinMode(BUTTON_SCROLL_PIN,​ INPUT);
 +  pinMode(BUTTON_DELETE_PIN,​ INPUT);
 +  lcd.init();
 +  lcd.backlight();​
 +  lcd.print("​IR sistem gata"​);​
 +  delay(1000);​
 +  lcd.clear();​
 +}
 +</​code>​
 +
 +<note important>​
 +📌 Codul complet este disponibil în fișierul `ir_sniffer.ino` inclus în arhiva proiectului.
 </​note>​ </​note>​
  
Line 70: Line 130:
 <note warning> <note warning>
 Fişierele proiectului includ: Fişierele proiectului includ:
-  * Cod sursă (`ir_sniffer.ino`) +  * Cod sursă (`ir_sniffer.ino`) ​  
-  * Schema conexiuni (PNG și Fritzing) +  * Schema conexiuni (PNG și Fritzing) ​  
-  * README explicativ+  * README explicativ ​ 
   * Set coduri test IR (dacă este cazul)   * Set coduri test IR (dacă este cazul)
  
Line 88: Line 148:
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
 <​note>​ <​note>​
-🔹 **Resurse Software**:+🔹 **Resurse Software**: ​ 
   * https://​github.com/​crankyoldgit/​IRremoteESP8266  ​   * https://​github.com/​crankyoldgit/​IRremoteESP8266  ​
   * https://​github.com/​johnrickman/​LiquidCrystal_I2C   * https://​github.com/​johnrickman/​LiquidCrystal_I2C
  
-🔹 **Resurse Hardware**:+🔹 **Resurse Hardware**: ​ 
   * Datasheet ESP32 DevKit  ​   * Datasheet ESP32 DevKit  ​
   * Datasheet CHQ1838 IR Receiver  ​   * Datasheet CHQ1838 IR Receiver  ​
pm/prj2025/vradulescu/razvan.galeseanu.1748176365.txt.gz · Last modified: 2025/05/25 15:32 by razvan.galeseanu
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