GithubHelp home page GithubHelp logo

camilstaps / atsamf-source Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.03 MB

Source code of the ATSAMF QRP transceiver by Rick PA5NN

License: GNU General Public License v3.0

C 25.61% C++ 66.71% Haskell 7.15% Makefile 0.54%
atsamf qrp ham-radio arduino electronics

atsamf-source's Introduction

ATSAMF source

This repository contains the software for the ATSAMF, a multiband QRP CW transceiver with discrete components, based on the ATS and SODA POP designs by Steve Weber (KD1JV) and developed by Rick Rabouw (PA5NN).

The software is based on Camil Staps (PA5ET)'s software of the SODA POP, with additional features and a larger display.

The original software of the SODA POP was written by Steve. The alternative version was written by Camil with contributions by David Giddy (VK3IL). The adaptation to the ATSAMF is by Camil.

This is open source software, copyright © Steve Weber, Camil Staps, and David Giddy, and licensed under GPL v3 (see the LICENSE file).



Flashing the firmware

  1. Download this repository from https://github.com/camilstaps/ATSAMF-source/archive/master.zip.
  2. In the Arduino IDE open ATSAMF/ATSAMF.ino.
  3. Using SketchManage Libraries, install the Etherkit Si5351 library by Jason Milldrum.
  4. Download https://github.com/ladyada/Adafruit_CharacterOLED/archive/master.zip and add it to the IDE using SketchInclude LibraryAdd .ZIP Library.
  5. Connect the device to your computer and upload the sketch.

Operation

Operation is similar to that described in the SODA POP manual. It can be described by the state machine below. A detailed description is given under the image.

State machine

Startup

On startup, the band will be shown. After a 1.5s delay, the rig turns on.

Tuning

Use the rotary encoder to tune. Tuning can be done in steps of 10Hz, 100Hz, 1kHz and 10kHz. Rotate through these steps by pressing the rotary encoder. For all steps except 10Hz, the corresponding digit on the display will blink.

Direct Frequency Entry (DFE) can be used by holding the encoder button for 1s. It is only available when a paddle is connected. The display reads DFE. Key in the desired frequency. The current digit blinks. Save with the keyer button or cancel with the RIT button. When all four digits are entered, the new frequency is saved automatically. Abbreviations can be used for 0 (T) and 9 (N) and for all numbers when enabled (see under Optional features).

RIT

Pressing the RIT button turns RIT on. This allows you to fix the transmitting frequency and receive at an offset of up to &plusmin;10kHz. The display shows the RIT offset.

Tune mode

Pressing the keyer button for 2s turns tune mode on. In this mode, the keyer button enables and disables transmission, which is useful when tuning the antenna. You can also use the dot and dash of the paddle to enable and disable transmission respectively. Use RIT to exit tune mode.

Message memory

Pressing the keyer button allows you to send a message from memory. Select the right memory using the rotary encoder and press KEYER. Use the RIT button to cancel.

When a message is being transmitted, you can still use the RIT button to cancel it. You can also enter beacon mode by pressing the keyer button. In beacon mode, the message is repeated continuously with an adjustable delay in between (see BEACON_INTERVAL under Compile-time settings). During transmission, the keys are only checked between the transmitted characters, so you'll have to hold the buttons longer than normally.

To update the memory, hold the keyer button for 5s. Enter the message using the paddle. This is not possible with a straight key. An open circle in the right bottom blinks once after a character space is detected; a closed circle blinks after a word space has been detected. To finish, press the keyer button again. The message will be played back. After this, store the message with the rotary encoder and the keyer button. Pressing the RIT button allows you to key in a message again; pressing the RIT button once more returns to the default state.

The maximum message length is 64 by default (can be changed in settings.h). If you try to enter more characters, the error routine is enabled (see below).

Preferences

Change the code speed by holding the RIT button for 2s. Use the paddle or the rotary encoder to change, and save with the keyer button.

Change the band by holding the RIT button for 5s. Save with the keyer button.

Calibration

The calibration routine is explained in the manual. Hold the RIT button for 8s to enter the calibration routine. This proceeds through the following steps:

  1. Correct the Si5351 frequency. Connect a frequency counter to TP3 and turn the rotary encounter to obtain 10MHz.
  2. Correct the intermediate frequency (IF). First adjust CT3 to peak the signal on TP2. Then adapt the frequency using the rotary encoder to peak the signal on TP1 with a scope. If the IF had to be changed, readjust CT3; repeat until both TP1 and TP2 are peaked.
  3. Select the right band with the rotary encoder.
  4. Peak the signal with CT1 and CT2. The adjustment can be sharp, especially on the higher frequency bands.

Pressing the keyer button returns to the default state.

Errors

When an error is detected, the display shows Error and an alarm signal is given on the sidetone. You need to power cycle the device.

Compile-time settings

There are several compile-time settings in settings.h. Change them before uploading the code to the chip.

  • WPM_DEFAULT: the default key speed in WPM (20).

  • KEY_MIN_SPEED: the minimum key speed in WPM (5). Lower speeds than 5 may damage the rig, because the on-time for dashes will be rather long.

  • KEY_MAX_SPEED: the maximum key speed in WPM (30). Higher speeds than 30 are untested and may present timing issues.

  • SIDETONE_FREQ: the frequency of the sidetone in Hz (600).

  • MEMORY_LENGTH: the maximum length of messages in memory, including word spaces (64). Higher values than 255 are unsupported.

  • MEMORY_EEPROM_START: the start address of the memory in EEPROM (16). Don't change this unless you know what you're doing.

  • BEACON_INTERVAL: the number of dot times between two transmissions of a message in beacon mode. A dot time is 1.2s / WPM (e.g. a beacon interval of 15 means 1.5s on 10WPM).

  • TUNING_STEPS: an array of tuning steps in mHz. These steps are rotated through with the encoder button.

  • TUNING_STEP_DIGITS: which digit to blink when in a tuning step. An array of the same length as TUNING_STEPS. Values should be taken from BLINK_NONE, BLINK_0, _1, _2 and _3 (0 is the rightmost digit).

  • There are several band plans. Define one of PLAN_IARU1, _IARU2, _IARU3, _VK. The exact boundary definitions are in bands.h.

  • Change the default operating frequency of a band by defining e.g.

    #define DEFAULT_OP_FREQ_20 1405500000
    

Optional features

There are several features that can be added to the rig if you want to. This is done by adding and removing #define lines to settings.h.

  • OPT_USER_DEFINED_CHARACTERS: use user-defined LCD characters for a prettier user interface. This may not be compatible with all displays.

  • OPT_ERASE_EEPROM: erase the EEPROM by holding RIT for 11s.

  • OPT_OBSCURE_MORSE_ABBREVIATIONS: adds number abbreviations to DFE according to the table below. Abbreviations for 0 (T) and 9 (N) are always enabled.

    Letter Number
    A 1
    U 2
    W 3
    V 4
    S 5
    B 6
    G 7
    D 8

atsamf-source's People

Contributors

camilstaps avatar vk3il avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.