Sign in   |  Join   |  Help

B&O IR and Arduino

This post has 38 Replies | 9 Followers

BeoMotion
Top 200 Contributor
Posts 371
OFFLINE
Bronze Member
BeoMotion Posted: Sat, Sep 6 2014 7:18 PM

Hi BeoWorlders,

 

if any of you is interested in a IR library for transmitting B&O codes with an Arduino board: I have just created one and uploaded it to GitHub. Smile

Took me some time, especially because of the high modulation frequency and the B&O unique protocol. It is working quite well and seams to be the only one out there for this purpose at the moment...

 

Link:  https://github.com/PolyVection/PolyIR

 

 

BR,

BeoMotion.

olvisab
Top 75 Contributor
Posts 1,359
OFFLINE
Silver Member
olvisab replied on Sat, Sep 6 2014 11:07 PM
Thanks for your efforts !

You would say b&o IR and Apple, I think you would have more success and maybe some beoworlders would praise your name.Yes - thumbs up

beolab 5, beolab 9, beolab 3, beolab 10, beolab 5000, beolab 8000, beolab 3500, IWS 2000, beovision 7 55 mk2,  beotime, beogram 7000 white mmc2, beosound ouverture, beosound essence, beomaster 900 RG de luxe and the collection continues...

elephant
Top 10 Contributor
AU
Posts 8,218
OFFLINE
Founder
Well done - good work - I hope some one will leverage it

BeoNut since '75

BeoMotion
Top 200 Contributor
Posts 371
OFFLINE
Bronze Member
Thanks for the praise. Smile

@olvisab: what especially do you mean with that? Which combination of devices?
olvisab
Top 75 Contributor
Posts 1,359
OFFLINE
Silver Member
olvisab replied on Sun, Sep 7 2014 10:07 AM
BeoMotion:

Thanks for the praise.

@olvisab: what especially do you mean with that? Which combination of devices?

You are welcome Beomotion

I am not an apple fan, sorry.

beolab 5, beolab 9, beolab 3, beolab 10, beolab 5000, beolab 8000, beolab 3500, IWS 2000, beovision 7 55 mk2,  beotime, beogram 7000 white mmc2, beosound ouverture, beosound essence, beomaster 900 RG de luxe and the collection continues...

madskp
Top 500 Contributor
Denmark
Posts 239
OFFLINE
Gold Member
madskp replied on Sun, Sep 7 2014 10:12 AM

Could these codes also be used for receiving B&O IR codes with an Arduino with en IR receiver?

BeoMotion
Top 200 Contributor
Posts 371
OFFLINE
Bronze Member
BeoMotion replied on Sun, Sep 7 2014 10:47 AM
@olvisab: thanks anyway. no problem Smile

My library can only be used to send those codes. On GitHub there is an other one called "Beomote". This is a receiver for those Beo IR codes only.

For receiving the codes you have to either use the B&O IR eye or a TSOP7000.
MJBeo
Top 500 Contributor
Netherlands
Posts 224
OFFLINE
Gold Member
MJBeo replied on Tue, Sep 9 2014 12:16 PM

Interesting, thanks for your effort!

Beosystem 5500 + RL60.2 / RL35    BV7-32 MKIII + Raspberry Pi3 + Lintronic -238 + MCL2P & CX50 / Cona     4 link rooms with MCL2 A / MCL2 A/V + MCL2P  + CX100 / CX50 / S45.2 / Grundig 210a     Various Vintage restore objects

tournedos
Top 10 Contributor
Finland
Posts 7,312
OFFLINE
Gold Member
Moderator
tournedos replied on Tue, Sep 9 2014 12:25 PM

You might be interested in these old threads as well:

http://forum.beoworld.org/forums/t/8970.aspx

http://forum.beoworld.org/forums/t/674.aspx

--mika

Franck
Not Ranked
Near Paris
Posts 18
OFFLINE
Gold Member
Franck replied on Tue, Sep 9 2014 1:08 PM

I'm actually working to build  B&O receiver to control some kind of system with a B&O remote

like a MP3 player connected by aux input to my beocenter etc...

it's like a B&O receiver with relay output.

Build an emitter is easy because we can program the microcontroller counter to make any frequencies we needs but the problem for the receiver is the 455KHz carrier frequency.
The one used by B&O is not a standard like the 36 or 38KHz used by IR/demodulators available on the market.

so i've build an IR receiver based on the 455KHz circuit from the beocenter diagram. (based on discrete components and 455KHz filter available at Farnell) and perhaps one based on the hard to find (obsolete) U2506 chip

(perharps another good way can be the use of the datalink interface from the beocenter but I must make some back engineering on the protocol...but i have storage scope)

If it works I let you know ;)

I love when a plan comes together

Beogram 4002 / Beocenter 9000 / Beocenter 9500 / RL140 / Beolink 1000 / Beolink 4

BeoMotion
Top 200 Contributor
Posts 371
OFFLINE
Bronze Member

I think that the datalink protocol was already completely reverse-engineered by some clever guys. 

One solution you can find in one of the older threads that tournedos mentioned just above.  

 

Before building a discrete demodulator, I would always suggest using an TSOP7000. Those are known to work very well with the B&O remotes. Unfortunately they are not produced anymore but there are several places you can get them in small quantities.

 

 

Franck
Not Ranked
Near Paris
Posts 18
OFFLINE
Gold Member
Franck replied on Tue, Sep 9 2014 4:12 PM

Yes i've seen the old topic about datalink but I need to go further in the specs.

about the TSOP7000 the lack of availability was why i've choosen the discrete way. ( it's an obsolete component and you only find new old stock parts. it's not a good choice if you want to share the circuit)

I'm working on faulty LC2 dimmer actually and I will work on the remote receiver when I will have some free time :)

I love when a plan comes together

Beogram 4002 / Beocenter 9000 / Beocenter 9500 / RL140 / Beolink 1000 / Beolink 4

RaMaBo
Top 150 Contributor
near Munich
Posts 549
OFFLINE
Gold Member
RaMaBo replied on Tue, Sep 9 2014 4:35 PM

Hi,

 

the discreete IR receiver gives a better reception and sensitivity than the TSOP 7000/5700. Actually the discreete circuit is an AM receiver for the fixed frequency of 455 KHz. Nevertheless the integrated TSOP solution can be used as a backup for easier testing or a smaller footprint in the whole project.

 

Ralph-Marcus

Franck
Not Ranked
Near Paris
Posts 18
OFFLINE
Gold Member
Franck replied on Tue, Sep 9 2014 4:56 PM

yes the discrete receiver seems to be very sensitive but uses another component hard to find : the 455Khz bandpass filter. but it's available at farnell.

 

I love when a plan comes together

Beogram 4002 / Beocenter 9000 / Beocenter 9500 / RL140 / Beolink 1000 / Beolink 4

tournedos
Top 10 Contributor
Finland
Posts 7,312
OFFLINE
Gold Member
Moderator

Franck:

Build an emitter is easy because we can program the microcontroller counter to make any frequencies we needs but the problem for the receiver is the 455KHz carrier frequency.

Actually it isn't that easy - at least with the standard Arduino with a standard clock frquency - because the counter/timer resoluution isn't good enough for accurate 455k generation. You get either several dozen kHz too high or too low. It works, but the range suffers a lot.

That's why I'm using the Teensy boards; they have a more advanced AVR controller with a high speed timer/counter which has no problem generating an accurate 455 kHz signal directly.

--mika

Franck
Not Ranked
Near Paris
Posts 18
OFFLINE
Gold Member
Franck replied on Tue, Sep 9 2014 6:55 PM

This is why i'm not using arduino ;) are you sure that the UBRR or counter compare interrupts + reload can't accurately create the 455KHz carrier?

I'm working with my own microcontroller boards design and assembler / C++ cross compiler.

this kind of things ;)

http://www.harpelaser.com/images/mainboard.jpg

 

I love when a plan comes together

Beogram 4002 / Beocenter 9000 / Beocenter 9500 / RL140 / Beolink 1000 / Beolink 4

BeoMotion
Top 200 Contributor
Posts 371
OFFLINE
Bronze Member
BeoMotion replied on Wed, Sep 10 2014 10:07 AM

Yes, you are right that the Arduino is not able to exactly produce 455khz. 

Instead, you have to be satisfied with 444khz at Timer1 (the most accurate). I have it tested with oscilloscope and this frequency is quite stable and will give you a range of some meters if you put a transistor between.

Of course there are better solutions around than Arduino, but this one comes with a nice IDE, has a big community and is available nearly everywhere. 

 

Regarding the receiver: sounds interesting. Since I always had an IR eye or TSOP7000 near me I never thought about another solution.  I know that the eye is working a similar way like you described.

May I ask you to share your schematics and/or your experiences with the discreet way? :-)

Franck
Not Ranked
Near Paris
Posts 18
OFFLINE
Gold Member
Franck replied on Wed, Sep 10 2014 10:17 AM

Yes the Arduino is great to made quick developments even if they have some hardware mistakes (my alarm system with GSM alert and my DMX smoke/fan control works with mega 2560 ;) )

Don't worry i will share the schematics as soon I got a good working system. the BF240 is no more available and I must find a good replacement part (i'm working with a spare IR circuit from B&O product)

I love when a plan comes together

Beogram 4002 / Beocenter 9000 / Beocenter 9500 / RL140 / Beolink 1000 / Beolink 4

tournedos
Top 10 Contributor
Finland
Posts 7,312
OFFLINE
Gold Member
Moderator
tournedos replied on Wed, Sep 10 2014 9:39 PM

BeoMotion:
Of course there are better solutions around than Arduino, but this one comes with a nice IDE, has a big community and is available nearly everywhere. 

The Teensy boards (up to v2.0) are actually Arduino compatible. You install the extra software and they integrate with the Arduino IDE. What you get is a more advanced, much smaller and quite a bit cheaper board. If you don't need compatibility with the Arduino shields, it is worth a look:

http://www.pjrc.com/teensy/teensyduino.html

What I particularly like is the better USB interface. It is very easy to make a Teensy play as a proper USB peripheral, not just a serial port connected to USB. I have no experience with the version 3 Teensy boards that have a 32-bit ARM processor.

(yes, I'm aware that there are plenty of official and unofficial, more advanced Arduino boards available as well)

--mika

L1NO
Top 500 Contributor
Posts 236
OFFLINE
Bronze Member
L1NO replied on Thu, Sep 11 2014 4:39 PM

I'm using the BEOMOTE arduino sketch and my own code to operate my Yamaha, Lutron and Sony setup for a year now. It also uses a 433RF transmitter to control curtains. (Klik aan Klik uit, COCO). Works like a charm! (Using a Beolink eye, even the buttons work)

PhilLondon
Top 25 Contributor
London
Posts 3,607
OFFLINE
Bronze Member

L1NO:
I'm using the BEOMOTE arduino sketc

I have just tried it today, but it recognises a code, and you need to wait a second or 2 before it can recognise the next code... Do you have this problem?

Beoworld app with direct photo upload and emoticons. Other apps: ConsltThe Story Mouse

L1NO
Top 500 Contributor
Posts 236
OFFLINE
Bronze Member
L1NO replied on Sun, Oct 4 2015 12:43 PM

No, this can and should be much faster. Without a proper 'repeat' code, ie holding a button, the base IR can repeat 4 times a second.

Simonbeo
Top 75 Contributor
Posts 1,444
OFFLINE
Bronze Member

L1NO:

No, this can and should be much faster. Without a proper 'repeat' code, ie holding a button, the base IR can repeat 4 times a second.

I bought an Arduino starter kit as  something my 9 year old son and I can experiment with together. He's pretty keen on the " hacking" project as they call remote control.

our first issue is getting started with our computer which runs windows 8! 

Looking forward to working with him on it.

Beo Century ,Beoplay V1, Beocenter 6, Ex-Beolit 12, Beotime , A8. Beolit 15 , Form 2i , Beolab 2000, Beoplay A3.Beosound 1

Notexpert
Not Ranked
Posts 1
OFFLINE
Bronze Member
Notexpert replied on Mon, Jul 11 2016 5:09 PM

Hi, 

Is the link above still working ? i will be happy to try it and use it ! Thanks !

ER

 

ESBOSS
Not Ranked
Posts 21
OFFLINE
Bronze Member
ESBOSS replied on Wed, Nov 2 2016 4:09 PM

link does not work

peria
Top 200 Contributor
Posts 320
OFFLINE
Bronze Member
peria replied on Thu, Nov 3 2016 5:23 PM

Link still not working.

Ralf
Top 500 Contributor
Hamburg Germany
Posts 186
OFFLINE
Bronze Member
Ralf replied on Tue, Jan 17 2017 12:19 PM

Hi,

i was working on a solution to control my Philips HueLight System. I had a MLGW in use and this was working fine with macros.

I updated my Beo stuff more and mor to the newer NL products, such as Beoplay M5, A6 etc.

A Beosound 9000 and a Beosision 8 were still remaining and should stay for a while.

I added a Beolink Nl/ML to add TuneIn and Deezer to my ML System.

My first approach was to connect a raspberryPi using RS485 connection directly to the ML This was working fine, but the problem now is, that the neither Beosound 9000 or Beosvision 8 will forward any Light Commands.

So I added a TSOP7000  to the GPIO Interface using lirc and a python script to control Hue with my Beo4 or Beoremote one.

I can send you the python script if anybody is interested in.

But this solution is not very reliable! Sometimes tooks some seconds to work or needs rebooting. Days of debugging with lirc  and refining the code were not very successful. I suppose the raspberry has a lot of other things to do and the bandwith of the TSOP7000 achieves nearly 20khz is too much as to keep synchronised.

My next approach was to use a dedicated Arduino Uno, since they have Ethernet or WIFI on board.

This is working very reliable for more than  3 month now.

What does it do?

1. Pressing Light+ 0...9 selects a Lamp (according to the number in  the HUE system)

2. Pressing Light+ GO will turn the lamp on

3. Pressing Light+ UP will increase the lamps brightness in 4 steps

4. Pressing Light+ DOWN will decrease the lamps brightnessin 4 steps

4. Pressing long Red DOT will turn everything on ML and NL and all lights off

I will post the code here if anybody likes to join the project.

Hardware:

- Arduino Uno Ethernet connected to a TPLink Powerline or Arduino Uno  WIFI

- TSOP7000 with RC Filter connetd to PIN 2 and 3.3V

Software:

MAC Adress, IPadresse of Arduino

IP Address and user from HUE (generated by HUE REST API, see documnetation)

Light mapping

e.g.

Beo4 Light0 => Hue Lamp 9

May be some timings needs to be adopted (MAXPULSE, RESOLUTION),but this is working on several Aruinos in my home.

 

 

sourcecode for the sketch:


#include <Ethernet.h>

#define IRpin_PIN PIND
#define MAXPULSE 6200
#define IRpin 2
#define RESOLUTION 20

const char hueHubIP[] = "192.168.1.64";
const char hueUsername[] = "uJqbOtzyOGsKXgY8-2hE8YftJm8DUC8X654dsTFI";
const int hueHubPort = 80;
byte mac[] = {0x90, 0xA2, 0xDA, 0x10, 0x24, 0x33};
IPAddress ip(192, 168, 1, 39);

uint16_t pulses[64];
uint8_t currentpulse = 0;
boolean startFlag = false;
uint8_t current_light = 128;

int light_map[10] = {9, 11, 12, 13, 14, 15, 16, 19, 20, 23};
int light_brighthness[10] = {255, 255, 255, 255, 255, 255, 255, 255, 255, 255};

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  delay(1000);
}

void loop()
{
  uint16_t highpulse;
  highpulse = 0;
  startFlag = false;
  while (IRpin_PIN & (1 << IRpin)) {
    highpulse++;
    delayMicroseconds(RESOLUTION);
    if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
      currentpulse = 0;
    }
  }
  if ((highpulse * RESOLUTION) > 14000 && (highpulse * RESOLUTION) < 15800) {
    currentpulse = 0;
    startFlag = true;
  } else {
    pulses[currentpulse] = highpulse;
  }

  if ((highpulse * RESOLUTION) > 11000 && (highpulse * RESOLUTION) < 12500 && currentpulse != 0) {
    send_command_toHue();
    currentpulse = 0;
  }
  delayMicroseconds(RESOLUTION * 12);
  if (startFlag == false)
    currentpulse++;
}

void send_command_toHue()
{
  if (currentpulse == 17) {
   
    String command_off = "{\"on\": false}";
    String command_on =  "{\"on\": true,\"bri\":255}";
    String command_up_down = "{\"on\": true,\"bri\":";

    byte receiver = 0;
    byte command = 0;
   
    receiver = get_hex_digit(pulses, 4, 9);
    command = get_hex_digit(pulses, 9, 17);

    if (receiver == 0x1B) {
      if (command == 0x36) {
        if (current_light != 128) {
          setHue(light_map[current_light], command_off);
          light_brighthness[current_light] = 0;
        }
      }
      else if (command == 0x35) {
        if (current_light != 128) {
          setHue(light_map[current_light], command_on);
          light_brighthness[current_light] = 255;
        }
      }
      else if (uint8_t(command) <= 9) {
        current_light = uint8_t(command);
      }
      else if (command == 0x1F) {
        if (current_light != 128) {
          int tmp_brightness = light_brighthness[current_light];
          tmp_brightness = tmp_brightness - 50;
          if (tmp_brightness < 0) {
            tmp_brightness = 0;
          }
          setHue(light_map[current_light], command_up_down + String(tmp_brightness) + "}" );
          light_brighthness[current_light] = tmp_brightness;
        }
      }
      else if (command == 0x1E) {
        if (current_light != 128) {
          int tmp_brightness = light_brighthness[current_light];
          tmp_brightness = tmp_brightness + 50;
          if (tmp_brightness > 255) {
            tmp_brightness = 255;
          }
          setHue(light_map[current_light], command_up_down + String(tmp_brightness) + "}" );
          light_brighthness[current_light] = tmp_brightness;
        }
      }
    }
    else if (receiver == 0x0F) {
       if (command == 0x0C) {
        for (int i = 0; i < 10; i = i + 1) {
          setHue(light_mapIdea, command_off);
          light_brighthnessIdea = 0;
          delay(200);
        }
       }
    }
  }
  delay(100);
}

byte get_hex_digit(uint16_t pulses[64], uint8_t from, uint8_t to)
{
  int bit = 0;
  byte digit = 0;
  byte receiver = 0;
  for (uint8_t i = from; i < to; i++) {
    int pulse = pulsesIdea * RESOLUTION;
    if (pulse > 2500 && pulse < 3500) {
      bit = 0;
    }
    if (pulse > 7500 && pulse < 9500) {
      bit = 1;
    }
    if (pulse > 5000 && pulse < 6500 && i == 0) {
      bit = 1;
    }
    digit <<= 1;
    digit |= bit;
    return digit;
  }
}

boolean setHue(int lightNum, String command)
{
  if (client.connect(hueHubIP, hueHubPort))
  {
    while (client.connected())
    {
      client.print("PUT /api/");
      client.print(hueUsername);
      client.print("/lights/");
      client.print(lightNum);
      client.println("/state HTTP/1.1");
      client.println("keep-alive");
      client.print("Host: ");
      client.println(hueHubIP);
      client.print("Content-Length: ");
      client.println(command.length());
      client.println("Content-Type: text/plain;charset=UTF-8");
      client.println();
      client.println(command);
    }
    client.stop();
    return true;
  } else {
    return false;
  }
}

 

 

TWG
Top 75 Contributor
Posts 1,399
OFFLINE
Gold Member
TWG replied on Thu, Jan 19 2017 9:40 AM

So, with your solution you can build B&O light receivers in every room and simply connect them to the ML-Bus?

Ralf
Top 500 Contributor
Hamburg Germany
Posts 186
OFFLINE
Bronze Member
Ralf replied on Thu, Jan 19 2017 10:14 AM

Hi,

no the ML-Bus solution with Raspberry was not reliable for me. Actually this is a IR solution connected to the Ethernet based on  Arduino WIFI  / Ethernetshield.

And my remaining ML products (BS9000 MK1 and BV8 with older software) do not forward light commands. So my MLGW could not be triggered to control the HueSystem anymore.

But i have just  bought a RS485 converter and playing around with Arduino and ML again.

I enhanced the software to play with light colours. Pressing on one of the colour buttons of the BEO4  will select the appropiate colour and UP/DOWN  sets the saturation for that  colour.

Does someone knows the IR code for LIGHT LAMP?  My Beo4 sends 0x1B 0x1B , 0x1B 0x1 when i press LIGHT LIST LAMP 1

May be the first byte is responsible like 0x8 for LINK or something else.

By now i don't regard the first byte.

Ralf

 

tournedos
Top 10 Contributor
Finland
Posts 7,312
OFFLINE
Gold Member
Moderator
tournedos replied on Thu, Jan 19 2017 12:47 PM

Ralf:

Does someone knows the IR code for LIGHT LAMP?  My Beo4 sends 0x1B 0x1B , 0x1B 0x1 when i press LIGHT LIST LAMP 1

May be the first byte is responsible like 0x8 for LINK or something else.

0x1b seems to be the prefix for all light-related commands. Here's an excerpt of what I have dumped earlier:

 * 0x1b9b light (bl1000 shift+link)
 * 0x1b58 light timeout (when "LIGHT" exits from Beo4 display)
 * 0x1b5c light menu
 * 0x1b1e light-up
 * 0x1b1f light-down
 * 0x1b32 light-left etc
 * 0x1b35 light-go
 * 0x1b36 light-stop
 * 0x1b7f light-exit (-> Beo4 changes to previous device selection)
 * 0x1b00-09 light-0...9

 

--mika

TWG
Top 75 Contributor
Posts 1,399
OFFLINE
Gold Member
TWG replied on Fri, Jan 20 2017 7:16 AM

ok, so we have Philips HUE control via Beo 4, 5, 6 without the need of an additional B&O product? That's really okay, too! Yes - thumbs up


Can't wait to see more progress from you. A great solution you made! In about four weeks I have the time to try it out by myself.


Do you plan to control scenes, too?

Ralf
Top 500 Contributor
Hamburg Germany
Posts 186
OFFLINE
Bronze Member
Ralf replied on Fri, Jan 20 2017 10:41 AM

TWG:

ok, so we have Philips HUE control via Beo 4, 5, 6 without the need of an additional B&O product? That's really okay, too! Yes - thumbs up


Can't wait to see more progress from you. A great solution you made! In about four weeks I have the time to try it out by myself.


Do you plan to control scenes, too?

Hi,

yes i control scenes now. LIGHT 1...9 selects stored scenes from hue system.

I found out how to select lamps: The BEO4 sends 0x0,0x1B,0x20 and an additional 3 byte code for the lamp.

Fully code for lamp 3 is:

Six bytes:

0x0,0x1B,0x20

0x0,0x1B,0x03

Now scenes and lamps work. In my opinion there is no need for colour changing, but its possible. This was not what i wanted.

I made a kind of setup, pressing a special button combination swicthes the Arduino into setupmode to alter the lamp and scene mapping and to enter the IP-address of the HUE Base. It was possible to make a new HueBase user through Beo4!!  But I discarded it, because it was to complicated to remember all that buttons to enter, even for me, the developer :-) At the end i was totally confused.

I am working now on a web interface, could be a smartphone app (I have a Apple and Android developer licence), all data will be stored in EEPROM then.

The posted Arduino code catains one semantical error, can you see it? It's a test  :-)

The code works with a Beoremote One as well.

The other thing i am dealing with is a kind of IR Diversity: 2  Arduino Nano Boards have each connected a TSOP7000 in differrent postion. The software manages the correct ir code evaluation and passes it through the Ethernet Arduino to the HUE System..

This was my consideration to achieve more ir sensitivity. My first try was to extract a BV MX ir board, but i had to use Board PCB9 and PCB6, the ir receiver and amplifier. My knowledge to build a discret am receiver is too poor. I was absent in highschool when HF-technique was broached. :-)

I am able to pair a BeoremoteOne BT with other devices as this could be the next project to reverse engineering  the protocol. Controlling the HUE sytem with that remote control. The Intel Genuino101 Board has Bluetooth on board. I made several other projects with this board before. An Intel Newton is worth a try.

Ralf

 

 

 

 

 

 

 

 

 

L1NO
Top 500 Contributor
Posts 236
OFFLINE
Bronze Member
L1NO replied on Fri, Jan 20 2017 11:34 PM

I'm using a beolink-eye and works wonderfull. I'm currently using coco (kaku in dutch) with a arduino and a beolink eye to control lights and shades, perfect. I'm looking to keep the shades but add hue. 

tph
Top 500 Contributor
Finland
Posts 139
OFFLINE
Bronze Member
tph replied on Thu, Jan 26 2017 8:30 PM

In another thread I mentioned trying to use Beolit 12 IR receiver (in place of TSOP7000 or the Bang & Olufsen IR eye), and after getting my hands on a Beo4 I can now confirm that it works very well with Arduino. Here's how to wire it up, in case anyone else is interested in trying it out:

On the underside of the board there are labelled test points, three of which are directly under the connector. These can be used as solder pads to attach wires, if you want to preserve the cable and connector intact in Beolit 12 like I did. The pinout is as follows:

  • TP601: +3,3 V DC
  • TP602: IR data
  • TP603: ground

So far I've only done basic testing with this library. Seems to work perfectly, commands are received with 100% reliability as far as I can see. Next up I'll try hooking this thing up to my Raspberry Pi-based AirPlay speakers to make them Beo4-enabled.

Purup
Not Ranked
Posts 4
OFFLINE
Bronze Member
Purup replied on Mon, Jun 12 2017 1:32 PM

Ralf:

My first approach was to connect a raspberryPi using RS485 connection directly to the ML This was working fine, but the problem now is, that the neither Beosound 9000 or Beosvision 8 will forward any Light Commands.

So I added a TSOP7000  to the GPIO Interface using lirc and a python script to control Hue with my Beo4 or Beoremote one.

I have a raspberry Pi Zero setup with a TSOP7000 IR receiver and LIRC installed. When I run mode2 in a terminal and press buttons on my Beolink4 I get plenty of space/pulse output. So far so good. But using irrecord to create a lircd.conf file the space/pulse data looks very irregular. When I run irw I am not able to receive any button presses. Please see http://forum.beoworld.org/forums/p/7239/205727.aspx#205727 for more details.

Is there any chance you could share your lircd.conf file?

 

perjar
Not Ranked
Posts 2
OFFLINE
Bronze Member

I just hit the very same problem and wonder how you solved it using discrete components.

I am using a TSOP 7000 with a z-uno (an arduino board with z-wave interface added to it) and it works fine apart from one problem and that is the sensitivity of the IR sensor which is quite low. I have to aim the remote diectly at the sensor for it to pick up the signal. Compare this to B&O equipment which seem to be able to pick up the signals no matter in which direction I point the remote. My conlcusion is that they are not using TSOP 7000 in their products, or they are able to get them with a much higher quality.

I have tried a few different TSOP7000 sensors and they are more or less the same I would say.

So I am tninking I may need to build a sensor from scratch in order to get better performance. But I have absolutely no idea how to do that to be honest. 

Any advise would be very appreciated. Smile

EDIT: Found the root cause of the problem. It was not lack of IR sensitivity , it was unstable power supply to the TSOP-circuit. When I connected a capacitor beween Vs and GND, as recommended in the datasheet by the way, it works very well. :-)


Franky_AT
Not Ranked
Posts 2
OFFLINE
Silver Member
Franky_AT replied on Wed, Sep 19 2018 11:24 AM

Hi, Link seems to be broken ...
Is there another place to find it?
b.r. Franky 

Franky_AT
Not Ranked
Posts 2
OFFLINE
Silver Member
Franky_AT replied on Wed, Sep 19 2018 11:24 AM

Hi, Link seems to be broken ...
Is there another place to find it?
b.r. Franky 

samsp
Not Ranked
Posts 31
OFFLINE
Bronze Member
samsp replied on Tue, Apr 30 2019 6:12 AM

I have this working with a TSOP 7000, and now an IR Eye I got off ebay.

The IR eye has TX/RX connectors  - which I assume are related to the buttons on the front. Does anybody know how to make use of them via an arduino?

Page 1 of 1 (39 items) | RSS
Beoworld Security Certificate

SSL