VUメーターの作成 LM358+DE1434

 

秋月で買い物するついでにVUメーターを買ってきて、例によってしばらく
放ったらかしにしておりましたが、ついに手を付けることに!!


写真

 

 

仕様

 

 

つなぎ方

 

 

デスクトップPCの音声出力端子に接続してPC側の音量を50%にして、
 VUメーターを最大にすると、時々赤部分まで触れる感じになります。
音楽をかけると振れすぎになるので、ボリュームを絞る感じになります。


■回路図

 

 

最後の整流?する部分に小さなコンデンサーをいれると、メーターの触れが緩やかになります。

 

■外観

 

 

箱はDAISOで購入したものです。
UVメーターはそのままだとつまらないと思い、
ロウソクLEDを仕込んでみました。

 https://miha.jugem.cc/?eid=350

5Vそのまま入れると光りすぎるので、2KΩの抵抗を挟んでいます。

 

 

 

 

JUGEMテーマ:電子工作

DELL-inspironにWindows11をクリーンインストールする方法2

 

前に同じマシンでWindows11をクリーンインストールに成功して記事にしていたので
 https://miha.jugem.jp/?eid=375

この記事通りに進めればあっという間に終わるはず・・・だったんですけどね。

 

DELLさんから提供されているOS Recovery Toolが途中で何のメッセージもなく消える。
 たぶん何かの条件で停止するようになっているんでしょうけど、
  操作者には何がなんだかわからず。の状況になりました。

 

コンピューターの世界では何故かトラブルが無くならない。

『思えば、複雑で変動する社会の中で何度もやり方を変えながら
 何度も試験を繰り返して一筋の手順を確立したんだけど
  時間の経過で環境が変わってしまって、いざ使うときに使えないと言った事はよく有ることだ。』

と思いつつも、またかーという思いですが。

 

ま、DELLさん自分からの申告によりツールを直してくれるとは思いますけど。


今回サポートチャットにて以下の手順を示してくれました。

 

--ここから--------------------------
かしこまりました。
お伺いしました状況から、本メディア作成ツールが正常に稼働できない可能性がございますため、
こちらの手順でWindowsOSを入れ直していただくことは可能でしょうか。

【1】メディア作成

 ■windows11のメディア作成LINK
 
  https://dell.to/4bF0ep2
 
 ■マイクロソフトのサイトにてWindows10メディアを作成する手順
 
 https://dell.to/3yA4Zzq
 
 ※Windows11用の手順がなく申し訳ございません。
 手順は同じでございますため、こちらのご参照をお願いいたします。

 

【2】IRSTドライバダウンロード、導入方法

 ■NVMe SSDにOSを再インストールする場合/IRSTドライバの導入手順
 
  https://dell.to/3VrPva3

 ※IRSTドライバを【1】【2】で使用したUSBメモリと同じUSBメモリに置きます際は、
 すでにダウンロードされているファイル以外の場所に置いていただけますと幸いでございます。
 例:USBメモリ内に「boot」などのファイルが置かれている状況となりますが、
 これらのファイル内にIRSTドライバを置かないようにお願いいたします

 

【3】初期化方法
 ■作成したディスクからの再インストール手順
 https://dell.to/4e6KqwY
 
 お手数をおかけしますが何卒よろしくお願いいたします。


--ここまで--------------------------

 

これに書いてあるとおりに実施っと。
少しわかりにくい場面もあったので少し補足して記録しておきます。

 

■Windows11のメディアの作成ですが、

 

現時点ではこんなページが表示されます。
https://www.microsoft.com/ja-jp/software-download/windows11?linkId=454074331

 

 


で、
クリックするのは赤枠ですが、
「Windows 11 のインストール メディアを作成する」の今すぐダウンロードをクリックします。


すると、「MediaCreationTool_Win11_23H2.exe」がダウンロードされますので、
起動すると良いです。そうしてUSBをセットして書き込みしてもらいます。


自分はKioxiaの32Gbを使いました。

 

■IRSTドライバダウンロード、導入方法の所ですが、
 最初の手順でDELLのサイトからダウンロードして、
 USBに保存しろと書いてますよね。
 
 まずダウンロードに関しては必要なものを指定して検索してってなるんですが、
 https://dell.to/3VrPva3 これを開いて。
 まず、自分のマシンの番号を入力して進む→ドライバーを探す→として
  OSをWindws11を指定してカテゴリにストレージを選択すると良いです。
   そうすると、インテル・ラピッド・ストレージ・テクノロジー用ドライバー
    が見つかるので、それです。
  Intel-Rapid-Storage-Technology-Driver_Y6R9T_WIN64_19.5.1.1040_A02_03.EXE
   が ダウンロードできるので、起動して「EXTRACT」しておきます。
  出力先を指定できるので、なるべく短いパスで指定します。自分の場合はc:¥tmpとか
  指定して開くと以下の感じになるので、
  C:¥TMP
  └─production
    └─Windows10-x64
      └─15063
        ├─Drivers
        │ ├─HsaComponent
        │ ├─HsaExtension
        │ └─VMD
        └─F6
          ├─HsaComponent
          ├─HsaExtension
          └─VMD
            └─f6vmdflpy-x64
  実際にWindowsインストール時にドライバ指定するのはVMDだったと思う。


  なので、上で作成したWindows11のインストールUSBにtmp等といった
  ディレクトリを作成してその中に入れておきます。
    C:¥Users¥nexus>dir e:¥
    ドライブ E のボリューム ラベルは ESD-USB です
    ボリューム シリアル番号は 569A-6A3B です
   
    e:¥ のディレクトリ
   
   23/12/04 (月) 16:34        128 autorun.inf
   24/06/02 (日) 12:40  <DIR>     boot
   23/12/04 (月) 16:34      442,062 bootmgr
   23/12/04 (月) 16:34     1,675,736 bootmgr.efi
   24/06/02 (日) 12:40  <DIR>     efi
   23/12/04 (月) 16:34      95,712 setup.exe
   24/06/02 (日) 12:40  <DIR>     sources
   24/06/02 (日) 12:42  <DIR>     support
   24/06/02 (日) 13:33  <DIR>     tmp     ←ここ


■初期化方法の所ですが、

 

 Windowsのインストール場所を選択の画面でshift+F10を押してdiskpartコマンドを
 使っていますが、自分の場合はm.2のSSDなので、
 ドライバーを認識させる必要がありました。
 
 手順は
  https://dell.to/3VrPva3
  ですが、少し違うかもなので、補足しておきます。
  
 このドライバーは上記のe:¥に格納したものですので、

 このドライバーを指定する必要があります。

 

 


 
 ドライバーの読み込み→フォルダー指定で
  上記例でいうとc:¥tmp→production→Windows10-x64→15063→Drivers→VMDを指定。

 
 
 
 
 
 そしてIntel RST VMD Controller A77F を指定してみました。

 


 すると、Windowsのインストール場所にM.2のSSDディスクが現れますので、
 それを指定して続行させます。

 

 

■Windows11セットアップの途中で「ネットワークに接続しましょう」で先に進めなくなる

 

 WindowsのインストールUSBから起動してディスクが認識して安心していると、
 確か、国とか言語の選択、キーボードの選択の後ぐらいの段階で
  ネットワークの接続がある。
   ここで、普通なら、近隣のWIFIのSSIDの一覧から選べるんだけど。
 この手順だと一覧が出てこない。

 しかも、中止する手段も無い。
 しばらく色々いじってみたけど、わからず。
 
 google先生に聞いてみると以下の操作でネットワークに接続しないで進めるとの事。

 SHIFT+F10(ノートのPCの場合SHIFT+Fn+F10とか)を押す。

 コマンドプロンプトが出るので
   oobe¥bypassnro
   上記コマンド入力後自動的に再起動されて、
  「インターネット接続しない」が選べるようになる。
  
 oobeってなに?って思ってgoogle先生に聞いてみると
 「OOBE 【Out-Of-Box Experience】
  概要 OOBE(Out-Of-Box Experience)とは、製品の購入後、
  箱から出して使用可能にするまでの一連の手順。
  また、その際に表示・操作する初期設定のための画面。」
 との事で、「ウービー」って読むみたいです。
 
 これを応用することでWindows11のアカウント設定をローカルアカウントで
 進めることが出来るそうです。
 →「https://atmarkit.itmedia.co.jp/ait/articles/2210/21/news023.html」
 
 このまま進めていったんWindows11のインストール完了。
 
 
■ドライバーが入っていないですね。
 
さてと、Windowsが入ったのでいつものツールをインストールしようと・・・ネットに繋がらない。
 
Windowsのセットアップの途中でWIFIに接続しなかった所から
 気になっていたのですが、
 Windows11標準の必要最小限のドライバーしか入っていないですね。
Microsoftから持ってきたインストーラーですからね当然といえば当然。
 
そういう所はDELL社はさすがです。
 機種ごとにドライバー一式ダウンロードできますので便利ですね。
  https://www.dell.com/support/home/ja-jp?app=drivers


そうは言うてもNWのドライバーだけダウンロードしてあと残りはWindowsUpdateで
 良いんじゃねーと思い、NW関連だけ入れてみたけど、なんか動かず。
  えいやーと片っ端から入れていってしまったけど。最後に入れたのがそれたっだ。
 
 
そもそも
 OS Recovery Toolさえ動けば全部自動だったんですけどね。

 自分なりには勉強になったので良しとします。元通り動くようになりました。満足です。
 色々参考になる部分有ると思いますので活用いただければと思います。

ダイナミックマイクとオペアンプ

 

昔、中学校のなんかの工作で「インターホン」なるものを
 作成した記憶があり。
 
その前にインターホンって何?
 という人も沢山いると思うので、
  wikiで調べてみたけど、なんか解説難しいので、
   テレビドアホンのテレビのないバージョン(声だけ)と考えてください。
 
それで、その構成ですが、
 スピーカー→アンプ→スピーカー
  って感じになっていたと記憶していて、
 
親機側のスイッチを押しながら、
 なにか話すと子機側から声が聞こえて、
 
親機側のスイッチを離すと、
 回路が入れ替わって、
  子機側の音が親機側から聞こえるという
   簡単な回路になっていた気がする。
   
子機側にもスイッチが付いていて、
 押すと親機側からブザー音が聞こえて、親機側の人が気づいて、
 
親機側の人がボタンを押しながら「はい〇〇です。」とか会話を開始して、
   最後に「どうぞ」と言いつつ、ボタンを離して
    子機側の人が話すって事になっていた。と思う。
 
上記のように同時には話せず、片方が送信中は片方が受信専用になる
  半2重通信ですね。

 

こんなの見つけました。

 https://www.marutsu.co.jp/contents/shop/marutsu/mame/145.html

  これの、片側通話方式その2ですね。
 
話している方のスピーカーがマイクの代わりになるってことですね。

 

ダイナミックマイク
 
 googleで聞くとAIが以下のように回答してくれました。
 

  空気の振動をコイルと磁石を使って電気信号に変換する方式をダイナミックマイクと言う。
  ダイナミックマイクとは、電磁誘導を利用して音声信号を得るマイクのことです。 構造は非常にシンプル。 
  ダイヤフラム、コイル、磁石がひとつのカプセルに納められ、空気の振動を受けたダイヤフラムが動くと、
  ダイヤフラムに取り付けられた金属のコイルが磁石の磁界の中で振動して、
  電気信号を得る仕組みになっています。
 
 つまり、スピーカーの構造と同じです。
  スピーカーの振動板が声の影響で振動して、
    中のコイルが一緒に振動、
     近くにくっついている磁石とコイルによって、
      微弱な電流が発生する。
      この微弱な電流をアンプで増幅することで声を大きくしたり、
       遠くまで運んだり出来るってことですね。
 
回路図(LM358版)
  

 


 
 前にオペアンプの記事はいくつか書いてます。
  https://miha.jugem.cc/?eid=309
   そちらとの変更点を書きますね。
 
 発信防止の為に以下の3点変更を加えております。
  RaとRbを10KΩに変更これは気分
  R1とR2をそれぞれ1KΩと200KΩに変更 R2が1メガ超えると発信しやすい
  Cf1を追加
  Rpを追加
  
 参考に秋月のコンデンサーマイクアンプキットの場合
  https://akizukidenshi.com/goodsaffix/ae-micamp_20200626.pdf
  たぶん、これと同じ定数でもうまくいく。
  
 参考 オペアンプの発振に関して
  マルツさん
   https://www.marutsu.co.jp/contents/shop/marutsu/mame/106.html
   こちらを参考にして、上記の発振防止の回路を入れています。
 
動作


 シャーっていうホワイトノイズみたいな音が聞こえるのはそういうものなんですかね?
 すごい気になる感じではないんですけど、
  昔カセットテープを再生した時に後ろで鳴っている音に似ている感じの音です。
 
 上で書いた秋月のコンデンサーマイクキットでは気にならないので、
  比較するとなんだろう?って気になります。
   秋月のコンデンサーマイクキット
    https://akizukidenshi.com/goodsaffix/ae-micamp_20200626.pdf
 
 以前記事にした、NJM4580でマイクアンプを作ったときも気にならなかった。
   https://miha.jugem.cc/?eid=88
  ですので、NJM4580で作り直してみました。
 
NJM4580回路図
 

 
 
 
 こちらは両電源方式のアンプになりますので、
 電源回路を追加しています。
 
 当初、マイナスの電圧を作り出すICを使ってみたのですが、
  https://miha.jugem.cc/?eid=247
 オーディオで使うには不向きで、ビーっていうノイズが乗ることが判明しました。
 なので、使えず。
 
 電圧を分圧するしてプラスとマイナスとGNDを作り出す回路とました。

 

電源
 電池は006P型の充電式を使いたいと思い。
  amazonから
    https://www.amazon.co.jp/gp/product/B08Z7979WM
   を購入してみたのですが、こちらもノイズがビーってなったので、即返品。
   
   
   
   充電用のUSB端子が電池の下についているタイプだったので、
    充電用の回路と、もしかしたら放電時に昇圧するような
     回路が入っているんだと思います。
  
  その代わりとして、
   https://www.amazon.co.jp/gp/product/B08BJ1YPY6
   
   
   
   
  同じメーカーの充電器が分離しているやつを購入しました所、
  快適に使えるようになりました。こっちはノイズ入らないです。

 

使用感
 
 コンデンサーマイクと比較して、近くの音しか拾わないです。
 ダイナミックマイクの特徴ですね。
 ですので、屋外で環境音を録音するなどには向かないけど、
 朗読とか音声系の近くの音だけを録音したいときには向いているのではないでしょうか?

 

完成図
 
 
 
 
 中身

 

  

 

 


■後日談

 LM358にてシャーっていう音がする件で、気になっていたので、先日マルツに寄った時にオペアンプを探して

  ピン配置の同じもので良さそうなのを、探して来ました。

   NJM2268Dです。低雑音と書いてたので差し替えてみた所、

   シャーっていう音は消えました。

    実験環境でNJM2268Dはブレッドボードで組んでいせいか、

     NJM4580と比較するとHiFi感に欠けた感じがします。何が違うんですかね?

 今回はすぐに手に入る物で試しましたけど

 NJM2737Dを試してみたいですね。

  秋月のNJM2737説明

   NJM2737は1.8Vから動作する二回路入り単電源入出力フルスイングオペアンプです。

   入力換算雑音電圧はオーディオで定評のあるNJM4580やNJM5532と同等になるよう設計しており、

   低電圧、単電源動作のオーディオ用途に最適です。

 

 興味は尽きません。

  通販でいくつか手に入れて試して見れると良いですね。

  単電源で使えるオペアンプとしてもう少し候補を探していきたいと思います。

   オペアンプ沼ですね。ほどほどにハマっていきたいと思います。

 

蛍光灯の安定器の作成

 

いわゆる蛍光灯は2027年末で製造あんど輸入禁止


 https://www.env.go.jp/content/000200659.pdf
 との事であと3年半で手に入らなくなるようですね。
  使用するのはOKですので、使い続けるのは良いんですけど。
   蛍光灯は寿命が短いので、大量に買い込んでおく人も現れそうです。

 

蛍光灯のあの不安定な感じが好きです。
 無くなってしまうのは悲しいですね。

蛍光灯には安定器と、グローランプが必要で、
 どちらも価格が上がっていると感じています。
 
回路図

アカリセンターより
 https://www.akaricenter.com/chokkan/fujiidenki/img/ecd-20100ab1-kessen.gif

 


 

それで、
そもそも蛍光灯ってどうやってるんだっけ?
 と思い、グローランプ繋いで、直接100Vに接続してみると、一瞬ピカッと光り、
  お亡くなりになりました。
   上の回路の安定器を抜いたバージョンですね。

 

google先生解説
『放電ランプの場合はランプ電流が増加するにつれてランプ電圧が
 低下すると いう特性(負特性)があるため、
 ランプに電流が流れ始めると急激に電流が増大して、
 ランプが壊れてしまいます。 
 そこで、ランプに大きな電流が流れないようにするのが、
 安定器の役割です。』 

 

電流を制限するですね。ちょっと判んないですが、
 間の所にコイルをくっつけて抵抗にするってことですかね?

 

安定器を追加で購入
 ECD-20100AB1
  20W1灯のもので
  1000円ぐらいでした。
   ちなみに蛍光灯はDAISOで150円

 

で、上記の通りに接続して
 電源ON。予定通り光りますね。

 

 

 

この安定器と同じものを挟めば良いって事が判ったので
 測定。1-3間のコイルの直流抵抗とインダクタンスを測定してみた。
  430mH
  28.3Ω
  
これと同じようにコイル巻けば良いんですよね。
って事で。巻いてみた。というか昔巻いたのを持ち出してきた。

 

 

何回巻いたか忘れたけど、
 0.2mmのポリウレタン線を6.8mmの鉄の棒にぐるぐる巻いて、
 電磁石になるまで巻いたのが有ったので、それを使ってみました。
  多分100回から120回ぐらい。

 

自作コイルの測定。
 350mH
 67Ω
 直流抵抗が多めで、インダクタが7割程度ですが、壊れることはなかろう。

 

これで、上記の通りに接続して
 電源ON。ちゃんと光りますね。

 

 

測定すると、蛍光灯の両端にかかっている電圧が78V
 全体の消費電力が12Wでした。蛍光灯が20W型で消費電力18Wの定格のものなので、
  省エネです。

 

1時間程度安定して点灯したのを確認しましたが、
 自作安定器=コイルはほんのり温かい感じです。
 安定機の部分で消費している電力が約2.6Wになる計算です。

 

サンキャッチャーなるものをぐるぐる回す装置。

 

はじめに

 

サンキャッチャーなるものをもらいました。
太陽の光の当たる場所に置くと、反射したり、屈折したりして、
家の中の壁に星のような模様を浮かべてくれます。
おっちゃんは手で回すのが面倒だったのでこれを回転する装置を考えてみました。

 

動いている様子
 https://youtu.be/j7XFsv0Efww

 


 なんか最後のカットが未確認の空飛ぶ飛行物体みたいになった。

 

材料は

 

 タミヤのプーリーがメインで、
  https://www.tamiya.com/japan/products/70140/index.html
  タミヤの 3mmシャフトセット
   https://www.tamiya.com/japan/products/70105/index.html

 

 あとはどこかから集めてきた板の端切れと
  モーター固定するやつ
   https://www.monotaro.com/g/06009597/?t.q=%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC%20%E5%9B%BA%E5%AE%9A

 

 手持ちの材料でなんでも作りたいんですけど、
  回転部分の抵抗は少なくしたいので内径3ミリ、
   外形6ミリのベアリングを採用しています。
    https://www.amazon.co.jp/gp/product/B0CFZQRL8C

 

 特別なことはないんですが、
  垂直に穴を開けるのが味噌です。
   ドリルガイド有ったほうが良き
    https://www.amazon.co.jp/gp/product/B0B1ZTB3SW
    

 あと130モーター。
  https://www.amazon.co.jp/gp/product/B00288BIE4
  
プログラムもいらないですね。電源にモーターを直結してください。

 

上から見た図


下から見た図

 

 

横から見た図

 


壁の光

 


キャッチャー

 


130モーターなので、結構動作音が気になります。

 もう少し、音の小さいほうが実用性はありそうですね。

 

UBUNTU22でSIPサーバーasteriskをインストール

 

■ubuntu22をダウンロード

 

https://jp.ubuntu.com/download
から Ubuntu Desktop 22.04.4 LTS をダウンロードしてきます。

 

■USBメモリに書き込みます。

 

ダウンロードすると
 ubuntu-22.04.4-desktop-amd64.iso
  が取得できます。
 isoの書き込めるソフトを使ってDVDか、USBに書き込みます。

今回はrufusを使ってUSBに書き込みます。

 

■UBUNTUの最新化

 

sudo apt update

 

sudo apt upgrade

 

sudo shutdown -r now

 

■asteriskをインストール

 

sudo apt search asterisk


sudo apt show asterisk


sudo apt install asterisk -y

 

これで終わり。centOSに比べてすごい簡単。

途中でソースを変更したり、必要なパッケージを足したりとかは不要でした。

 

■asteriskを有効化して起動

 

systemctl enable asterisk

 

systemctl start asterisk

 

sudo systemctl status asterisk

 

■pjsip

 

※pjsipは上記で有効になるのでしょうか?
※centOSでは別にインストールしていたんですけどね。

 

===============
asterisk設定と音声ガイダンス

===============

 

■音声ガイダンス

 

前回と同じく6003にかけた時に
 「こちら〇〇です。電話がつながったらお話ください。」とガイダンスを流します。
ファイルはgsmという形式で配置するので、
 wavファイルに録音後、http://convertio.co/ja/m4a-gsm/
 にアクセスして変換しておきます。
  
ガイダンス用の応答の音声ファイルの置き場
 CentOSと違って、/var/lib/asterisk/sounds配下にenが無くてcustomが存在するのでそこに配置

ls /var/lib/asterisk/sounds
cp /home/housou/eiwadai.gsm /var/lib/asterisk/sounds/custom

 

■設定を入れます。

 

vi /etc/asterisk/pjsip.conf 

 

[transport-udp]
type=transport
protocol=udp
;udp,tcp,tls,ws,wss,flow
bind=0.0.0.0

[6001]
type=endpoint
transport=transport-udp
context=default
disallow=all
allow=ulaw
allow=gsm
auth=6001
aors=6001
rewrite_contact=yes

[6001]
type=auth
auth_type=userpass
password=6001
username=6001

[6001]
type=aor
max_contacts=2

[6002]
type=endpoint
transport=transport-udp
context=default
disallow=all
allow=ulaw
allow=gsm
auth=6002
aors=6002
rewrite_contact=yes

[6002]
type=auth
auth_type=userpass
password=6002
username=6002

[6002]
type=aor
max_contacts=2

[6003]
type=endpoint
transport=transport-udp
context=default
disallow=all
allow=ulaw
allow=gsm
auth=6003
aors=6003
rewrite_contact=yes

[6003]
type=auth
auth_type=userpass
password=6003
username=6003

[6003]
type=aor
max_contacts=2

※pjsip.confはCentOSと変わらず

 

vi /etc/asterisk/extensions.conf

 

[default]
exten => 6001,1,Dial(PJSIP/6001,,r)
exten => 6001,2,Hangup()

exten => 6002,1,Dial(PJSIP/6002,,r)
exten => 6002,2,Hangup()

exten => 6003,1,Answer()
exten => 6003,2,Playback(/var/lib/asterisk/sounds/custom/eiwadai)
exten => 6003,3,Dial(PJSIP/6003,,r)
exten => 6003,4,Hangup()

※ポイントは「音声ガイダンスをフルパスで書く」です。

 

systemctl stop asterisk

 

systemctl start asterisk

 

systemctl status asterisk

 

■Zoiperをインストール

 

ダウンロード
https://www.zoiper.com/en/voip-softphone/download/current
Linux用をダウンロードしてきます。

 

解凍
 tar Jxfv Zoiper5_5.6.4_x86_64.tar.xz

 

起動

cd Zoiper5/
./zoiper

 

起動してくる画面でfreeで進んで
ログインID : 6003@192.168.120:5060
パスワード : 6003
↑はpjsip.confに設定したもの

自動応答
 proにアップグレードして、設定から自動応答
   再起動後に設定を維持をクリックしておく

 

■自動ログイン

 

 OS起動と同時にZoiperも起動したいので、
 UBUNTUの設定で自動ログインにしておく。
 設定→ユーザ→ロック解除→自動ログイン
 

DELL-inspironにLinuxをインストールする方法

 

DELL inspiron 14 5430にLinuxをインストールする時に
 いろいろハマりましたので記録に残します。

 

■ハマりポイント

 

 3つあります。

 そもそもCentOS7.9はM.2のSSDには対応できない。
 ビットロッカーで暗号化されているために、Linuxから認識できない。
 セキュアブートがBios設定ONになっているため、Linuxを入れるのはOFFにしなきゃならない

 

■CentOS7.9

 

CentOS7.9はもう古いんです。Windows7でも同じ事象が出てるみたいですが、
 M.2のSSDはインストール先として一覧に出てきません。
 自分としては色々使っていたOSなので、名残惜しいですが、
 今年7月だったかなーでサポート切れでセキュリティーアップデートも出なくなるので
 今後はUbuntuに乗り換えかなーと思います。
 Ubuntuの22.04.4ならあと3年は大丈夫です。
 
■ビットロッカー
 
インストールされてきたWindows11ですが、ビットロッカーが標準でONになってます。
このため、他から見ようと思ってもその領域見れません。
Windowsの設定 セキュリティーからOFFにしておきます。
 
■セキュリティーブート

 

これはCentOS7.9でやろうとしていたからなんですけど、
 古いLinuxをインストールする場合はBios設定のセキュリティーブートを
  OFFにするのが効く場合もあるようです。
 Unbuntuの22.04.4はセキュリティーブートに対応しているようで大丈夫ですね。
 いちおう記録としてメモっておきます。

DELL-inspironにWindows11をクリーンインストールする方法

 

DELL inspiron 5430にLinuxをインストールした後に、
 Windowsに戻すのにいろいろハマりましたので記録に残します。

 

■まえがき

 

Windowsに対応していないソフトが有りまして、
  Linuxでシステムを作りたかったので、
  簡単にノートパソコンを購入し、
   Windowsを消してLinuxに入れ替えて使い終わったら
  Windowsに戻す!!ということを考えておりました。
 戻すときの方法を普通にマイクロソフトのサイトからWindows11を
 ダウンロードしてインストールすればよいと思っておりました。
 
 これが甘かった。

 

■ハマった所
 
 自作PCとかだと、MicrosoftからダウンロードしたWindows11の
  インストーラーのisoをdvdに焼いて起動すれば、インストールOK
   となるんですけど。
 
 本パソコンでは
  DVDから起動して進むんだけど、インストール先のHDDの指定で
   SSDのディスクが表示されない事象が発生。
 
 ここから調べたり試したりが始まって・・・
 
 M.2のSSDだと出来ない場合がある。
  とか、
 M.2のSSDだと、SerialATAじゃ無いのでNVMEがー
  とか
 BIOSでIntel VMDに関する項目を探して確認。有効の場合は無効にするか、
  有効のままドライバーを組み込んでWindowsをインストール
   とか
 いろいろ情報があったんですけど、本パソコンにはいまいち当てはまらず。
 
 何時間か経過・・・・

 

■解決

 

 なんか翻訳がおかしくて「Linuxを再インストールする」ってなってますけど、
  Winodws11のクリーンインストールが可能です。
   もともとLinuxで出荷されたのはLinuxが入るのかもです。
 
 OS Recovery Toolを以下からダウンロードして
 https://www.dell.com/support/home/ja-jp/drivers/osiso/recoverytool/w2021
 ツールを起動するとUSBにリカバリブート用のセットアップを書き込んでくれる。
 そのUSBをパソコンにセットして、
  起動直後F12を押してUSBから起動させて、後はメニューに合わせて進んでいく。
 いちおう、システム検査後、リセットを選択。

 


 Windows11の初期化へ進んで無事Windows11に戻りました。

 途中の試行錯誤でBios設定を色々いじってたので、工場出荷状態に戻したり、
  工場出荷状態に戻らない項目は手動で戻したりいろいろしましたけど、
   結果は上記の通り

音声転送プログラム

 

■前書き


 現代において
  インターネット回線を使ってPC同士で会議とか、通話とかする事が出来ます。

今回はその初歩的部分。
  pythonを使って一方通行ですが、
   音声を送るプログラムを作ってみたので、そのプログラムとセットアップ方法を
    記録しておきます。

 

■構成

 

  マイク-PC1-(LAN)-PC2-アンプスピーカー

 

■方式
 
 PC1
   PyAudioでマイクから音声を入力。44.1Khz モノラル 16Bit
    そのままUDPで宛先を指定して送信
 
 PC2
    UDPでデータを受け取って
    PyAudioでスピーカーに音声を入力。44.1Khz モノラル 16Bit

 ※この方式の欠点
    全く圧縮していないので、ネットワーク帯域を結構使う。
      といっても、計算すると
       44100×2×8=約71Kbps 
        ぐらいですので、構内LANで単独使用なら問題ないかなーと思います。
    UDPなので、順序保証とか、データの保障が無い。
      とはいえ、こちらも多少ノイズとして聞こえるぐらいの
       影響しかないかなーと思います。
     送信側と受信側で同期を取っていないので、長時間使うと遅延したり、
      バッファーがオーバーフローする可能性あり。
     送受信の両方でエラー時に自動的に再起動するとか、対処必要になると
      思われ。

 

========================
セットアップ
========================

 

■ファイル配置

 

 /usr/local/bin/audio-transferに所定のファイルを配置していく

 

[root@localhost audio-transfer]# pwd

/usr/local/bin/audio-transfer

 

[root@localhost audio-transfer]# ls -al
合計 12
drwxr-xr-x. 2 root root   57  3月 21 09:42 .
drwxr-xr-x. 3 root root   28  3月 21 09:42 ..
-rw-r--r--. 1 root root 1241  3月 21 09:42 recv.py
-rw-r--r--. 1 root root 1526  3月 21 09:42 send.py
-rw-r--r--. 1 root root 1248  3月 21 09:42 show-audio.py
[root@localhost audio-transfer]# 

 

■python準備

 

Windowsも手順は同じ。
以下はCentOSの場合を記載しています。

 

[root@localhost audio-transfer]# python --version
Python 2.7.5

古い。せめて3系にしたいなー
って事で・・・

 

yum install -y python36
yum install -y python36-devel
pip3 install pyaudio

 

■テスト

 

python3.6 show-audio.py

これで、パソコンに入っているオーディオの入出力ポートが一覧出力される。

 

 Device 0: HDA Intel HDMI: HDMI 0 (hw:0,3), Channels: 0
 Device 1: HDA Intel HDMI: HDMI 1 (hw:0,7), Channels: 0
 Device 2: HDA Intel HDMI: HDMI 2 (hw:0,8), Channels: 0
 Device 3: HDA Intel HDMI: HDMI 3 (hw:0,9), Channels: 0
 Device 4: HDA Intel HDMI: HDMI 4 (hw:0,10), Channels: 0
 Device 5: HDA Intel PCH: ALC269VC Analog (hw:1,0), Channels: 2
 Device 6: hdmi, Channels: 0
 Device 7: pulse, Channels: 32
 Device 8: default, Channels: 32
 
しかし、このままではどれがマイクからの入力なのかわからん。
 なので、0から順番に試していって、
  5番がそれである事を突き止めて、
   input_device_index = 5 #
    に決定。

 

だけど、一瞬つながった後にエラーになる。
 その一瞬に送信側でなにか叫ぶと受信側のスピーカーから音が鳴る。
  少し成功。あと一歩です。

 

Traceback (most recent call last):
  File "send.py", line 42, in <module>
    data = stream.read(chunk)
  File "/usr/local/lib64/python3.6/site-packages/pyaudio/__init__.py", line 571, in read
    exception_on_overflow)
OSError: [Errno -9981] Input overflowed

[root@localhost audio-transfer]# 

 

バッファーが足りなくなるとダメっぽいので5倍にする。
「chunk = 50240」に変更

 

Traceback (most recent call last):
  File "send.py", line 45, in <module>
    sock.sendto(data, addr)
OSError: [Errno 90] Message too long
[root@localhost audio-transfer]# 

 

今度はUDP送信でメッセージが長いって。

 

試行錯誤・・・・

 

結局googleで探して
音声をマイクから読み込む部分に「exception_on_overflow=False」を追加。
data = stream.read(chunk, exception_on_overflow=False)

 

いちおうこれで落ち無くなった。

 

いろいろいじってると判るんだけど、
chunkを大きくすると遅延が出ることが判明。
結局chunkは元に戻して1024とする。
「chunk = 1024」

 

■解決

 

音はクリアですね。デジタル通信なんだから当たり前といえば当たり前。
 しかし、圧縮してないので、理論的に考えて普通のIP電話よりクリアですね。
帯域さえ確保できれば(といいつつも、それほど大きな帯域でもないし)
44.1Khz/16Bitですから、CD音質で音を運ぶのは現代の通信回線において余裕です

 

■起動

 

受信側PC(Windows)
 python3.6 recv.py
 ※受信側はOSのFW設定でUDPの5005を開けてください。

 

送信側PC(CentOS)
 python3.6 send.py

 

■結果のソース。

 

「送信側」

 

import pyaudio
import socket
import sys

# ネットワーク設定
UDP_IP = "192.168.10.111"  # 送信先のIPアドレス
UDP_PORT = 5005  # 送信先のポート番号
addr = (UDP_IP, UDP_PORT)

# PyAudioの設定
chunk = 1024 # 音声データのチャンクサイズ
#chunk = 10240 # 音声データのチャンクサイズ
format = pyaudio.paInt16  # 音声のフォーマット
channels = 1  # モノラル
rate = 44100  # サンプリングレート
input_device_index = 5 # 

# UDPソケットの初期化
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# PyAudioの初期化
p = pyaudio.PyAudio()

# 音声入力ストリームの開始
stream = p.open(format=format,
                channels=channels,
                rate=rate,
                input=True,
                frames_per_buffer=chunk,
                input_device_index=input_device_index)

# 音声出力ストリームの開始
#output_stream = p.open(format=format,
#                       channels=channels,
#                       rate=rate,
#                       output=True,
#                       frames_per_buffer=chunk)

print("録音を開始します。CTRL+Cで終了します。")

try:
    while True:
        data = stream.read(chunk, exception_on_overflow=False)
        #output_stream.write(data)  # スピーカーから音声出力
        sock.sendto(data, addr)  # UDPで音声データを送信
except KeyboardInterrupt:
    print("録音を終了します。")

# ストリームを閉じる
stream.stop_stream()
stream.close()
#output_stream.stop_stream()
#output_stream.close()
p.terminate()

# ソケットを閉じる
sock.close()

 

 

 

「受信側」

 

import pyaudio
import socket
import sys

# ネットワーク設定
HOST = ""  # 送信先のIPアドレス
PORT = 5005  # 送信先のポート番号

# PyAudioの設定
chunk = 102400  # 音声データのチャンクサイズ
format = pyaudio.paInt16  # 音声のフォーマット
channels = 1  # モノラル
rate = 44100  # サンプリングレート

# UDPソケットの初期化
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST, PORT))

# PyAudioの初期化
p = pyaudio.PyAudio()

# 音声出力ストリームの開始
output_stream = p.open(format=format,
                       channels=channels,
                       rate=rate,
                       output=True,
                       frames_per_buffer=chunk)

print("受信を開始します。CTRL+Cで終了します。")

try:
    while True:
        data, address = sock.recvfrom(chunk*2)
        #print(f"address: {address}")
        output_stream.write(data)  # スピーカーから音声出力
except KeyboardInterrupt:
    print("受信を終了します。")

# ストリームを閉じる
output_stream.stop_stream()
output_stream.close()
p.terminate()

# ソケットを閉じる
sock.close()

 

「オーディオデバイス確認」

import pyaudio

p = pyaudio.PyAudio()

# 使用可能なオーディオデバイスのリストを表示
for i in range(p.get_device_count()):
    info = p.get_device_info_by_index(i)
    print(f"Device {i}: {info['name']}, Channels: {info['maxInputChannels']}")

# 目的のデバイスのインデックスを選択
input_device_index = 0  # 例えば、リストから選んだ入力デバイスのインデックス
output_device_index = 2  # 例えば、リストから選んだ出力デバイスのインデックス

# 音声入力ストリームの開始(特定のデバイスを使用)
stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=44100,
                input=True,
                frames_per_buffer=1024,
                input_device_index=input_device_index)  # 入力デバイスを指定

# 音声出力ストリームの開始(特定のデバイスを使用)
output_stream = p.open(format=pyaudio.paInt16,
                       channels=1,
                       rate=44100,
                       output=True,
                       frames_per_buffer=1024,
                       output_device_index=output_device_index)  # 出力デバイスを指定
 

CentOSのSELINUXとFWをOFFにしていたので、ONにして穴開けする。

 

 CentOS7.9の記事の続き

   https://ameblo.jp/fc2miha/entry-12843730608.html

 

 

■SELINUXをONにする

 

su - root

 

vi /etc/selinux/config

ELINUX=enforcing
SELINUXTYPE=targeted

:wq

 

reboot

→SELINUXをONにすると起動が遅くなった

 

getenforce
→Enforcingになっている

 

■FWをONにして穴開け

 

systemctl enable firewalld


systemctl start firewalld


systemctl status firewalld

 

FWがONになる。この時点でasteriskはうまく動作できない

 

■FW穴開け

 

firewall-cmd --add-port=5060/udp --zone=public --permanent

 

firewall-cmd --reload

 

firewall-cmd --list-all

 

reboot