The TCI Arduino libraries are based on the SunSDR TCI 1.6 protocol specification. You need a powerful MCU to be able to compile and run the code. Any board of the ESP32s family, like the ESP32 DEV KIT V1, can do the job.
Note: The library works fine with latest 1.6 TCI version released on Semptember 2021.
What can you do with it?
Using the libraries you can quickly and easily develop hardware devices that can interact with EESDR.
As you can see in the picture there are two ways you can use it:
1- catch the events generated by the radio and activate typical devices such as relays, displays, filters, etc.
2- use input fro external devices to send commands like changing the frequency of any VFO, enabling/disabling the second receiver, changing the filters width and so on.
Capabilities are limited by the commands/events available in the 1.3 TCI protocol.
Before going on with the TCI libraries be sure the Arduino IDE is properly configured for the ESP32s boards and WebSockets protocol.
(Please read the procedure described in Note 1 and Note 2 at the end of the page).
Now download the TCI.zip archive you find at the bottom of the page and extract it in your Arduino libraries directory. Usually, the directory name looks like
C:\Users\<your-user>\Documents\Arduino\libraries.
In the same directory you'll find a basic project TciDemo.ino that shows how to start with the code.
As you can see, the required code to make any Arduino project TCI enabled is very simple:
1- include the library and instantiate it;
2- configure the events you want to handle (in the Events tab all the events are enabled. Of course you can comment out all that you don't need);
3- add the process() method to the main loop. This is very important, otherwise the lib simply doesn't work;
4- in the TCIDemo.ino you can find a dummy method that has a list of all the available methods. Using these methos you can send commands to the rig, for example startDevice(), stopDevice(), vfo(int rtxId, int vfoId, int freq), setRitOffset(int rtxId, int value), and so on.
That's all.
Once you have upload the code, you have to setup the board. It is a very simple task because the library provides a serial console. You can use the Arduino Serial Monitor configured with 115200 speed and Newline option.
Just type in the help command to see all the available commands:
All settings are stored in the non volatile memory of the ESP32, so these are "set and forget" options unless you change any of the working parameters.
See the video below that shows how the lib works once configured.
For a good project, it is mandatory having a knowledge of your board. Here is the pin definitions of the board I used for my tests. You can use any board of the ESP32s family, but this one works out of the box.
WARNING! You can't use the GPIO16, GPIO17, GPIO32, GPIO34 pins for input/output purposes. They are used by the TCI lib for UART communications (see the paragraph below).
The basic implementation of the library provides two useful CAT serial ports, one for each receiver. As you can see in
the picture, connecting a pair of TTL/RS232 adapter, you can have out of the box two traditional DB9 port that provide a TS-480 CAT connection. The TS480 CAT protocol
is not fully implemented, but it has enough commands for reading VFOs frequency and for RIT/XIT/SPLIT operations.
In the picture below you can see my TCI development board. It is still a work in progress. In addition it adds the two
serial ports and a configurable 12-port automatic band switch driven by two ULN2803A chip. Each port is configurable for single RX (1 OR 2) or for both, in RX and TX mode.
I find it very useful in remote operations: I can send CAT data to a RF power amplifier and I can switch
antennas and filters without a computer running next to my PRO2. In remote operations the EESDR pc is connected to my home network through OPENVPN.
Link to Arduino TCI Library v. 1.6-1 - works with latest 1.6 release
Tested on ExpertSDR3 v. 0.11.0 alpha- Solved an issue on the "vfo_limits" command - 2022-02-16