In what’s turning into a real 1990s tech-fest I present to you my “Psion Series 3a remote control for Technics RS-B665 cassette tape deck” …
Earlier in 2021 I hacked my old 1990s tape deck (which didn’t have any native remote control capability btw) adding some hardware in the deck and a Raspberry Pi (of course) using a Node-Red dashboard to control the basic STOP/PLAY/FF/REW operations via a web browser – https://bit.ly/RS-B665 for technical details or https://youtu.be/x8cP40L5S4Q for a quick video 😉 – after recently getting back into Psion ownership I figured I could use a NodeMCU to connect the Series 3a to the tape deck’s Raspberry Pi and achieve the same thing by getting the 3a to send commands over its serial link. The electrical contacts behind the deck’s front panel buttons have tarnished with age meaning they don’t work as reliably as they once did… that’s all the justification I needed to build this 😄
I’ve written a simple OPL prog that opens the serial port, does some NodeMCU setup then just simply sends “S”, “P”, “F” or “R” for STOP/PLAY/FF/REW using LPRINT
to "TTY:A"
. As usual with these type of projects, most of the work is done in the Pi – I’ve written a simple bash script utilising netcat
(as it natively understands the telnet commands that NodeMCU uses to connect) that simply calls the relevant python scripts to toggle the GPIO pins that control the relays. Phew. It’s not rocket science, nothing earth shattering or over complicated but it works!
Code at: https://github.com/zedstarr/RS-B665-Remote-Control
pi@pistreamer:~ $ cat readnodemcu.sh !/bin/bashecho "Start listening on port 23…" while read line do if [[ $line =~ 'S' ]] ; then echo "STOP" /usr/bin/python /home/pi/RS-B665_control/STOP.py
elif [[ $line =~ 'F' ]] ; then echo "FF" /usr/bin/python /home/pi/RS-B665_control/FF.py elif [[ $line =~ 'R' ]] ; then echo "REW" /usr/bin/python /home/pi/RS-B665_control/REW.py elif [[ $line =~ 'P' ]] ; then echo "PLAY" /usr/bin/python /home/pi/RS-B665_control/PLAY.py fi done < <((echo "Available commands: RPFS") | sudo nc -kltv 23)
Both the NodeMCU and the Psion are powered from the same USB battery (Psion via a USB/9V adaptor). Note my horrid null-modem adapter and RS232/TTL board which doesn’t have any handshaking capability! I’ve ordered a MAX232 breakout board so I can use the same sort of setup to actually get the 3a online via the NodeMCU (although direct connection of 3Link cable to RS232/USB and pppd on the Pi works fine). Lack of handshaking just results in plenty of “serial overrun” warnings 😞
The overall connection is: Psion 3a OPL --> 3Link --> null modem --> RS232/TTL --> NodeMCU --> WiFi --> Raspberry Pi --> shell script/netcat/python --> Raspberry Pi GPIO --> Relays/resistor network --> Tape Deck

Conclusions:
1. I’ve really missed writing OPL 🙂
2. In the future I might write OPL for the MC400 to do the same thing, but obviously the Series 3a OPL dialog looks much nicer 🙂

4 thoughts on “Psion Series 3a vs. Technics RS-B665”