うちのラズパイ
の活用例です。
やりたいこと
2022 Mar 7
ピュアオーディオ
の世界は別次元として、
ライフオーディオ
は気楽にいつでも音楽を聴いていられるのがポイントです。
ラズパイでいろいろ楽ちんになりそうです。
今回ラズパイでやりたいことは以下です。
これらのコントロールを以下のようにラズパイのWebページとしてまとめ、 スマホやタブレット、あるいはPCからWebブラウザでアクセスします。 Webリモコンですね。
|
その前に、、
集合シャーシ
1年半程前から、
いずれはラズパイで制御しようと思いながら、
今回の 1.電源、2.スピーカー切り替え、4.照明、
のハードウェアをシャーシに組み込んでいました。
これらを手動SWでオンオフしていました。
今回ようやくそれらをラズパイでコントロールすることになります。
また、このシャーシには
スカイセンサー
用の4.5V電源、
デンスケ
用の6V電源、その他汎用の5V電源なども組み込んでいます。
|
部品リスト
2022 Mar 8-9
1W POWER LED ウォームホワイト(秋月電子)
10個入
トランスはいろいろ電源用が 6.3V-2A、パワーLED用が 32V-1A、
12V電源は手元にあった12V-1A のACアダプターを分解流用しました。
AC250V-10A, 5V-106mA, 接点1c 電源用リレー(千石電商) AC220V-3A, 12V-73mA, 接点4c スピーカー用リレー(千石電商) 定電流使用三端子 LM317T(マルツ) 三端子 NJM7805FA(マルツ) 三端子 NJM7806FA(マルツ) Nch Power MOSFET TK40E06N1(秋月電子) ロジックIC(秋月電子) 74HC138 74AC164(74HC164) 74HC175(74HC77代用) 74HC04 オペアンプ NJM4580DD(秋月電子) アルミシャーシ 300×60×200【S-4】(マルツ) |
音量調整とインターネットラジオ選局
2022 Feb 8-11, 23-24
音量調整やネットストリーム試聴は
Linux のコマンドやアプリで実現できるのでそれらを使います。
音質的なことを言えばいろいろな技があるようですが、
そもそもライフオーディオではあまり音質は言わないので、
簡単さを最優先します。
サイトの中にはストリームURLではなく、
スクリプトで音楽データをパケット転送しているところもあり、
そのような場合は現状では試聴することができません。
ただし、そのようなサイトでも、
他のポータルサイトへはストリームURLを提供していたりと、
探せば、複数のアクセス手段を用意している場合もあるようです。
さて、問題はインターネットラジオです。 普通はブラウザでサイトに行けば簡単に試聴出来ます。 この時ブラウザはローカルで実行されているので当たり前ですが 音はローカル側(手元のデバイス)から聞こえます。 本システムでは音はサーバー側(ラズパイ)から出なければ意味がなく、 従ってブラウザでサイトに行って聞くという普通のやり方が使えません。 本システムでは、 ラジオ局のサイト内に埋め込まれたストリームのURLを調べ、 ラズパイ側で Linux のコマンドやアプリを実行して、 そのURLから音を出すことになります。 最初は「じゃ、サイトのHTMLコードを読めばいいじゃん」と考えていましたが、 最近のサイトのコードは機械(ソフト)による生成で 人が簡単に読めるものではありません。 あるいはjavascriptの深いネストに分散されていたりすると読む気になりません。 途方に暮れていると、そのストリームを探し出す方法を説明したページがありました。 ラジオ局の音楽ストリームURLを見つける方法↓ https://www.tremplin-numerique.org/en/web-radio-reveil-sur-raspberry の「Where can I find web radio URLs?」の部分 Google Chrome でサイトを開く → 右クリ → 検証 → Networkタグ、から通信量でメディアを探す なるほど!
|
ソフトウェア
2022 Feb 1-4, 8-11, 15-18, 26
ラズパイ Web Server ディレクトリ構成
/etc/apache2/apache2.conf #ドキュメントルート設定 #<Directory /var/www/> <Directory /home/pi/www> Options Indexes FollowSymLinks AllowOverride None Require all granted Order allow,deny Allow from all </Directory> #CGI 設定 LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so ScriptAlias /cgi-bin/ /home/pi/www/cgi-bin/ <Directory home/pi/www/cgi-bin> Options FollowSymLinks ExecCGI AllowOverride None Require all granted Order allow,deny Allow from all AddHandler cgi-script .cgi .sh .py .pl </Directory>/etc/apache2/sites-available/000-default.conf #DocumentRoot /var/www/html コメントアウト DocumentRoot /home/pi/www/html さて、ひと工夫というか ひとひねりしたことは、、 端末のブラウザに表示された index.htm が操作されると、 操作を受けた Apache Web Server は cgi_bin を実行します。 この時の実行権限はデフォルトで user www-data となります。 しかしながら、ここで、 私の普段の user 権限では何も問題なく機能していたコマンドがクラッシュします。 関連するさまざまなコマンドが Apache の実行権ではうまく動作しません。 以後4日に渡り、Apache を適切なグループにしたり、 ネット情報よりさまざまな対応をしてみましたが、 Apache からの pulseaudio や ALSA へのアクセスにからむ権限の問題は 解決出来ませんでした。 ふと Linuxのこの深淵なる混沌を解決することが、 どれ程 私の人生を幸せにしてくれるかを考え、 ここは正面突破ではなく、発想を変えて対応しました。 私の user 権限だと何も問題無いのだから、 Apache で受けたブラウザからの操作を Socket で私の userland に飛ばし、 以後は私の権限で動作させることにしました。 これで、勝手知ったる自分の user 権限で戦うことが出来ます。 このような理由で主たる機能が実装された audio_corner_server.py は Apache ではなく Socket から情報を受けます。 |
SSIDが自動的に切り替わることで発生する問題への対応 2023 Jul 31
家のWiFiルーターは接続できるWiFi電波名称
SSID(Service Set IDentifier) を普通3つ程度持っています。
最近ラズパイでインターネットラジオを聞いたり Tara Term 接続していると、
WiFiがやたらと途切れるようになりました。
先日ルーターの全SSIDを有効にしてからのような気がします。
ラズパイ側は家のルーターの複数SSIDでパスワードを入力し使える状態でした。
ふと、ルーターの設定画面を見ていると、
各SSIDへの接続数が時々変わっていることに気付き、
その時 接続が途切れるようです。
ラズパイ側で接続を見ると($ iwconfig)確かにSSIDが変わっています。
ライズパイが電波状態の良い方に自動的に切り替えているのでしょう。か、、
とにかく、自動切換えを止めるため、複数あった接続先SSID設定を1つにします。
/etc/wpa_supplicant/wpa_supplicant.conf のSSID記述を1つのみにして再起動すると、本問題は解決しました。 |