Strumenti Utente

Strumenti Sito


riservata:ir

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
Prossima revisioneEntrambe le parti successive la revisione
riservata:ir [2018/09/14 17:12] – [Esempio con decodifica segnale IR] adminriservata:ir [2018/09/15 13:19] admin
Linea 15: Linea 15:
 ==== Trasmettitore ==== ==== Trasmettitore ====
  
-===== Esempio con decodifica segnale IR =====+Un LED a infrarosso della lunghezza d'onda giusta (compatibile col ricevitore) da pilotare a 38kHz con un microcontrollore. 
 + 
 +===== Idee per progetti ===== 
 + 
 +  * video/foto di un telecomando mentre va (si vede col sensore di una camera digitale) 
 +  * reverse engineering di un protocollo IR 
 +  * copiare i dati di un telecomando (usare la libreria) per fare un telecomando con arduino e IRED 
 + 
 +===== Osservazioni ===== 
 + 
 +  * perché 38kHz? non confonde il segnale con altro  
 +  * non si riesce a vedere il segnale modulato, il ricevitore dà in uscita un segnale già demodulato 
 + 
 +===== Decodifica segnale IR con Arduino ===== 
 + 
 +Esiste una libreria molto facile da utilizzare fatta da Ken Shirrif. Il programma seguente invece non usa librerie ed è sufficientemente facile da capire. Prerequisiti: 
 +  * tipi di dati 
 +  * bitwise math (shift, AND) 
 +  * array 
 +  * registri microcontrollori 
  
 <code C> <code C>
Linea 145: Linea 165:
  
 </code> </code>
 +
 +===== Telecomando IR con Arduino =====
 +
 +Programma adattato da adafruit per pilotare lo scatto remoto della mia Nikon D50 (funziona). Il codice IR è stato ottenuto con un telecomando Nikon e qualcosa tipo il programma sopra. Non usa i registri quindi è sicuramente migliorabile lato prestazioni.
 +
 +<code C>
 +
 +// Intervallometro IR per la Nikon D50 (da adafruit)
 +
 +// IRED sul pin 13 con resistore da 1k
 +byte IRED = 13;
 +// intervallo in secondi tra gli scatti
 +byte intervallo = 5;
 +
 +void setup() {                
 +  pinMode(IRED, OUTPUT);      
 +  Serial.begin(9600);
 +}
 +
 +void loop() {
 +  Serial.println("Invio sequenza IR");
 +  // invia comando scatto
 +  SendNikonCode();
 +  // intervallo
 +  delay(intervallo * 1000);
 +}
 +
 +// genera un segnale a 38kHz per tot microsecondi
 +void pulseIR(long usecs) {
 +
 +  // disattiva gli interrupt
 +  noInterrupts();
 +
 +  while (usecs > 0) {
 +    // 38 kHz corrisponde circa a 26 us (3+10+3+10)
 +    // digitalWrite impiega 3 us (usare i registri?
 +    digitalWrite(IRED, HIGH);
 +    delayMicroseconds(10);
 +    digitalWrite(IRED, LOW);
 +    delayMicroseconds(10);
 +    usecs -= 26;
 +  }
 +
 +  // riattiva gli interrupt
 +  interrupts();
 +}
 +
 +// sequenza IR per scatto remoto Nikon D50
 +void SendNikonCode() {
 +  // comando scatto
 +  pulseIR(2000);  // 2080 codice adafruit non va!
 +  delay(27);
 +  pulseIR(440);
 +  delayMicroseconds(1500);
 +  pulseIR(460);
 +  delayMicroseconds(3440);
 +  pulseIR(480);
 +
 +  // pausa
 +  delay(65);
 +
 +  // ripetizione comando scatto
 +  pulseIR(2000);
 +  delay(27);
 +  pulseIR(440);
 +  delayMicroseconds(1500);
 +  pulseIR(460);
 +  delayMicroseconds(3440);
 +  pulseIR(480);
 +}
 +
 +
 +</code>
 +
 +
 +===== Riferimenti =====
 +
 +  * protocollo NEC (usato anche dalla mia smart TV LG) https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol
 +  * tutorial e programma senza librerie (adattato sopra) https://learn.adafruit.com/ir-sensor/using-an-ir-sensor
 +  * tutorial con molti riferimenti utili https://learn.sparkfun.com/tutorials/ir-communication#ir-communication-basics
 +  * autore della libreria IR http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
 +  * generalità sulla trasmissione IR https://www.sbprojects.net/knowledge/ir/index.php
 +  * datasheet https://www.vishay.com/docs/82667/tsdp341.pdf
 +  * circuito di un ricevitore vishay https://www.vishay.com/docs/80069/circuit.pdf
 +
riservata/ir.txt · Ultima modifica: 2020/07/03 15:58 da 127.0.0.1