M5Stack Yahooニュース・天気予報・時計に、電波時計 JJY 発信モジュールを追加して、マルチタスクで動かしてみた

m5stack_tr_jjy00 M5Stack

こんばんは。

今回は前回の記事の電波時計 JJY 発信回路を少し発展させて、トランジスタで増幅させたモジュールを作り、M5Stack ( ESP32 内蔵 )の Yahooニュース・天気予報・NTP時計電光掲示板プログラムとコラボさせてマルチタスクで動かしてみました。

M5Stack のLCD ( 液晶画面 )の Yahooニュースや時計スクロールを停止させずに、電波時計用 JJY 信号を 20分間継続して発信することができました。
Yahooニュース天気予報時計を見ながら、その付近に電波時計を置いておけば、時刻を補正してくれるので、以前から欲しいと思っていたガジェットがようやくできた感じです。
JJY信号発信モジュールもアイロンビーズ(パーラービーズ)でサクッと外箱ケースを自作したりしてみました。

スポンサーリンク

これで電波時計関連の一連のリベンジ工作は完結したいと思います。
とりあえず、動画をご覧ください。

どうでしょう?
アイロンビーズ(パーラービーズ)の外箱ケースを適当に作ってみました。
かなり異様で変な模様ですが、試しに作っただけなのでご容赦ください。

とりあえず、これを使えばニュースや天気予報、時刻も見られて、その付近に置いた電波時計も自動的に合わせてくれるので、私の個人的に重宝するガジェットになること間違いなしです。

以前、同じ様な物を SSD1331 で作って、発表せずに個人的に使っていましたが、今回は更に簡単なJJY発信回路で、M5Stack の大画面表示と合わせられたことが良かったと思います。

前回の記事の電波時計合わせ用 JJY 信号発信回路は、パッシブパーツで構成されていたので、M5Stack のような LCD ディスプレイからのノイズが多いせいか、なぜか電波受信が悪かったので、今回はトランジスタを1個追加して、電流を約10倍増幅( 約 30mA )させた回路を作りました。
それでも、共振アンテナを使うわけではないので、電波は殆ど飛びません。
アンテナコードに接触するように置いた電波時計が受信できる程度なので、電波法違反にはならないと思います。
殆ど、「有線JJY発信回路?」みたいな感じです。

これによって、M5Stack のLCDディスプレイをフル稼働させていても、電波時計がガッツリ合うので、我ながら自力で良い回路ができたと思っています。
これも、Webベースの回路シミュレータ Circuit Simulator Applet を使って事前にテストできたおかげです。
以前のこちらの記事で作ったようなサイン波発生ドライバーチップ AD9833 を使わないでも、LC共振回路とトランジスタ1個だけで、同等以上の回路ができるなんて、当時は想像もつきませんでした。
今回は電子回路を自力で作るということについてとても勉強になったし、ちょっとばかり成長したと個人的に思っています。

ところで、実は、これを作っている途中で、何も M5Stack に無理やり詰め込まなくても、別の ESP32 開発ボードを使えば、遙かに簡単だし、確実に動作すると何度も思いました。

でも、せっかくなので、M5Stack とコラボさせてみようと思いました。
そうしたら、マルチタスクでプログラミングしている最中で、Twitter でいつもお世話になっている Kenta IDA さんから有益な情報をいただきました。
Arduino core for the ESP32 の stable 1.0.1 では、WDT エラーを回避する関数が新たに用意されているという情報です。
stable 1.0.1 にバージョンが上がった時点で目について、気にはなっていたのですが、ウォッチドッグタイマを無効にするのは良くないだろうと思って放置していました。

ですが、いざそれを使ってみると、無限ループでdelay一切無しで20分間も問題無く動いて、その後のWiFi接続も問題無ありませんでした。
それを12時間以上持続して動かしても、WDTエラーでリセットすることはありませんでした。
これは意外と使えるかも知れませんよ。
後で詳しく紹介しています。

ただ、この関数を使うことによる弊害はまだまだ未知ですので、これからいろいろと調べて行かねばなりません。
何か解る方がいらっしゃったら、教えて頂けると助かります。

因みに、私は素人アマチュアです。
自己満足で工作していますので、誤り等があるかも知れません。
もしお気づきの点がありましたらコメント投稿等でご連絡いただけると助かります。

【2022/04/15 追記】

※Yahoo RSS 天気 は2022/03/31 で配信終了してしまいました。残念、、、。
このコードでは天気予報は表示されません。

よって、気象庁ホームページから天気予報を取得する方法に更新しました。
詳しくは以下の記事を参照してください。

気象庁天気予報JSONを取得して天気予報を表示させてみた

 

    【目次】

  1. 使ったもの
  2. 回路シミュレータで、トランジスタとLC共振の挙動を調べて、大まかなパーツの定数を調べておく
  3. 回路シミュレータで、ユニバーサル基板的に配置してチェックする
  4. アイロンビーズ(パーラービーズ)で外箱ケース作成
  5. Arduino – ESP32 stable 1.0.1 のインストール
  6. M5Stack にYahooニュース天気予報時計が表示できるように、ライブラリやフォントを設定しておく
  7. スケッチ(プログラム)の入力
    WDT ( ウォッチドッグタイマ )を停止させるプログラム
  8. LEDC PWM で安定したクロックを使ったスケッチの入力 (2019/04/04追加)
  9. コンパイル書き込み実行
  10. 電波時計が受信しない時の意外な原因
  11. 編集後記

使ったもの

M5Stack

(追記)
M5Stack Basicは、この記事を書いた当時より格段にバージョンアップしております。
以下のスイッチサイエンスさんの公式サイトをご参照ください。
https://www.switch-science.com/collections/%E5%85%A8%E5%95%86%E5%93%81/products/9010

※M5Stack Gray(9軸IMU搭載)現在は販売終了しております

 

Espressif Systems 社製の Wi-Fi & Bluetooth デュアルコアマイコン ESP32 を搭載し、日本で使用できる技適を取得しています。
液晶ディスプレイ、バッテリー、micro SD カードスロット、ボタンスイッチ、スピーカー、Groveコネクタ等、全部入りマイコンモジュールです。
これのレビュー記事は以下を参照してください。

M5stack ( ESP32 搭載 ) を分解したり電源を入れてみて、いろいろ思ったこと

NPN トランジスタ 2SC2120-Y 1個

40kHz サイン波電流を増幅させるために使います。
秋月電子通商さんで購入しました。

http://akizukidenshi.com/catalog/g/gI-13829/

定電流ダイオード ( CRD ) E-103 2個

10mA のものが2個必要です。
ESP32 マイコンの GPIO への電流を制限して、GPIOを保護します。

ショットキーバリアダイオード ( SBD ) 11EQS04 1個

手持ちの物を使いました。
共振回路による負電圧からGPIOを保護するために使います。
秋月電子通商さんで販売しています。

http://akizukidenshi.com/catalog/g/gI-08998

LED ( 発光ダイオード) 1個

5V程度のもので、順方向電圧降下 ( VF ) が2.1Vのもので良いです。
赤色が良く光っておススメです。

秋月電子通商さんの以下のダイオードでも良いと思います。

http://akizukidenshi.com/catalog/g/gI-11577/

マイクロインダクター 100μH 1個

40kHz 共振回路を作るために使います。
1個あればよいです。
これは 1/4W で、抵抗値は数Ωなので、直流電圧を与えない様に注意してください
定格値を超えると数秒で破損します

1/4W 100μH ±20% アキシャルリードインダクタ 20本入 <hen-335>
札幌貿易(Sapporo Boueki)
¥280(2024/12/03 05:50時点)

これは秋月電子通商さんにもあります。

http://akizukidenshi.com/catalog/g/gP-03966/

積層セラミックコンデンサ 0.1uF 50V 4個

とりあえず、手持ちで 50V のものがあったのでそれを使いました。
4個必要です。

積層セラミックコンデンサ 0.01uF 50V 1個

秋月電子通商さんで以前買ったものを使っています。

http://akizukidenshi.com/catalog/g/gP-08138/

積層セラミックコンデンサ 1uF 50V 2個

信号の直流成分カット用のカップリングコンデンサとして使います。
秋月電子通商さんで以前買ったものを使っています。

http://akizukidenshi.com/catalog/g/gP-08150/

金属皮膜抵抗 10Ω 1/2W 1個

大きな電流が流れるところに使います。
金属皮膜抵抗は熱による抵抗値の変動が少ないです。
今回は大きく余裕をもって、1/2W のものを使います。
でも、消費電力的に1/4Wでも問題無く使えます。

金属皮膜抵抗 20Ω 1/2W 1個

これも大きな電流が流れるところに使います。
金属皮膜抵抗は熱による抵抗値の変動が少ないです。
これも消費電力的に1/4Wでも問題無く使えます。

抵抗 3.9kΩ 1/4W 1個

トランジスタのバイアス用に使います。

http://akizukidenshi.com/catalog/g/gR-25392/

抵抗 1.2kΩ 1/4W 2個

JJY信号LOWレベル用に使います。
2.4kΩ相当が1個でも良いです。

抵抗 10kΩ 1/4W 1個

共振回路のQダンプ用に使います。

半固定抵抗 3362P 100kΩ 0.5W 3個

これは、ブレッドボード上でオシロスコープの波形を見ながらバイアス電圧やエミッタ抵抗を決める為に一時的に使います。
実際の工作では使いません。

http://akizukidenshi.com/catalog/g/gP-03283/

2.54mmピッチ ユニバーサル基板

2.54mmピッチのユニバーサル基板であれば何でも良いです。
私は以下の物を使いました。

サンハヤト 小型ユニバーサル基板 ICB-288G
サンハヤト
¥170(2024/12/03 06:57時点)

ピンソケット

2.54mmピッチ ピンソケット

これを4pin分にニッパ―でカットして使います。

ロングピンソケット(シングルピンソケット)

オムロン シングルソケット 32ピン XR2C3202
オムロン(OMRON)
¥1,051(2024/12/03 07:19時点)

このうち2ピン分しか使いません。
今回はこれを使いましたが、別のコネクタの方が良いかも知れません。

ICテストリード 0.5m HK-ICT01H 2本

エルパ(ELPA) ICテストリード テスター 約0.5m 6色 HK-ICT01H
エルパ(ELPA)
¥2,053(2024/12/03 16:29時点)

これはアンテナ線のジョイントに使います。

ビニル電線

アンテナ線として、1~2mくらい使用します。
銅線であれば何でも良いかと思います。
私の場合は古いLANケーブルを解体した銅線を使いましたが、無ければ以下の物でもよいかと思います。

協和ハーモネット 耐熱通信機器用ビニル電線 H-PVC 0.65mm 2mX10色 茶赤橙黄緑青紫灰白黒
協和ハーモネット(Kyowa Harmonet)
¥1,216(2024/12/03 16:13時点)

ジャンパーワイヤー

ブレッドボード

サンハヤトの SAD-101 がおススメです。
ユニバーサル基板にハンダ付けする前の試作用に使います。

サンハヤト SAD-101 ニューブレッドボード
サンハヤト
¥536(2024/12/03 17:03時点)

アイロンビーズ(パーラービーズ)

外箱ケース自作用に使いました。

パーラービーズ カラフル16色セット 80-17596
カワダ(Kawada)
¥1,633(2024/12/04 02:38時点)

アイロンビーズ(パーラービーズ) 透明プレートL

アイロンビーズを並べて接着し易いように置くプレートです。

パーラービーズ 透明プレートL 22652
カワダ(Kawada)
¥2,000(2024/12/04 02:38時点)

パッチワーク用こてアイロン

アイロンビーズ(パーラービーズ)の接着用に使いました。

Clover NEW パッチワークこて 57-903
クロバー(Clover)
¥4,950(2024/12/02 21:44時点)

オシロスコープ

測定する周波数は 40kHz なので、最低でもその10倍以上のサンプリング周波数のオシロスコープが必要です。

私は 100MHz 級のものを使いましたが、25MHz でも今回はOKだと思います。

これが無いと、微調整は難しいと思います。

WiFi インターネット環境等

2.4GHz帯のWi-Fiで、インターネットに接続できる環境が必要です。
ESP32 が接続できるように、ファイアウォール設定を済ませておいてください。

MACアドレスフィルタリングをかけている方は、以下の記事を参照して、MAC アドレスを確認しておいてください。

ESP-WROOM-32 ( ESP32 ) チップ・メモリ・MACアドレス情報取得方法

その他、ハンダコテ、ハンダ、パソコン、USBケーブル等

使ったものは以上です。
では、次では回路シミュレータでパーツの定数を決めていきます。

コメント

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