In deze post zal ik de werking werking uitleggen van de afstandsbediening en ook de vormgeving tonen met CAD-files (Siemens NX).
Werking
Om de afstandsbediening te doen werken op de Digicorder heb ik natuurlijk de IR codes nodig die de Digicorder ontvangt.
De eerste manier om deze te vinden was gemakkelijkste dacht ik. Ik heb namelijk op internet zitten zoeken naar de codes. Dit waren allemaal HEX of BIN files. Er is gezocht geweest op sites zoals:
www.remotecentral.com en
www.hifi-remote.com
Ook zijn er nog een heleboel andere sites aan te pas gekomen.
Omdat deze zoektocht weinig opleverde heb ik beslist om het over een andere boeg te gooien.
Ik ben op zoek om met een Arduino de codes in te lezen die de afstandbediening uitzendt.
(www.arduino.cc)
De Arduino is een microcontroller waar je relatief veel mee kan doen; dus ook IR codes inlezen.
Om de IR codes in te lezen heb ik gebruik gemaakt van:
- Breadboard
- Arduino Uno
- Jumper cables
- TSOP IR receiver (
http://www.farnell.com/datasheets/30485.pdf)
Hier de opstelling:
De witte draad loopt naar de naar de D11 van de Arduino. De rode draad loopt naar de 5V en de blauwe is de ground.
Om deze codes in te lezen moet men een bibliotheek toevoegen in de Arduino files; ik heb gebruik gemaakt van deze:
http://shirriff.github.io/Arduino-IRremote/
Om de codes in te lezen ben ik op zoek gegaan naar de juiste code. Ik heb gemerkt dat er veel manieren zijn om de codes van de afstandsbediening in te lezen,
Hieronder drie verschillende codes voor de knop:
1. 3381900107
3381900107
3381900107
2. UNKNOWN:
C993B34B
UNKNOWN:
C993B34B
3. 1
For IR Scope:
0x7 0x5 0x7 0xC 0x7 0x5 0xE 0xB 0x7 0x6 0xD 0xC 0xD 0xB 0x7
0x6 0x6 0x6 0xE 0xB 0xD 0x6 0x7 0xB 0x7
For Arduino sketch:
unsigned int raw[26] = {0x7,0x5,0x7,0xC,0x7,0x5,0xE,0xB,0x7,0x6,0xD,0xC,0xD,0xB,0x7,0x6,0x6,0x6,0xE,0xB,0xD,0x6, 0x7,0xB,0x7,};
irsend.sendRaw(raw,26,38);
4. 1
For IR
Scope:
+400 -250
+300 -650 +350 -300 +600 -600 +350 -300 +600 -600 +650 -600 +350 -300 +350 -300 +600 -600 +650 -300 +300 -600 +350
For Arduino
sketch:
unsigned
int raw[26] = {400,250,300,650,350,300,600,600,350,300,600,600,650,600,350,300,350,300,600,600,650,300,300,
600,350,};
irsend.sendRaw(raw,26,38);
Dus door verschillende programma's up te loaden naar de Arduino ontving ik de voorgaande codes.
Dit was allemaal voor de aan/uit-knop.
Uiteindelijk ben ik voortgegaan met het programma dat in 4 gebruikt werd omdat dit de enige was waarvoor ik ook het programma heb gevonden om de ingelezen code terug uit te zenden.
Eerst en vooral: ik heb het programma niet zelf geschreven; ik heb deze van:
Het programma gebuikt in de Arduino Software:
// If one
keypress results in multiple codes being output, then
// change
in IRremoteInt.h:
// #define
_GAP 50000
#include
<IRremote.h>
int
RECV_PIN = 11;
IRrecv
irrecv(RECV_PIN);
decode_results
results;
void
setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
int c = 1;
void
dump(decode_results *results) {
int count = results->rawlen;
Serial.println(c);
c++;
Serial.println("For IR Scope: ");
for (int i = 1; i < count; i++) {
if ((i % 2) == 1) {
Serial.print("+");
Serial.print(results->rawbuf[i]*USECPERTICK,
DEC);
}
else {
Serial.print(-(int)results->rawbuf[i]*USECPERTICK,
DEC);
}
Serial.print(" ");
}
Serial.println("");
Serial.println("For Arduino sketch:
");
Serial.print("unsigned int raw[");
Serial.print(count, DEC);
Serial.print("] = {");
for (int i = 1; i < count; i++) {
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK,
DEC);
}
else {
Serial.print((int)results->rawbuf[i]*USECPERTICK,
DEC);
}
Serial.print(",");
}
Serial.print("};");
Serial.println("");
Serial.print("irsend.sendRaw(raw,");
Serial.print(count, DEC);
Serial.print(",38);");
Serial.println("");
Serial.println("");
}
void loop()
{
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // Receive the
next value
}
}
Nu kunnen we de de uitgezonden IR code achterhalen via de Seriële Monitor:
Nu moeten we de codes nog terug uitzenden:
-Arduino Uno
-IR LED
Het gebruikte programma bevindt zich tussen de voorbeelden omdat we de IRremote bibliotheek hebben toegevoegd.
Open IRsendDemo:
/*
* IRremote: IRsendDemo - demonstrates sending
IR codes with IRsend
* An IR LED must be connected to Arduino PWM
pin 3.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
#include
<IRremote.h>
IRsend
irsend;
unsigned int raw[26] =
{350,300,350,550,350,300,650,550,400,250,650,600,650,600,350,300,300,300,650,550,700,300,300,600,350,};
void
setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.read() != -1) {
for (int i = 0; i < 3; i++) {
irsend.sendRaw(raw,26,38);
delay(1000);
}
}
}
Dit voorbeeld is nu met de Aan/uit-knop.
Om deze code te zenden moeten we de Seriële Monitor openen en bovenaan 1 drukken; erna op verzenden.
Dit is nog omslachtig dus tegen volgende keer zorg ik ervoor dat dit via de drukknop kan gebeuren.
Vormgeving
Hier de voorlopige CAD files die de vorm en opbouw tonen:
Deze CAD files zijn nog niet af; het enige dat al vast staat is de vorm.
De toetsen zouden uit een Siliconepad bestaan met drukknoppen onder.
Eerst had ik gedacht om de 2 helften met snapfits in elkaar te doen klikken;
na overleg met de leerkracht bleek een schroefboss een beter idee.
Het klepje voor de batterijen zit wel met snapfits vast.