日々の記録

ほどよく書いてきます。

ESP32-S3-Matrix

2025-02-22 22:52:50 | マイコン

気になるマイコンボードを買ってみた。LEDマトリックスがついていてちょっとしたマトリックス表示が簡単にできそうである。

WaveshareのESP32-S3-Matrixというボード。小さいマイコンだが、32bitの240MHzという計算能力。俺が中学生のとき、25MHzとかのCPUでWin3.1だったかWin95だったかが動いていた気がする。

背面にLEDが8x8の64個搭載されていてこれをマトリックスLEDとして利用可能である。

 

通電するとLEDが全部点灯し、1つのみの点灯になると内部の加速度センサーを使って光るLEDが傾斜によって移動するというちょっとおもしろいプログラムが事前に書き込まれている。

 

 

ちょっと気になるのはWiFi Bluetooth機能を持っているっぽいのだが、アンテナっぽい配線はないんだよな。気になる。
→追記、アンテナはpin1から出ているっぽくて、追いかけるとwaveshareというロゴの近くの赤いC3というものがアンテナっぽい。

 くそう、技適ないから使えない。。。

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Ubuntuでrarファイルをzipファイルに変換する

2025-02-08 15:15:24 | その他雑記

こちらも生成AIで作った。ファイル名を_rar2zip.shとかにしておいて、bash _rar2zip.shで実行するとフォルダ内のrarファイルをzipにしてくれる。入れ子のrarもzipにできる。はず。圧縮率は    (cd "$TMP_DIR" && zip -r -0 "../${base_name}.zip" .) の部分の-0で調整できる

 

#!/bin/bash

TMP_DIR="tmp"

if ! command -v unrar &>/dev/null || ! command -v zip &>/dev/null; then
    echo "エラー: unrar または zip がインストールされていません。"
    exit 1
fi

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

for rar_file in "$SCRIPT_DIR"/*.rar; do
    [ -f "$rar_file" ] || continue  

    base_name=$(basename "$rar_file" .rar)
    
    echo "処理中: $rar_file"

    rm -rf "$TMP_DIR"
    mkdir -p "$TMP_DIR"

    unrar x -y "$rar_file" "$TMP_DIR/"

    function convert_rar_to_zip {
        local dir="$1"
        find "$dir" -type f -name "*.rar" | while read -r inner_rar; do
            inner_base=$(basename "$inner_rar" .rar)
            inner_dir="${inner_rar}_extracted"
            
            mkdir -p "$inner_dir"
            echo "  - 内部RAR展開: $inner_rar"
            unrar x -y "$inner_rar" "$inner_dir/"

            echo "  - 内部RARをZIP化: ${inner_base}.zip"
            (cd "$inner_dir" && zip -r -0 "../${inner_base}.zip" .)
            rm -rf "$inner_dir"
            rm -f "$inner_rar"
        done
    }

    convert_rar_to_zip "$TMP_DIR"

    echo "ZIPに圧縮中: ${base_name}.zip"
    # tmpフォルダ内のファイルだけを圧縮(tmpフォルダ自体は含まれない)
    (cd "$TMP_DIR" && zip -r -0 "../${base_name}.zip" .)

    rm -rf "$TMP_DIR"

    echo "完了: ${base_name}.zip"
done

echo "すべてのRARファイルの変換が完了しました!"
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

メモ マウス、キーボードなりすましマシン

2025-02-04 08:57:21 | その他雑記

Arduino IDEでRP2040Zeroに書き込んでキーボードマウスになりすます。
マウスポインタを原点に持っていく方法がないので、移動を繰り返して原点っぽいところまで持っていく作戦。

 

 

#include
#include
#include

#define LED_PIN 16
Adafruit_NeoPixel pixels(1, LED_PIN);

int responseDelay = 200;
int maxMove = 63;      // 1回の移動量の最大値
int movingStep = 5;

void setup() {
  Mouse.begin(); // Mouse mode start
  Keyboard.begin();
  pixels.begin();
  pixels.setPixelColor(0, 255, 0, 0);
  pixels.show(); 
  delay(1000);
  pixels.setPixelColor(0, 0, 255, 0);
  pixels.show();
  delay(1000);

}
void loop() {

  // 初期マウス移動ループ
  for (int i = 0; i < 300; i++) {
    pixels.setPixelColor(0, 0, 0, 255);
    pixels.show();
    Mouse.move(-10, -10, 0);
    delay(10); // 移動間隔調整
  }
  for (int i = 0; i < 10; i++) {
    Mouse.move(-1, -1, 0);
    pixels.setPixelColor(0, 0, 0, 64);
    pixels.show();
    delay(10); // 移動間隔調整
  }
 

      // 座標 1045, 962 をクリック
    moveWithLimit(1045, 962);
    Mouse.click();
    pixels.setPixelColor(0, 64, 0, 0);
    pixels.show();
    delay(responseDelay);

    // 下矢印キーを押す
    Keyboard.press(KEY_DOWN_ARROW);
    Keyboard.release(KEY_DOWN_ARROW);

    pixels.setPixelColor(0, 0, 64, 0);
    pixels.show();
    delay(responseDelay);

    // 座標 543, 833 をクリック
    moveWithLimit(543 - 1045, 833 - 962);// 相対移動
    Mouse.click();
    pixels.setPixelColor(0, 0, 0, 64);
    pixels.show();
    delay(responseDelay);

    // 下矢印キーを押す
    Keyboard.press(KEY_DOWN_ARROW);
    Keyboard.release(KEY_DOWN_ARROW);
    delay(responseDelay);

    // エンターキーを押す
    Keyboard.press(KEY_RETURN);
    Keyboard.release(KEY_RETURN);
    delay(responseDelay);

    pixels.setPixelColor(0, 64, 64, 64);
    pixels.show();  
}

// 移動量を制限する関数
void moveWithLimit(int dx, int dy) {
  while (abs(dx) > 0 || abs(dy) > 0) {
    int moveX = constrain(dx, -maxMove, maxMove);
    int moveY = constrain(dy, -maxMove, maxMove);
    Mouse.move(moveX, moveY, 0);
    dx -= moveX;
    dy -= moveY;
    
    delay(10); // 移動間隔調整
  }
}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

生成AIの活用

2025-02-02 17:26:14 | その他雑記

最近OpenAIのChatGPTや、Google Geminiなどが流行っているが、使いどころによっては結構便利である。

例えば何らかのスクリプトを作らせたいときには、こんなことをしたい、というと作ってくれる。

数時間測定しっぱなしの測定装置のスクリーンショットをとりまくるとかをPowerShellで作ってくれとか、

Windows10のpowershellで、スクリーンショットを10秒ごとに保存したいです。

C:\temp\screenshots\

というフォルダに、yyyymmddhhmmss.pngという形式で保存するスクリプトを作ってください。

 

と投げればある程度作ってくれる。Geminiはこんなアウトプットをしてくくれる。

# スクリーンショットの保存先フォルダ
$outputDir = "C:\temp\screenshots"

# フォルダが存在しない場合は作成する
if (!(Test-Path $outputDir)) {
  New-Item -ItemType Directory -Path $outputDir | Out-Null
}

# 10秒ごとにスクリーンショットを保存するループ
while ($true) {
  # ファイル名生成 (yyyymmddhhmmss.png 形式)
  $fileName = (Get-Date -Format yyyymmddhhmmss) + ".png"
  $filePath = Join-Path -Path $outputDir -ChildPath $fileName

  # スクリーンショット取得
  $screen = [System.Windows.Forms.Screen]::PrimaryScreen
  $bitmap = New-Object System.Drawing.Bitmap -ArgumentList $screen.Bounds.Width, $screen.Bounds.Height
  $graphics = [System.Drawing.Graphics]::FromImage($bitmap)
  $graphics.CopyFromScreen(0, 0, 0, 0, $screen.Bounds.Size)

  # スクリーンショット保存
  $bitmap.Save($filePath, [System.Drawing.Imaging.ImageFormat]::Png)

  # 10秒待機
  Start-Sleep -Seconds 10
}

いま、Ubuntuなので、動くかわからないけどw

 

 

Ubuntuの場合、左右2画面にしておいて、スクリーンショットをとって左右分割してそれぞれの画像にとかも結構かんたんに作ってくれる。

#!/bin/sh

# 一時ディレクトリを作成
mkdir a
mkdir b

# mogrifyコマンドを実行
for image in *.png; do
  width=$(convert "$image" -format "%w" info:)
  height=$(convert "$image" -format "%h" info:)

  left_width=$((width / 2))
  right_width=$((width - left_width))

  # ファイル名、幅、高さを出力
  echo "Image: $image, Width: $width, Height: $height"

  mogrify -crop "${left_width}x${height}+0+0" -path 'b' "$image"
  mogrify -crop "${right_width}x${height}+${left_width}+0" -path 'a' "$image"
done

# ファイル名変更
rename 's/.jpg/a.png/' a/*.png
rename 's/.jpg/b.png/' b/*.png

 

ちょっとこんなことを自動化したいな、といったことについては結構かんたんにやってくれるので、便利である。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ICP-OESによる有機溶媒測定

2025-02-02 14:54:12 | その他雑記

プラズマに有機溶媒を入れると、炭素(2原子炭素)からの発光が目立って邪魔になってくる。

誰か詳しい人がいるだろうと思って調べていると、スワンバンドといって、炭素を多く含む星が光るスペクトルと同じであろうと気がついた。彗星が緑に光るのもどうやらこのカーボンの由来のようだ。

https://en.wikipedia.org/wiki/Swan_band

で、これは測定の邪魔なので、なくベル減らしたいが、酸素をちょっと入れるくらいしか方法がない。

 

酸素をガスとして導入するのが、他の方法で酸素を導入するのがいいのかどっちが楽かな。液体由来の酸素(例えば硝酸など)も考えたけど、ガスで導入したら導入量の100%がプラズマに入るので、こっちのほうが効率がいいかもしれないな。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

メモ ICP-OESの測定波長範囲

2025-01-25 11:31:13 | その他雑記

マルチタイプのICP-OESの測定できる波長の範囲。AnalitikJenaのICPは波長範囲が広い。900nmまで取れるのは良い

メーカー   λmin[nm] λmax[nm]
Agilent 5800 167 785
AnalitikJena PlasmaQuant 9100 160 900
Shimadzu ICPE9800 167 800
ThermoFisher iCAP 167 852
Spectro ARCOS 130 770
Spectro GREEN 165 770
Spectro GENESIS 175 770
PerkinElmer Avio5x0max 163 752

 

シーケンシャルタイプでは次のものがある。シーケンシャルで900nmまで測定できるのはPerkinElmerのAvio220Maxだけのようだ。

メーカー 製品名 λmin[nm] λmax[nm]
PerkinElmer Avio220Max 165 900
HORIBA Ultima Expert 120 800
GBC Scientific Equipment  Quantima 160 800
GBC Scientific Equipment Integra 6000 160 800
Hitachi High Technologies PS3520UVDDⅡ 130 850
Hitachi High Technologies PS7800 175 800

 

800から900nmにどんな発光線があってどの程度の感度があるのかはあまり詳しくないが、その領域で測定しやすいものがあると測定も便利になるのかもしれない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ノートPCを購入しようかと

2025-01-05 16:22:19 | その他雑記

随分前から新しいPCを買おうと思いつつ今に至る。デスクトップ機はもう3年ほどホコリをかぶっている。現在使っているPCはVAIO VPCEH39FJにUbuntuをいれてまだ使っているが、画面解像度が1366x768と正直小さい。

https://kakaku.com/item/J0000003461/spec/?lid=spec_anchorlink_details#tab

 

メモリ8GBでSSD1.0TBでそれほど苦労はないが、画面が小さいのが作業性が悪い。Office系のソフトはLibreOfficeよりはやはりMicrosoft Officeのほうが良さそうなので、Windows環境がいいだろうなあ。

安くて良さそうだなと思っているのは、吉田製作所のYouTubeで紹介された、ThinkPad E14のシリーズ。E16の画面に高解像度なものが選べる。

https://kakaku.com/item/K0001621103/

AMD Ryzen 7 7735HS 3.2GHz/8コア
メモリ:32GB
ストレージ:1TB SSD

で11万円ほどからなので、良いのではないだろうか。ディスプレイに2560x1600の高解像度液晶が選べるのが良い。会社では2560x1440サイズのディスプレイ(ただし、24インチ)をつかっていて結構便利なので同じような解像度でいいかなと思っている。

 

さて、高解像度画面(実は赤外線カメラの顔認証がついてくるっぽい)と、バックライトキーボード(使うかわからんけど+1100円)と、指紋認証電源ボタン(+1100円)と、容量アップのバッテリー57Wh(+2200円)をつけた。

指紋認証は顔認証と重複するからなんとも言えないけど、まあ、いっか。

 

Microsoft Officeは2024年からHomeエディションにPowerPointが追加されたのでHome&Businessのものは必要なく、Homeでいいのだが、選べない。

 

  Home Home & Business
Word
Excel
PowerPoint
Outlook ×
Op価格
MS価格
AppleStore価格
-
¥34,480
¥29,800
¥35,200
¥43,980
¥43,800

なぜか、アップルのほうが安いという疑問がある。アップルストアのものも、Windows PC/Macとなっているので、どっちでもいけるはず。

さて、lenovoの店で買った場合とHomeを一番安く買った場合の差額は5400円、Outlookてそんなに使うかな。会社ではメールにスケジュール管理はOutlookだがはてどこまで必要だろうか。。。。

 

と悶々と日々を過ごしながら、まだ買わないでいる・・・

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

鉛電池その後

2025-01-05 11:58:36 | 

鉛電池完全放電させてしまったが、その後はなんとかエンジンもかかるしなんとかなっている状態。

スターターが少し重いような気がするけど、何だろう。気のせいだろうか?内部抵抗測定みたいなことしてみようかな。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

鉛電池放電

2024-12-28 20:42:32 | 

やってしまった、車のバッテリー放電。

ルームランプで放電させたので、0Vまできれいサッパリ放電しきってしまった。

 

ふと思い立って、ポータブルバッテリー、240Whのもの、12V 10Aの出力があったので接続してみたら、定電圧制御なのか、過電流で落ちる。だめだ。

こんなこともあろうかと、前回バッテリー完全放電したときにバッテリ交換した電池を手元においてあったので、それを接続してみる。ブースターケーブルもあったので、とりあえず、鉛電池→鉛電池直結で様子を見る。10分程度待機してセルを回そうとすると、「キュル、シーン」。さすがディーゼルは辛い。

鉛電池を接続したまま放置すること4時間。セルが回ってエンジンスタートが無事にできました。でも不安なのでドライブに行きたいが、子供の世話が必要なので出かけられない・・・

ここで、完全放電で使えなかったポータブルバッテリーの出番。接続して充電しておきます。

 

レスキューに使った鉛電池も放電したであろうから、こちらにも充電します。いつもは電源装置で充電しますが、今回は友人から以前もらったHyperion EOS 5iというリチウムポリマー充電器の鉛電池充電モードで充電しました。充電電流は設定可能な最大値の5A。しばらく放置して気がついたら充電完了になっていて一安心。

この充電器はDC12Vの入力で動くので、これで車に充電したらいいじゃないかとなりまして、充電してみました。

一回目は240Whの電池を使い切ってすっからかんになったので、一体どれくらい充電したのかわかりませんでしたが、まあ普通にセルも回るしエンジンも始動できるので良い。

 

 

そんな年末の騒動でした。鉛電池は完全放電すると内部抵抗上がりそうで怖いよね。後で調べてみよう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ICP-OESによる有機溶媒測定 ナトリウム

2024-11-26 22:30:40 | その他雑記

カリウムはまだ良いのだが、有機溶媒ベースでナトリウム測定をすると傾斜部分にちょっと出てくるのでピークといった識別が難しい場合がある。ピークはピークなのですが、場所が悪いですね。

 

 

 

 

各濃度のものからBlankを引き算するとそれらしいピークとして認識できるようになります。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ICP-OESによる有機溶媒測定 カリウム

2024-11-26 22:11:12 | その他雑記

ICP-OESという装置で測定した結果の一例。水溶液ではなくて有機物をベースにした液体の測定では可視光でバックグラウンドが増大するので、ピークが識別しにくくなる場合がある。

下記はカリウムの測定例だが、持ち上がったバックグラウンドの中に766.490nmのK発光が見て取れるが、相対的に小さな信号のように見える。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

肺炎からの肋軟骨炎

2024-11-14 00:04:27 | その他雑記

私が咳を始めたのは10/9のことだった。思い返せばもう一ヶ月になる。

子供がケホケホ言い始めたのがきっかけだったように思う。

10月後半、子供の咳が良くなったが、私の咳が良くならない。

内科に言ってみると、レントゲン撮っておきましょう。おや、コレは肺炎になってますね。

 

抗生物質を処方され、これ下痢になるからこちらも(抗生物質耐性のある乳酸菌っぽい錠剤)。
そして、咳止めとタン切れをよくする薬かな。諸々もらった。

一週間後、継続的な苦しさや激しい咳込みは抑えられている状態だが、時々咳き込む。
きつく咳き込んだときに胸に違和感を感じ、それがどんどん強くなって、痛みになり結構きつい。

最初の通院から翌週、再度病院にいって胸が痛い、きついといったら、咳をしすぎて肋骨折れたり軟骨傷んだりするからねーと。その時運悪くロキソニンを飲んでいたので、それほど痛みがきつくなかったのだが、その痛みはずっと継続する・・・。咳止めと気管支拡張の薬をお代わり。

鈍痛に苛まれつつ、足首を剥離骨折したときのロキソニン湿布があることを思い出し、貼ると楽になる。ただ、咳き込むと相当な痛みがあるので、咳をしないようにコホーコホーみたいな息になる。

 

胸が痛いのをかばってか姿勢がわるいのだろう、背中がめちゃくちゃ凝る。

 

早く良くなってくれと思いつつも仕事が片付かないので休むわけにもいかず、微妙なところ。

健康面では今が踏ん張りどころか。

コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

肺炎

2024-11-07 00:29:57 | その他雑記

しばらく咳が続いたが、咳き込み始めて一週間、子供といった病院では、まあそれくらいの咳継続は普通なので様子を見てねと。

そして、咳き込み始めて2週間目、流石になにかおかしいとおもって内科へ。レントゲン撮影で、あれ、肺に白く写っているところがあるから、肺炎じゃないか?ってなり、抗生物質や咳止め、たん切れの薬をもらって一週間。

内科に行って一週間して通院したら、肺炎の影はなくなっており、回復過程にあるとのこと。咳が止まらないので、咳止めを追加で処方してもらい様子見。

から更に一週間、そろそろ咳がはじまって1ヶ月になるが、咳が止まらない。ちょっと良くなってきていて咳止めを飲み忘れるとゲホゲホゲホゲホ・・・・

 

肺炎まで到達すると長引くな。困った困った。かといって新しい装置が入ってきていろいろ試したいこともあるのでなかなか会社も休めない。苦しい状況にある。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ICP-OESによる有機溶媒測定

2024-10-08 00:05:11 | その他雑記

ICP-OESというと、硝酸など水ベースでの測定がメインである。

しかし、エンジンオイル中に分散される金属粉(摩耗分)などを見るために、オイルの測定が必要になるケースも存在する。

例えば、オイル中の金属を見ようと思うと、通常はオイルを酸分解(例えば硝酸と過酸化水素を加えて煮る)して、水溶液化してから測定といった手法がある。しかし、可燃物に酸化剤を混ぜるのでちょっと危ないし、希釈されるので感度も低下する。

じゃあ、オイルをそのまま測定しようじゃないか。と思うが、オイルは粘土が高いのでうまくいかない。このため、キシリレンで希釈して粘性を下げてネブライザで霧にし、ICP−OESするが、キシレンが劇物に該当する薬品なのでやりにくい。

最近、ケロシンで希釈してICP-OES測定できるらしいので、色々やっている。問題があるとすると
・プラズマ中の煤によるバックグラウンドの増大(煤が黒体放射で光るので、広い波長でバックグラウンドが上がる)
・有機物由来の煤がインジェクタに堆積して障害となる(伝導体なので、プラズマインピーダンスに影響する)

酸素を導入してみたりするが、煤発生領域をインジェクタの先端から遠ざけるのが良さそうなので、補助ガス流量を増大してみるのが良さそう。

PerkinElmerの英語の資料によると、インジェクタとプラズマは2mm程度離れるくらいの補助ガスが良いと書かれてもいる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ステッピングモーターの出力

2024-10-06 09:27:26 | その他雑記

メモであるが、ASX-280のXYテーブル駆動用のステッピングモーターの出力を調べないと行けない。出力40W以上のモーターで駆動される装置はちゃんとした保護枠などが必要らしいので。

ステッピングモーターは消費電力からパワー計算出来ないので、モーターのスペックシートを見て、トルクカーブから出力を計算してみた。

最大でも15Wくらいなので、問題ないな。

 

https://www.linengineering.com/products/stepper-motors/hybrid-stepper-motors/4118-series/4118S-04P

rpm Nm Power(W)
100 0.258 2.70
200 0.256 5.36
300 0.251 7.88
400 0.245 10.26
500 0.2365 12.38
600 0.2232 14.02
700 0.2 14.66
800 0.17 14.24
900 0.145 13.66
1000 0.127 13.30
1100 0.113 13.02
1200 0.102 12.82
1300 0.096 13.07
1400 0.093 13.63
1500 0.088 13.82

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする