docker

先執行
sudo nvidia-ctk runtime configure –runtime=docker
會產生
/etc/docker/daemon.json
然後在倒數第2行加入
},
“default-runtime”: “nvidia”
}
然後
sudo systemctl restart docker

國網vcs v100

最近要跑東西,用到沒有更新的硬體,v100也不知道支不支援
用docker最新目前25.11,不能用
看手冊,最多支援24.09
但是僅有pytorch
所以全部所需的要重裝
但是離開docker,會清空
所以要自製docker image
以24.09為基礎,將所需都灌入docker
訓練時,OK
推論時,要注意記憶體破碎化的問題
還要改程式,不然一樣會OOM
如果不懂,參照gpt流程
如果改用2張
要注意指令有不一樣

Jupyter Lab

原本只能本機使用,用這行指令,就可以外部使用
jupyter lab --ip 0.0.0.0 --port 8888 --allow-root

下載YT

有時做簡報需要嵌入YT影片,以往都是找網頁看哪一個可以下載
有時都限制解析度或看很多廣告,或者直接說不給下載
現在找到一個yt-dlp(https://github.com/yt-dlp/yt-dlp)
用cli的方式執行,但是直接下載是以webm格式
還須轉成mp4,它自帶轉換但就是花比較久時間
yt-dlp –recode-video mp4 https://www.youtube.com/watch?v=xxxxxxxxxxx
真的很方便

沖刷粒子

最近又在土炮沖刷粒子
這次使用adafruit rfm9x long range rf
頻率是走915MHz
其實以前就玩過了,只是目標是要做遠距離傳輸三軸的資料
這次應用在沖刷粒子上

接收端用pi zero2w + 發送端用pi pico
近端的傳輸跟接收都OK,缺點就是粒子的ID要如何去識別
在寫這篇的同時,剛好想到可以用unique id
只要在測試時記錄下來就好

下次可以試試看RYLR998 LoRa module by REYAX

ps:20250828,把發射端拿去外面看多少距離可行,
大概經過一半農田一半住宅區,直線距離442公尺,還收的到

ps:20250829,uid可行,但是有16碼,會有傳輸封包接收不良的問題
擷取後5碼,再加上前綴StLab,每5秒發送一次,可行
用5V供電的話,耗電不超過0.03A,肉眼平均0.021,有時會跳到0.026

pyOpenRiverCam

2年前用過,那時版本還是0.5.5
最近學生要用,又重新熟悉一下
目前版本0.8.8,但是一開始裝,跑都OK,但是流線箭頭出不來
從0.5.5一直試到0.8.6還可以展示流線箭頭
0.8.7和0.8.8都不行
所以還是用到0.8.6

控制繼電器程式

import RPi.GPIO as GPIO
import time
import sys

arg=sys.argv
RELAY_PIN = int(arg[1])
print("RELAY PIN:",RELAY_PIN)
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)

print("Power Off")
GPIO.output(RELAY_PIN, GPIO.HIGH)
time.sleep(2)
print("Power On")
GPIO.output(RELAY_PIN, GPIO.LOW)
time.sleep(2)
GPIO.cleanup()

命名為gpio_reboot.py
執行: python3 gpio_reboot.py 27
27就是控制線在pi上的gpio號碼

繼電器

繼電器,可以拿來控制儀器重開機的東西
目前使用DC版本,有5V和12V,2路和4路
後來才搞懂5V和12V的差異(或者之前就搞懂,太久忘了)
5V和12V的差異是輸入電源時電壓不同
跟使用負載的電壓沒相關

以控制設備的主控版raspberry pi zero2w為例
當我使用5V版本的時候
DC+ — 5V(主控版) DC- — GND(主控版) 控制線 — GPIO27
負載(12V)常開 com nc
這時候就可以控制負載開關機

當使用12V版本的時候
DC+ — 12V(外接DC) DC- — GND(外接DC) 控制線 — GPIO27
負載(12)常開 com nc
這時候,負載都不會有反應,一定要再接一條DC- —GND(主控版)
這時候才會有作動

透過以上操作,可以利用主控版對負載重開機
透過主控版每半小時會回傳IPv6網址到後端
就可以實現遠端重開機
但還是希望可以用ewelink的方式去實現

LSPIV

一開始有找到,RIVeR,剛開始是2.X版,主要是用matlab編譯,是可以把攝影機視角算出來的流速,轉換成平面的流速。探究裡面的流程,是搭配PIVLab這個程式,也是用matlab寫的。流程就是先用pivlab算出來的流速,經過river控制點設定,就可以算出平面流速。後來pivlab的版本比river內建的還要新,之後的做法都是開matlab,用pivlab去算存檔後,再用river去計算。

之後又找到pyOpenRiverCam,是用python寫的,做法都差不多,先設定控制點,確定ROI範圍,就可以計算平面流速,好處是,它可以用解算的圖片去畫平面的流速,river只能畫被拉伸後的圖片。

2年後,學生問如何用LSPIV,再進去看RIVER已經來到3.X版,已經不用matlab,應該是用python,但是可能因為功能太多,需要的輸入資料更多更複雜。而PIVLAB也還是用matlab,但是已經是編譯過的,不再需要用matlab去開,但還是要裝MCR這個大怪物。

最後測試完後,還是可以先用PIVLAB算流速,再用舊版的river去轉換流速。

儀器過熱

現在進入夏天,放在墩上的儀器早上10點,CPU就80度,然後就熱當了
但是路途遙遠,不能為了它而去重開機
很早之前就有想用繼電器,但是那時在現場的網路還是用實體IP
現在只有IP6才是實體
所以現在有2種作法

  1. 利用raspberry pi zero 2w + 繼電器,由pi回傳ipv6的位置,再登入去pi,再控制繼電器
  2. 買現有支援ewelink等iot設備之繼電器,就可以直接從手機控制