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を生成しなければならないわけです。まずは可能かどうか調べてみることにしましょう。

この先は会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら