Raspberry Pi Zero WでFMジャングルを自動再生するインターネットラジオを作る
Raspberry Pi Zero W v1.1を使って、電源を入れると自動でインターネットラジオ「FMジャングル」を再生する小型ラジオを作ったときの設定メモです。
音声出力にはUSB-DACを使用します。 今回は、Windowsでは「AB13X」と表示されるUSB Type-C → 3.5mmステレオ出力アダプタを、Raspberry Pi Zero WのmicroUSB OTG経由で接続しました。
構成
- Raspberry Pi Zero W v1.1
- Raspberry Pi OS Lite 32-bit
- Wi-Fi接続
- USB-DAC
- mpvでHLSストリームを再生
- systemdで起動時に自動再生
1. 必要なパッケージを入れる
sudo apt update sudo apt install -y mpv alsa-utils curl
2. USB-DACを確認する
USB-DACを接続して、認識されているか確認します。
lsusb aplay -l cat /proc/asound/cards
例:
card 1: Audio [AB13X USB Audio], device 0: USB Audio [USB Audio]
この場合、USB-DACは card 1, device 0 です。
3. USB-DACから音が出るか確認する
speaker-test -D plughw:1,0 -c 2 -t sine
音が出ればOKです。
止めるときは Ctrl + C です。
4. mpvの音声出力先を設定する
毎回USB-DACを指定しなくてよいように、mpvの設定ファイルを作ります。
mkdir -p ~/.config/mpv nano ~/.config/mpv/mpv.conf
内容:
no-video=yes ao=alsa audio-device=alsa/plughw:Audio,0 volume=80
環境によって Audio で指定できない場合は、次のようにカード番号で指定します。
no-video=yes ao=alsa audio-device=alsa/plughw:1,0 volume=80
5. 再生テスト
まずNHK FMなどで再生確認します。
mpv --no-video "https://simul.drdi.st.nhk/live/5/joined/master.m3u8"
次に、FMジャングルを再生します。
mpv --no-video \ --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \ --referrer="https://listenradio.jp/" \ --http-header-fields="Origin: https://listenradio.jp" \ "https://mtist.as.smartstream.ne.jp/30013/livestream/playlist.m3u8"
これでFMジャングルが再生できれば成功です。
6. 自動再生スクリプトを作る
例ではユーザー名を piuser としています。
実際のユーザー名に置き換えてください。
mkdir -p /home/piuser/bin nano /home/piuser/bin/play_fmjungle.sh
内容:
#!/bin/bash URL="https://mtist.as.smartstream.ne.jp/30013/livestream/playlist.m3u8" exec /usr/bin/mpv --no-video \ --demuxer-lavf-o=http_persistent=0,reconnect=1,reconnect_streamed=1,reconnect_delay_max=10 \ --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \ --referrer="https://listenradio.jp/" \ --http-header-fields="Origin: https://listenradio.jp" \ "$URL"
実行権限を付けます。
chmod +x /home/piuser/bin/play_fmjungle.sh
手動で確認します。
/home/piuser/bin/play_fmjungle.sh
7. systemdで起動時に自動再生する
サービスファイルを作ります。
sudo nano /etc/systemd/system/fmjungle.service
内容:
[Unit] Description=FM Jungle Internet Radio Player After=network-online.target sound.target Wants=network-online.target [Service] Type=simple User=piuser ExecStart=/home/piuser/bin/play_fmjungle.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
有効化して起動します。
sudo systemctl daemon-reload sudo systemctl enable fmjungle.service sudo systemctl start fmjungle.service
状態確認:
systemctl status fmjungle.service
ログ確認:
journalctl -u fmjungle.service -f
再起動して、自動再生されるか確認します。
sudo reboot
8. Wi-Fiを複数登録する
自宅と会社など、複数のWi-Fiを登録しておくと、現在見えているSSIDに自動接続できます。
現在の接続確認:
nmcli connection show --active nmcli device status
Wi-Fi一覧:
nmcli device wifi list
自宅Wi-Fiを登録する例:
sudo nmcli connection add type wifi ifname wlan0 con-name home-wifi ssid "自宅SSID" sudo nmcli connection modify home-wifi wifi-sec.key-mgmt wpa-psk sudo nmcli connection modify home-wifi wifi-sec.psk "自宅パスワード" sudo nmcli connection modify home-wifi connection.autoconnect yes sudo nmcli connection modify home-wifi connection.autoconnect-priority 10
会社Wi-Fiを登録する例:
sudo nmcli connection add type wifi ifname wlan0 con-name office-wifi ssid "会社SSID" sudo nmcli connection modify office-wifi wifi-sec.key-mgmt wpa-psk sudo nmcli connection modify office-wifi wifi-sec.psk "会社パスワード" sudo nmcli connection modify office-wifi connection.autoconnect yes sudo nmcli connection modify office-wifi connection.autoconnect-priority 20
優先度は数字が大きい方が優先されます。
上記例では、両方見えている場合は office-wifi が優先されます。
手動で切り替える場合:
sudo nmcli connection up home-wifi sudo nmcli connection up office-wifi
現在接続しているSSIDを確認:
nmcli -t -f ACTIVE,SSID dev wifi | grep '^yes'
IPアドレス確認:
hostname -I
9. DHCPになっているか確認する
現在有効な接続名を確認します。
nmcli connection show --active
例:
NAME TYPE DEVICE office-wifi wifi wlan0
DHCPか確認します。
nmcli connection show office-wifi | grep ipv4.method
DHCPなら次のように表示されます。
ipv4.method: auto
ルーティングでも確認できます。
ip route
次のように proto dhcp が出ていればDHCPで取得しています。
default via 192.168.0.1 dev wlan0 proto dhcp
10. SSHで状態確認する
SSHでログイン後、次のコマンドで状態を確認できます。
Wi-Fi接続状況:
nmcli device status nmcli -t -f ACTIVE,SSID dev wifi | grep '^yes' iw dev wlan0 link
インターネット接続確認:
ping -c 3 8.8.8.8 ping -c 3 google.com
FMジャングルサービスの状態:
systemctl status fmjungle.service
mpvが動いているか確認:
pgrep -a mpv
ログ確認:
journalctl -u fmjungle.service -n 50
リアルタイムでログを見る場合:
journalctl -u fmjungle.service -f
再生を再起動する場合:
sudo systemctl restart fmjungle.service
11. まとめ確認スクリプト
毎回複数のコマンドを打つのが面倒なので、簡易チェック用スクリプトを作ります。
nano /home/piuser/bin/radio_status.sh
内容:
#!/bin/bash echo "===== Host =====" hostname hostname -I echo echo "===== Wi-Fi =====" nmcli -t -f ACTIVE,SSID dev wifi | grep '^yes' || echo "No active Wi-Fi" iw dev wlan0 link echo echo "===== Internet =====" ping -c 1 -W 2 8.8.8.8 >/dev/null && echo "Internet: OK" || echo "Internet: NG" echo echo "===== FM Jungle Service =====" systemctl is-active fmjungle.service systemctl is-enabled fmjungle.service echo echo "===== mpv Process =====" pgrep -a mpv || echo "mpv is not running" echo echo "===== Audio Devices =====" aplay -l echo echo "===== Recent Logs =====" journalctl -u fmjungle.service -n 15 --no-pager
実行権限:
chmod +x /home/piuser/bin/radio_status.sh
実行:
/home/piuser/bin/radio_status.sh
12. トラブル時の確認ポイント
音が出ない
USB-DACが見えているか確認します。
aplay -l cat /proc/asound/cards
mpvの設定も確認します。
cat ~/.config/mpv/mpv.conf
Wi-Fiにつながらない
nmcli device status nmcli connection show nmcli device wifi list
2.4GHzのSSIDを使っているか確認します。 Raspberry Pi Zero Wは5GHz Wi-Fiには対応していません。
FMジャングルが鳴らない
配信URLにアクセスできるか確認します。
curl -L -I \ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \ -H "Referer: https://listenradio.jp/" \ -H "Origin: https://listenradio.jp" \ "https://mtist.as.smartstream.ne.jp/30013/livestream/playlist.m3u8"
200 OK が返れば、配信サーバーには到達できています。
サービスを再起動します。
sudo systemctl restart fmjungle.service
13. 補足:安全シャットダウンボタン
電源をいきなり抜くとSDカード破損の可能性があるため、安全シャットダウンボタンを付けるのもよいです。
GPIO3、つまり物理ピン5と、GNDの物理ピン6に押しボタンを接続します。
GPIO3 / 物理ピン5 ---- ボタン ---- GND / 物理ピン6
設定ファイルを開きます。
sudo nano /boot/firmware/config.txt
環境によっては次の場合もあります。
sudo nano /boot/config.txt
最後に追加します。
dtoverlay=gpio-shutdown
再起動します。
sudo reboot
これでボタンを押すと安全にシャットダウンできます。
まとめ
Raspberry Pi Zero Wでも、ブラウザを使わず mpv で直接HLSストリームを再生できれば、軽量なインターネットラジオ端末として十分使えます。
今回のポイントは次の3つです。
- USB-DACをALSAで認識させ、mpvの出力先に設定する
- FMジャングルのURLにUser-Agent、Referer、Originを付けて再生する
- systemdで起動時に自動再生する
これで、電源を入れるだけでFMジャングルが鳴るRaspberry Piラジオになります。
Edge でPDFがうまく表示されない時の対応
Edge上でPDFが表示されなかったり、枠だけしか表示されなかったりする。
確認した環境 Windows10、Edge Version 136.0.3240.76
対応方法:
1)アドレスバーに「 edge://flags/ 」と入力。
2)フラグの検索で「PDF」を検索。
3)
・ New PDF Viewer を [ Disabled ] に
・ OOPIF for PDF Viewer Extension を [ Enabled ] にして、画面一番下の「再起動」からブラウザの再起動する。
これでOKだった。
試験段階の機能を使っているので、Edgeのバージョンアップ等に伴い、不具合が出る可能性がある。
以下、はっきりしていない情報。
2024年11月ごろのバージョンアップで、Edge内部のPDFのライブラリ(?)が、Adobe Reader(Acrobat?)に変わったことにより、PDF表示にトラブルが発生する様になった模様。
New PDF Viewer が ディフォルトでは、Adobeのビューアーが起動しているようだが、環境によってPDFがうまく表示されないことがあった。
AdodeってPDFの規格を決めてるんじゃないの・・・?
複数のキーボードを接続し、キーボード毎に別のカスタマイズ。ソフト5選
複数のキーボードを接続し、それぞれに異なる設定や機能を割り当てたい場合、AutoHotKeyのような標準ツールだけでは限界があります。そこで、HID MacrosやGaming Keyboard Splitterのような代替ソフトが役立ちます。この記事では、これらのソフトの代替として使える5つのツールを紹介します。それぞれの特徴や選び方のポイントも解説するので、あなたのニーズに合ったものを探してみてください。
1. AutoHotKey (AHK)
- 概要: 無料のオープンソースツールで、キーボードやマウスの動作をカスタマイズできます。
- こんな人におすすめ: プログラミングに抵抗がなく、柔軟性を重視する人。
2. LuaMacros
- 概要: HID Macrosの後継とも言えるツールで、複数キーボードの個別識別が得意です。
- こんな人におすすめ: HID Macrosの代替を探している人や、細かい設定をしたい上級者。
- HID Macrosとの違い: より強化されたデバイス識別機能。
3. Keyboard Splitter
- 概要: 複数のキーボード入力を仮想的なXbox 360コントローラーに変換するツール。
- 特徴:
- 最大4つの仮想コントローラーを生成し、各キーボードを独立して割り当て。
- ゲーム用途に特化しており、設定がシンプル。
- マクロ機能はなく、入力のリマッピングが主目的。
- こんな人におすすめ: ゲームで複数キーボードを使いたい人。
- HID Macrosとの違い: マクロ作成はできないが、ゲーム向けに最適化。
4. AntiMicroX
- こんな人におすすめ: シンプルな操作性を求める人や、マルチプラットフォームで使いたい人。
- HID Macrosとの違い: デバイス識別は弱いが、マクロ機能は充実。
5. Interception Driver + 専用スクリプト
- 概要: 低レベルの入力制御を可能にするドライバで、スクリプトと組み合わせると強力。
- 特徴:
- キーボードごとのデバイスIDを捕捉し、カスタム設定を実現。
- AutoHotKeyやPythonと連携可能。
- 設定が複雑で、上級者向け。
- こんな人におすすめ: 究極の柔軟性を求める人や、カスタマイズを楽しみたい人。
- HID Macrosとの違い: GUIなし、完全なカスタム実装が必要。
選び方のポイント
- 簡単さを重視するなら: Keyboard SplitterやAntiMicroXが直感的で初心者向け。
- 複数キーボードの識別が目的なら: LuaMacrosやInterception Driverが最適。
- マクロの自由度を求めるなら: AutoHotKeyが無限の可能性を提供。
- ゲーム特化なら: Keyboard Splitterがコントローラーエミュレーションで便利。
まとめ
HID Macrosの代替としてはLuaMacrosが最も近く、複数キーボードの識別とマクロ設定に優れています。ゲーム用途ならKeyboard Splitterが使いやすく、カスタマイズ派にはAutoHotKeyやInterception Driverがおすすめです。
具体的な用途や環境に合わせて選べば、複数のキーボードを効率的に活用できます。ぜひ試してみてください!
Grok3にて作成
VolumioのWEBラジオをPCから一発選局する
Voluimio にWEBラジオがあるが、よく聞くチャンネルを一発で選曲する方法
前提 として、Volumioが正常に稼働していること
Windowsショートカットやバッチファイルから
curl -X POST "http://192.168.1.100/api/v1/replaceAndPlay" -H "Content-Type: application/json" -d "{\"service\":\"webradio\",\"type\":\"webradio\",\"uri\":\"WEB_RADIO_URL\",\"title\":\"Station_Name\"}"
実際は、下記の部分を書き換える。
Voluimoのアドレス:192.168.1.100
uri:WEB_RADIO_URL
title:Station_Name
URLを調べるには、Volumioで一旦選局し、例えばコマンドプロンプトで下記のコマンドで使い、現在選局中のURLを取得できる
curl "http://192.168.1.100/api/v1/getstate”
例えばこの様な出力があるので、ここから、URLなどを取得する。
{"status":"play","position":0,"title":"Maxwell - This Woman's Work ","artist":"UrbanRadio Smooth Jazz","album":null,"albumart":"http://cdn-radiotime-logos.tunein.com/s159769q.png","uri":"http://hydra.cdnstream.com/1541_128","trackType":"webradio","seek":5255,"duration":0,"samplerate":"","bitdepth":"","channels":2,"bitrate":"128 Kbps","random":null,"repeat":null,"repeatSingle":false,"consume":true,"volume":78,"dbVolume":null,"mute":false,"disableVolumeControl":false,"stream":true,"updatedb":false,"volatile":false,"service":"webradio"}
具体的な例として、下記の方法で、UrbanRadio Smooth Jazzに選局ができる
curl -X POST "http://volumio/api/v1/replaceAndPlay" -H "Content-Type: application/json" -d "{\"service\":\"webradio\",\"type\":\"webradio\",\"uri\":\"http://hydra.cdnstream.com/1541_128\",\"title\":\"UrbanRadio Smooth Jazz\"}"
具体的な例として、下記の方法で、FMジャングルだと以下の通り
curl -X POST "http://volumio/api/v1/replaceAndPlay" -H "Content-Type: application/json" -d "{\"service\":\"webradio\",\"type\":\"webradio\",\"uri\":\"http://mtist.as.smartstream.ne.jp/30013/livestream/playlist.m3u8#?\",\"title\":\"FMジャングル\"}"
ついでに音量調節するには、以下の通り
curl "http://volumio/api/v1/commands/?cmd=volume&volume=50"
このコマンドでvolume=50の部分を変更することで、音量を0から100の範囲で指定できる(%設定)
硬貨 重量計算機
| 一枚 | 種類 | 重量(g) | 枚数 (枚) |
金額 (円) |
|---|---|---|---|---|
| 1.0g | 1円 | 0 | 0 | |
| 3.75g | 5円 | 0 | 0 | |
| 4.5g | 10円 | 0 | 0 | |
| 4.0g | 50円 | 0 | 0 | |
| 4.8g | 100円 | 0 | 0 | |
| 7.0g | 500円 | 0 | 0 |
合計金額: 0円
硬貨の種類毎に合計重量を測って入力すると、
合計金額を計算します。
| 重量計測ですから、計りの精度のによっては枚数が多いと若干誤差が出ます。 通常数十枚程度では問題ありません。 旧500円玉は 7.0g、新500円硬貨は 7.1g です。 このページを使った場合のトラブルについては、責任を負いません。 |
はてなブログで、Javascript 実行する
ちょっとしたツールをWEB上に置いておきたいときに。
はてなブログでは、Javascriptが実行できる。
ポイントは、
- 編集モードを「Markdown」に変更する。(「はてな記法」でも可能かも)
- < script >~< /script >で囲んでJavascriptを記載する。
- < script > の前にスペースがあってはいけない?(タグの前にスペースがあるのがだめなのかも)
実行例
ボタンをおすと、「おされた!」のダイアログが出る。
このテストのソース
<button id="pushButton">おす</button>
<script>
document.getElementById('pushButton').addEventListener('click', function() {
alert('おされた!');
});
</script>
これで、計算ツールなどもWEBに載せられるな。
Adobe IllustratorからFusion 360へのSVGインポート
Adobe IllustratorからFusion 360へのSVGインポート方法マニュアル
はじめに
このマニュアルでは、Adobe Illustratorで作成したSVGファイルをFusion 360に正確にインポートする方法を解説します。Illustratorでの準備からFusion 360での読み込み手順までを詳細に説明します。
Adobe Illustratorでの準備
トリムエリアを使用して原点を設定
- Illustratorでオブジェクトを作成し、必要な原点を設定します。ガイドを利用すると便利です。
- トリムエリアの左上が、SVGの原点となり、Fusionに読み込んだ時の原点になります。
- トリムエリアから図形が出ていても問題ありません。
SVGとしてエクスポート
- ファイルメニューから
エクスポートを選び、SVG形式で保存します。 - エクスポート設定で、精度を7桁まで上げてください。これにより、正確な寸法が維持されます。
- 毎回エクスポートする際に精度を確認してください。
- ファイルメニューから
Fusion 360でのインポート
SVGファイルの挿入
- Fusion 360を起動し、プロジェクトを開きます。
- メニューバーから
挿入を選択し、その後SVGの挿入を選びます。
SVGファイルの読み込み
マイコンピューターから挿入を使用して、先ほどエクスポートしたSVGファイルを選択します。- 読み込みウィンドウが表示されます。
平面の尺度の設定
- 読み込みウィンドウの
平面の尺度の部分に、100÷75と入力します。 - これにより、Illustratorの100mmがFusion 360の100mmとして正確にインポートされます。
- 読み込みウィンドウの
まとめ
以上の手順に従うことで、Adobe Illustratorで作成したデザインを正確にFusion 360にインポートできます。特に、精度の設定や平面の尺度の調整が重要なポイントです。正確な寸法を維持するために、各手順をしっかりと確認してください。
ChatGPTにて作成。