發表文章

文章總列表

微雪電子,PL2303 USB UART Board V2評測

圖片
緣起 上次寫了一篇 USB-TO-UART雜談 ,裡面提到我採購 微雪電子PL2303轉換板 。我也來評測3C用品吧 獨立的序號 Silicon Labs每條線都能單獨設定序號, 工具在網頁上任人下載 ,大氣啊!我手上三條設定1/2/3,在裝置管理員看得到,看起來是16bits 旺玖的PL2303工具,用裝置管理員看上去,每條都有獨立序號;好,有序號確實在windows亂插都不會亂長COM port DYBNB135B02 DBDCB116L16 旺玖的工具找不到 PL2303 datasheet ,PL2303GT OTPROM Writer utility program是存在的,AI工具說得一副可以下載(Google GEMINI),卻沒有。大概只有旺玖的客人有,沒能公開下載。不過如果PL2303真的是OTP(One Time Program),只能寫一次,有工具我也不敢用 這可能也反映實作差異,CP2102是embedded flash,PL2303大概是antifuse(反熔絲),不能反覆寫入 微雪PL2303 UART Board V2評測,機械結構 PCB自帶兩根柱子,插在筆電上能自立自強,是深思熟慮的設計 效能 ESP32-CAM下載,搬545868bytes的效能 460800, 13.6s 921600, 8.8s 2000000, 8s 4000000, 7.2s 首先PL2303可以跑上4Mbps(CP2102只能跑921600),可以用杜邦線;速度拉升並沒有顯著縮短時間,大概ESP32得解壓縮並寫入Flash,所以傳輸速率加快,時間還是差不多 務實的甜蜜點是921600,這個速度也不用擔心信號品質 缺點 PL2303G在Mac/Windows都沒內建driver,還得另外下載。不能無腦用,感覺差了點…… 結語 微雪這條線,有很好的機械支撐,性能穩定。我已經改用他了,非常滿意 他有機械的支撐,站得很穩 PL2303都有獨立序號,不會亂長COM PL2303能跑上4M,可以做高速logging

ESP32的HTTP server

圖片
緣起 ESP32C3有WIFI可以用,他的SDK裡面也自帶HTTP服務器,在裡頭架個網頁,瀏覽器就是單晶片的虛擬儀表。虛擬儀表能任意調整,增減元件,非常好用 顯示資訊,本來要OLED螢幕,現在有大片的瀏覽器 操作按鈕,本來要實體按鍵,在網頁放超連結,或輸入表單就有 HTTP通訊協定 Mozilla Developer Network 介紹HTTP非常清楚。瀏覽器和ESP32主要靠GET/POST兩大命令 GET GET /  抓index page,也就是首頁 GET /?led_op=2 抓index page,同時傳遞led_op=2(代表閃爍) GET /led_toggle 用某個講好的名字GET,連線到這裡就閃爍LED POST POST /led_post 用某個講好的名字,然後再傳遞led_op=2 "telnet"命令能和遠端主機連線,輸入會原封不動送給ESP32,回應也看得到。所以上述所有命令都用telnet實驗一輪,確定會動,換成瀏覽器也會有信心 HTTP通訊協定,標準的GET telnet連接板子的port 80;直接下GET命令,確實看到回應。綠色框框顯示虛擬儀表 HTTP通訊協定,標準的GET帶參數 模擬GET命令後面的路徑,後面接問號加key1=val1&key2=val2額外加上參數 get /? led_op=2  問號後面的代表設定led_op變數為2 我定義led_op=2代表toggle,亮燈變暗燈,暗燈變亮燈,下面範例能讓LED閃爍 因為是GET /,所以照樣顯示原本的頁面 HTTP通訊協定,GET /led_toggle 在ESP32韌體設定/led_toggle這個路徑,連進去韌體讓LED閃爍,並且通知瀏覽器導向回/ GET方式(上面三種)像寄出明信片,基本上都展現在GET後面的字串,可能是指向不同resource,或是加上?led_op=2傳遞額外參數 HTTP通訊協定,POST POST傳輸實況如下圖,大紅框是信封,信封帶上各種meta資料,裡面最重要的紀錄是"content-Length: 8"。然後小紅框才是信件內容把led_op=2八個字元。手敲整個HTTP header不大容易, 黑暗執行緒 的建議,從Chrome的後台直接複製一份來做實驗最快 ESP32收到HT...

ESP32開發環境,雜談

圖片
緣起 因為想學神經網路,做中學最快;我想紀錄曲柄的加速度和角速度,用神經網路判斷坐著或站著踩。這個應用顯然沒商業價值,感受一下神經網路的威力 Arduino NANO BLE 33 是很多EDGE AI都支援的開發版,資料標好丟 Edge Impulse 訓練神經網路,感受一下 不過BLE33插著USB記錄數據,可能線會被扯斷,這樣不行 我需要無線紀錄,ESP32C3我有10片,上頭有WIFI和SD卡,資料採集完存在裡面,再透過WIFI下載不是挺好的?來做吧;怎麼從NANO BLE 33拿到資料,後面再說吧 先前玩過的 ESP32C3我當一般MCU玩了一輪,結果無線傳輸我沒碰(笑) ESP32(10) CAN Logger功能驗收 ESP32(9) Low Power-2 ESP32(8) Low Power ESP32(7) 打通SD Card ESP32(6) CAN Transceiver 挑選心得 ESP32(5) 打通CAN Bus ESP32(4) ESP32-C3搭配Arduino ESP32(3) Visual Studio Code + PlatformIO開發環境 ESP32(2) ESP32-C開發板硬體簡介 ESP32(1) 閒聊 這次要玩的 用酷酷的AI工具輔助,在ESP32 SDK點亮WIFI,跑起HTTP SERVER很簡單(SDK都有) 開發工具閒聊 好,這次我應該用哪套開發工具?選擇不少 Arduino VSCODE + PlatformIO VSCODE + 樂鑫插件 樂鑫 Eclipse ENV Docker build environment Arduino 我打定主意用SDK,先排除Arduino VSCODE + PlatformIO PlatformIO運作正常,用起來很爽;他的Debugger就是該有的樣子 PlatformIO多封裝一層介面,包住SDK,用起來怪怪的反而難除錯,因為得同時看兩層;另外樂鑫並沒有 官方支持 ,我在這個層次有點疑慮 Anyway,因為上次用過,這次就決定不用了(我想試試看別的口味) VSCODE + 樂鑫插件 PlatformIO用起來真的舒服,樂鑫插件還是差了點,不過邏輯也算容易理解 C:\Espressif\SDK (SDK source code) C:\USER\[name...

USB-to-UART 轉換器,雜談

圖片
緣起 嵌入式開發,MCU一般會開UART port和外界打交道。一般會接顆USB-to-UART晶片。這種爛大街的晶片,也有些有趣的事能寫 爛掉的PL2303HXA 我想買幾條能上12Mhz的高速UART線,這個線給了我有趣的驚喜 歷代PL2303晶片集 解決上題的辦法 PL2303是台灣旺玖科技的產品,第一代2000上市應該很紅,人紅就有盜版IC!盜版貨用原廠driver,超不爽啦;這顆IC一共出了六代,初期的IC確定停止供貨後(代表市場上全部都是盜版IC),他們讓新版driver完全廢掉,裝置不能用! 這是很絕望的商業策略,盜版IC當場死一片;我上網查,社會大眾給旺玖的評價是:驅動品質不穩,我只能說這種焦土戰非常少見 WINDOWS COM PORT長不停 這種線在Windows體驗很爛,同一條線,插不同USB孔會長出不同COM PORT;常常得去裝置管理員看COM PORT編號。台灣的 萬平科技 的 說有辦法解決 ,他們有獨門秘方 我問AI工具,COM port為什麼長不停 Windows需要 每顆IC序號不同 ,才能辨識每一條線。在USB剛誕生的年代(1998),IC要儲存序號得外掛一顆EEPROM才作得到,這個會增加成本。如果沒序號,微軟只好用USB孔的位置區分這些線,於是同條線插不同孔長一堆COM port,體驗爛死了 旺玖PL2303GC(第六代)已經內建Embedded Flash,可以出廠後每顆刷不同序號;技術進步也把Crystal包進去,這顆長壽的IC還見證無鉛製程的轉換 台灣萬平科技可以幫客人跑燒錄軟體,幫每條線設定不同序號,讓使用體驗好很多。所以這件事也算是加值服務,給客人好的體驗 PL2303GC at 2026 在2026年要買這種線,我會推微雪 PL2303 USB UART Board V2 ,旺玖第六代IC,可以切換電壓3.3v/ 5v;如果jumper不接,中間的pin給他灌1.8v,UART位準就變成1.8v了!這種自由度簡直是UART-to-USB的神器。因為現在IC的電壓越來越低,外灌邏輯電壓的位準就很重要啦 CP2102 Silicon Labs CP2102也是常見的轉換器,這個IC crystal less比較難做,定價也高(賣得貴),比較沒有仿冒IC(一般挑量大的)。因為它幾乎沒仿冒品,Driver也常穩定,品質很可...

Lenovo T480s 改裝小紅點

圖片
緣起 最近研究Lenovo X1C筆電,發現小紅點竟然有改裝品,這篇介紹我買改裝品的心得 LKY SoftRim(我買這個) Lenovo X1C Gen13 開箱搭配改裝小紅點 三種小紅點介紹:Classic/ soft dome/ soft rim 自製softrim使用心得 LKY Softrim 專案首頁 日本製小紅點(這個之後再來買) 使用心得 購買網站 LKY SoftRim 自製小紅點一顆500元, 作者解釋 ,改裝件大幅提升體驗,不用再帶滑鼠,收費合情合理!我覺得貴,不過我賣 VOLVO+ 也是以用戶價值來定價。既然作者有自信,三個尺寸我都用得上,就各買一顆來體驗 Thinkpad T480s (SLP) Thinkpad X1C GEN7 (3mm) Trackpoint keyboard II  (LP) 改裝件裝上筆電 改裝件 vs. 原裝貨 使用心得 橡膠件用久會塌,施力範圍確實小一點;新的3D列印件非常有韌性;我剛用沒多久,但是應該很耐用。我期待會一次性的購買,不用再買 他的結構是一個凹洞,手指施力的面積大很多,確實更容易施力,移動流暢 用上改裝件後,小紅點使用頻率大幅提升!一句話:好用 結論 如果你也用ThinkPad,花500一次性提升小紅點效能,這個交易不會差,我試的結果也不錯。日本也有玩家做好來賣,價格漂亮許多。我這顆如果沒壞,大概也不會再去買一顆來折騰了 這顆改裝件換掉時,我會更新這篇文章,紀錄他是什麼時候壞

解析Garmin FIT file,計算累計里程和累計高度

圖片
緣起 以 東三塔規劃表 為例,大會有檢錄點,我們有休息點,把他們全部塞入試算表。要估算時間,得猜 平均速度 , 我的方法 簡述如下 距離 :絕對里程相減,簡單 爬升量 :累積爬升量相減, 麻煩 坡度 : 爬升量 / 距離 平均速度 : 平地速度 - 坡度 * K ,騎一趟觀霧可以估算 這篇要解決 累計爬升量 ,我想要有一份軌跡檔(FIT),計算出每公里的資訊 預期的產出 假如弄得到軌跡檔(比如我自己的FIT檔),我就能算出下表,這樣規劃路線就是查表而已 累積里程 海拔高度 累計爬升 經緯度 上表做圖,看得出蘇花公路120~200,爬升1000,可以用來分配體力,安排休息點 解析FIT檔案 Garmin FIT檔可以用 fitfileviewer 閱讀,“record”是單車碼表運作的依據,每一秒的經緯度,心律,功率,踏頻,高度,左右腳平衡,blah blah。這裡只需要 時間 經緯度 高度 不同廠商的碼表,紀錄邏輯也不同,寫軟體處理相容性問題,也是非常有趣 Garmin/ Wahoo:每秒紀錄 Bryton/ iGPSport:有變化才紀錄 假如上面的資訊完全沒誤差,計算每秒之間的移動距離,和爬升量,得到 delta_distance[n] delta_altitude[n] 累加上述參數,就有每秒鐘的絕對里程,累積爬升量。最後再查表,問題就解完了 累計距離=1km,經緯度,累計高度,海拔高度 累計距離=2km,經緯度,累計高度,海拔高度 處理誤差 真實世界感應器都有誤差, GPSVisualizer 提供兩個完美教學,解釋如何修正誤差 修正水平誤差 (Smoothing & Simplifying Tracks) 修正高度誤差 (Calculating elevation gains) 核心概念很簡單,水平和垂直處理的手法,基本上是一樣的 假設第0點是有效參考點pt[0] 計算distance(pt[1], pt[0]),小於5公尺,pt[1]當成雜訊丟掉 計算distance(pt[2], pt[0]),超過5公尺,pt[2]有效並當成新的參考點 計算distance(pt[3], pt[2]),... 得到里程表 所以FIT檔照以下順序處理,就有里程表 水平過濾 垂直過濾 剩下的點,計算累積距離,累計爬升,得到表格 {時間,里程,高度,累計爬升,經緯...

EXCEL好用的函數:LET,在公式裡宣告local variable

圖片
緣起 我覺得EXCEL大概有兩個使用情境,我的體感大概比例約99%:1% 用過即丟,隨便做一做 嚴肅的使用,算的結果得超級可靠 我的同溫層(工程師)普遍不信任EXCEL,需要可靠的情境,大家會問:為什麼不用Python。這代表現代工程師普遍會寫Python;在15年前可能有人想用Perl,當年我自學Python2,現在已經是Python3了 扯遠了,既然EXCEL就裝在那裡,如果稍微 多做一點 ,免費提高可靠度,不香嗎? (正在努力學習的貓吉) EXCEL二維查找 我解過兩次EXCEL二維查找,我們用這個來討論EXCEL維護問題 2021年 2025年 2025年版的最後公式如下,裡面的LET函數只要多做一點,就能大幅提升EXCEL可讀性 第一個版本 二維查找得呼叫5次EXCEL公式才能實作,寫成下面那樣,三個月就沒辦法維護了 INDEX()呼叫3次 XMATCH()呼叫2次 第二個版本 儲存格裡按ALT+ENTER適當把公式排版一下,分得出INDEX()幾個參數就能大幅提高可讀性。過了三個月也許得查一下INDEX()定義,不過這個版本我有信心維護 第三個版本 EXCEL如果能在公式裡加入註解,比如第二版改成下面這樣,可讀性就好很多;像EXCEL這種有悠久歷史(包袱重)的軟體,機率不高啊 INDEX(     /*tbl*/ C17:E19,     /*row_idx*/ XMATCH(...),     /*col_idx*/ XMATCH(...) ) 雖然不能加註解,微軟團隊還是提供了LET()函數,能用容易理解的方式編寫函數!我們能宣告區域變數row_idx/ col_idx,然後在最後的運算,用有意義的方式讓人理解。這樣閱讀時,能一個一個區塊研究,也能在隔壁儲存格實驗每個變數的意義 為了半年後我還記得,我寫這篇BLOG讓我記得LET()做什麼 第四個版本 最後一個版本就是 2025年的二維查找 ,公式放到NAME MANAGER,避免複製貼上 情境是這樣的 整欄儲存格,都要第三版公式,EXCEL拖一下就複製完公式 也許某次改了公式,公式一拉,某個儲存格漏掉了 有些儲存格是舊公式,有些是新公式,然後查問題找得懷疑人生 寫軟體有所謂的DRY原則(Don't Repeat Yourself),避免把某個...

EXCEL表格二維陣列查詢 2025

圖片
緣起 最近又要用 EXCEL表格做二維陣列存取 ,之前用VBA搭建,想試著不要寫CODE。在2025年問問AI有沒有更好的做法 GROK AI給我的回應 GROK AI回答唬爛的傾象嚴重,不過我猜,微軟應該是有收過這個抱怨(起碼我很不爽) GROK回答的第一句我完全認同。我很確定網路上的EXCEL教學都比我聰明,這些範例他們扛得住,我卻受不了... 受不了的人自己找出路 GROK AI給的解法 GROK雖然很會唬爛,但是下面步驟是真的可靠,確實可以用 這段code要貼在NAME MANAGER,我留著當筆記 =LAMBDA(tbl, row_key, col_key,     LET(         row_idx, XMATCH(row_key, INDEX(tbl,,1), 0),         col_idx, XMATCH(col_key, INDEX(tbl,1,), 0),         INDEX(tbl, row_idx, col_idx)     ) ) 測 試看看 先展示結果 用Get2D台積電股價,這個複雜度我受得了 用組合技查中華電信的資本額,嗯... 結語 2025年版比2021年舒服多了,以後我用EXCEL,都會先開這篇文章,加一下公式 這個解法比 2021年 使用VBA更好,開啟VBA經常會遇到安全性問題,這招不會

找出單車塔系列挑戰,所有休息時間;分析Garmin FIT file

圖片
緣起 上次東三塔 27H41M完賽 ,2026年手滑報名28H,只剩19分鐘緩衝,完賽邊緣!所以我得仔細爬梳2025年的資料,把事情規劃好 騎得快很難,體能弱很難立刻變強;優化休息時間倒是簡單很多。我問AI工具教我怎麼從Garmin FIT檔找出所有休息時間,經過一番努力,這篇文章介紹兩個方法 GoldenCheetah 軟體抓回來,餵Fit檔案就能畫圖;整個挖空的區域是停等,一目暸然 標出長休息點,台東都歷(30),睿豐門市(40)時間超乎預期。明年專心優化這裡吧 工程師,還是想掌控一切,自己寫script最對味 我還是想自己操作FIT檔,理由略過1000字。步驟和思路列在下面,下次可以抄 fitfileviewer.com 這個網站很好用,塞FIT file能轉出CSV檔,再用EXCEL分析;EXCEL技能點滿的同學可以在這裡停下(我不是);後面基本上所有分析,都是用這個網站做交叉比對 安裝 Python3 開發環境 只裝Python3,我不喜歡裝很大包的安裝包,簡潔一點 用venv安裝所有套件,創造虛擬目錄,和其他環境隔開 python3 -m venv bike_analysis // 創造出虛擬環境 cd bike_analysis // 切到虛擬環境目錄 source bin/activate // 啟用此虛擬環境 然後安裝需要的套件 pip3 install fitparse // fit 檔分析套件 pip3 install jupyter // jupyter 開發環境 pip3 install matplotlib // 做圖工具 啟動jupyter jupyter notebook jupyter notebook簡介 我很少用jupyter,基本上是為了這件事裝;不過我知道,他可以把Python的軟體切成一塊一塊的執行,反覆的操作。以我這次做實驗,效能會提高很多 下圖,首先我開了一個notebook叫Untitled,然後把fit檔拷貝到裡面去 第一個區塊,示範怎麼開檔。這裡有一個列印紀錄的函數,後面會反覆使用 第二個區塊,列出FIT檔裡所有的紀錄。這裡看得出FIT檔的資料是分門別類的 第三個區塊,我們來看file_id這個區塊資料;上方是FIT File Viewer印的資料,下方是Jupyter notebook印的。基本上是完全一樣的,...