標準電波 JJY もどきで研究室の電波時計を救った話

お久しぶりです,サイバーセキュリティ研究室 B4 の菅原です.

上原研のおやつ事情の更新をサボっているので,近々あげたいなと思っています.

上原研はなんでもできるよ!!ということを売りにしている研究室で有名?ですが,上原研究室でも IoT できるんだぞということでM1の木村さんに続き,記事書きます.

先日,先生から「電波時計の時間あってないっぽいんだけど,この研究室だと安定して標準電波取得できないからこれでなんとかしてくれない?」ということで M5StickC が贈呈されました.

M5stickCはこいつ

ちなみに,M5StickC を使う前の時計はこんな感じ

まさかの2時間のずれ

そもそも M5StickC ってなんやねん

M5Stack という中国のスタートアップ企業が開発した小型マイコンモジュールです.(ちなみに,M5Stack は M5Stack * と M5Stick * というめっちゃ名前の似たやつを出しているのですが今回使用しているのはStickのほうです)

ESP32-PICO と呼ばれるマイクロコントローラが搭載されており,大きさは4.8×2.4×1.4cmとかなり小さく,扱いやすいです.液晶があってボタンもあってマイクロフォンも搭載していて,WiFiもBluetoothも繋げちゃうので割といろんなことができる優れものです.

M5StickC の詳細はこちらから.(M5StackのHPが色々とリニューアルしたので,こちらの方が見やすいと思います)

本題に入ろうと思うのですが,その前に標準電波のことがよくわからない人もいると思うので軽く触れておきます.

標準電波 JJY とは

さて,標準電波についてですが,NICTによると

標準電波JJYは、時間と周波数の標準、並びに協定世界時(UTC)に基づく日本標準時(JST)を広く国の内外にお知らせするために、情報通信研究機構で運用している電波です。長波帯のJJYでは、時刻に関する情報としてタイムコードを送信しております。

標準電波の出し方について - NICT

と書かれています(このサイトを参照).すなわち,定期的に時刻に関する情報を電波として発信していて,電波時計とかはこれを受信することによって時刻を合わせてるよってことです(おそらく).

ただ,研究室の部屋の中に電波時計を置いておくと,安定して標準電波を受信できないせいで電波時計が意味をなしていないことになるので,これをNTPから得た時刻をもとに擬似標準電波を出すことでなんとかしょうということで M5StickC を使うことになりました.

本題

こちらの記事を参考にしました.

この記事によると,Githubに上がっているコードをそのまま M5StickC に書き込んで,信号を出力してくれるプリント基板をつけるだけで面倒な設定なしに,すぐに使えるよ!って感じだったので,さっそく取り掛かってみました.

動作環境

一応,このブログをみて再現する人がいるかもしれないので,参考までに.

以下の環境で動作が確認できました.お手持ちの環境で動作が確認できない場合はバージョンを落とすなどして対応してみてください.

  • Macbook Pro 2020
  • macOS Monterey 12.4
  • Arduino IDE 1.8.13
  • M5Stack by M5Stack official version 2.0.3(ボードマネージャ)
  • M5StickC 0.2.5 / M5StickCPlus 0.0.7(ライブラリ)
  • WifiManager by Tablatronix 2.0.9-beta(ライブラリ)

用意するもの

基本的には以下のものがあれば,すぐに取り掛かれると思います.

  • M5StickC or M5StickCPlus
  • プリント基板

プリント基板については受託販売がされているので,興味のある方はこちらから購入してみてください.

作業に取り掛かる前はこんな感じ

M5StickC
プリント基板

作業1日目

さっそく,PCに M5StickC を接続して,Arduino IDE を用いてGithubのコードを書き込みます.

以前に,M5StickCPlus で遊んだことがあり,そのときもArduino IDE を用いて開発を行っていたので,すぐに終わると思っていました.

ところが,書き込みができませんでした.

Wrong boot mode detected (0x13)! The chip needs to be in download mode. 

上記のようなエラーが出ました.どうやら ESP32 に怒られているようです.

調べてみると,こんなサイトが出てきました.

ESP32 のトラブルシューティング

これによると,ESP32 のモードを手動で設定する必要があるということなので,これにしたがって色々と試してみたのですがうまくいかず、、

結果としては,別の M5StickC を使用することで解決しました.(これを解決というのかはさておき)

ということで,無事書き込みは完了したのですがエラーを解決するのに時間を費やしたため,続きは2日目に.

作業2日目

さて,書き込みが完了したので,あとはやるだけです.

これは書き込み直後の M5StickC ですが,このままではただの置物なのでWiFiの設定を行なっていきます.ちなみに,この設定を超簡単にできるのは WifiManager のおかげなのでみなさん感謝しましょう.

WifiManager のマニュアルに沿って進めていきます.

初めて行う場合は M5StickC 自身がアクセスポイントになってくれるので,なにかしらのデバイス(ここではiPhone)を使用して,接続します.接続したら自動的に 192.168.4.1 を開いてくれると思いますが,もしうまくいかなかったらブラウザに直接IPアドレスを打ち込んで開いてみてください.そうしたら,M5StickC に接続してほしいSSIDとkeyを選択して入力すると,M5StickC が指定されたところに接続します.

ESP32と名前がつくアクセスポイント
アクセスポイントにつなぐと勝手に出てくる(はず)
WiFiを選択
成功

ということで,接続が無事成功しました.(成功した画面は一応SSIDとかが写っているので,載せるのは控えておきます)成功していて,電波を出しているのであればLEDが点滅しているはずです.

完成

今まで上原研には大きい時計がなかったのですが,これでみんながいつでも時間を確認できるようになりました.

左下にあるのが M5StickC
研究室の目立つところに置かれました

最後に

今までIoTに触れたことがほとんどなかった筆者ですが,割と簡単にできたのでお困りの方は是非試してみてください.

上原研はIoTも出来るよ!!!(ここ重要)

ということで,今後もちょっとずつ技術系の記事を上げていけたらと思います.

(文責:2022年度B4 菅原颯真)

コメントを残す

メールアドレスが公開されることはありません。