Skip to content

Latest commit

 

History

History
46 lines (35 loc) · 1.92 KB

File metadata and controls

46 lines (35 loc) · 1.92 KB

Signal protocols

WWVB (60 kHz, US — Fort Collins, CO)

The carrier is amplitude-modulated. The "low" amplitude is 17 dB below the "high" level. One bit per second, 60 bits per minute. Each second starts low and rises to high after a duration that encodes the bit:

Symbol Low duration High duration
ZERO 0.2 s 0.8 s
ONE 0.5 s 0.5 s
MARKER 0.8 s 0.2 s

Markers occur every 10th second (0, 9, 19, 29, 39, 49, 59).

JJY (40 / 60 kHz, Japan — Otakadoya / Hagane)

Carrier is also amplitude-modulated at -17 dB but with opposite polarity: each second starts high and falls to low after a duration that encodes the bit:

Symbol High duration Low duration
ZERO 0.8 s 0.2 s
ONE 0.5 s 0.5 s
MARKER 0.2 s 0.8 s

JJY uses Japan Standard Time (UTC+9). JJY40 is for eastern Japan, JJY60 for western. Both broadcast the same time-code frame.

A note on "low" amplitude vs. fully-off

The real stations attenuate by 17 dB during the low interval — they do not turn the carrier fully off. This package's default backend (PigpioCarrier) toggles the carrier fully on/off, which is a 100 % amplitude swing rather than 17 dB. Clocks within a few meters of the Pi will still decode this without trouble (the difference between 100 % and 17 dB is just an even bigger contrast for the receiver).

If you want a "true" -17 dB low you need a two-pin setup: keep one GPIO running the carrier continuously and use a second GPIO to switch in an external attenuator (resistor divider into the antenna driver). The modulator polarity is the same; you just call set_low()/set_high() on a different backend. The codebase is structured to make adding that backend straightforward — subclass Carrier.