Phần 1: Sử dụng GNURadio trong điều khiển SDR – p1

Phần 2: Sử dụng GNURadio trong điều khiển SDR – p2

Phần 3: Sử dụng GNURadio trong điều khiển SDR – p3

Giới thiệu GNU Radio

GNU Radio là một bộ công cụ mã nguồn mở được cung cấp miễn phí, nó cho phép người dùng thực hiện các tác vụ xử lý tín hiệu vô tuyến thông qua SDR. GNU Radio không những hỗ trợ tương tác với phần cứng SDR mà còn có thể tương thích với các phần mềm giả lập khác. Chương trình được sử dụng rộng rãi trong nghiên cứu học thuật, các giải pháp thương mại cũng như trong hệ thống vô tuyến dân sự, quân sự.

GNU Radio được phát triển chính dựa trên ngôn ngữ Python, tuy nhiên để cải thiện hiệu xuất của bộ xử lý tín hiệu, một số phần được phát triển trên ngôn ngữ C++ và hoạt động chung trong gói phần mềm.

Giao diện GNU Radio trên hệ điều hành Windows

GNU Radio thực hiện xử lý các tín hiệu vô tuyến thu được. Người dùng có thể viết một ứng dụng phục vụ việc nhận hoặc gởi dữ liệu số (digital) từ thiết bị SDR. Phần mềm cung cấp các bộ lọc, mã kênh truyền, các thành phần đồng bộ tín hiệu, bộ cân bằng, bộ giải điều chế, bộ giải mã tín hiệu, bộ giải mã tiếng nói,…và rất nhiều thành phần khác để bạn có thể tìm hiểu. Các phần phần này còn được gọi với một cách khác là các khối (block), đây là một thuật ngữ thường gặp trong lĩnh vực chế tạo máy thu/ phát vô tuyến. Việc sắp xếp các khối theo thứ tự khác nhau sẽ tạo ra các quy tắc xử lý tín hiệu vô tuyến khác nhau; trong trường hợp bạn không thể tìm thấy một khối tính năng theo yêu cầu thì bạn vẫn có thể tự viết ra một block để phục vụ công việc của mình.

Do GNU Radio là một phần mềm, nên nó chỉ có thể xử lý tín hiệu ở dạng số (digital). Thông thường, các mẫu dữ liệu tại băng gốc sẽ là đầu vào của máy thu và là đầu ra của máy phát. Phần cứng analog thường được dùng để dịch chuyển các tín hiệu băng gốc đến tần số trung tâm qua sóng mang (carier wave).Tại máy phát, một số kỹ thuật điều chế tín hiệu digital như ASK, FSK, PSK sẽ được xử lý tại GNU Radio, sau đó bộ chuyển đổi số sang tuần tự DAC (Digital to Analog Converter) tại SDR sẽ truyền đi trong không gian vật lý thông qua sóng mang sử dụng kỹ thuật biến thiên tần số, biến thiên biên độ hoặc biến thiên pha (FM, AM, PM); điều ngược lại sẽ diễn ra tại máy thu thông qua bộ chuyển đổi tuần tự sang tín hiệu số (ADC – Analog to Digital Converter)

Kỹ thuật điều chế tín hiệu số, tuần tự trong vô tuyến

Tham khảo: https://www.edgefx.in/types-of-modulation-techniques-with-applications/

Tải và cài đặt GNU Radio
Phiên bản Linux

Mặc đù được phát triển cho mục đích hoạt động trên đa nền tảng hệ điều hành, GNU Radio khuyến cáo là sử dụng tốt nhất trên hệ điều hành Linux như Ubuntu, Fedora. Việc cài đặt sẽ khá thuận tiện thông qua sử dụng các repo cung cấp sẵn chương trình đã biên dịch bằng lệnh apt/apt-get hoặc yum.

apt-get install gnuradio

hoặc

yum install gnuradio

Phiên bản Windows

Phiên bản cài đặt trên Windows được cộng đồng hỗ trợ biên dịch để có thể hoạt động trên nền tảng 64bit, tuy nhiên trong một số tình huống vẫn phát sinh lỗi chức năng tương tác với SDR hoặc các môi trường giả lập khác. Người dùng có thể tải bản cài đặt phù hợp tại liên kết http://www.gcndevelopment.com/gnuradio/downloads.htm.

Nếu bạn đã có kinh nghiệm với việc biên dịch chương trình trên Windows thì vẫn có thể tải mã nguồn để tạo bản cài đặt cho riêng mình như hướng dẫn tại trang wiki chính thức https://wiki.gnuradio.org/index.php/WindowsInstall.

Chọn phiên bản cài đặt phù hợp với máy tính đang sử dụng. Trong trường hợp mặc định người dùng nên chọn bản 64-Bit Any CPU.

Phiên bản trực tiếp DVD

GNU Radio cung cấp một phiên bản hệ điều hành cài đặt sẵn chương trình và có thể khởi động từ ổ đĩa DVD/USB. Chúng tôi cũng khá hứng thú với phiên bản này vì người dùng có thể thử nghiệm nhanh chóng các công việc phân tích tín hiệu trên bất kỳ máy tính nào mà không cần cài đặt. Các phiên bản hoạt động trực tiếp có thể tham khảo tại https://wiki.gnuradio.org/index.php/GNU_Radio_Live_SDR_Environment.

GNU Radio phiên bản live được tích hợp trên Ubuntu với đầy đủ tính năng

MacOS/ Cài đặt từ mã nguồn

Trong trường hợp bạn sở hữu một thiết bị Macbook hoặc muốn thử nghiệm biên dịch mã nguồn GNU Radio thì có thể tham khảo thêm tại https://wiki.gnuradio.org/index.php/InstallingGR.

Sử dụng GNU Radio cơ bản

Việc sử dụng GNU Radio cho người mới bắt đầu trong lĩnh vực vô tuyến sẽ có một số khó khăn do cần nắm một số thuật ngữ, cơ chế xử lý tín hiệu,… để có thể áp dụng vào thực tiễn.

Giao diện chính của GNU Radio khá đơn giản, cung cấp khá nhiều các khối chức năng tại góc phải màn hình. Giao diện làm việc chính cho phép người dùng kéo thả các khối theo một sơ đồ kết nối mong muốn. Sau khi thiết kết bằng giao diện, người dùng có thể chạy trực tiếp chương trình quá nút Run hoặc xuất thành mã Python để chạy ở chế độ command line.

Sơ đồ khối một chương trình thu FM và xuất ra loa sử dụng SDR
Tinh chỉnh các thông số chương trình bằng cách nhấp đôi vào các khối tương ứng

Thực thi thu tín hiệu và xử lý tại GNU Radio

Tải file gnuradio-fm-rx

Chuyển đổi tập tin grc sang ngôn ngữ Python để có thể hoạt động trên nhiều môi trường khác nhau.

Tạm kết phần 1

Trong phần 1, tôi muốn giới thiệu một công cụ khá mạnh mẽ được dùng trong nhiều lab nghiên cứu về SDR. Việc nắm rõ các kiến thức về truyền thông không dây kết hợp với GNU Radio sẽ giúp người dùng dễ dàng tìm hiểu và tạo ra các phương thức truyền tải mới. Trong phần tiếp theo, tôi sẽ tiếp tục đi vào chi tiết các khối chức năng phù hợp với từng loại giao thức vô tuyến phổ biến.