Psion Series 3a vs. Technics RS-B665

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” …

Psion Series 3a controlling Technics RS-B665 tape deck via serial/NodeMCU/WiFi/Raspberry Pi

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/bash
echo "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

1990s PDA controlling 1990s cassette tape deck via custom hardware


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 🙂

Psion Series 3a, serial 3Link, null modem, RS232/TTL, NodeMCU 😀
OSI stack vs. Psion Series 3a vs. Technics RS-B665

Published by zedstarr

Chilled out human being, doing techy stuff.

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: