Building a device to communicate via infrared with an HP 100LX palmtop computer

I have an old HP 100LX palmtop computer which has an infrared communications port which uses the SIR protocol (which is a subset of IrDA protocol). I would like to build something that can communicate with the palmtop via the IR port.

For my first attempt I used an Arduino Nano on a breadboard with a pair of small breakout boards with a IR transmitter LED and IR receiver like this.

I modified the SoftwareSerial library to encode / decode to the SIR signal. The signal is similar to a standard 8-bit UART frame but is inverted with shorter pulses. For reference see page 6 of this PDF

I was able to get it working but only at the slowest baud rate of 300 which was good for a proof of concept but too slow to do anything interesting with it. When increasing the baud rate any higher the data would get corrupted during transfer.

I assumed that it was probably due to some subtle timing issues in my modifications to the SoftwareSerial library so I swapped it out with an ESP32. I found this post on the ESP32 forums which mentions that you can set one of the hardware UARTs to work in in IrDA mode. Again, I was able to get a stable 300 baud communication between the palmtop and the ESP32, this time just using the standard HardwareSerial library but communications would break down at higher baud rates.

Interestingly with the ESP32 setup, I was able to set the baud to 9600 and send from the ESP32 to the palmtop without issues so sending data is OK but it cannot receive anything with a baud higher than 300.

The ESP32 forum post mentions to "check the Resistor of the Phototransistor, if the value ist too low, Data High Pulses can't reach full voltage - is it to high, the High potentials can't flush fast enough and jam the Datastream, I got best results with an potentiometer"
so my current theory is that the resistor value on my IR receiver breakout board is too high.

The post also mentions to "use a "Infrared Transceiver Module" (like TFDU4101), that contains a Amplifier, Comparator, some Logic and a Driver for better results." These modules are readily available but they look really small and I can't find any breakout boards / breadboard friendly versions. Datasheet is here

I need a bit of advice for how I should proceed:

  • I could attempt the potentiometer and phototransistor approach but these seems a bit error prone? i.e. just playing with the resistance until it works just doesn't feel like a stable solution. Is there a way that an exact value could be calculated for this?
  • If I buy a transceiver module, how can I set it up for testing on my breadboard?

IR remote controls nowadays use a carrier frequency of about 40kHz to allow for suppression of ambient light. Without such a feature I'd suggest to use the transceiver module with specialized electronics and 115kBaud data rate. Try to find a socket for that module, or an adapter PCB, or build your own PCB.

IRDA is baseband signalling, IIRC, so no carrier.

I did find this board for the transceiver module but it's a little pricey for what it is (£25)
https://www.thedebugstore.com/irda-3-click-board-mikroe-2871

I don't have any experience of making my own PCBs so this might be my only option

edit: The only potential issue with the transceiver module is there is no way to change the baud rate. It is fixed to 115200 which is the highest supported by the standard, but unsure if the palmtop will reliably support it. It only has a ~7Mhz 80186 CPU so might not be able to keep pace.

Having never worked on IrDA code, I can only guess, but I wonder if the higher speeds are overflowing or corrupting your buffers within the time vs buffer length ?

This also supports your ‘send but not receive’ scenario.

The corruption occurs even if you are sending a single character / byte so it wouldn't have a chance to overflow any buffers.

Well, the other variable would seem to be bit timing.
Lower speeds are within the bit timing window for detection, but faster but rates simply fall outside the recovery/correction aperture.

Is it all software, or is there hardware / PLL on the opto receiver?
Maybe a wandering cap or similar ?

It appears that your IR modules use a 38 kHz carrier. They are not simply not compatible with IrDA protocols, except at extremely low Baud rates, as you have discovered.

A simple, single transistor driver for an IR LED should work to transmit at much higher Baud rates, but building a receiver will be more difficult. For that you would need a fast photodiode and amplifier combination.

LED transmitter examples:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.