Raspberry Pi(ラズパイ)で電波時計を合わせるには、Raspberry Piから40kHzの電波を出す必要があります*1。40kHzというのは電波としては低い周波数ですが、Raspberry Piで0、1のデジタル信号を出すGPIO(汎用入出力)で出力するには、やや高めの周波数といえます。

 Raspberry Piで、40kHzという高い周波数の信号を扱う方法として2つが考えられます。PWM(PulseWidth Modulation)を使う方法と、GPIOをオンオフする方法です。

PWMを使う

 PWMはパルスを発信し、制御する機能です。PWMによって、モーターや電球といったさまざまな機器をコントロールできるため、多くのSoC(System-on-a-Chip)はPWM機能を搭載しています。RaspberryPiも1ポートだけPWM出力が設けられていて、内部レジスタを設定して様々な用途に利用できます。

GPIOを40kHzでオンオフさせる

 GPIOはオン(=1)オフ(=0)をプログラムから制御できる便利なポートです。オンオフを繰り返し、40kHzの信号を出すことができれば、電波時計を制御できるでしょう。

 ただし40kHzというと1秒間に4万回のオンオフをくり返すことになります。オンの時間は12.5μ秒、オフの時間も12.5μ秒ということで、Raspberry Piにとってはやや荷が重い制御になりそうです。

 40kHzという信号を扱う場合、PWMが最も適していますが、Raspberry PiのPWMはやや制御が難しく40kHzの信号を生成するのが面倒だったため、今回はPWMの利用を見合わせました。

 つまり、GPIOで40kHzを生成しなければならないわけです。まずは可能かどうか調べてみることにしましょう。