Differences

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

Link to this comparison view

pm:prj2025:vradulescu:razvan.galeseanu [2025/05/11 17:47]
razvan.galeseanu created
pm:prj2025:vradulescu:razvan.galeseanu [2025/05/27 14:42] (current)
razvan.galeseanu
Line 1: Line 1:
-\====== Sniffer ​si Transmitator de Coduri IR folosind ESP32 ======+====== Sniffer ​și Transmitator de Coduri IR ======
  
-\===== Introducere ===== <note tip>​Proiectul "IR Sniffer cu Transmitere"​ este un dispozitiv construit în jurul plăcii ESP32, capabil să intercepteze semnale IR provenite de la telecomenzi,​ să le afişeze pe un ecran LCD și să le stocheze pentru utilizări ulterioare. Utilizatorul poate naviga între codurile salvate folosind butoane și le poate retransmite folosind un LED infraroșu. Dispozitivul este portabil, fiind alimentat din baterii, și oferă un exemplu solid de integrare a funcțiilor de captare semnal, afișare, memorie persistentă și acțiune controlată manual. Proiectul acoperă utilizarea întreruperilor,​ comunicației I2C, scrierea în flash și procesarea semnalelor.</​note>​+===== Introducere ===== 
 +<note tip> 
 +Proiectul "IR Sniffer cu Transmitere"​ este un dispozitiv construit în jurul plăcii ESP32, capabil să intercepteze semnale IR provenite de la telecomenzi,​ să le afişeze pe un ecran LCD și să le stocheze pentru utilizări ulterioare. Utilizatorul poate naviga între codurile salvate folosind butoane și le poate retransmite folosind un LED infraroșu. Dispozitivul este portabil, fiind alimentat din baterii, și oferă un exemplu solid de integrare a funcțiilor de captare semnal, afișare, memorie persistentă și acțiune controlată manual. Proiectul acoperă utilizarea întreruperilor,​ comunicației I2C, scrierea în flash și procesarea semnalelor. 
 +</​note>​
  
-\===== Descriere ​generala ​=====+===== Descriere ​generală ​===== 
 +<note tip> 
 +Sistemul se bazează pe placa ESP32, care gestionează captarea semnalelor IR, memorarea acestora în flash și transmiterea lor ulterioară. Informațiile sunt afișate pe un LCD 1602 cu interfață I2C. Trei butoane sunt utilizate pentru salvarea unui cod nou, schimbarea codului selectat și transmiterea codului selectat. LED-ul IR este folosit pentru transmitere,​ iar senzorul CHQ1838 pentru recepție. Alimentarea se face fie prin USB, fie prin 4 baterii AA, conectate pe pinul de 5V. 
 +</​note>​
  
 +===== Hardware Design =====
 +<note tip>
 +🔹 Componente utilizate:
 +  * ESP32 DevKit  ​
 +  * LCD 1602 cu interfață I2C (0x27)  ​
 +  * Receptor IR CHQ1838  ​
 +  * LED IR 5mm, 940nm  ​
 +  * Rezistor 220Ω (pentru LED)  ​
 +  * 3 butoane tactile 6x6mm (pentru DELETE, SCROLL, SEND)  ​
 +  * Rezistori 4.7kΩ pentru pull-down  ​
 +  * Breadboard HQ (400 puncte)  ​
 +  * Fire jumper Mamă-Mamă și Mamă-Tată  ​
 +  * Suport 4xR6 (AA)
  
 +🔹 Conexiuni:
 +  * GPIO 35 → Receptor IR  ​
 +  * GPIO 32 → LED IR prin rezistor  ​
 +  * GPIO 34 → Buton SEND  ​
 +  * GPIO 33 → Buton SCROLL  ​
 +  * GPIO 25 → Buton DELETE  ​
 +  * GPIO 21, 22 → LCD I2C (SDA, SCL)
 +</​note>​
  
-<note tip>​Sistemul se bazează pe placa ESP32, care gestionează captarea semnalelor IR, memorarea acestora în flash și transmiterea lor ulterioarăInformațiile sunt afișate pe un LCD 1602 cu interfață I2C. Trei butoane sunt utilizate pentru salvarea unui cod nou, schimbarea codului selectat și transmiterea codului selectat. LED-ul ​IR este folosit pentru transmitere,​ iar senzorul CHQ1838 pentru recepție. Alimentarea se face fie prin USB, fie prin 4 baterii AA, conectate pe pinul de 5V.</​note>​+{{ schema_electrica.png?500 | Schema conexiuni ​IR Sniffer}}
  
-\===== Hardware ​Design ===== <note tip> +===== Software ​Design ===== 
-🔹 Microcontroller+<note tip> 
 +🔹 Mediu de dezvoltare:​ 
 +  * Arduino IDE cu suport ESP32
  
-* ESP32 DevKit (Plusivo) +🔹 Biblioteci utilizate: 
-  ​🔹 Afișaj +  * IRremoteESP8266 – pentru recepție și transmitere coduri ​IR   
-LCD 1602 cu interfață I2C (adresa 0x27) +  * LiquidCrystal_I2C – pentru ​afișajul LCD  ​ 
-  🔹 Recepție și transmisie ​IR +  * Preferences – pentru stocare coduri ​(opțional)
-* Receptor IR CHQ1838 +
-* LED IR 940nm (cu rezistor de 220Ω) +
-  ​🔹 Comenzi și semnalizare +
-3 Butoane tactile 6x6mm (pentru ​Save / Select / Send) +
-* Rezistori de pull-down 10kΩ sau 4.7kΩ +
-  ​🔹 Conexiuni și alimentare +
-Breadboard 400 puncte +
-* Set fire jumper +
-* Suport 4xR6 (AA) cu ieșire de 6V (conectat pe pinul 5V) +
-  🔹 Opțional +
-* Carcasă pentru protecție și prezentare+
  
-  </​note>​+🔹 Funcționalități implementate:​ 
 +  * Recepție cod IR și afișare protocol + cod HEX pe LCD   
 +  * Verificare cod duplicat înainte de salvare ​  
 +  * Navigare între coduri prin scroll ​  
 +  * Retransmitere coduri salvate ​  
 +  * Ștergere totală coduri ​  
 +  * Afișare stare și index curent pe LCD
  
-\===== Software Design ===== <note tip> +Exemplu logică afișare cod: 
-Descrierea codului aplicaţiei ​(firmware):+- Protocol: NEC   
 +- Cod HEX: e01fbf40 ​  
 +- Pe LCD: `NEC e01fbf40` ​(rând 1), `Cod 5/5` (rând 2) 
 +</​note>​
  
-* Mediu de dezvoltareArduino IDE (cu pachet ESP32 instalat) +===== Fragment ​de cod ===== 
-* Biblioteci utilizate:+<note tip> 
 +Următorul exemplu de cod evidențiază funcțiile principale ale dispozitivuluicaptarea 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>​
  
-  * IRremoteESP8266 (pentru decodare și transmitere IR) +<code cpp> 
-  * LiquidCrystal\_I2C (pentru afișaj) +#include &​lt;​Arduino.h&​gt;​ 
-  * Preferences (pentru stocare coduri în flash) +#include &​lt;​IRremote.hpp&​gt;​ 
-* Funcționalități:​+#include &​lt;​LiquidCrystal_I2C.h&​gt;​
  
-  * Detectare cod IR de la telecomandă +#define IR_RECEIVE_PIN 35 
-  * Afișare cod pe LCD +#define IR_SEND_PIN 32 
-  * Salvare cod în flash (`cod0`, `cod1`, ...) +#define BUTTON_SEND_PIN 34 
-  * Navigare între coduri salvate cu buton SELECT +#define BUTTON_SCROLL_PIN 33 
-  * Retransmitere cod IR cu buton SEND +#define BUTTON_DELETE_PIN 25
-  * Salvare index curent selectat în flash+
  
-    </​note>​+LiquidCrystal_I2C lcd(0x27, 16, 2);
  
-\===== Rezultate Obţinute ===== <note tip> +struct CodIR { 
-Dispozitivul a putut intercepta corect semnale IR de la mai multe telecomenzi (TV, AC), afişând codurile pe LCD. Salvarea și transmiterea codurilor s-a realizat corect prin butoanele dedicate, fără pierderi de date. Navigarea între coduri și funcția de retrimitere au funcționat stabil, iar LCD-ul a rămas lizibil în toate testele. Codurile salvate au rămas în memorie după repornire. </​note>​+  ​uint32_t cod; 
 +  String protocol; 
 +};
  
 +CodIR coduri[20];
 +int nrCoduri = 0;
 +int indexAfisat = -1;
 +unsigned long ultimaInregistrare = 0;
 +bool tocmaiAmSalvat = false;
  
-\===== Download ===== <note warning+void afiseazaPeLCD(String protocol, String codHex, String stare) { 
-Fişierele proiectului vor include:+  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);​ 
 +}
  
-* Cod sursă ​(.ino+void setup() { 
-* Schemă conexiuni Fritzing sau PNG +  Serial.begin(115200); 
-* README explicativ +  ​IrReceiver.begin(IR_RECEIVE_PIN,​ ENABLE_LED_FEEDBACK);​ 
-* Fișiere de test pentru coduri ​IR+  ​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>​
  
-Acestea pot fi încărcate pe platforma wiki sub namespace-ul:​ **:​pm\:​prj2025\:​ac\:​galeseanu\_razvan**. </​note>​+<note important>​ 
 +📌 Codul complet este disponibil în fișierul `ir_sniffer.ino` inclus în arhiva proiectului. 
 +</​note>​
  
 +===== Rezultate obținute =====
 +<note tip>
 +Dispozitivul a interceptat cu succes semnale IR de la diverse telecomenzi (TV, aer condiționat),​ afișând codurile corect pe LCD. Navigarea între coduri a funcționat stabil, iar transmiterea a fost realizată cu succes prin LED-ul IR. Codurile salvate nu s-au pierdut în timpul rulării și au fost vizibile corect. Sistemul a funcționat stabil atât pe USB cât și pe alimentare cu baterii AA. Interfața a fost clară și intuitivă.
 +</​note>​
  
 +{{ sniffer.jpg?​600 | Montaj final IR Sniffer - funcționare LCD și LED IR}}
 +
 +===== Download =====
 +<note warning>
 +Fişierele proiectului includ:
 +  * Cod sursă (`ir_sniffer.ino`)  ​
 +  * Schema conexiuni (PNG și Fritzing)  ​
 +  * README explicativ  ​
 +  * Set coduri test IR (dacă este cazul)
 +
 +Namespace recomandat pentru fişiere: **:​pm:​prj2025:​ac:​galeseanu_razvan**
 +</​note>​
 +
 +===== Jurnal =====
 +<note tip>
 +🗓 10.05.2025 – Testare receptor CHQ1838 cu diverse telecomenzi  ​
 +🗓 11.05.2025 – Implementare scroll și trimitere coduri  ​
 +🗓 12.05.2025 – Integrare funcție ștergere + test general  ​
 +🗓 13.05.2025 – Finalizare proiect și validare funcționalități
 +</​note>​
 +
 +===== Bibliografie / Resurse =====
 +<​note>​
 +🔹 **Resurse Software**:  ​
 +  * https://​github.com/​crankyoldgit/​IRremoteESP8266  ​
 +  * https://​github.com/​johnrickman/​LiquidCrystal_I2C
 +
 +🔹 **Resurse Hardware**:  ​
 +  * Datasheet ESP32 DevKit  ​
 +  * Datasheet CHQ1838 IR Receiver  ​
 +  * Forumuri Arduino + YouTube (ex: Techiesms, Andreas Spiess)
 +</​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/vradulescu/razvan.galeseanu.1746974866.txt.gz · Last modified: 2025/05/11 17:47 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