2024年5月30日木曜日

LGT8F328Pのシリアル通信でDfPlayerを操作

  以前、うまくいってなかった、arduino互換 LGT8F328Pのシリアル通信によるDfplayer操作に再度挑戦してみたら、今回はうまくいきました。音量をあまり大きくすると、電圧降下が起きるためか、不安定になるようなので、初期化で音量を下げるようにしています。DfplayerとつなぐPinは5,6にしたらうまくいくようです。スイッチはタッチセンサttp223を使用。LGT8F328Pはサイズが小さいのでコンパクトにまとめることができました。

 使い方は、一方のスイッチをOnにするたびに、フォルダを変更します。もう片方のスイッチをOnにするたびに、そのフォルダ内のファイルを順に再生します。なお、今回は01~05までのフォルダにしてみました。必要に応じて、スケッチの定数maxfを変更すれば、98までフォルダを増やせます。99のフォルダには001.mp3に「フォルダ1です」のように音声ファイルを入れておきます。フォルダ内のファイル名は先頭が0の3桁数字が必要です。多くの音声ファイルを手軽に再生するのに便利に使えそうです。 

 ただ、先頭に数字をつける作業があるので、ここは、.netでツールを作成してなるべく効率よくできるようにしているところです。

Pin接続とスケッチは以下のようにしてみました。

delay時間を調整したりしないと、各フォルダ内のファイル数の取得がうまくいかず、試行錯誤必要だった。まだ、完全でないところもあるかもしれません。


※追加機能として、内蔵LEDでカレントFile番号を光モールス信号で、電子ブザーでも出力する形式にしてみた。ChatGPTに必要な関数を聞いて、それを使ったところ、速攻で完成。
電子ブザーは、音量調整できるように可変抵抗とともに9番ピンに接続した。ディスプレイなしで手軽に扱えるようにしてみた。
※さらに、追加機能として、ファイルのタッチスイッチは長押しすると、ピッという音が何回か鳴るようにし、鳴った回数だけファイル番号を先に進めるようにした。これで、スムーズにファイル番号を先に進められるようになった。使っているうちに、いろいろアイデアが出てくるが、それを簡単にコードに反映できるのが、arduinoの利点。
※フォルダ切り替えスイッチを長押し(ピッピッが3回以上)すると、連続再生できるようにした。必要なmp3音声ファイルは、コード内にコメントを入れました。

2024年5月29日水曜日

LGT8F328 の設定

 arduino互換機のLGT8F328Pを久しぶりに使おうとしたら、必要なドライバの入れ方を忘れてしまう。調べた結果
 環境設定の 追加のボードマネージャのURL欄に 
 https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
を入れるとボードマネージャで 「lgt8f」で検索して見つけることができた。
安価な互換機ということで、何かと使うための事前準備は多いようだ。

2024年5月28日火曜日

初歩的ミス arduinoのシリアルを認識しない問題

  てっきり、PCのアップデートの影響でもあったのかと思った。USBでのシリアル通信がまったくだめで、USBを認識さえしない。それで、arduinoが使えないという問題が起きた。ネットで対処方法調べたりしたが、試行錯誤しても結局わからず。

 諦めかけていたところ、風呂につかりながら、ふと思いついた。USBケーブルにも種類があるということに。最近は、充電専用で通信の配線がされていないUSBケーブルも多い。ひょっとしてそれでないかと、試してみたら、やっぱりそうだった。通信用だとちゃんと接続できた。初歩的ミスだけれど、ネットで検索しても、ケーブルに原因ありますとは、出てこない。こういったことへの対処能力は、経験を積むしかないということかもしれない。

2024年5月24日金曜日

初代raspi 音声出力  備忘録

 初代raspiを使わずしまい込んでいたが、プレーヤーとして使えないかと思い試してみた。 ステレオ端子につないだが、最初音がでない。alsamixerコマンドで F6:select sound cardというところで、bcm2835 headphoneを選ぶとよかった このコマンドで音量も調整できる。  これに、アンプ、スピーカでもつなげば即席のプレーヤとして使えそうだ。 Lanにつないで、音声データや設定などちょっとしたこともSSHやsambaで変更できるので、意外と便利かもしれない。 通常のプレーヤーだと、SDカードの抜き差しなど必要だけど、ネットワークからいろいろできれば楽だろうと思う。
 
 raspiのOSをアップデートしていたら、Ipアドレスの固定がこれまでの方法でできなくなっていた。dhcpcd.confがなくなってできない。nmtuiというコマンドで、設定できた。

 SSHは、raspi-configでの設定変更をしないと使えなかった。

 あとで、GPIOの動作も確認したが、うまく入力(スイッチ操作)が反応しないものもあった。ハードの故障?か、それても何かの設定ミスか。GPIOの18番をPULL_UP設定で使ってみたら、ここは反応があった。TTP223(raspiの3.3V出力につないで使うとちょうど電圧もあうようだった。抵抗など追加不要。)などのタッチセンサも、つないで試してみた。うまく反応してくれるので、いろいろ使えそうだ。

 sambaも、状況によっては、設定が必要な場合もある。今回の設定は以下の通り。
sudo apt update
sudo apt install samba
sudo adduser pi
smb.confの設定:
[pi]
    path = /hoge/pi
    browseable = yes
    writable = yes
    guest ok = yes
    guest only = yes
    create mode = 0777
    directory mode = 0777
    force user = pi
smb.conファイルが正常であるかのテスト:
testparm
sudo smbpasswd -a hoge_usr
 2回パスワードを聞かれます。
sudo systemctl restart smbd

2024年5月22日水曜日

MLAでFirst QSO

  このところ、デリンジャー現象で、HFのコンディションが今一つだったが、夕方は少し開けるようなので、ずっとできないでいた自作MLAの実験を行った。7MHzでQSOできた。自作バリコンも、ある程度出力を上げても耐えることができた。

 VNAを見ながら、リモートでバリコンを操作してアンテナの調整を行う。ESP32もWebカメラによる監視用とステッピングモーター用と同時使用も問題なくできた(自宅からのWIFIが届く範囲内なので)。相手局はよく聞こえても、こちらのレポートは55ということで、それほど送信時の利得はよくないものの、1m高のコンパクトなアンテナで、このぐらい使えればいいのでないかと思う。

 写真のように、三脚にリモート操作できるバリコンのBoxと容量追加用の同軸ケーブル(8D2V)を接続している。

2024年5月20日月曜日

vmwareの音がでないときの対処方法

 vmware playerがなぜか音がでなくなってしまう。

VMXファイルを見て、以下の設定がすべてあるか確認した。足りないものを追加したら、解決した。(以下の中の.virtualDevと.autodetectがなかったので、追加した。)

sound.present = "TRUE"
sound.virtualDev = "hdaudio"
sound.fileName = "-1"
sound.autodetect = "TRUE"


2024年5月9日木曜日

エアコンの掃除

  暑くならないうちにということで、エアコンのカビ取り作業を行う。以前は、分解せずに手の届く範囲で掃除していたが、昨年の夏の終わりごろにはアレルギー症状?も出てきた気がするので、今年は思い切ってある程度分解してみた。

 エアコンで一番汚れるのは、シロッコファン、ドレンパンとシロッコファンの奥の面のようだ。熱交換器フィンは、意外ときれいなので、掃除不要だった。ドレンパンとシロッコファンを取り外して、カビ取り剤を付けながら洗浄。シロッコファンは、使い古しの歯ブラシを短く切りそろえると、べっとりついたカビを落とすのにちょうどよかった。シロッコファンを取り出す際に、熱交換器の銅管を外すのはさすがに難度が高いので、すきまから取り出すようにした。その際、銅管にストレスがかかるとあまりよくないらしいが、今のところ、問題なく動作しているようだ。

2024年5月8日水曜日

C# GridViewの新規データ追加の方法について

  GridViewに新規にデータ追加する方法は、よく使う機能でありながら、ネット上で参考例を見つけられなかったので、試行錯誤しながら実装してみた。


 private void dataGridView5_CellEndEdit(object sender, DataGridViewCellEventArgs e)
Class1 sm = new Class1(cstring, this);
sm.gvUpdate(e);
ssmFlg = true; //trueのときLeaveイベントでGridViewの更新等を行うため利用(本ブログ内の「ChatGPTも気づけなかったバグ」という投稿を参照)
}


Class1側:
 public void gvUpdate(DataGridViewCellEventArgs e)
 {
         if (fm1.dataGridView5.Rows[e.RowIndex].Cells[0].Value != null)
         { //1列目に番号があれば、Update
             int editedRowIndex = int.Parse(fm1.dataGridView5.Rows[e.RowIndex].Cells[0].Value.ToString());
             int editedColumnIndex = e.ColumnIndex;
             object editedCellValue = fm1.dataGridView5.Rows[e.RowIndex].Cells[editedColumnIndex].Value;
             UpdateDatabaseWithCellEdit(editedRowIndex, editedColumnIndex, editedCellValue);//database 更新
         }
         else
         {//1列目に番号がなく、すべての列のデータが入力済みならInsert
             if(fm1.dataGridView5.Rows[e.RowIndex].Cells[1].Value!=null && fm1.dataGridView5.Rows[e.RowIndex].Cells[2].Value != null)
             {
                 InsertDb(fm1.dataGridView5.Rows[e.RowIndex]);  //2つのデータ入力終わったら追加
             }
         }
}


public void InsertDb(DataGridViewRow row)
{
    using (var connection = new SQLiteConnection(cst))
    {
        connection.Open();
        biko = row.Cells[1].Value.ToString();
        yomi= row.Cells[2].Value.ToString();
        var sql = "INSERT INTO Biko (biko,yomi) VALUES('" + biko + "','" + yomi + "')";
        using (var command = new SQLiteCommand(sql, connection))
        {
            command.ExecuteNonQuery();
        }
        connection.Close();
    }
}


2024年5月3日金曜日

esp32でステッピングモーター操作 ~電源がポイント~

 まだ、カメラサーバーのほうはうまく動作してないが、ステッピングモーターの動作は、コードを多少改善(サーバからのレスポンスも処理するように)したので、だいぶ安定してきた。


※いろいろ試したが、WIFIで、ストリーミングとステッピングモータの並行操作はあまり調子がよくない。
※そこで、これまで1.2V×4本の充電池を使ってきたが、試しに5Vのモバイルバッテリーを使ってみる。少し古くなったせいか(といっても、まだ1年ぐらいだが)接触不良っぽい。接点復活剤を使ったら、回復した。
 これだと、容量が十分なようで、安定している。カメラサーバーも、途切れることは少なくなった。どうやら、不安定さに電源が関係していたようだ。モーター、カメラ、Webサーバと消費電力もけっこう大きくなっていたため、電源容量が不足していると不安定になったのだと思われる。

2024年5月2日木曜日

ESP32で、ステッピングモーターとカメラ同時使用 うまくいかない

  MLA用のリモート操作バリコンの製作をしばらくぶりに再開してみた。が、ESP32をステッピングモーター用とカメラ用と2つ同時使用を試してみたがうまくいかない。最初は、カメラが動作しているのを確認できたが、ステッピングモータを操作し始めると、カメラがフリーズしてしまう。動画の通信がいったん途切れると復活しないのはなぜか?。もう少し、調整が必要なようです。とりあえず、動作監視なしでの、バリコンだけは操作できそうですが。

手前が、ダイソーのケースにESP32とバリコンをおさめたもの。
後方のPCで、操作を試しているところ。
※ その後、javascript関連にエラーはないことが確認できたので、カメラサーバのほうの仕様?の可能性もあると思い、とりあえず、モーター操作開始と同時に、IFrameをOffにし、必要に応じて、On(画面にボタン追加)できるようにした。