發表文章

目前顯示的是 2026的文章

文章總列表

ESP32做汽車封包紀錄器

圖片
緣起 我手邊的CAN Bus工具很難用,做實驗很痛苦;我想根本解決一些問題 遠端分析:去地下室分析得餵蚊子,我想在家裡幹活兒 容易操作:操作Linux連我都嫌麻煩,我想點web網頁 常駐車上:樹莓派的耗電太高,MCU能達成uA等級待機耗電 萬丈高樓平地起,先用ESP32可以上車紀錄數據,後面還有很多事能做 硬體設計 藍色電路板是ESP32C3開發版,跳線接綠色電路板CAN收發晶片;背面放Micro-SD卡插座,加上OBD2接頭,硬體原型就做好了。電源暫時用USB-C,之後再考慮從OBD2拉電 CAN BUS ESP32的CAN bus 我搞過,CAN封包導入 資料紀錄器 ,很快就能錄數據,以及轉檔。讓樹梅派用極速送出50000個封包,數值遞增,確定沒掉任何封包,紀錄器就搞定了 上車實驗 把ESP32板子上車紀錄,照影片按遙控器,按兩下鎖定,等一下,再按兩下鎖定。我們要在汽車網路上找到關鍵封包 VOLVO車的封包格式長下圖,VOLVO沒公開定義,我也看不懂 逆向工程來找吧,上圖can1 xxx 三個數值是ID,可以看成是資料分類。最早用EXCEL分析 把上圖導入EXCEL,照ID分類,找出unique封包,並且計算出現幾次 我們按遙控器四下,找出所有出現4次的封包 然後用Linux的candump錄下封包,搭配grep肉眼仔細觀察 上述流程後來變成自製工具,把Log塞入網頁,為每個ID繪圖 畫出一堆圖,下面這個圖四個點不就對上遙控器手勢?AI說這招是 資料指紋化 ,不關心意義,只關心 資料變了嗎 ,以及 變成哪種狀態 實際狀態 實際做實驗還是得吃苦的,掙扎一個小時沒錄出來; 先鎖車 再實驗呢?到車外餵蚊子,再掙扎一下才錄到這些信號 效能優化 轉檔有夠慢,10000個封包紀錄檔392KB要22.3秒 修改軟體架構反覆做實驗,這個例子最後優化到1.48秒,大概15倍加速,堪用了 效能基準線是22.3秒 加大檔案讀寫緩衝區,效能變超爛( 217.42s),9.74x 因為呼叫fseek()讓緩衝區作廢,更大緩衝區等於讀更多資料丟掉,傻了 避免呼叫fseek()( 2.33s),0.1x 整併兩次fread(),加速字串處理,調整SD卡參數(1.48s),0.066x 結語 連上網的開發工具,用起來真的爽!後面還能繼續搞事 加一顆電池,常駐在車上 把封包導向遠方,讓我在家裡,...

ESP32做通用資料紀錄器

圖片
緣起 在 ESP32上架網站 , ESP32操作SD卡 ,再來要打造紀錄器,就是開檔把紀錄寫入SD卡 我想錄汽車CAN封包,樹梅派耗電略高,丟車上有疑慮,用MCU會比較省電;這個解完能錄腳踏曲柄的動態,到時候來學神經網路;一魚多吃,做個通用的工具,到處用 主畫面,可以點連結開始記錄 記錄檔管理頁面 錄下的LOG能當場看,下載,或是移除 文字LOG,可以直接顯示 通用資料紀錄器 WIFI晶片加上SD卡,能做各種應用;錄完直接透過WIFI取資料,不用讀卡機 放車上,記錄汽車封包 放單車曲柄上,紀錄加速度感應器,拿來學習神經網路 放機車上,錄製電瓶的電壓 放貓吉身上,看他每天睡多少 ... 不就只是fopen + fprintf()? 起初確實這麼想,然後越來越不單純 通用的格式 存各種資料 紀錄櫃台(task)配備大緩衝區(16KB),資料可以丟了就跑 紀錄櫃台(task)從緩衝區讀出數據寫SD卡;資料不做任何轉換(花時間)直接寫;批次寫入(4KB),避免頻繁寫入掉效能 轉檔(task)把 通用的格式 轉成文字給人看;CAN封包會轉成Linux的candump的格式,串接別的工具 通用的格式 日後可以轉成任何形式 必須簡單易用,網站醜也比破爛的按鈕好;比敲指令舒服 架構圖 AI畫了架構圖,軟體分了不少區塊,多種顏色。不是簡單的fopen() + fprintf() 也許正文現在才開始 AI輔助設計 刻意用Google GEMINI AI進行輔助設計,學習不熟的東西 不熟FreeRTOS 不熟ESP32,包括SDK,開發環境 不熟網站程式設計 有兩種策略做設計,以前我選(1),這次刻意選(2),深思而後行 只管先做出原型設計,欠下大量技術債,之後靠多次迭代整理軟體 假裝自己是架構師,我的決定會影響100人,框架得一次做對(較少的技術債) 開發環境挑選 ,AI的意見好壞參雜,親身測試他的意見,用過去踩坑的經驗判斷好壞 大量的和AI工具進行討論,評估各種開發工具,組合,研究能否維護 研究需要開發那些工具,讓RD能做,也能讓remote debug可行 挑選的工具,在Windows/ Mac/ Linux都要能運作 如果有100人,我會開發模擬器能在PC開發;現實我是1個人,就省著吧 架設網站 ,用AI學不熟的技術,因為基礎範例網路很多,品質不是問題(先評估可靠度)。AI當家教...

微雪電子,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一次性提升小紅點效能,這個交易不會差,我試的結果也不錯。日本也有玩家做好來賣,價格漂亮許多。我這顆如果沒壞,大概也不會再去買一顆來折騰了 這顆改裝件換掉時,我會更新這篇文章,紀錄他是什麼時候壞