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(画面にボタン追加)できるようにした。