hiro yamamoto works

マイコンハード、ソフトを作ったりしています。
お家や現場のお困りごと解決に!
内容利用は自己責任でお願いします。

Raspberry Pi 5が届きました。(2号機を立ち上げる)

2024-09-12 17:14:05 | Single board computer

この投稿はあまりお役に立たちません。

2号機は Raspberry Pi OS 64Bit で使います。
HY works 的使い方では、32Bitより64Bitの方が問題点が少ないようなので
64BitでこのRaspi5をメインとして使い、Pi4Bからの作業環境移行を進めます。
(32BitでのArduino IDE 1.8.19のESP32 コンパイルエラーは未解決・・・致命的問題なので)
1号機はテスト用として、Raspbrry Pi OS 32Bitや
UbuntuやGEEKWORM X1002 NVMe SSD起動も試してみたいです。


つづくかもしれない。


bluetoothで音声を送る(Wi-Fiの可能性webrtc探る)

2024-09-11 20:30:25 | bluetooth-Audio

書きかけの投稿です。

ESP32-ROOM-32と I2S Microphonを使った、
音声入力デバイスから音声を送る方法を調べています。
調べていくうちに、"ESP32+I2S Mic ( INMP441 )"から脱線しつつありますが、
お付き合いください。
"なんとかというアプリケーションを使えば遅延を防止できる?!"掘り下げてみました。

結論のようなもの
OBSで配信して、go2rtcで受信音声再生する方法が良いと思いました。
ESP32+I2S Mic (INMP441)での配信はOBSに比べ遅延は少ないようですが、
音質にかなり改善の余地があります。
(遅延時間は計測していませんが、OBSで1秒程度でしょうか)


ネタとなったお困りごと:
音声を数百メートル離れた場所へ送りたい。

今回はWi-Fi&LANを使って送る方法について、調べて試してわかったことを書きます。
写真の接続に間違いがあります。L/R〜GNDの接続をL/R〜VDDに変更してください。

写真の接続に間違いがあります。L/R〜GNDの接続をL/R〜VDDに変更してください。

githubで見つけたスケッチ(使わせていただきます感謝)
"stream_i2s_wav_web.ino"
スケッチの説明
INMP441 ( I2S マイク) に入力した音声をWAV形式でオーディオをストリーミングする
ESP32ベースのWebサーバー例

オーディオ ストリームを聞くには
Wi-Fi SSID,PASSWORDを編集、次の行を探して"32"を"16"へ変更する必要がありました。
変更前(ノイズしか聞こえない)
#define SAMPLE_BITS 32 // Bits per sample of the audio
変更後(音質は悪いが音声が聞き取れる)
#define SAMPLE_BITS 16 // Bits per sample of the audio
ESP32へ書き込み、
シリアルモニタに出力されたIPアドレスをメモしておいて


・ブラウザでIPアドレスを直接開く
 音声の遅延4秒程度発生します。

・"go2rtc"というアプリケーションを介してブラウザで開く
 音声の遅延1秒以下

音質に改善の余地があります。

また、PCで"OBS Studio"というアプリケーションを使って配信して、
"go2rtc"で受信する方法もありました。
遅延は1秒以下でした。

OBS配信中

go2rtc受信画面

OBSの設定

go2rtcの設定と起動は別の記事で投稿します。
この方法での音質は良好です。
(遅延に関しては、bluetoothでも1秒以下の遅延があります。)

bluetoothで音声を送る(I2S MIC INMP441を試す)も見てください。



つづく


Raspberry Pi 5が届きました。(Rasberry Pi OS 32Bitを使ってみる)

2024-09-01 16:24:44 | Single board computer

この投稿は書きかけです。

Pi4BからPi5への移行がなかなか進みません。
結論
Pi5の現状は"問題を回避しながら64BitOSで使う"です。

"Pi5はRaspberry OS (64Bit)で使いたい"(8GBRAMモデルを買ったので)
やってみると、問題が出てきて
Raspberry Pi OS(64Bit)だけの問題なのか?確かめるために
32Bitを使ってみました。

ですが、32Bitでも問題改善されません。
32Bitだけで発生する問題点もありました。

調べていくうちに
Raspberry Pi OSがバージョンアップし"bullseye"から"bookworm"に・・・
Raspberry Pi 5は、"bookworm"から対応となる・・・
"bookworm"からウィンドウマネージャーが"Openbox"から"Wayland"に・・・
ディスプレイサーバが従来の"X11"から"Wayland"に変更・・・
など
OSの変更に起因しているのではとないかとの結論にいたりました。
ちなみにPi4B OSは
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye


"bullseye"でした。
Pi5の現状は"問題を回避しながら使う"です。
Pi5の速さを知ったらPi4Bには戻れないです。

気がついた変更点(64,32Bit)
・fcitx-mozc(日本語入力)が入っていない?・・・インストールして、設定すれば良い
・Chromium で日本語が入力できない・・・対応していない(?)という情報が見受けられました。
・webブラウザFirefoxが入っている・・・こちらは日本語入力OK
・KiCadが入っている

遭遇した問題点
・64,32Bit GIMP(画像編集アプリ)でスクリーンショットが撮れない
・32Bit Arduino IDEでESP32スケッチがコンパイルエラー・・・調査中
・Pi5動作中に、ディスプレイのみOFFーONすると、
 黒画面にマウスカーソルのみの表示になり、
 OFF前の画面に戻らないことがある。

アップデートで徐々に改善されることを期待しながら使わせていただきます。

つづく


bluetoothで音声を送る(Wi-Fiの可能性も探る)

2024-08-02 10:48:56 | bluetooth-Audio

書きかけの投稿です。

ESP32-ROOM-32Eと I2S Microphonを使った、
音声入力デバイスから音声を送る方法を調べています。
今回はbluetooth以外の方法検討するため、Wi-FiでPCのブラウザへ送る方法を試します。
bluetoothで音声を送る(I2S MIC NMP441を試す)を一緒に見てください。

結論のようなもの
入力した音声が4秒程度遅延して出力されます。(bluetoothでも1秒以下遅延あり)
この遅延は"ブラウザがキャッシュするためにおきる"ので、
なんとかというアプリケーションを使えば防止できる?!(不正確な情報を含みます)
というような情報も見受けられました。その点は掘り下げていません。
気になったので掘り下げてみました。
"go2rtc"(webrtc)です。遅延は1秒以下ぐらいでした。まとまったら別の記事で投稿しようと思います。

ネタとなったお困りごと:
音声を数百メートル離れた場所へ送りたい。

ArduinoIDEの準備
ESP32のボードマネージャはインストールを済ませておいてください。
ライブラリはGitHubで"arduino-audio-tools"検索しダウンロード、
"ZIP形式のライブラリをインストール"します。

テストに使ったサンプルスケッチ
arduino-audio-tools/examples-communication/http-server/streams-i2s-webserver_wav.ino



スケッチの編集と書き込み
スケッチへSSID、passwordを編集してESP32へ書き込みます。
次の行を見つけてコメントに変更しておくと、シリアルモニタに表示されるIPアドレスが見やすいでしょう。
//AudioLogger::instance().begin(Serial, AudioLogger::Info);

シリアルモニタに表示されるIPアドレスをブラウザで開いて暫くすると
音声入力デバイスに入れた音声が再生されます。
ごめんなさい、投稿した画像はIPアドレスが一致していません。"シリアルモニタに表示されるIPアドレス"をブラウザに入力してください。



つづく


bluetoothで音声を送る(I2S MIC NMP441を試す)

2024-08-02 10:47:18 | bluetooth-Audio

かきかけの投稿です(気がついたことがあれば書き足します)

今回の投稿は
音声入力が確認できたサンプルスケッチをお知らせします。
I2SインターフェースmicrophoneのNMP441をESP32で使う時、
モジュール付属のオス-メスコネクタ付きケーブルを使ったらノイズで嵌る。


状況
"音声出力側"は出たので、次ステップの"音声入力側"を調べます。

音声の入力方法は
・MICで音声を直接入力
 アナログ
 デジタル
・別のAudio機器ライン出力から入力
などが考えられます。

MICアナログ
まずは以前購入しておいたMICを見つけ、ESP32のADCへ接続して試す・・・
歪みかノイズで聞き取りにくい。"改善の余地"はあるのかわからない。

MICデジタル、ラインデジタル
I2SインターフェースのAudio入力デバイス
I2S ADC(WM8782A)を見つけたがちょっと高い(Amazon¥2,932)
NMP441マイクモジュールI2Sインターフェース(Amazon¥599)を発注する。

ArduinoIDEの準備
ライブラリはGitHubで"ESP32-A2DP"と"arduino-audio-tools"検索しダウンロード、
"ZIP形式のライブラリをインストール"します。
サンプルスケッチは
arduino-audio-tools/examples/examples-communication/a2dp/basic-i2s-a2dp.ino
が使えました。

入力出力デバイスのbluetoothデバイス名を同じに設定します。
a2dp_sink.start("MyMusic");//Bluetooth出力デバイスのスケッチ抜粋
a2dp_source.start("MyMusic", ***);//入力デバイススケッチの抜粋

"MyMusic"が一致すればbluetooth音声出力デバイスと接続されます。

ピンヘッダ半田付け、ブレッドボード結線
画像を参考にしてください。
NMP441にコネクタ付きケーブルついていますが、使用はおすすめしません。
ノイズ(プチプチ雑音)が入ります。

結線図(下)
結線図にはありませんが、MIC電源ーGND間に1μFセラミックコンデンサを挿入しています。


途中ですが投稿します
つづく