<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>電子工作 | Tomokatsu Yukishita | yre.jp</title><link>https://yre.jp/tag/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/</link><atom:link href="https://yre.jp/tag/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/index.xml" rel="self" type="application/rss+xml"/><description>電子工作</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>ja-JP</language><lastBuildDate>Tue, 19 Jul 2022 00:00:00 +0000</lastBuildDate><image><url>https://yre.jp/media/icon_hufbc159bd6ce6a866189b19a79c0d0f51_12846_512x512_fill_lanczos_center_3.png</url><title>電子工作</title><link>https://yre.jp/tag/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/</link></image><item><title>Raspberry Pi 3 + 公式7インチタッチスクリーンで照度センサー対応フォトフレームを自作する【BH1750FVI + I2C + Python】</title><link>https://yre.jp/post/raspi-photoframe-with-sensor/</link><pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate><guid>https://yre.jp/post/raspi-photoframe-with-sensor/</guid><description>&lt;p>以前 Raspberry Pi 4 でクラウド対応フォトフレームを作りましたが、今回は余っていた Raspberry Pi 3 と公式7インチタッチスクリーンで別バージョンを構築しました。さらに照度センサーを追加して、部屋の明るさに応じてディスプレイ輝度が自動調整される機能を実装しています。&lt;/p>
&lt;h2 id="用意するもの">用意するもの&lt;/h2>
&lt;h3 id="raspberry-pi-3">Raspberry Pi 3&lt;/h3>
&lt;a href="https://amzn.to/41YIaTH" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/71wjyr2fsJL._AC_SL1200_.jpg" alt="Raspberry Pi 3 Model B シングルボードコンピュータ">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">Raspberry Pi 3 Model B シングルボードコンピュータ&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;h3 id="raspberry-pi-公式7インチタッチスクリーン">Raspberry Pi 公式7インチタッチスクリーン&lt;/h3>
&lt;p>800×480px・24ビットRGBカラー・60fps対応。最大10点のマルチタッチに対応しています。&lt;/p>
&lt;a href="https://amzn.to/3OGtllv" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/6188oB1j-OL._AC_SL1024_.jpg" alt="Raspberry Pi 公式 7インチ タッチスクリーン LCD">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">Raspberry Pi 公式 7インチ タッチスクリーン LCD&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;h3 id="公式タッチスクリーン用ケース">公式タッチスクリーン用ケース&lt;/h3>
&lt;p>Raspberry Pi 3 Model B と7インチディスプレイを一体で収納できるケースです。&lt;/p>
&lt;a href="https://amzn.to/3Q6iH89" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/41PUW&amp;#43;GgD0L._AC_.jpg" alt="Raspberry Pi &amp;amp; 7インチ LCDタッチスクリーン 拡張ボードケース ABS樹脂（黒）">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">Raspberry Pi &amp;amp; 7インチ LCDタッチスクリーン 拡張ボードケース ABS樹脂（黒）&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;h2 id="ディスプレイの接続">ディスプレイの接続&lt;/h2>
&lt;p>&lt;a href="https://www.raspberrypi.com/documentation/accessories/display.html" target="_blank" rel="noopener">Raspberry Pi Touch Display 公式ドキュメント&lt;/a> を参考にリボンケーブルと電源を接続します。&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
Raspberry Pi を背面ディスプレイに取り付ける場合、リボンケーブルの向きに注意してください。電源ケーブル（赤/黒）は、赤を5Vピン・黒をGNDピンに接続します。
&lt;/div>
&lt;/div>
&lt;h2 id="公式ディスプレイの画面回転設定">公式ディスプレイの画面回転設定&lt;/h2>
&lt;p>デフォルト状態では表示が180度回転しているため、設定ファイルで反転します。&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
&lt;p>以下の &lt;code>lcd_rotate=2&lt;/code> は &lt;strong>Raspberry Pi OS Bullseye 以前（レガシー/FKMSモード）向け&lt;/strong>の設定です。Bookworm（2023年以降）では &lt;code>lcd_rotate&lt;/code> は公式には非推奨で、画面回転には「Screen Configuration」GUIツールの使用が案内されています。&lt;/p>
&lt;p>また、config.txt のパスも OS バージョンによって異なります。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bullseye 以前&lt;/strong>：&lt;code>/boot/config.txt&lt;/code>&lt;/li>
&lt;li>&lt;strong>Bookworm 以降&lt;/strong>：&lt;code>/boot/firmware/config.txt&lt;/code>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;p>&lt;strong>Bullseye 以前（レガシー/FKMSモード）の場合：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">sudo vi /boot/config.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以下を追記します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">lcd_rotate=2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="スライドショー用プログラム">スライドショー用プログラム&lt;/h2>
&lt;p>スライドショー制御には、別記事で紹介している自作Pythonスクリプト（&lt;a href="https://github.com/yukishita/photoView4" target="_blank" rel="noopener">photoView4&lt;/a>）を流用しています。&lt;/p>
&lt;h2 id="ディスプレイの輝度調整">ディスプレイの輝度調整&lt;/h2>
&lt;p>フォトフレームとして常時表示していると、夜間など暗い環境では画面が眩しく感じます。公式7インチディスプレイは、以下のコマンドでバックライト輝度を変更できます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;100&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> sudo tee /sys/class/backlight/rpi_backlight/brightness
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>/sys/class/backlight/rpi_backlight/brightness&lt;/code> に0〜255の値を書き込むことで輝度を制御できます。&lt;/p>
&lt;h2 id="照度センサーbh1750fviの追加">照度センサー（BH1750FVI）の追加&lt;/h2>
&lt;p>輝度を手動設定するだけでなく、部屋の明るさに応じて自動で輝度を変えたいと考え、照度センサーを追加しました。&lt;/p>
&lt;h3 id="使用パーツ">使用パーツ&lt;/h3>
&lt;a href="https://amzn.to/4cwypRc" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/615BETFGkDL._AC_SY450_.jpg" alt="BH1750FVI 周囲光トランスデューサ I2C 出力 エレクトロニクス向けの連続および単一測定アプローチ 環境光観測コンポーネント">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">BH1750FVI 周囲光トランスデューサ I2C 出力 エレクトロニクス向けの連続および単一測定アプローチ 環境光観測コンポーネント&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;a href="https://amzn.to/4cfGrPF" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/81yjq1pkiGL._SL1500_.jpg" alt="ELEGOO 120本 デュポンワイヤー ジャンパーワイヤー オス-メス/オス-オス/メス-メス セット">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">ELEGOO 120本 デュポンワイヤー ジャンパーワイヤー オス-メス/オス-オス/メス-メス セット&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;h2 id="raspberry-pi-と-i2c-接続">Raspberry Pi と I2C 接続&lt;/h2>
&lt;p>BH1750FVI は I2C プロトコルで通信します。&lt;a href="https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header" target="_blank" rel="noopener">Raspberry Pi GPIO ピン配置&lt;/a> を参照して接続します。&lt;/p>
&lt;p>
&lt;figure id="figure-raspberry-pi-gpioピン配置図出典raspberry-pi公式ドキュメント">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Raspberry Piの40ピンGPIOヘッダーのピン配置図。SDA（GPIO2, Pin3）とSCL（GPIO3, Pin5）のI2Cピン位置を示している" srcset="
/media/raspi-photoframe-with-sensor/GPIO-Pinout-Diagram-2_hua49859c3abb8d59effc7f48992911ff2_206936_43d9d80c817fbd45d29cc36e3b5ca73e.webp 400w,
/media/raspi-photoframe-with-sensor/GPIO-Pinout-Diagram-2_hua49859c3abb8d59effc7f48992911ff2_206936_d6d457c064379b94134319d1e0002c6f.webp 760w,
/media/raspi-photoframe-with-sensor/GPIO-Pinout-Diagram-2_hua49859c3abb8d59effc7f48992911ff2_206936_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://yre.jp/media/raspi-photoframe-with-sensor/GPIO-Pinout-Diagram-2_hua49859c3abb8d59effc7f48992911ff2_206936_43d9d80c817fbd45d29cc36e3b5ca73e.webp"
width="760"
height="436"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Raspberry Pi GPIOピン配置図（出典：Raspberry Pi公式ドキュメント）
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h3 id="接続対応表">接続対応表&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Raspberry Pi&lt;/th>
&lt;th>GPIOピン番号&lt;/th>
&lt;th>BH1750FVI&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GPIO2 (SDA)&lt;/td>
&lt;td>3&lt;/td>
&lt;td>SDA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPIO3 (SCL)&lt;/td>
&lt;td>5&lt;/td>
&lt;td>SCL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5V Power&lt;/td>
&lt;td>2&lt;/td>
&lt;td>VCC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ground&lt;/td>
&lt;td>14&lt;/td>
&lt;td>ADO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ground&lt;/td>
&lt;td>20&lt;/td>
&lt;td>GND&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>
&lt;figure id="figure-bh1750fvi-をi2cで接続した配線の様子">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GY-30 BH1750FVI照度センサーをRaspberry Pi 3にジャンパーワイヤーでI2C接続した実際の配線写真" srcset="
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1410_hu98206837892c374cd2028613e5b10c88_691631_c96c52f9123cb52726bbc85d7347db81.webp 400w,
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1410_hu98206837892c374cd2028613e5b10c88_691631_7b5ac30237dcef389547e52e6e3b9297.webp 760w,
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1410_hu98206837892c374cd2028613e5b10c88_691631_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://yre.jp/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1410_hu98206837892c374cd2028613e5b10c88_691631_c96c52f9123cb52726bbc85d7347db81.webp"
width="760"
height="507"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
BH1750FVI をI2Cで接続した配線の様子
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="照度センサーの動作確認python">照度センサーの動作確認（Python）&lt;/h2>
&lt;p>接続後、Python で照度データを取得できるか確認します。&lt;a href="https://github.com/kujiraitakahiro/RaspberryPi/blob/master/bh1750fvi.py" target="_blank" rel="noopener">参考コード（GitHub）&lt;/a> を参考に実装しました。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="ch">#!/usr/bin/python3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">smbus&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Bus&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">smbus&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">SMBus&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Addr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mh">0x23&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">LxRead&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Bus&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_i2c_block_data&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Addr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mh">0x11&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;照度: &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">LxRead&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34; ルクス&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">LxRead2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Bus&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_i2c_block_data&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">Addr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mh">0x10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;輝度: &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">LxRead2&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">256&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">LxRead2&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>実行すると照度が取得できます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">root@raspi3-photo:~# python br.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">照度: 1650 ルクス
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">輝度: 990.8333333333334
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="輝度自動調整プログラムの実装">輝度自動調整プログラムの実装&lt;/h2>
&lt;p>取得した照度に応じてバックライト輝度を滑らかに変化させるため、10ms周期で動作するPythonプログラムを作成しました。&lt;/p>
&lt;p>仕組みは以下のとおりです：&lt;/p>
&lt;ul>
&lt;li>照度レベルごとにターゲット輝度を定義&lt;/li>
&lt;li>取得した照度に応じてディスプレイ輝度を1ステップずつインクリメント/デクリメント&lt;/li>
&lt;li>SMBus（I2C）通信は取得間隔を300ms以上空けないと正常な値が取れないため、300ms周期でポーリング&lt;/li>
&lt;/ul>
&lt;h2 id="照度センサーの設置">照度センサーの設置&lt;/h2>
&lt;p>センサーは前面から光が当たる背面の出っぱった部分に設置しました。&lt;/p>
&lt;p>
&lt;figure id="figure-照度センサーをケース背面に設置した様子">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GY-30 BH1750FVI照度センサーをRaspberry Pi 3公式タッチスクリーンケースの背面出っぱりに設置した実際の写真" srcset="
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1407_hu98206837892c374cd2028613e5b10c88_594389_c8e1166602273b79f64bef721cf2db83.webp 400w,
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1407_hu98206837892c374cd2028613e5b10c88_594389_62c0ff78d1802062e2b677dae092cc5d.webp 760w,
/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1407_hu98206837892c374cd2028613e5b10c88_594389_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://yre.jp/media/raspi-photoframe-with-sensor/ILCE-7M4-_DSC1407_hu98206837892c374cd2028613e5b10c88_594389_c8e1166602273b79f64bef721cf2db83.webp"
width="760"
height="507"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
照度センサーをケース背面に設置した様子
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="ソースコード">ソースコード&lt;/h2>
&lt;p>作成したプログラムはGitHubで公開しています。&lt;/p>
&lt;p>&lt;a href="https://github.com/yukishita/lcdBrightness2" target="_blank" rel="noopener">GitHub - yukishita/lcdBrightness2：BH1750FVI 照度センサーで Raspberry Pi 公式ディスプレイ輝度を自動調整するプログラム&lt;/a>&lt;/p>
&lt;h2 id="デモ動画">デモ動画&lt;/h2>
&lt;p>照度に応じてディスプレイ輝度が滑らかに変化する様子です。&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/R6XGl3KGRYA?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;h2 id="まとめ">まとめ&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>構成要素&lt;/th>
&lt;th>役割&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Raspberry Pi 3&lt;/td>
&lt;td>メインコンピューター&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>公式7インチタッチスクリーン&lt;/td>
&lt;td>フォトフレーム表示（800×480px）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GY-30 BH1750FVI&lt;/td>
&lt;td>I2C接続の照度センサー&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python（smbus）&lt;/td>
&lt;td>I2C通信・輝度自動調整制御&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>照度センサーを追加することで、昼は明るく・夜は暗くと自動で輝度が変わり、実用的なフォトフレームになりました。Raspberry Pi Zero 2 W でも同様の構成で動作すると思われます。&lt;/p></description></item><item><title>電波時計が受信できない部屋でM5StickC / ATOM LiteとJJYシミュレータを使って時刻合わせを自動化した</title><link>https://yre.jp/post/jjy/</link><pubDate>Thu, 12 May 2022 00:00:00 +0000</pubDate><guid>https://yre.jp/post/jjy/</guid><description>&lt;p>引越しを機に電波時計が電波を受信しなくなった問題を、M5StickC / ATOM LiteとJJYアンテナ基板を使ったJJYシミュレータで解決した記録です。&lt;/p>
&lt;h2 id="問題引越し後に電波時計の時刻が狂い始めた">問題：引越し後に電波時計の時刻が狂い始めた&lt;/h2>
&lt;p>電波時計は電波で自動的に時刻を合わせてくれるため、手動調整が不要で便利です。ところが引越し後、自宅では電波を受信しなくなり、時刻が少しずつ狂うようになってしまいました。&lt;/p>
&lt;p>窓際に持っていけば受信できるものの、時刻合わせのたびに窓際まで運ぶのは手間です。何か恒久的な解決策を探すことにしました。&lt;/p>
&lt;h2 id="市販の電波送信機は高価">市販の電波送信機は高価&lt;/h2>
&lt;p>調べると「電波時計用送信機」という製品が存在します。NTPサーバーやGPSから正確な時刻を取得し、室内にJJY信号（日本の標準電波）を再送信するものです。&lt;/p>
&lt;a href="https://amzn.to/3OviZVw" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/51dhtr4Mv6L._AC_SL1000_.jpg" alt="共立電子産業 AC同期式時刻送信機 P18-NTPAC">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">共立電子産業 AC同期式時刻送信機 P18-NTPAC&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;a href="https://amzn.to/4sHgo93" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/515VVAwTGWL._AC_SL1000_.jpg" alt="ケイシーズ GPS式電波時計用リピータKEISEEDS P18-NTPGR">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">ケイシーズ GPS式電波時計用リピータKEISEEDS P18-NTPGR&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;a href="https://amzn.to/4tcEJod" target="_blank" rel="noopener nofollow sponsored" class="amazon-card">
&lt;div class="amazon-card-image">
&lt;img src="https://m.media-amazon.com/images/I/71BT1PnUJIL._AC_SL1500_.jpg" alt="電波時計信号送信機能付き時計(白) P18-NTPLR">
&lt;/div>
&lt;div class="amazon-card-info">
&lt;div class="amazon-card-title">電波時計信号送信機能付き時計(白) P18-NTPLR&lt;/div>
&lt;div class="amazon-card-meta">
&lt;span class="amazon-btn">Amazonで見る&lt;/span>
&lt;/div>
&lt;/div>
&lt;/a>
&lt;p>機能的には理想的ですが、どれも1〜3万円前後とそれなりの値段です。「電波時計1台のためにそこまで出すのは…」と躊躇していました。&lt;/p>
&lt;h2 id="解決策m5stickc--jjyアンテナ基板で自作する">解決策：M5StickC + JJYアンテナ基板で自作する&lt;/h2>
&lt;p>「安く自作できないか」と思い、&lt;a href="https://www.switch-science.com/" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>で探したところ、まさにそのものズバリな製品を見つけました。&lt;/p>
&lt;h3 id="jjy-とは">JJY とは&lt;/h3>
&lt;p>JJYとは、情報通信研究機構（NICT）が送信している日本の標準電波の呼出符号です。40kHz（福島局）と60kHz（佐賀局）の2波で日本全国をカバーしており、電波時計はこの信号から正確な時刻を受け取っています。&lt;/p>
&lt;p>今回使うのは、この&lt;strong>JJY信号を模擬して室内に送信する&lt;/strong>ボード（シミュレータ）です。&lt;/p>
&lt;h3 id="必要な部品">必要な部品&lt;/h3>
&lt;p>&lt;strong>JJYアンテナ基板&lt;/strong>（M5StickCまたはATOM用）とM5本体を組み合わせて使います。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>製品&lt;/th>
&lt;th>リンク&lt;/th>
&lt;th>備考&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>M5StickC用JJYアンテナ基板&lt;/td>
&lt;td>&lt;a href="https://www.switch-science.com/products/6527" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>&lt;/td>
&lt;td>M5StickC専用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>M5Atom用JJYアンテナ基板&lt;/td>
&lt;td>&lt;a href="https://www.switch-science.com/products/6746" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>&lt;/td>
&lt;td>ATOM Lite/Matrix用&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>M5StickC&lt;/td>
&lt;td>&lt;a href="https://www.switch-science.com/products/5517" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>&lt;/td>
&lt;td>&lt;strong>現在販売終了&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ATOM Lite&lt;/td>
&lt;td>&lt;a href="https://www.switch-science.com/products/6262" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>&lt;/td>
&lt;td>現在も入手可能・推奨&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ATOM Matrix&lt;/td>
&lt;td>&lt;a href="https://www.switch-science.com/products/6260" target="_blank" rel="noopener">スイッチサイエンス&lt;/a>&lt;/td>
&lt;td>現在も入手可能&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="alert alert-note">
&lt;div>
M5StickCは現在販売終了しています。新たに購入する場合は &lt;strong>ATOM Lite&lt;/strong> と &lt;strong>M5Atom用JJYアンテナ基板&lt;/strong> の組み合わせがおすすめです。
&lt;/div>
&lt;/div>
&lt;p>筆者が購入した時点では基板とM5本体を合わせても5,000円以内でした（価格は変動するため、購入時にご確認ください）。市販の専用送信機と比べると大幅に安価です。&lt;/p>
&lt;h2 id="セットアップ手順">セットアップ手順&lt;/h2>
&lt;p>スイッチサイエンスの製品ページに掲載されているGitHubリポジトリの手順に沿ってセットアップします。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/botanicfields/BF-018A" target="_blank" rel="noopener">プロダクトページ（GitHub: BF-018A）&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/botanicfields/BF-018A/blob/main/BF-018A/BF-018A.ino" target="_blank" rel="noopener">JJYシミュレータ・プログラム（.ino）&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qiita.com/BotanicFields/items/a78c80f947388caf0d36" target="_blank" rel="noopener">解説記事：標準電波 JJY もどきを M5StickC / M5Atom の Ticker で生成する（Qiita）&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>手順通りにプログラムを書き込むだけで、特にハマりどころなく完了しました。&lt;/p>
&lt;h2 id="動作確認">動作確認&lt;/h2>
&lt;p>プログラムを書き込んだM5StickCをJJYアンテナ基板に接続し、電波時計のそばで動かします。&lt;/p>
&lt;p>
&lt;figure id="figure-電波時計のすぐ横に置いて受信させる">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="M5StickCとJJYアンテナ基板を電波時計の横に置いた様子" srcset="
/media/jjy/ILCE-7M4-_DSC9136_hu98206837892c374cd2028613e5b10c88_58536_43bc2ce870154c5227402d96206f8f51.webp 400w,
/media/jjy/ILCE-7M4-_DSC9136_hu98206837892c374cd2028613e5b10c88_58536_abb0fd5f0bb8778fd9f895a7e7278219.webp 760w,
/media/jjy/ILCE-7M4-_DSC9136_hu98206837892c374cd2028613e5b10c88_58536_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://yre.jp/media/jjy/ILCE-7M4-_DSC9136_hu98206837892c374cd2028613e5b10c88_58536_43bc2ce870154c5227402d96206f8f51.webp"
width="760"
height="506"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
電波時計のすぐ横に置いて受信させる
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>電波の到達距離は短く、**時計のすぐ隣（数cm〜数十cm程度）**でないと受信しません。ただし電波時計は一度時刻合わせが完了すれば、次の合わせまでしばらくは正確な時刻を保持するため、実用上は問題ありませんでした。&lt;/p>
&lt;h2 id="課題">課題&lt;/h2>
&lt;p>一点だけ気になった点として、&lt;strong>電子レンジのそばで使用するとWiFi接続が切れ、再接続しない&lt;/strong>ことがありました。その場合は手動で再起動が必要です。電子レンジと離れた場所に設置するか、定期リセットを組み込む改良が考えられます。&lt;/p>
&lt;h2 id="まとめ">まとめ&lt;/h2>
&lt;p>市販の電波送信機を買わずとも、M5StickC / ATOM LiteとJJYアンテナ基板の組み合わせで、数千円台で電波時計の自動時刻合わせ問題を解決できました。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>コスト&lt;/strong>：数千円台（筆者購入時は5,000円以内、市販送信機の1/3〜1/6程度）&lt;/li>
&lt;li>&lt;strong>難易度&lt;/strong>：GitHubのコードを書き込むだけ、はんだ付け不要&lt;/li>
&lt;li>&lt;strong>注意点&lt;/strong>：電波の到達距離が短いため、時計のすぐ隣に設置が必要&lt;/li>
&lt;/ul>
&lt;p>電波が届かない部屋で電波時計を使いたい方の参考になれば幸いです。&lt;/p></description></item></channel></rss>