---
title: 'Dựng trạm để thu & xử lý tín hiệu bóng thám không'
date: '2026-07-05T21:15:12+07:00'
author: XV5HP
tags:
  - radiosonde
  - sdr
  - antena
  - auto-rx
draft: false
summary: 'Dựng trạm mặt đất để thu tín hiệu bóng thám không'
image: /uploads/2026/07/3481093ea27d22fc.webp
series: radiosonde
part: 2
---


## Ăng-ten thu tín hiệu
Trong hệ thống thu tín hiệu radiosonde, thiết kế anten đóng vai trò quan trọng đối với chất lượng thu nhận dữ liệu. Do thiết bị thám không liên tục thay đổi vị trí, độ cao và góc phân cực trong quá trình bay nên việc lựa chọn cấu hình anten phù hợp giúp giảm hiện tượng mất tín hiệu và tăng độ ổn định cho cả trạm thu của bạn.

Loại ăng-ten phổ biến nhất là anten monopole λ/4 đặt theo phương thẳng đứng (vertical polarization). Tuy nhiên, loại anten này có một nhược điểm đáng kể là tồn tại điểm triệt bức xạ (radiation null) theo trục của anten. Khi bóng thám không bay gần như ngay phía trên trạm thu (góc ngẩng tiến tới 90°), cường độ tín hiệu suy giảm mạnh hoặc mất hoàn toàn trong thời gian ngắn. Hiện tượng này thường được gọi là zenith null, gây gián đoạn quá trình giải mã dữ liệu khi radiosonde đi qua đỉnh đầu.

![Antenna monopole thẳng đứng (vertical), rớt tín hiệu (null) khi bóng bay qua đỉnh đầu](/uploads/2026/07/6302127c86464f3d.webp)
![Antenna monopole nghiêng khoảng 35°–45° so với phương thẳng đứng. Thu tín hiệu ổn định hơn ](/uploads/2026/07/3bd20efec7e38114.webp)
![Sử dụng cọc tre vì bền, nhẹ, không dẫn điện.  Giảm khả năng biến thành một phần tử bức xạ ngoài ý muốn](/uploads/2026/07/e96668d7e51b0dc7.webp)

Để khắc phục nhược điểm trên, anten monopole thường được lắp nghiêng khoảng 35°–45° so với phương thẳng đứng. Việc nghiêng anten làm thay đổi đồ thị bức xạ (radiation pattern), giảm độ sâu của vùng null theo phương thẳng đứng và giúp tín hiệu được thu ổn định hơn trong toàn bộ quá trình radiosonde bay qua trạm.

Mình đi mua một cọc tre dài tầm 7-8m làm trụ đỡ anten thay vì cột kim loại. Tre nó có ưu điểm nhẹ, bền, giá rẻ và đặc biệt không dẫn điện, nên không làm ảnh hưởng đến trường điện từ xung quanh anten. Điều này sẽ giảm nguy cơ biến cọc đỡ vô tình trở thành một phần tử bức xạ hoặc phản xạ tín hiệu RF ngoài ý muốn. Nói chung là đỡ nhiễu. 

Do cái dây nối từ ăng-ten xuống máy thu cũng thả thỏng xuống. Nhiều nguy cơ dây cáp cũng sẽ trở thành một phần từ của antena. Thế tốt nhất mình làm một cái Air-wound coax choke trong hệ anten để chặn dòng RF trên dây.  Bạn cứ cuuốn nó lại khoảng 5-8 vòng, đường kính ~10cm. 


## Lắp đặt trạm thu

Để thu được tín hiệu vô tuyến, ngoài ăng-ten chúng ta cần tới một máy thu. Mình sẽ sử dụng RTL-SDR (RTL2832U Software Defined Radio), đây là thiết bị thu gía thành rẻ nhưng có khả năng thu tín hiệu trong dải tần rộng (từ 27MHz tới tận 1700 MHZ lận, băng tần bóng thám không nằm gọn trong dải tần này luôn). 

![Sơ đồ hệ thống trạm thu và xử lý tín hiệu bóng thám không được minh hoạ bởi AI - ChatGPT](/uploads/2026/07/88dfe785ea782ec7.webp)

Thiết bị này sẽ thực hiện số hoá tín hiệu RF Analog, truyền dữ liệu dạng IQ tới thiết bị Raspberry Pi 3 Model B+ thông qua cổng USB. Dùng Pi3B cho nhỏ gọn, rẻ, tiêu thụ không tốn mấy điện nên chạy 24/7/365 ngày được. Phần mềm [Radiosonde Auto-RX](https://github.com/projecthorus/radiosonde_auto_rx) sẽ tiếp nhận dữ liệu từ USB rồi tự động dò tìm tín hiệu của bóng thám không, giải điều chế tín hiệu GFSK (demodulation), giải mã (decode) và hiển thị theo thời gian thực lên giao diện cho chúng ta quan sát

![Hình bên trái là tín hiệu bóng thám không (có spectrum) đang được giải mã theo thời gian thực. Hình bên phải là lịch sử tín hiệu của các bóng thám không mà trạm mặt đất thu được](/uploads/2026/07/facb308472d716b4.webp)

Các thông tin như mã định danh (Serial Number), vị trí GPS, độ cao, tốc độ, hướng bay, nhiệt độ, độ ẩm, áp suất và trạng thái thiết bị được cập nhật liên tục trên giao diện. Đồng thời, Auto-RX tự động lưu toàn bộ dữ liệu của từng radiosonde vào file CSV để dễ xử lý sau này.

## Cài đặt công cụ giải mã tín hiệu

Tất cả các hướng dẫn dưới đây đều copy lại từ hướng dẫn chi tiết trên WIKI của công cụ Radiosonde Auto-Rx. Đầu tiên, các bạn hãy cập nhật link tải các gói và cài đặt các thư viện cần thiết.

```bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3 python3-venv sox git build-essential libtool cmake usbutils libusb-1.0-0-dev
```

Trong một số trường hợp, thiết bị RTL-SDR không được cấp quyền truy cập với tài khoản hiện tại. Hãy thực hiện lệnh dưới đây để thực hiện việc phân quyền sử dụng với thiết bị USB vừa cắm vào.

```bash
sudo wget -O /etc/udev/rules.d/20-rtlsdr.rules https://raw.githubusercontent.com/osmocom/rtl-sdr/master/rtl-sdr.rules
```

Sau khi cài đặt thư viện và phân quyền, gõ lệnh `sudo reboot` để khởi động lại con Pi của bạn. Tiếp đó, thử xem USB RTL-SDR đã hoạt động trên con Pi chưa bằng cách chạy lệnh `rtl_test` và quan sát có output như bên dưới không. Nếu có thì xin chúc mừng bạn đã cài đặt thành công, Ctrl+C để thoát ra còn làm các bước tiếp.

```bash
rtl_test
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000002

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.

Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.

Reading samples in async mode...
```

Tiếp tục, cài đặt phần quan trọng nhất là phần mềm thu và giải mã tín hiệu tự động với radiosonde auto-rx. Khi bạn gõ lệnh `./build.sh` nó sẽ mất tầm 15-20 phút để cài đặt tất cả các công cụ cần thiết nha.

```bash
git clone https://github.com/projecthorus/radiosonde_auto_rx.git
cd radiosonde_auto_rx/auto_rx
chmod +x ./build.sh
./build.sh
cp station.cfg.example station.cfg
```

Sử dụng bất kỳ một Text Editor nào mà bạn quen thuôc, để tìm và sửa lại một số thông tin sau như mình hướng dẫn bên dưới. Có thể sẽ có rất nhiều dòng khác nhau, bạn cứ tìm theo và sửa nhé.

```station.cfg
station_lat = 20.x
station_lon = 106.x
station_alt = 11.0

uploader_callsign = XV5HP
sondehub_enabled = True
upload_listener_position = False


```
- Thông tin kinh độ, vĩ độ và độ cao của trạm được đặt vào các tham số `station_lat`, `station_lon` và `station_alt`. Bạn có thể lấy theo vị trí GPS của Google Map. Toạ độ này sẽ dùng để hệ thống tính toán bóng đang ở cách bao xa so với trạm của bạn. Sau này muốn đi lượm thì cứ căn theo khoảng cách này mà lựa chọn có đi lượm hay không.
- `uploader_callsign` là CallSign của bạn sẽ hiển thị trên hệ thống Sondehub.  Của mình là XV5HP, bạn thích đặt gì cũng được.
- Dữ liệu từ trạm thu của bạn có thể bắn lên trên này để sharing với mọi người. Bật tắt bằng cách thay đổi giá trị True/ False ở `sondehub_enabled`
- Nếu bạn bật cái giá trị `upload_listener_position`, mặc định là True thì toạ độ trạm thu của bạn sẽ được hiển thị trên bản đồ của Sondehub. Sẽ có một đường line màu xanh lá kéo thẳng từ bóng thám không tới trạm thu ở nhà bạn.

Chưa xong đâu, chúng ta cần cài đăt thư viện các thư viện Python mà công cụ Radiosonde Auto-rx sử dụng. 

```bash
cd ~/radiosonde_auto_rx/auto_rx/
python3 -m venv venv
source venv/bin/activate

(venv) $ pip install -r requirements.txt
```

Đợi quá trình cài đặt hoàn tất, chúng ta sẽ biến cái phần mềm này thành một service chạy ngầm. Nghĩa là, trong mọi hoàn cảnh khởi động lại của con Pi, trạm của bạn vẫn tự động chạy và thu mà không cần đụng tay vào. Sau đó, sửa lại file cấu hình của service chạy ngầm một chút, cho đúng với con Pi của bạn


```bash
sudo cp auto_rx.service /etc/systemd/system/
sudo vim /etc/systemd/system/auto_rx.service
```

Bạn kiềm tra cấu hình service chạy ngầm `auto_rx` xem đã đúng như bên dưới chưa. 

```service
[Unit]
Description=auto_rx
After=syslog.target

[Service]
# For running outside of a python virtual environment
# ExecStart=/usr/bin/python3 /home/pi/radiosonde_auto_rx/auto_rx/auto_rx.py -t 0 

# For running within a venv, located at /home/pi/radiosonde_auto_rx/auto_rx/venv/
ExecStart=/home/pi/radiosonde_auto_rx/auto_rx/venv/bin/python3 /home/pi/radiosonde_auto_rx/auto_rx/auto_rx.py -t 0
Restart=always
RestartSec=120
WorkingDirectory=/home/pi/radiosonde_auto_rx/auto_rx/
User=pi
SyslogIdentifier=auto_rx

[Install]
WantedBy=multi-user.target
```

Nếu chưa thì cần tìm và sửa lại một số chỗ cho đúng theo hướng dẫn của mình:
- `WorkingDirectory` là thư mục cài đặt radiosonde_auto_rx của bạn, nếu bạn cài sang chỗ khác thì phải sửa lại cái này
- `ExecStart` đường dẫn tới file chương trình chính `/home/pi/radiosonde_auto_rx/auto_rx/auto_rx.py` xem đã đúng chưa. Đồng thời kiểm tra xem đúng binary của `python3` có nằm ở `/home/pi/radiosonde_auto_rx/auto_rx/venv/bin/python3` không. Nếu chưa thì sửa lại cho đúng. 

Cuối cùng bật service `auto_rx` và truy cập giao diện web của công cụ ở `http://IP-con-Pi:5000`

```bash
sudo systemctl enable auto_rx.service
sudo systemctl start auto_rx.service
```

Kiểm tra trạng thái của service auto_rx dùng lệnh này, nếu nó báo Running/ Active như dưới đây là ok rồi đó bạn hiền ơi.!
```bash
$ sudo systemctl status auto_rx.service
● auto_rx.service - auto_rx
     Loaded: loaded (/etc/systemd/system/auto_rx.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-10-27 04:15:02 BST; 2min 28s ago
   Main PID: 1188 (python3)
      Tasks: 26 (limit: 1585)
        CPU: 25.236s
     CGroup: /system.slice/auto_rx.service
             ├─1188 /home/pi/radiosonde_auto_rx/auto_rx/venv/bin/python3 /home/pi/radiosonde_auto_rx/auto_rx/auto_rx.py -t 0

```


