バーアンテナでDCF77標準電波を発信するMatterデバイスを作る

# DCF77標準電波トランスミッタ
電波時計のためのDCF77標準電波を発信するMatterデバイスを作ります。

![IMG_7997.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/09ff2b2b-2b48-0d37-481a-c19b2eeb24f6.jpeg)

以下の記事でM5StickCを使ってポータブルなDCF77標準電波トランスミッタを作りました。今回は据え置きでの運用に耐えうるよう、アンテナを付けて4m程度の距離で通信できるものにしました。

https://qiita.com/nfukuoka/items/fc5854ebf938b93f7e60

## ソフトウェア
M5Stamp picoにTasmotaをWeb Installerでインストールし、追加アプリ"DCF77Transmitter.tapp"をTasmotaにアップロードしてMatterの設定して完成。

## ハードウェア
アンテナは下記サイトを参考にしてPWMの出力をアンプを介してバーアンテナで送信しています。

https://github.com/harlock974/time-signal

パーツリスト
・抵抗　　・・・　82Ω x1,  330Ω x1
・コンデンサ　　・・・ 6800pF x1
・AMバーアンテナ　・・・ BT360CF x1
・MOSFET　・・・ 2N7000 x1
・コントローラ　・・・ M5Stamp pico x1

回路図
電源は5vのUSBアダプタとしました
![IMG_7999.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/e1d05755-d8c5-bacf-400c-9285707ed422.jpeg)

実装イメージ
pinにはM5Stamp picoを挿します
![IMG_8005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/2f2ca28a-81d6-daa9-a239-a3d2ab338eb0.jpeg)

## ファームウェア書込み
M5Stamp picoには、"Tasmota (english)"を選択して書き込みます
【Tasmota WebInstaller】  https://tasmota.github.io/install/

![a1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/cf4fd327-b592-2417-42ef-b1c5ff39cf4a.png)

そのままWiFi接続をして(2.4GHzのみ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/e12d3ae1-2549-8e78-1dc0-0debf0ef05e2.png)
繋がったら、VISIT DEVICE
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/62d74d8c-fdf7-b812-91e9-4fc5119e80bc.png)
M5Stamp内のWebサーバに入れます。ここで設定していきます
![main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/4fb3d592-41fc-0533-bf98-a0e6fcaf6c10.png)

configuration -> Configure Other
TemplateをM5Stamp pico用に書き換えます
【Configuration】https://templates.blakadder.com/m5stack_m5stamp_pico.html からコピペして

![a2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/a333a921-ae0f-6793-236f-62a0defa7ee2.png)

Activateにチェックを入れてから「Save」します

自動リブートしたら、configuration->configure module
Module typeをM5Stamp Picoに切り替えて、
GPIO25をPWMに変更します。識別は1 

![a3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/8cce032a-60c2-a37a-ed6b-df1357e7d00f.png)

Tool->Consoleで黒い画面を立ち上げて、日本のlocaltimeに設定します。
![tools.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/c39e7e56-54ba-a486-685e-9482c5f10d71.png)
「 timezone  +9:00 」と入力すればOK。ログのタイムスタンプで正しく設定されたか確認。
![timezone.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/e00e9b7d-7e80-e31f-3169-abd6b30d0818.png)

GitHubからDCF77Transmitter.tappをダウンロード

https://github.com/fknaopen/DCF77Transmitter/tree/M5Stamp

Tool->Manage File systemで、tasmotaの追加アプリ( DCF77Transmitter.tapp )をアップロードします。
![a4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/9690186c-de97-d0bb-1a97-ca689732dafb.png)

一旦、リブートします

起動後は、Off状態になっているため、M5Stampのボタンを押すとOnになってLEDが点灯します。少し待ってコンソールログに以下のような"DCF:"ログが出れば成功です
```
21:33:17.411 TAP: Loaded Tasmota App 'DCF77Transmitter.tapp'
        :
21:33:33.004 DCF: Out of sync
21:34:00.016 DCF: Tue 26.11.24 21:35 CET: 0-00000000000000-000101-10101100-1000010-011001-010-10001-001001000

```
続いて、configuration->configure matter
Matter enableにチェックを入れてから「Save」します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/ea8645ed-c757-255c-b00c-4a8003fc44e7.png)
自動リブートしたら、configuration->configure matter
Add to Configurationで(Type = Relay, Parameter = 1)のエンドポイント追加
![a6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/0c5d497c-6d45-3935-0f48-03eacadaf607.png)
Matterデバイスとして参加できるようにするために Commissioning openにチェックを入れて「Save」します
![a5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/b504068b-2e2a-5502-c033-c63f5a6c19b2.png)

コンソールログには以下のような"MTR:"ログが出ます
```
00:00:06.011 MTR: +Add_Event (CRIT     15001) [00]0028/00 (StartUp) - 14.3.0.0
00:00:06.016 MTR: +Add_Event (CRIT     15002) [00]0033/03 (BootReason) - 1U
00:00:06.018 MTR: Configuring endpoints
00:00:06.019 MTR:   endpoint =     0 type:root
00:00:06.031 MTR:   endpoint =     1 type:aggregator
00:00:06.035 MTR:   endpoint =     2 type:light3
00:00:06.039 MTR:   endpoint =     3 type:relay relay:1
00:00:06.041 RSL: RESULT = {"Matter":{"Initialized":1}}
00:00:06.043 MTR: Starting UDP server on port: 5540
```

## HomeKitへの参加
Commissioning openの状態で Manual pairing codeが表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/4410c35a-1b78-e2db-08ff-dbb91958a4d1.png)

以降、iPhoneのHomeアプリでデバイス追加していきます
![IMG_7954.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/277344f9-858d-2adb-3169-03120dd4da4c.jpeg)
アクセサリを追加->その他のオプション->番号入力します
![IMG_7955 - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/bba70788-8bb4-799e-d3c4-b0c5e30da659.jpeg)

「認定されていない」旨の警告が出ますが、このまま追加してどんどん進めます。
ブリッジ１個と、照明１個、コンセント１個が認識されればOKです。
コンセントにはそれらしい名前「DCF Transmitter」を付けます。
![IMG_7959 - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/5d6f4003-4648-25e2-cd90-771b9623dc20.jpeg)
「DCF Transmitter」がMatterデバイスとしてHomeKitに登録され、iPhoneからOn/Offできるようになります。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/e93996c7-eb3b-1116-4b6d-d558017cb824.png)

## 動作確認、電波時計の時刻を合わせる
起動時はOff状態になっていて、iPhone画面とM5Stampのボタンによる「On」／「Off」が連動し、On状態の時には電波を送信します（LEDも点灯）

動作確認は、まずM5Stampの時刻を変更(Consoleのコマンド「 timezone  +9:05 」で5分進めるなど)しておいてOnにして送信開始。電波時計はRECボタンを長押しして強制受信モードにすると0時の位置まで針が移動 -> 5～10分程度して受信した時刻情報が揃って、時計の針が動き始めてM5Stampと同じ時刻で停止すればOK。
4m程度の距離で試してみましたが問題なく、離れたところに常設できそうです。
![IMG_7946.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/591713e0-4035-0103-994e-69b138bae70a.jpeg)

## 補足
実は、Tasmota単体でもOn/Offスケジュール設定する機能あります
configuration->configure timer
![IMG_7949 - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/d771a098-eaf9-7ae1-11f4-0c6687a3c28c.jpeg)

さくさくMatterデバイスが作れるTasmotaおすすめ
【Tasmota】 = https://tasmota.github.io/docs/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6824/f5716212-3c96-c3d7-d841-46d04114f0b9.png)