Introduction

[Populated PCB] Greetings and Salutations! My name is Thomas Cort. I live in Gatineau, Quebec, Canada with my wife Bridget. I am currently a student in the Electronics Technology program at Heritage College. I'm in the final year of my studies, and I created this website to share my final year project with the world. The project incorporates one of my favourite hobbies, Amateur Radio. The goal is to design and build a Terminal Node Controller (i.e. a modem that uses radio to transfer data between two devices). Additionally, I'm going to be making a portable version with an integrated GPS receiver. The target application of the portable version is a portable tracker. If you would like to contact me, my e-mail address is linuxgeek@gmail.com.

Current Status

As you can see by the picture in the upper right, I've completed the hardware; the printed circuit board I designed exists and is populated with parts. I've done the initial testing and first pass of the firmware. I've got two of these modems talking to each other. The PC software is also up and running. It can be used to configure the modems, send and receive data, and display location reports received on a map. The last remaining tasks are further testing and refinement, and documentation. Expect more activity on the website as the project nears completion.

Documentation

Important documentation will be posted here. Currently, I have posted a detailed project proposal document outlining the scope of the project, the project goals, the preliminary design, and an implementation plan. In the future, I will be posting the end of semester report in this section.

Project Proposal (PDF)

Hardware

At the heart of the project is an Atmel ATMega1284p microcontroller running at 14.7456MHz. Connected to it are sub-circuits that interface with a radio, a computer, and optionally a GPS. The computer interface is USB (Mini B connector) using an FTDI FT232RL chip which will enable it to work out of the box on many systems while providing the convenience of USB. The radio is interfaced with a DIN5 connector, somewhat common among TNCs, to send/receive audio signals and key the radio. Power is provided via a 2.1mm barrel connector. Below is the schematic, bill of materials, and printed circuit board artwork.

Schematic (PDF)

Schematic CAD File (Proteus ISIS)

Bill of Materials (HTML)

PCB Layout CAD File (Proteus ARES)

Gerber Files (ZIP)

Firmware

The firmware handles all of the modulating and demodulating of the AFSK signals, it can key a radio's push to talk button, it encodes and decodes signals using NRZI, and talks to the computer and GPSr (if attached). The NMEA GPS data is decoded and beaconed at periodic intervals. The device implements CSMA/CA to help avoid collisions. It also can store settings in EEPROM.

Firmware Source Code

Software

The graphical user interface uses Qt to provide users with a console, map of recent received beacons, and a configuration panel. The map is based on the free wiki world map, Open Street Map.

Software Source Code

License

One of the goals of this project is to create a free and open terminal node controller with associated software that respects your freedom. The licenses were chosen accordingly. Source code (i.e. software and firmware) is licensed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Documentation (i.e. text documents, manuals, websites, etc) is licensed under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation. Design files (i.e. schematic CAD files, PCB layout, etc) are licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.

Disclaimer

The project files are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Download

All source code, design files, and documentation is kept in a git repository on github.

https://github.com/tcort/va2epr-tnc