3 HamShield Best Practices Guide
Walter Dunckel edited this page 2017-06-05 08:48:55 -07:00

The HamShield can bring a lot of new, interesting applications to the field of amateur radio. Due to the fast development times of this radio, this can also lead to a lot of new automated or remote controlled services.

While most applications will likely follow the FCC rule 97.221, it is important to become familiar with it:

§97.221 Automatically controlled digital station.

(a) This rule section does not apply to an auxiliary station, a beacon station, a repeater station, an earth station, a space station, or a space telecommand station.

(b) A station may be automatically controlled while transmitting a RTTY or data emission on the 6 m or shorter wavelength bands, and on the 28.120-28.189 MHz, 24.925-24.930 MHz, 21.090-21.100 MHz, 18.105-18.110 MHz, 14.0950-14.0995 MHz, 14.1005-14.112 MHz, 10.140-10.150 MHz, 7.100-7.105 MHz, or 3.585-3.600 MHz segments.

(c) Except for channels specified in §97.303(h), a station may be automatically controlled while transmitting a RTTY or data emission on any other frequency authorized for such emission types provided that:

(1) The station is responding to interrogation by a station under local or remote control; and

(2) No transmission from the automatically controlled station occupies a bandwidth of more than 500 Hz.

[60 FR 26001, May 16, 1995, as amended at 72 FR 3082, Jan. 24, 2007; 77 FR 5412, Feb. 3, 2012]

97.221 says that automated digital emissions in the bands HamShield are permitted, and automated audio-based systems are permitted as long as another human-operated station is interrogating the remote end. We are also making the assumption that the content of the message also follows FCC guidelines.

Still, even with this very open authorization, there are a lot of things you can do to make your HamShield sketch play well with other users within the band.

Always listen before you transmit - .waitForChannel()

Nice amateur radio operators do this automatically. Nicer amateur radio operators even allow a few seconds of dead air to permit someone to break into the transmission in case of emergency. But unless you tell the HamShield to do so, it will not. Fortunately, this is easy to do.

Using .waitforChannel() by itself waits indefinitely and returns true when there is no activity on the channel.

Sometimes you may want this to be more specific. Take a look at the following example:

// waitForChannel(channel timeout [optional], breaker timeout [optional]);

if(radio.waitForChannel(30000,2000)) { setModeTransmit(); // do something setModeReceive(); }

In this example, we use the optional arguments channel timeout and breaker timeout. This will wait up to 30 seconds for a channel to open up and wait an additional 2 seconds for no channel activity. If both of these conditions are satisfied, the function returns True and the if-block between the braces {} executes.

Pay close attention to your area's band plan and frequency allocations

Being able to set any frequency with one line of code comes with great power and great responsibility. Every jurisdiction in the world has different frequency allocations. Every locality within that jurisdiction may have a different band plan for using those frequencies. Take care in knowing both of these. While the HamShield library prevents accidental transmission outside of USA amateur radio bands, this may still not be applicable in your specific location.

Even though you are authorized to use the HamShield on a certain frequency, it does not mean that you should. Repeaters may be assigned to non-standard frequencies, certain amateur TV allocations may exist in your area, as well as other special services. Be sure to look at your location's band plan for more information.

It is highly recommended that when testing your HamShield, you either connect to a dummy load or operate in the experimental section of the amateur radio band.

Always identify - .morseOut("MYCALLSIGN TEST")

It is very easy to be caught up in the next killer new application for amateur radio but forget to write in station identification. The HamShield library makes this easy, too.

.morseOut(char array) lets us send morse code during our transmissions for very easy identification. You can also change the morse_dot_millis value in HamShield.cpp to adjust speed to make this more convenient. The lower the value, the faster the words per minute.

For example:

radio.morseOut("MY CALLSIGN IS ZZ6EXAMPL.");

Set your intervals wisely

If you plan on setting up a morse code beacon for others to detect VHF or UHF ducting events, great! But you may also want to research the appropriate interval times for this type of application. Also, be sure to connect your interval times with .waitForChannel() calls to create the most well behaved beacon in the amateur space!