IR led signalen ontvangen met IR sensor

Arduino specifieke Software
Berichten: 7
Geregistreerd: 28 Jan 2016, 10:40

IR led signalen ontvangen met IR sensor

Berichtdoor pfamet » 08 Feb 2016, 17:59

Beste allemaal,

Ik ben een beetje aan het experimenteren met een IR sensor en een IR led. Beide heb ik aangesloten op mijn Arduino Uno. Ik loop nu tegen het probleem aan dat de IR sensor de signalen van de IR led niet ontvangt. Ik verzend met de IR led een signaal als ik op een schakelaar klik.

Het volgende is het geval:
Druk ik op een knop op de afstandsbediening dan wordt dit wel ontvangen door de IR sensor.
Druk ik op de schakelaar verzend de IR led wel een signaal. (Met de camera zie ik duidelijk dat de IR led het doet. Het kleurt paars op als ik op de schakelaar klik)
Maar dit signaal wordt niet ontvangen door de IR sensor.

De onderstaande code wordt gebruikt:

Code: Alles selecteren
#include <IRremote.h>

#define RECEIVE_PIN 2

IRrecv IR(RECEIVE_PIN);
IRsend irsend;
decode_results result;

void setup()
{
   Serial.begin(9600);
   IR.enableIRIn();
}

void loop()
{
   if (IR.decode(&result)) {
      Serial.println(result.value, DEC); // Het resultaat wordt geprint als ik op de afstandsbediening klik, maar niet bij een irsend.

      IR.resume();
   }

   // If vereenvoudigd
   if (buttonPressed) {
      irsend.sendSony(0x68B92, 20); // Dit wordt verstuurd, alleen niet ontvangen
      IR.enableIRIn(); // Moet volgens verschillende bronnen opnieuw enabled worden
   }
   
}


De IR led is aangesloten met een 330 ohm weerstand.

Wie kan mij hierbij helpen?

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IR led signalen ontvangen met IR sensor

Berichtdoor nicoverduin » 08 Feb 2016, 19:36

Als alles op hetzelfde bordje moet draaien gaat het niet werken.....
Op het moment dat jij aan het zenden bent ben je niet aan het ontvangen. Het is geen multicore processor met 2 individuele processen. Dus of 2 aparte bordjes of ..... briljant zijn ? :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 28 Jan 2016, 10:40

Re: IR led signalen ontvangen met IR sensor

Berichtdoor pfamet » 09 Feb 2016, 11:51

Oké duidelijk! Het is natuurlijk ook een beetje onlogisch om dat te willen ;)
De reden dat ik het probeerde was om te controleren welk signaal de IR led daadwerkelijk verstuurd.

Ik probeer namelijk een afstandsbediening te 'clonen'. Ik heb eerst het signaal dat de afstandsbediening verstuurd opgevangen met de IR sensor.
En vervolgens probeer ik dezelfde code te versturen met de IR led. Alleen de TV doet er niets mee, wat doe ik fout?

Code: Alles selecteren
#include <IRremote.h>

IRsend irsend;

// Deze code is eerder opgevangen met de IR sensor
unsigned int soundDown[68] = {
   5516, 4500, 4500, 550, 1750, 500, 600, 500, 600, 500, 600,
   500, 1750, 550, 600, 500, 600, 500, 1750, 500, 1750, 500, 600,
   500, 600, 550, 600, 500, 1750, 500, 600, 500, 600, 500, 1750, 500,
   650, 500, 600, 500, 1750, 500, 600, 500, 600, 550, 600, 500, 1750,
   500, 600, 500, 1750, 500, 1750, 500, 600, 500, 1750, 550, 1700, 550,
   1700, 550, 600, 500, 1750, 500
};

void setup()
{
   Serial.begin(9600);
}

void loop()
{
   if (buttonPressed) {
      irsend.sendRaw(soundDown, 68, 32); // Send code
   }
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IR led signalen ontvangen met IR sensor

Berichtdoor nicoverduin » 09 Feb 2016, 13:44

Heb je al eens op het web gezocht? Meerdere voorbeelden te vinden...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 28 Jan 2016, 10:40

Re: IR led signalen ontvangen met IR sensor

Berichtdoor pfamet » 09 Feb 2016, 23:29

Jazeker, er zijn inderdaad veel voorbeelden te vinden. En ik heb ook al veel geprobeerd, maar nog niets werkend gekregen.

Op dit moment heb ik het volgende (voorbeeld van IRremote library):

cpp code
#include <IRremote.h>

int RECV_PIN = 11;
int BUTTON_PIN = 12;
int STATUS_PIN = 13;

IRrecv irrecv(RECV_PIN);
IRsend irsend;

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(BUTTON_PIN, INPUT);
pinMode(STATUS_PIN, OUTPUT);
}

// Storage for the recorded code
int codeType = -1; // The type of code
unsigned long codeValue; // The code value if not raw
unsigned int rawCodes[RAWBUF]; // The durations if raw
int codeLen; // The length of the code
int toggle = 0; // The RC5/6 toggle state

// Stores the code for later playback
// Most of this code is just logging
void storeCode(decode_results *results) {
codeType = results->decode_type;
int count = results->rawlen;
if (codeType == UNKNOWN) {
Serial.println("Received unknown code, saving as raw");
codeLen = results->rawlen - 1;
// To store raw codes:
// Drop first value (gap)
// Convert from ticks to microseconds
// Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
for (int i = 1; i <= codeLen; i++) {
if (i % 2) {
// Mark
rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK - MARK_EXCESS;
Serial.print(" m");
}
else {
// Space
rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK + MARK_EXCESS;
Serial.print(" s");
}
Serial.print(rawCodes[i - 1], DEC);
}
Serial.println("");
}
else {
if (codeType == NEC) {
Serial.print("Received NEC: ");
if (results->value == REPEAT) {
// Don't record a NEC repeat value as that's useless.
Serial.println("repeat; ignoring.");
return;
}
}
else if (codeType == SONY) {
Serial.print("Received SONY: ");
}
else if (codeType == RC5) {
Serial.print("Received RC5: ");
}
else if (codeType == RC6) {
Serial.print("Received RC6: ");
}
else {
Serial.print("Unexpected codeType ");
Serial.print(codeType, DEC);
Serial.println("");
}
Serial.println(results->value, HEX);
codeValue = results->value;
codeLen = results->bits;
}
}

void sendCode(int repeat) {
if (codeType == NEC) {
if (repeat) {
irsend.sendNEC(REPEAT, codeLen);
Serial.println("Sent NEC repeat");
}
else {
irsend.sendNEC(codeValue, codeLen);
Serial.print("Sent NEC ");
Serial.println(codeValue, HEX);
}
}
else if (codeType == SONY) {
irsend.sendSony(codeValue, codeLen);
Serial.print("Sent Sony ");
Serial.println(codeValue, HEX);
}
else if (codeType == RC5 || codeType == RC6) {
if (!repeat) {
// Flip the toggle bit for a new button press
toggle = 1 - toggle;
}
// Put the toggle bit into the code to send
codeValue = codeValue & ~(1 << (codeLen - 1));
codeValue = codeValue | (toggle << (codeLen - 1));
if (codeType == RC5) {
Serial.print("Sent RC5 ");
Serial.println(codeValue, HEX);
irsend.sendRC5(codeValue, codeLen);
}
else {
irsend.sendRC6(codeValue, codeLen);
Serial.print("Sent RC6 ");
Serial.println(codeValue, HEX);
}
}
else if (codeType == UNKNOWN /* i.e. raw */) {
// Assume 38 KHz
irsend.sendRaw(rawCodes, codeLen, 38);
Serial.println("Sent raw");
}
}

int lastButtonState;

void loop() {
// If button pressed, send the code.
int buttonState = digitalRead(BUTTON_PIN);
if (lastButtonState == HIGH && buttonState == LOW) {
Serial.println("Released");
irrecv.enableIRIn(); // Re-enable receiver
}

if (buttonState) {
Serial.println("Pressed, sending");
digitalWrite(STATUS_PIN, HIGH);
sendCode(lastButtonState == buttonState);
digitalWrite(STATUS_PIN, LOW);
delay(50); // Wait a bit between retransmissions
}
else if (irrecv.decode(&results)) {
digitalWrite(STATUS_PIN, HIGH);
storeCode(&results);
irrecv.resume(); // resume receiver
digitalWrite(STATUS_PIN, LOW);
}
lastButtonState = buttonState;
}


Als ik op een knop van de TV afstandsbediening klik wordt dit ontvangen in het programma. Als ik vervolgens op de schakelaar klikt wordt deze zojuist ontvangen code verzonden (IR led kleurt ook paars). Alleen de TV doet er niets mee/lijkt het niet te ontvangen. Maar ik heb geen idee waarom. Ligt het aan de TV of toch aan het verzonden signaal of kan er nog een andere reden zijn?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IR led signalen ontvangen met IR sensor

Berichtdoor nicoverduin » 10 Feb 2016, 08:45

wat voor output krijg je op de serial?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 28 Jan 2016, 10:40

Re: IR led signalen ontvangen met IR sensor

Berichtdoor pfamet » 10 Feb 2016, 11:53

nicoverduin schreef:wat voor output krijg je op de serial?

Het volgende:

Received unknown code, saving as raw
m2500 s1050 m300 s1050 m300 s600 m250 s600 m1200 s1450 m300 s600 m300 s600 m300 s600 m300 s600 m300 s550 m300 s600 m300 s600 m300 s600 m300 s600 m250 s600 m750 s1050 m300 s600 m300 s550 m300 s600 m300

Pressed, sending
Sent raw

Pressed, sending
Sent raw

Released

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IR led signalen ontvangen met IR sensor

Berichtdoor nicoverduin » 10 Feb 2016, 12:45

Ik kwam hier een lib tegen https://github.com/z3t0/Arduino-IRremote. Weet niet of je die al getest hebt. Maar die ondersteund best veel types.
Maar kijkend naar de code ga je er nu vanuit dat het 38kHz zend freq. Ik weet niet eens of dat wel zo is..
Wat voor TV is het eigenlijk?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 28 Jan 2016, 10:40

Re: IR led signalen ontvangen met IR sensor

Berichtdoor pfamet » 13 Feb 2016, 17:35

Volgens mij heb ik nog niet naar die lib gekeken, dus dat ga ik zeker nog doen!

Wat betreft de frequentie heb je helemaal gelijk. Maar ik kan nergens vinden wat de frequentie dan zou moeten zijn (Philips TV). Ik heb 38, 36 en 39.2 geprobeerd, alle drie zonder resultaat.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: IR led signalen ontvangen met IR sensor

Berichtdoor nicoverduin » 13 Feb 2016, 18:17

Tja dan wordt het drifitig googelen.... Er is zat geschreven over afstandsbedieningen en hoe ze werken.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: ejayiorakalo en 74 gasten