JJYシミュレーターを作った話【ESP32-C3 + Arduino】

ろらたんが電波時計とJJYシミュレーター基板を手に持っているブログ用アイキャッチ画像 ESP32

JJYシミュレーターを作った話【ESP32-C3 + Arduino】

この記事について

農業IoTの話、続きを書こうと思ってたんだけど――
まさかの送信機が水没😷

乾かしたら動いたけど、動作が不安定で作業は一時ストップ中。
ということで、今回はLoRaとは別のネタをお届けします!

ESP32-C3 + Arduino で作った「JJYシミュレーター」の話です。

ろらたんが電波時計で時刻合わせしてる画像


⏰電波時計なのに、ズレる日々

うちには電波時計がたくさんあります。
寝室の目覚まし、リビングの壁掛け、洗面所やデスクの横にも一台。
ぜんぶ、何も考えずに電波時計を選んできた。

なのに――ちょっとズレてるじゃん…?

うちはRC構造のマンション。
部屋によっては、全然JJY電波を受信しない地獄モードもあります。

仕方なく、手動で時計を合わせることも。

これ、電波時計の意味ないよね?

って言いたくなるのをぐっとこらえてたんだけど、さすがに耐えられなくなって…

🎀 “電波時計なのにズレる”って、ちょっと切ないよね…。しかも地獄モードって名前まで付けられてるし💦


🔧JJYシミュレーター製作開始!

探してみると、JJYシミュレーターも商品化されてはいるけど、

  • 値段高め
  • イマイチ不明
  • 正確性はいいけど利便性がいまいち

…うーん。なんか、もやもやする。

じゃあ、自分で作ってみよう。

そこから生まれたのが、この自作JJYシミュレーター!

🎀 電波が届かないなら、自力で出しちゃえばいいよねっ💡これぞDIYの真髄っ♪


📡JJYの信号パターンってどんなの?

まずは、電波時計の時刻合わせに使われるJJYの電波について調べました。

電波時計に使われるJJYの電波は、東日本では福島県から40kHz、西日本では九州から60kHzの標準電波が出ています。

JJYは、1秒ごとに40kHzまたは60kHzの搬送波を使って、1ビットずつ情報を送っている信号です。
1分間で送られるのはちょうど60ビット。つまり、1ビット=1秒のペース。

各ビットの意味はシンプルですが、構成はしっかりと設計されていて──

  • 秒の情報(1〜59秒)
  • 分・時・日・曜日・うるう年
  • パリティビット
  • 将来拡張用の空きビット

などが含まれています。

ビットの種類は3種類:

ビット種別パルス長(無変調時間)意味
0ビット約0.8秒論理0
1ビット約0.5秒論理1
マーカー約0.2秒区切り

60秒のうち、毎分0秒はマーカー になっていて、
59秒もポジションマーカーになっているので、マーカーが2回連続すると、
それが時刻(分)の先頭の印になります。

🎀 まさに“1分間で届くカレンダーつきのビット列”って感じだねっ!

詳細は、国立研究開発法人 情報通信研究機構(NICT)の日本標準時グループのサイトを見てください。
信号パターンについては、ここに記載されています。


📀基本構成

  • マイコンは ESP32-C3 を使用(Arduinoで開発)
  • Wi-Fi経由でNTPサーバーから時刻を取得
  • PWM出力でJJYの40kHz/60kHzパターンを作成
  • OLEDディスプレイに現在時刻を表示
  • 電波のアンテナは、基板裏面の螺旋パターン
  • 電源やダウンロードは USB Type-C一本で完結
  • 基板本体とアンテナ部は分離できる設計

🎀 Wi-FiつないでNTPから時刻もらって、PWMでJJY出力っ!全部できちゃうなんて…ガジェット魂くすぐられすぎ〜っ✨


🧩実際の設計の話

🔌回路構成

今回、マイコンには ESP32-C3 を採用しています。
理由はシンプルで、一番安いモジュールで、ネイティブUSBも内蔵してるから
これにより、外付けのUSBシリアルIC(CH340やCP2102など)を省略でき、
部品点数も減って、実装が簡単&コストも抑えられます。
書き込みもシリアル通信も電源も、Type-Cひとつで完結
ガジェットとしての構成美もあって、かなり気に入ってる選択です。
基本的に、部品は 秋月電子とaitendo で買い集められるものにしました!

回路と基板設計には KiCad を使っています。

JJYシミュレーターの回路図

(クリックでPDFを表示)
※ 2025/8/20 に回路図をUpdateしました。

主なピンアサイン

機能GPIO備考
JJY PWM出力10変調された信号を出力
CONFIGスイッチ9Wi-Fi設定用(BOOTピンと兼用
ACT LED5動作中LED
IND LED0状態表示用LED(共用可)
OLED Reset2OLEDモジュールリセット
OLED SDA7OLED I2C データ
OLED SCL6OLED I2C クロック

ちなみに、回路図には点線で囲った「OPTIONS」パーツがいくつかありますが、これらは今回のJJY-Simでは実装していません
将来的に別用途や実験に使えるように、あらかじめ基板だけには載せておいたという構成です。
せっかく基板を作るなら、少しでも汎用性を持たせておこうという気持ちからですね。

🎀 “とりあえず回路に入れちゃう病”、それ…技術者あるあるだよね〜っ!

🧷PCBの構成

基板は、ロジック部とアンテナ部で分けられるようにしています。
スペースにも余裕があって、配線もほぼストレスフリー。

アンテナやマッチング回路は、超適当でかなりいい加減な構成。
ちゃんとした人が見たら、ツッコミどころ満載だと思います。
それどころか、オシロで測定したら、自分ながら酷い波形にガックリ。
無駄にFETとか使ってるような気がしました。
それでも 時計のすぐ近くに置いたらしっかり受信 してくれました!

アンテナのど真ん中にはさりげなく「シャチくん」のシルク印刷パターンを入れてみたり。
回路の性能にはまったく関係ないけど、ちょっとした“しゃちらぼ印”として忍ばせてます。

基板は JLCPCB に発注しました。

全体の部品点数はそれほど多くなかったので、実装作業は意外とあっさり終わりました。

JJYシミュレーターの完成基板

ちなみに、この写真の初版PCBにはOLEDの配線にミスがあって、手ハンダでジャンパー対応してます
次ロットでは修正済みで、基板の色も黒に変更しました!(シルクもちょっとだけ変更)
~~ただ、そっちはまだ未実装です。~~

🎀 シャチくんが電波の中心にいるなんて…カッコよすぎではっ!?✨

🧰ケースも作成

どうせならケースも作っちゃおうと思って、
Fusion360で設計 → JLCPCBで3Dプリント発注

…だけど、ここでやらかしたのが RESETとCONFIGスイッチの穴がガッツリとズレてたこと😭
見事に「押せない位置」に穴を開けてしまって、完成後に愕然。
とりあえず、CADデータでは修正したけど、修正版の実物はまだ作ってない!
でも、それ以外のところは、バッチリできてました。

🎀 スイッチに指が届かないの、ろらたんでもちょっと泣いちゃうよぉ…💦


📁GitHubで公開しました

GitHubには、この記事の公開にあわせて事前にアップしておきました。
コード、設計データ、ケースのSTEPまでひと通り揃ってるので、よかったら活用してみてください!
(ビルド方法などはREADMEに記載しました。)

  • ESP32-C3用Arduinoスケッチ
  • KiCad設計データ
  • 3D STEPデータ(Fusion360)

👉 GitHub: https://github.com/shachi-lab/jjy_sim_esp32_c3

🎀 回路もケースもコードもぜ〜んぶセット!これなら作ってみたい人、すぐ動かせちゃうねっ♪


🧭使い方はとっても簡単

🔧CONFIGスイッチでWi-Fi設定!APモード搭載

このデバイスの隠れポイントはここ!
Wi-FiのSSIDやパスワードをコードに書かなくても設定できる「CONFIGスイッチ」の存在!

設定手順

  1. 起動/リセット後、5秒以内にCONFIGスイッチを押す
  2. 本体が ESP32_XXXXXXXX というSSIDのAPとして立ち上がる
  • (XXXXXXXX はMACアドレス末尾)
  • パスキーは “password”
    3. スマホやPCから接続すると、キャプティブポータルで設定画面が表示される!

設定画面の内容

JJYシミュレーターのWIFI画面
(スマホのキャプティブポータル画面)

  • [Configure WiFi]

  • 周辺のアクセスポイントをスキャン、RSSI順にSSID表示

  • 接続したいSSIDを選択し、パスキーを入力
  • [Save] で保存

  • [Info] 現在の設定情報を表示

  • [Setup] 40kHz/60kHz の出力モード切り替え

  • [Restart] ESP32を再起動

  • [Exit] 設定モードのトップへ戻る

一度設定したら、次回からは自動でWi-Fiに接続してNTPから時刻取得→JJY出力
ほっといたら動くので、運用もめっちゃ楽ちん!

🎀 CONFIGスイッチでWi-Fiの魔法が発動っ✨スマホでポチポチするだけだよ〜!

⌚時刻合わせ

  1. 電波時計の「受信ボタン」を押す
  2. JJYシミュレーターの電源を入れて、時計の近くに置いておく
  3. 数分後…時計が ピッピッ! と鳴って補正完了!

OLEDには現在時刻が表示されていて、PWM信号は0秒からスタートします。

🎀 ろらたん的には…“これはもうちょっとした発明”だと思うっ!おうちの電波時計、全部ピッピッさせちゃおっ♪


📝おわりに

これで、うちの電波時計たちはぜんぶ“ピッピッ!”で正確時刻になりました。
寝室の目覚ましも、リビングの掛け時計も、壁の隅っこに置いてあったあの安物も──
みんな「ピッピッ」で時刻が揃う。

なんだかんだ言って、地味だけどすごく気持ちいい。
ボタン一つで電波時計が正確になるって、生活のストレスがひとつ減るんだなと実感しました。

回路も適当だし、ケースも1回ミスってるし、見た目は市販品みたいにスマートじゃない。
でも「自分で作って、ちゃんと動く」っていう感覚はやっぱりうれしいし、
誰かに使ってもらえたらもっと嬉しいなって思ってます。

ちなみに──これ、どうやらちょうど1年前に作ってたやつだったらしいです。
頻繁に使ってたけど、いつ作ったのか忘れてました。
コードを開いて、「あれ?こんなふうに動くんだ?」って確認しながらブログ書いてたんだけど、
まるで他人のコードを読むみたいな感覚で(笑)

「おお、CONFIG押すとAPになるのか〜」って、
完全に自分で書いたこと忘れて感心してました。

🎀 それ、ろらたんも横で見ててちょっと笑っちゃってたよ…!

でもまあ、いろんなガジェットを作ってると、こういうの…あるあるなんですよね。

作ったときは全部覚えてるつもりでも、しばらくすると完全に頭から抜けてて、
いざ再確認して「えっ、自分こんなの書いてたの!?」ってなること、けっこうある。

たぶん、これ読んでる人の中にも“記憶から蒸発した自作”あるんじゃないかな(笑)


おぉ〜!Qiita追記完了おつかれさま👏✨
これでまたビュー数が伸びるはずだよ。

しゃちらぼ側に追記するなら、Qiitaよりちょっと“ぽんた語+ろらたん掛け合い”を盛り込んだ形がいいね。
Qiitaはフォーマル寄りだったけど、しゃちらぼは「物語風」+「裏話」多めにできる。

たとえばこんな追記セクションどうかな?


追記(2025/8/22)

回路を見直してみた話

この記事を書いたあと、試しに回路図を「ろらたん」に見せたんです。
そうしたら、やっぱりアンテナ回路のところを結構ダメだしされまして…。
あらためてオシロで信号を見てみたら、「うわ、こんなのよく時刻合わせできてたな…」ってレベル。
本当に、今まで動いてたのが不思議なくらいです。

そこで「基板を作り直す前に、少しでも改善できないか?」と相談したら、定数の変更やCをRに乗せ換えるなどの提案を受けました。
実際にやってみると、ほんのちょっとですが距離が伸びたように感じます。

🎀「最初の回路は“最低”ってオシロが証言してたんだよ〜💦」

根本的には回路の作り直しが必要だなぁ、と改めて痛感しました。

海外の電波時計にも

実はこのESP32-C3 JJYシミュレーター、ソフトを変えれば日本(JJY)以外の方式にも対応できちゃいます。
たとえば…

  • ドイツの DCF77 (77.5kHz)
  • アメリカの WWVB (60kHz)
  • その他、各国の標準電波

これらに合わせて動かせるので、海外製の電波時計を日本で使うことも可能です。

🎀「“JJYシミュ”って名前だけど、ほんとは“世界の電波時計シミュ”だね〜!」

海外製の電波時計を持っている方は、ぜひチャレンジしてみてください。


🎁JJYシミュレーターをプレゼント配布します

通常販売分で在庫がなくなりました。
プロモーションでのプレゼント企画は、一旦休止します。

また、在庫が復活したら、プレゼント企画を再開するかもしれません。
(2025/08/21に編集)

🎀 在庫ゼロ…!ろらたん工場フル稼働しないと〜💦

🛒通常販売

このJJYシミュレーターの今回分は完売しました。
部品の入手ができ次第、再び出品できるようにするつもりです。
最新の状況は、X(旧Twitter)のアカウントでも随時お知らせします。

  • ヤフオクにて出品しています。
  • ブログのプロモーション企画ではなく、通常販売です。
  • SNS投稿などの条件は一切ありません。
  • 匿名配送・即決価格での出品です。
  • 詳細は出品ページの商品説明をご覧ください。

👉「しゃちらぼ」がヤフオクで出品中の商品

🎀 プロモ企画じゃなくても欲しい人は、こっちからどうぞ〜!


📪 お問い合わせなど

技術的なご相談やご質問などありましたら、
📩お問い合わせフォーム  
または、
📮info@shachi-lab.com までお気軽にどうぞ。

🎀 ちょっと気になる人も、遠慮なく声かけてねっ♪


🔗 関連リンク

しゃちらぼの最新情報や開発の様子は、こちらでも発信しています:

💬「シャチラボ」で検索してきた方も大歓迎!
ほんとは「しゃちらぼ(Shachi-lab)」なんだけど、見つけてくれてありがとう🐬

コメント

タイトルとURLをコピーしました