Skip to content

UserGuide

Travis Goodspeed edited this page Feb 28, 2021 · 8 revisions

GoodWatch User's Guide

Howdy y'all,

The GoodWatch is a clone of the Casio 3208 watch module, replacing that module in the CA-53W and CA-506 series watches. It is built around the CC430F6147 RFSoC, allowing for years of battery life with convenient C programming. The second model adds a 70cm amateur radio transceiver.

Usage

Applets are accessed in a ring, with the Mode button on the right side of the watch switching between them. Sometimes the Mode button will also have a secondary function, in which case you'll press it twice to move to the next mode.

Except for the base applets (Clock and Stopwatch), the remaining applets are chosen from a submenu. Use + and - to choose the one you would like from the subment, then press Mode again to enter the applet.

Clock

The watch begins in the Clock applet, and resets to that applet after a few minute from most other applets.

Pressing the Set button switches to a programming mode, where the hour, minute and date can be changed; the seconds are held at zero until the minute is finished being set.

Hold 9 to show the day of the week or / to show the date in YYYYMMDD format. Hold 7 for a self-test, which ought to display ALL GOOD but might otherwise indicate a trouble code. Hold 4 to show the Git hash of the firmware revision, 5 to show the date of manufacture. 6 will toggle a blinking CPU load indicator, which ought to be invisible except when the watch is really busy.

To tell the time in the dark, hold + for the watch to beep the time in Morse code.

The third row (123-) of buttons sometimes do something in the selected Applet without changing modes.

Alarm

The GoodWatch supports a simple alarm, which is chosen by pressing the Set button within the alarm application. Press the 4 button to turn the alarm on or off, which will be indicated as a + icon on the clock screen.

Stopwatch

The Stopwatch applet allows you to time things in quarters of a second. Press + to start or stop the timer, and 0 to reset it. Unlike other apps, it will not timeout and return to the clock after three minutes.

To temporarily show the time while in the stopwatch mode, press and hold the / key.

RPN Calculator

The calculator operates in Reverse Polish Notation mode. The current implementation operates on 32-bit integers, but floating point support will come in time. Pressing Mode the first time will reset the stack to zero; a second press moves to the next applet.

There's little room here for a complete tutorial for RPN, but gist of it is that you push numbers onto the stack by typing them in, and each operator will pop the most recent values from the stack, pushing the result. Press = or the mode button to push the current number into the stack and begin another; you can think of this as the Enter or Space key from an HP calculator.

Hex Viewer, Disassembler

The hex viewer application display eight nybbles on the screen. The left four are the address, while the right four are the little-endian value at that address. The 7, 8, 9, and / buttons increment nybbles of the address, while the 0, ., =, and + buttons decrease the address nybbles.

You will find that unmapped regions of memory return 0x3FFF, an unconditional branch to self. The bootloader at 0x1000 is unlocked for your reading pleasure, but a troublesome region at 0x1B00 is blacklisted because reads from that region trigger a reboot. Flash runs 32kB starting at 0x8000, Info Flash is at 0x1800, and RAM is at 0x1C00. The interrupt table is at the very end of the address space.

Holding the 4 button will disassemble the current instruction, as best the 7-segment display can handle. AM and PM show the two bits of the As field, and / shows the one bit of the Ad field.

Phonebook

The phonebook is defined in your config.h file, like so:

#define PHONEBOOK \
  "Travis  " "555-3811" "\n" \
  "Bob  555" "555-0321" "\n" \
  "AAA  800" "222-4357" "\n" \
  "Last    " "555-2358" "\n"

Inside the app, you can press + to move to the next row, and 0 to move to the next word of a row. So it it shows Travis and you want Travis's number, press + to advance to the next word. If you want Bob, AAA, or Last's number, then hit 0 to move on.

When you exit the app back to the Clock, there's a fallthrough menu on the second row. 1, 2, 3, and - display the first, second, third and fourth lines of the entry.

Only 8 characters are supported per word, and each line must end with \n.

Calibrate

Calibrate allows you to add or subtract a realtime clock calibration in unites of 2ppm, which is handy if you find your watch slowly gaining or losing time. Positive values slow the watch, and negative values speed it up. -28 seems to be a reasonable default value.

RNG

This app generates a random number and displays it on the screen. 0 generates the number, 7 displays it in hex and / displays it in decimal.

Beats

This app implements Swatch Internet Time, a failed attempt at metric time in the UTC+1 timezone from Swatch's Beats watches. Be sure that your time offset in config.h is accurate.

Radio Applications

The watch supports a number of radio applications. Please keep in mind that the filters of your watch will determine its band, as 433MHz in the GoodWatch20 series or either 500MHz or 915MHz in the GoodWatch30.

Tuner

The tuner application lets you choose between the frequencies that were linked in from codeplug.txt using the + and - buttons. Use the = button to then type a manual frequency for a VFO mode.

In the Clock application, pressing 0 will give the name of the channel and . will give you the frequency.

Counter

The Frequency Counter applet is a handy little tool for finding the frequency of a UHF transmitter. Additionally, it will also show the incoming signal strength, so you can verify that the correct frequency has been found.

Enter the Counter by choosing it in the SubmenuApplet, then press 0 for a fresh sweep or 1 to perform a new sweep while retaining knowledge of the old maximum. The watch will quickly scan through the supported frequencies, then display the maximum while waiting for further instructions. The periods at the bottom of the screen will indicate the signal strength at that frequency, and you can copy that frequency into the VFO by pressing the = key.

Morse

The MorseApplet can be used to transmit Morse code by a carrier wave on the currently selected frequency. These can be received on a Single Sideband (SSB) receiver, such as the Yaesu FT-817 or Kenwood TH-D74.

Press 7 to transmit 73 (goodbye), 1 to transmit CQ, or 0 to transmit K. Pressing / will transmit the call sign.

Pressing = placing the watch into a raw CW mode, in which the sidebutton or the + key will act as a straight key. Press = again to exit raw mode.

OOK

The OOK_Example applet transmits on-off keyed packets for emulating cheap remote controls, such as those that control motors and doorbells on the 433MHz band. See its wiki page for a complete description of how it was written, as well as how to edit config.h to define your individual OOK devices.

Jukebox

The Jukebox applet transmits ASK packets on 433.92 MHz to remotely control a TouchTunes jukebox, skipping songs or the like. The following buttons are found within the app.

  ____________________
 / ,---------------.  \
 | |    JUKEBOX    |  |
 | `---------------'  |
 | [7]  [8]  [9]  [%] |
 | power ^  editQ     |
 | [4]  [5]  [6]  [X] |
 | <--  O K  -->      |
 | [1]  [2]  [3]  [-] |
 | pause v  saveQ     |
 | [0]  [.]  [=]  [+] |
 \_skip_______________/  

Some boxes are protected by an 8-bit pin number. 000 is the default, but you can enter a new one with the Set button inside the app.

After exiting the Jukebox into the Clock application, the fallthrough row sends popular commands. 1 is Pause, 3 is Power, and - is Skip. 2 is not yet used.

Beacon

The Beacon applet transmits your callsign over 2FSK. This is currently disabled by default in the Makefile, and it will likely be cut when it is no longer needed as an example.

POCSAG

There is a work in progress POCSAG receiver applet, for use with the Dapnet pager network.

Clone this wiki locally