2026年2月17日

使用RTL-SDR V4收飛機的 ADS-B畫出畫出航跡地圖

10年前寫過一篇文章《從飛機雲估測我和誰看同一片天空》,那段時間,我的興趣全在天邊那些稍縱即逝的飛機雲。那時候用望遠鏡和 FlightRadar24 的 App,看著高空的飛機雲,手動對照飛航紀錄,確認自己在新竹的窗前,視覺極限大約能觸及 80 公里外的北海岸上空。

十年過去了,現在可以直接在電腦前,直接收集那些從萬米高空來的無線電訊號。這一次用的工具是 RTL-SDR v4-一根像USB隨身碟的小東西,是一個廣域的無線電接收器。

它內部是 RTL2832U 這顆由台灣瑞昱(Realtek)設計的晶片。最初它是為了讓電腦看 DVB-T 數位電視而生,但因為它能將類比訊號直接轉為數位數據(SDR,軟體定義無線電),且價格極其低廉,意外被開發者開啟了「上帝視角」。

我購買的這款 RTL-SDR Blog V4,比起一般的電視棒做了更多專業改進。它內建了 R828D 調諧器,並加上了三路濾波器,可以應對常見的 FM 電台、手機基地台或 Wi-Fi 干擾。價格也不貴,我在前幾周從官網以 $49.95 USD 的價格入手。

最近用它玩了好幾個專案,先來介紹這個收飛機訊號的專案吧。

飛機在飛行時,會透過 ADS-B (Automatic Dependent Surveillance-Broadcast) 系統,不斷地向四周廣播自己的經緯度、高度、速度與編號。要收這個訊號,只要把偶極天線架起來,再安裝 readsb 和 tar1090 這些開源軟體( windows上也有軟體),就可以直接接收。

飛機廣播 ADS-B 訊號的頻率固定在 1090 MHz。在這個頻率下,訊號像光線一樣是「直視傳輸,只要中間有山頭或建築物擋住,你就收不到它。剛好我的窗戶面東北有廣闊的天空,所以當然可以收到不少訊號。

再來是天線,RTL-SDR Blog V4的套件有兩組偶極天線,有一組長一組短。要收1090MHz就用兩組短的,單根長度6.5cm左右,兩根擺成垂直地面,貼在窗戶上就可以了。

天線長度需從無線電波的波長來計算。偶極天線設計為「半波偶極天線」(Half-wave Dipole),也就是天線的總長度約為半個波長。
  1. 光速約 300,000,000 m/s,1090MHz的無線電波在空氣中的全波長是300 / 1090  = 0.275  m
  2. 半波長就是27.5 / 2 =  13.75 cm
  3. 考量無線電波在金屬導體中傳輸的速度比在真空慢,實際天線長度需要乘以一個修正係數(通常取 0.95):理論總長度:13.75 cm x  0.95 = 13.1 cm
  4. 偶極天線的兩臂長度偶極天線由兩根對稱的金屬棒組成,中央連接同軸電纜,因此單臂長度 13.1 cm/ 2 = 6.55 cm

我使用的軟體 readsb 負責在底層解碼這些 1090 MHz 的原始脈衝,而 tar1090 則提供了類似 FlightRadar24 的視覺介面,讓我能即時在地圖上看到飛機的動向。(其實就和flightradar24界面相似,但看到的就是自己收的飛機訊號)


為了讓數據更有趣,我寫了一段 Python 腳本,將接收到的 Hex 碼轉換為視覺化的地圖,就可以看看自己的「新竹收訊圖」。

透過熱點圖和航線圖就能看到一些有趣現象:

這張圖定義了我的「數位視野」。因為我的窗戶面東北,加上東南方有山脈屏障,熱點圖展示的是地形對無線電的物理限制。紅色點代表是三萬英呎的飛機,過台灣不停的那種,而藍色點就是要進出桃園機場的飛機。

與 10 年前手動比對不同,現在我可以自動抓取訊號在地圖上標示出來那些飛機的航路,整體範圍大約是我觀測地的北方到東北方半徑80公里的範圍,這和十年前我用望遠鏡看到的範圍一致。

這次的觀察最令我著迷的不再只是看飛機在哪裡,因為我看到透過 SDR 接收到的進階數據(EHS),還有更多有趣的資料可以應用來分析,這就等下篇再來說。

2025年12月26日

內灣線一線九驛路線求解程式

新竹縣政府幾年前打造了一個「一線九驛」的活動,將台鐵內灣線沿線的九個車站用許多文創的元素串在一起。這些車站包括竹中、上員、榮華、竹東、橫山、九讚頭、合興、富貴、內灣等。

在搭乘這條路線時,我想到怎樣的規劃路線才可以每站都去走走呢?於是我就下載了時刻表,寫了一個程式來規劃行程。

你可以輸入起站和終站(例如設定成同一站,就是回到原來的地方),再設定幾點開始幾點結束,以及每站至少停留多少分鐘,程式的目的是在此要求下搜尋能到達最多站點的路線規劃。

還可以設定一定要去哪些站,或是不需要去哪些站。在使用上時要注意,有些班次週末和週間會有差異,停開或增開,但我程式並未處理這部分。

有興趣可以點選 一線九驛求解器




以程式的預設值來規劃,至少可以到達六站


如果想要達到一線九驛都下車的話,結束時間就要稍微晚一點,例如像這樣






2025年12月23日

神經系統單元的互動程式2025

 現在用AI寫程式或是做輔助教學實在太容易了,幾乎是想到什麼就可以做出來。所以好一陣子都在用AI做東西,倒是比較少在blogger紀錄了。

目前來整理一些今年在神經系統做的一些教學輔助程式,有些是用來上課,有些則是用來遊戲的。其他在神經單元但沒有介紹到的,都是以前做出來的。

所有的程式都可以在這裡連到,但我還是個別介紹一下。

音調產生器

可以用在說明聽覺的時候,不同頻率產感覺的音量不同,也可以發現每一個人所能聽到的頻率不相同。

https://chihhsiangchien.github.io/tone-generator/index.html



絕對音感

https://chihhsiangchien.github.io/absolute-pitch-game/index.html

顧名思義就是聽聲音,然後指出是哪個琴鍵產生的聲音


瞬間記憶數字

https://chihhsiangchien.github.io/instant-memory-game/index.html

幾年前做過scratch版本的,現在直接用js來實作


記憶數字長度的遊戲

https://chihhsiangchien.github.io/magic-number-game/index.html

畫面左邊會出現一串數字,等到消失之後,在右邊鍵盤重新打一次數字


色彩排序遊戲

https://chihhsiangchien.github.io/color-sorting-game/index.html

顏色會改變色相或彩度,玩家要排成正確的順序

https://chihhsiangchien.github.io/color-sorting-game/index.html


專注力遊戲

https://chihhsiangchien.github.io/concentration-grid/index.html

按照順序點選數字


史托普效應遊戲

先看出題目是用什麼顏色的字(不要被字義干擾),然後在底下選項選出正確的字義(不要被選項的顏色干擾)

數感挑戰

搭配斑龜的數感研究影片來使用。在方塊消失後,選擇數字較大的那部分。在數字小的情況(如4個和5個比),甚至只要0.01秒就能辨識出來,根本來不及數,但你就是能看出,那就是數感。

神經傳導路徑排序

就是點選動作後,把正確的路徑排出來



2025年11月11日

養分、酵素、光合作用、小魚等實驗的小技巧

 紀錄一下今年進行養分與酵素的實驗的一些技巧

測定食物養分的實驗

因為實驗室剛好衝堂,所以我就安排在教室進行。準備一個塑膠盆,再切一片珍珠板。盆子裝熱水用來提供本氏液的反應,帶洞的珍珠板設計的尺寸比盆底大一點,讓板子可以卡在盆子裡,然後固定一段距離用原子筆戳洞。

實驗的容器就用微量離心管,測試的食物、本氏液都只裝一兩滴,裝好就塞進珍珠板的洞裡,因為微量,所以反應很快,一到兩分鐘就會有反應了。但要注意離心管不需要蓋蓋子,不然可能會泡著泡著就爆開,如果會常常需要這樣使用,也可以乾脆把蓋子剪斷。



酵素實驗

上述的離心管,可以繼續用在額外的酵素實驗,例如雙氧水加上一些金針菇,然後就可以做成不定時炸彈,但是會噴出雙氧水,要小心就是。

課內實驗的部分,今年收集唾液的方式改成使用紗布,因為剛好有一批。本來都是叫學生把整片紗布放嘴裡咬,不過好幾個學生咬得嘔聲連連,後來就改成「手拿著一端,另外一端放入嘴裡咬20-30下」,然後大家把自己咬過的紗布放入小紙杯中,再加一點水進去杯子裡讓紗布浸潤,最後把水倒出到試管就可以用了。

光合作用

要做這個實驗的時候,北部連日陰雨,根本沒辦法使用室外植物,還好幾年前實驗室有買生長箱,反正加水就放進去養就對了。如果沒有生長箱的,其實準備多個檯燈加上定時器,效果也是一樣。

芹菜實驗

每年都會泡到有些芹菜爛爛的,其實泡爛的芹菜很棒,可以從裏頭撈出一堆絲狀物,裏頭也有一些漂浮物。

絲狀物就是芹菜的維管束,就是一些分離的導管,細節可以看這篇多年前的文章,至於一些霧霧的漂浮物多是薄壁細胞。

小魚尾鰭觀察

多年前改成把小魚放進封口袋來觀察了,效果原比幫小魚蓋棉花被子好很多,我以為大家都已經這樣做了,結果最近才知道朋友還是用棉花蓋住來觀察。只用棉花蓋住的最大缺點是魚在活動時,會把水噴到物鏡上,然後物鏡就會發霉損壞。

問了他為什麼還是用棉花,他說他覺得把魚放進封口袋還要手拿魚做這件事,有點阿雜。ㄟ,其實完全不需要沾手啊,就是準備一個L夾,底下剪開一個口,差不多魚大小,這個就是漏斗,底下請一個學生協助套上小封口袋,你把魚撈起後放進這個塑膠漏斗就好囉。


2025年10月14日

人體血液循環的視覺化互動程式

講全身血液循環時,我需要一個互動的介面可以讓我用來解說,要能呈現全身血液流動的過程。先講結論,我做出來了。底下是截圖


這是操作過程的影片,預設有幾百個血球在血管內流動,擺著不動一陣子會看到經過組織微血管(上下三區)的血球會變成暗紅色,並且釋放出代表氧氣的藍色圓形。而這些暗紅色的血球經過左右兩邊的肺部微血管時,會從外而內進入獲得氧氣,使暗紅色的血球變成鮮紅色。

你可以按下[血球淡化]的開關,使所有血球都變淡,然後點畫面很多血球的位置,例如心房心室,每次點擊都會在點擊處附近隨機標註一顆血球,你就可以追蹤它的流動。

此外,也可以將心房心室的動畫關閉或打開。
目前實作是做了全身血液循環,未來有時間會完成肺部和組織細胞之間的交換


接下來要說的是如何完成這樣的程式,血球需要循著特定的路徑往前移動,不能逆向,在交叉口又必須隨機。`所以我需要一個有很多節點的「有向圖」,節點之間有方向性的「邊」相連,每一個節點有id,有xyt座標,而每一個邊的資料包括起點和終點的節點。因此對有些節點來說,可能是多個邊的起點,也可能是多個邊的終點。

我先在draw.io上放一張底圖,然後用circle當節點,Directional Connector當作邊,把完整的循環路徑畫出來。最後的結果export 出xml。檔案連結



有了xml之後,再用js parse這些資料,就可以做出一個有向圖。建立資料時,可以指定某些connector的寬度,這可以用來畫出血管的寬度,而circle內的文字可以標註目前所在的位置,例如肺靜脈、肺動脈等。

對於血球的行為,其實就是不斷地從一個節點移動到另一個節點,而下一個節點的決定就看這個節點有幾個出口,隨機選一個就是了。經過特殊節點如肺動脈時,就讓血球進入一個可接受氧氣的狀態,有一定的機率可以得到氧氣。而到了肺靜脈時,可接受氧氣的狀態就被關閉了。而進入組織微血管或離開,也是一樣的方法,所以這就是一個狀態機的變化。

此外,動靜脈的流速不同,是利用節點的數量來控制,在一個動畫週期中的固定長度內,如果有越多節點,那麼血球就會越慢,如微血管內的行為,而如果節點越少,就會產生移動速度很快的視覺效果。

雖然節點和節點之間是直線相連,但血球在血管內的移動則是會以邊寬度為基礎,做左右偏移累積的移動,所以就可以產生彷彿在血管內移動的視覺效果。

2025年9月25日

酵素作用的互動教學工具

最近做了「酵素模擬器」的網頁工具,可以互動操,產生即時圖表與自動化實驗。

https://chihhsiangchien.github.io/enzyme-tutorial/



主要功能

1. 拖曳與新增分子、酵素

使用者可以用拖曳或點擊的方式,將不同種類的酵素與分子加入主畫面。每種分子和酵素都以圖示呈現,並可一次新增多個或快速移除。

2. 模擬布朗運動

所有分子在畫面上會隨機移動,模擬布朗運動,進而觸發酵素反應。

3. 酵素-受質結合與產物生成

當受質分子靠近酵素的活化位時,若符合反應規則,會自動吸附並進行反應,產生對應的產物。反應過程中,分子會有動畫效果。

4. 溫度調整與酵素變性

可透過滑桿調整環境溫度。溫度會影響分子的運動速度與酵素的活性,並可模擬高溫導致酵素變性的情境,每種酵素有不同的變性溫度。

5. 即時濃度變化圖表

畫面右側提供即時的分子與酵素數量變化圖表。每秒自動更新,方便觀察反應進行過程中各物種的濃度變化。

6. 實驗模式與自動化實驗

除了自由操作外還有「實驗模式」可進行實驗。可選擇酵素種類、設定溫度與觀察時間,並自動重複多組實驗,繪製「溫度-反應速率」關係圖,協助分析酵素活性與環境的關聯。



2025年9月19日

課堂教學工具:排序、配對、表格

這是課堂上用來做教學的幾個工具,分別是用來做排序、表格和配對的工具,可以當教學用,也可用來做形成性評量。因為特別作了模組化,所以後續我要新增資料也是容易很多,有興趣可以使用。

https://chihhsiangchien.github.io/sorting/index.html

https://chihhsiangchien.github.io/table/index.html?mode=teach

https://chihhsiangchien.github.io/matching/index.html?data=cells.json