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?