Sniffer și Transmitator de Coduri IR

Introducere

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.

Descriere generală

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.

Hardware Design

🔹 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)

 Schema conexiuni IR Sniffer

Software Design

🔹 Mediu de dezvoltare:

  • Arduino IDE cu suport ESP32

🔹 Biblioteci utilizate:

  • IRremoteESP8266 – pentru recepție și transmitere coduri IR
  • LiquidCrystal_I2C – pentru afișajul LCD
  • Preferences – pentru stocare coduri (opțional)

🔹 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

Exemplu logică afișare cod: - Protocol: NEC - Cod HEX: e01fbf40 - Pe LCD: `NEC e01fbf40` (rând 1), `Cod 5/5` (rând 2)

Fragment de cod

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.

#include <Arduino.h>
#include <IRremote.hpp>
#include <LiquidCrystal_I2C.h>
 
#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();
}

📌 Codul complet este disponibil în fișierul `ir_sniffer.ino` inclus în arhiva proiectului.

Rezultate obținute

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ă.

 Montaj final IR Sniffer - funcționare LCD și LED IR

Download

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

Jurnal

🗓 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

Bibliografie / Resurse

🔹 Resurse Software:

🔹 Resurse Hardware:

  • Datasheet ESP32 DevKit
  • Datasheet CHQ1838 IR Receiver
  • Forumuri Arduino + YouTube (ex: Techiesms, Andreas Spiess)

Export to PDF

pm/prj2025/vradulescu/razvan.galeseanu.txt · Last modified: 2025/05/27 14:42 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