Amateur radio operators use various digital data modes for radio communications. One such mode is known as packet radio, which transmits data in groups or “packets” of bytes. As described by the ARRL, “packet radio allows improved throughput and error control. The basic protocol for packet radio is AX.25. Transmission speeds typically range from 300 bps on the HF bands to 1200 and 9600 bps on VHF or UHF.” The necessary interface hardware between the radio and the computer is known as a Terminal Node Controller (TNC).
KI4MCW reports on the status of his project to implement a TNC using the Arduino:
The goal of this project – the creation of a simple but effective TNC using Arduino hardware – has been achieved a couple of different ways. Because of the precise timing required to sample and decode AX.25 audio, it was not possible to build a working solution using the standard Arduino libraries. Instead, each solution has involved software written in C, calling AVR-libc libraries or manipulating register values directly.
Currently, my efforts are focused on an implementation that uses the freely available BeRTOS package, a collection of integrated libraries and drivers for embedded platforms. The AX.25 and AFSK modules included with BeRTOS form a high-performance packet engine that can be modified to function as a KISS TNC. I am working with the BeRTOS team to integrate KISS functionality into the main package, so hopefully those functions will be available in future versions of their product.
Progress reports and a working example of the code (both source and binary for an ATmega328p-based Arduino) can be found at the KI4MCW website. A simple test circuit is available from the BeRTOS website.