Show HN: Dự án chế tạo bộ thu GPS
(axleos.com)- gypsum là một dự án chế tạo bộ thu GPS tự giải mã tín hiệu GPS từ đầu để lấy vị trí, và phần 1 trong loạt 4 phần tập trung vào việc tìm tín hiệu vệ tinh bị chôn dưới nhiễu
- GPS là tín hiệu phát sóng được khoảng 30 vệ tinh truyền đi trên toàn Trái Đất, nên vệ tinh không thể biết ai đang nghe và cũng không có trung tâm dữ liệu nào có thể thay người dùng nhận sóng vô tuyến đó
- Tín hiệu GPS đến anten mặt đất có thể có công suất thấp hơn 100.000 lần so với nhiễu xung quanh, và yếu hơn 100 triệu lần so với tín hiệu di động thông thường nên gần như không thể nhìn thấy trực tiếp
- Bộ thu liên tục so sánh mã C/A mà cả vệ tinh và bộ thu đều biết để lấy trung bình nhiễu ngẫu nhiên, rồi tìm tín hiệu dữ liệu 50bps nằm trên mã PRN 1Mbps
- Thu nhận (acquisition) là giai đoạn tính toán nặng, đồng thời dò PRN theo từng vệ tinh, Doppler shift ±5kHz và pha mã để tìm các vệ tinh đang thấy được cùng độ trễ thời gian và vận tốc tương đối gần đúng
Dự án trực tiếp nghe tín hiệu GPS
- gypsum là một dự án bộ thu GPS được xây dựng từ đầu
- Loạt bài 4 phần nói về quá trình giải mã tín hiệu GPS để lấy vị trí, và phần 1 tương ứng với giai đoạn tìm tín hiệu và thu nhận vệ tinh
- GPS gồm khoảng 30 vệ tinh phát tín hiệu phủ khắp toàn bộ Trái Đất, và các tín hiệu này luôn hiện diện xung quanh bất kể độ cao hay thời tiết
- GPS bắt đầu từ năm 1978, và tại thời điểm bài viết được viết thì đã trải qua 45 năm
Những beacon rất yên lặng và phép tính vị trí không thể thay bằng máy chủ
- Tín hiệu vệ tinh GPS khi phát ra có cường độ tương đương bóng đèn dân dụng, nhưng khi tới mặt đất thì trở nên cực kỳ yếu
- GPS gần với cơ chế send-and-forget, nên vệ tinh không thể biết ai đang nghe
- Radio FM và truyền hình quảng bá cũng có đặc tính tương tự
- Chính cấu trúc này khiến rất khó để bất kỳ ai thu phí chỉ riêng việc truy cập GPS
- Việc tính vị trí không phù hợp với mô hình dịch vụ web xử lý thay rồi trả kết quả xuống
- GPS đòi hỏi phải trực tiếp nghe sóng vô tuyến đến được vị trí của người dùng
- Trung tâm dữ liệu không thể thay người dùng nghe các sóng vô tuyến đến vị trí đó
Dò tần số GPS bằng SDR
- Để thu tín hiệu GPS bằng phần mềm và hậu xử lý, cần một bộ thu RF có thể điều chỉnh, và thiết bị đó chính là radio định nghĩa bằng phần mềm (SDR)
- Sử dụng SDR++ để dò phổ tín hiệu
- Khi dùng SDR, cần nắm một số khái niệm
- bias tee: mạch bên trong SDR cấp nguồn DC cho anten nối qua SMA. Chiếc SDR được dùng mặc định để tắt nên phải bật thủ công
- automatic gain control(AGC): mạch phần cứng hoặc tính năng phần mềm nhằm khuếch đại tín hiệu yếu để cải thiện tỷ lệ tín hiệu trên nhiễu (SNR) của dữ liệu thu được
- IQ samples: I là in-phase, Q là quadrature hoặc imaginary, cho phép xử lý theo góc nhìn thời gian, biên độ và cực tính
- SDR tạo ra một đỉnh lớn tại tần số trung tâm đã chỉnh
- Với người mới, điều này có thể khiến chỗ nào cũng trông như có tín hiệu mạnh
- Có thể giảm đỉnh này bằng cách chỉnh lệch nhẹ khỏi tần số trung tâm, hoặc dùng IQ correction trong phần mềm
Cách tìm tín hiệu bị chôn dưới nhiễu
- Tại anten mặt đất, tín hiệu GPS đến nơi với công suất thấp hơn 100.000 lần so với năng lượng và tín hiệu xung quanh
- Tín hiệu GPS có thể thấp hơn 50dB so với thermal noise floor
- Các vệ tinh GPS hiện đại được thiết kế để gửi tín hiệu đến bộ thu ở mức khoảng -130dBm
- Trong băng thông C/A, thermal noise floor trong môi trường dân dụng thông thường vào khoảng -110dBm
- Để so sánh, tín hiệu di động vào khoảng -50dBm, tức mạnh hơn tín hiệu GPS 100 triệu lần
- Để nhận biết và giải mã tín hiệu bị chôn dưới nhiễu như vậy, GPS sử dụng kỹ thuật trải phổ (spread-spectrum)
Nghe tín hiệu không thể nghe thấy bằng mã C/A và PRN
- Vệ tinh GPS ngoài dữ liệu mà bộ thu chưa biết còn phát cả một tín hiệu mà cả vệ tinh và bộ thu đều biết
- Tín hiệu này được gọi là C/A code, PRN code hoặc chipping code, và được vệ tinh lặp lại 1.000 lần mỗi giây
- C/A là viết tắt của coarse acquisition
- Trong GPS vốn được hình dung ban đầu cho mục đích quân sự, mã C/A là bước độ phân giải thấp để khóa vào P code chính xác hơn
- Ngày nay mã C/A là nền tảng của hầu hết GPS dân dụng, còn P code vẫn chỉ dùng được cho quân sự
- Lý do bộ thu dân dụng không thể dùng P code là vì không biết các giá trị của chipping sequence
- Nếu công thức tạo P code được công khai, nó cũng có thể khóa bằng kỹ thuật giống như mã C/A
- P code chính xác hơn vì chạy ở chipping rate cao hơn
- Bộ thu liên tục cộng dồn và so sánh giữa PRN dự kiến với tín hiệu thực nhận được
- Nhiễu ngẫu nhiên theo thời gian sẽ được lấy trung bình về 0
- Tín hiệu PRN thì tiếp tục tích lũy và lớn dần
- GPS dùng code-division multiple access(CDMA) để xử lý đồng thời nhiều vệ tinh
- Tín hiệu dữ liệu thực được truyền lẫn trong mã PRN
- Mã PRN hoạt động ở 1Mbps
- Tín hiệu dữ liệu được truyền ở tốc độ chậm hơn nhiều là 50bps
- Nhờ tốc độ dữ liệu thấp, mã PRN vẫn giữ được vai trò tín hiệu tham chiếu ổn định trong thời gian tương đối dài
Tạo mã C/A theo từng vệ tinh
- Vì có nhiều vệ tinh, bộ thu phải biết đang nhìn thấy vệ tinh nào
- Mỗi vệ tinh GPS có một mã PRN riêng và ổn định
- Mã này được định nghĩa trong
Table 3-I (Code Phase Assignments)của đặc tả GPS dân dụng IS-GPS-200L - Trên mạng có nhiều tài liệu giải thích cách tạo mã PRN, nhưng ít có tài liệu tái hiện đầy đủ để đối chiếu toàn bộ mã PRN
Giai đoạn thu nhận: tìm các vệ tinh đang thấy được
- Bộ thu GPS tạo ra bản sao PRN mà từng vệ tinh phát ra để tìm các vệ tinh đang thấy trên bầu trời, rồi tìm PRN tương ứng trong dữ liệu thu từ anten
- Giai đoạn này là acquisition, mục tiêu là khóa vào các vệ tinh ở phía trên người dùng
- Bộ thu lấy một snapshot ngắn của dữ liệu anten, khoảng 1 giây, rồi tính tương quan (correlation) với từng PRN sao chép
- Nếu có tương quan mạnh giữa PRN sao chép và dữ liệu thực, có thể biết vệ tinh của PRN đó đang phát tín hiệu từ phía trên
- Tín hiệu thực tế nhận được khác với PRN lý tưởng
- Tín hiệu GPS bị suy hao khi đi qua khí quyển Trái Đất
- Vì vệ tinh di chuyển rất nhanh nên tín hiệu nhận được bị Doppler-shifted
- Vận tốc quỹ đạo của vệ tinh GPS đã được biết rõ nên phạm vi Doppler shift dự kiến cũng được xác định
- Vệ tinh đang tiến lại gần có thể làm tăng tần số tối đa +5kHz
- Vệ tinh đang rời xa có thể làm giảm tần số -5kHz
- Vì thời điểm bắt đầu thu là ngẫu nhiên, có thể bộ thu bắt đầu nghe từ giữa lúc PRN đang được phát
- Giai đoạn thu nhận đồng thời dò theo ba trục
- Mã PRN của từng vệ tinh
- Phạm vi Doppler shift dự kiến
- Pha dùng để dịch PRN sao chép cho khớp với PRN nhận được
- Lượng tính toán rất lớn, nhưng khi tìm đúng tham số thì một đỉnh tương quan rõ rệt sẽ xuất hiện
Cách triển khai và kết quả của phần 1
- Cách triển khai là biến đổi từng PRN từ miền thời gian sang miền tần số, rồi tương quan giữa tần số của dữ liệu vệ tinh đi vào với phổ của từng mã PRN
- Cách này tương ứng với cross correlation trong miền tần số
- Vì độ lệch pha trong miền thời gian trở thành sự dịch chuyển của thành phần tần số, nên việc dò Doppler shift và dò pha có thể xử lý trong cùng một phép tính
- Doppler shift được hội tụ theo cách tương tự binary search để tìm giá trị tạo ra đỉnh tương quan mạnh nhất cho từng vệ tinh nhìn thấy được
- Kết quả của phần 1 là xác định các vệ tinh GPS hiện đang ở phía trên người dùng, đồng thời lấy được phase/time delay và Doppler shift/relative velocity gần đúng của từng vệ tinh
- Bước tiếp theo là Part 2: Tracking Pinpricks
1 bình luận
Ý kiến trên Hacker News
Có thể mua các bộ thu lấy mẫu RF trực tiếp hoặc chuyển đổi RF trực tiếp đủ nhanh cho GPS. Ví dụ: Xilinx RFSoc https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_..., bài của National Instruments https://www.ni.com/en/solutions/aerospace-defense/radar-elec..., phần cứng có sẵn liên quan https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
Việc NI xem chuyển đổi RF trực tiếp là hiệu quả về chi phí nhưng lại bán thiết bị với giá 30.000 USD thì hơi lạ, nhưng nếu đang tạo prototype cho thu băng rộng có tính nhất quán pha quanh 3GHz, và có phòng lab cùng ngân sách tử tế, thì mua vài chiếc cũng đáng. Nếu sản xuất hàng loạt thì có lẽ sẽ đợi chi phí bo mạch tự làm giảm thêm, hoặc xem liệu bộ thu heterodyne truyền thống có đáp ứng được không
Với mục đích quân sự, nếu lo ngại các vũ khí theo dõi RF cao cấp thì bộ thu chuyển đổi trực tiếp có thể là lựa chọn tốt. Vì không có rò rỉ dao động cục bộ mà thiết bị đối phương có thể phát hiện
Khi thấy cụm “from scratch”, tôi tò mò không biết họ thật sự làm từ nền tảng đến mức nào, nên hơi thất vọng khi thấy phần cứng là RTL-SDR. Dù vậy, phần giải mã giao thức rất thú vị và kết quả cũng xuất sắc
GPS bắt đầu từ năm 1978, nhưng đến năm 2000 tín hiệu vẫn bị cố ý làm suy giảm bằng cơ chế gọi là “Selective Availability”. Vì vậy GPS gần như vô dụng cho nhiều mục đích sử dụng, chắc chắn không phù hợp cho định vị đường bộ, và chỉ hữu ích hạn chế cho thám hiểm vùng hẻo lánh hay hàng hải
Việc gypsum có thể bắt được vị trí và thời gian chính xác từ khởi động nguội dù nghe tín hiệu ăng-ten chưa đến 1 phút là rất ấn tượng, thậm chí trông còn tốt hơn các bộ thu thương mại ngày nay. Trong các chuyến đi ô tô đầu những năm 2000, chúng tôi từng phải đợi 15–20 phút ở lề đường trước khi khởi hành để bộ thu GPS bắt được vị trí; nếu không được thì cứ cầm bản đồ giấy mà đi
Sau 46 năm, lớp vô tuyến vẫn duy trì tương thích ngược và xuôi hoàn toàn, còn các chỉ số chính như thời gian bắt vị trí lần đầu và sai số khoảng cách tương đương người dùng đã cải thiện 10–1000 lần mà không cần thay đổi giao thức gây bất tương thích
Tổng công suất phát RF để cung cấp dịch vụ cho toàn bộ Trái Đất còn nhỏ hơn mức tiêu thụ điện của một hộ gia đình Mỹ thông thường, thấp hơn rất nhiều so với 5G, TV hay radio AM/FM, và nằm dưới nền nhiễu. Điều này có được nhờ việc tận dụng các Gold code được chồng lên nhau
Nó cũng được thiết kế để có thể chia sẻ tần số với các hệ thống cạnh tranh như Galileo, điều hiếm thấy trong mạng di động. Pha của dữ liệu điều chế và sóng mang được cố định, nên những thứ như giải mã pha sóng mang cũng trở nên khả thi, nhờ đó có được giả cự ly và độ chính xác tốt hơn
Nhìn chung có vẻ các nhà thiết kế hoặc có tầm nhìn xa phi thường, hoặc cực kỳ may mắn, hoặc cả hai
Ý ở đây là bắt đầu từ phần cứng hoàn toàn không biết gì về GPS, tức một thiết bị chỉ có thể lấy mẫu trường điện từ, rồi xây dựng bộ thu lên từ đó
Lý do thời gian bắt vị trí lần đầu của phần cứng cũ chậm về bản chất liên quan đến sự tiến bộ của năng lực xử lý. Các bộ thu GPS truyền thống phải tải xuống “almanac” của tất cả vệ tinh, và do định dạng cùng tốc độ truyền dữ liệu GPS, ngay cả trong điều kiện thuận lợi cũng mất tối thiểu 12,5 phút
Với năng lực xử lý hiện đại, các bộ thu, bao gồm gypsum, có thể tìm các vệ tinh nhìn thấy được bằng cách vét cạn không gian tìm kiếm, thay vì chờ các gợi ý truyền xuống từ trên không. Kỹ thuật này là cách đã được giải thích ở cuối phần 1
Năm 1999, tôi đã nối phiên bản RS-232 của bộ thu Delorme Earthmate Hyperformance GPS vào Toughbook và chạy đâu đó khoảng Delorme Street Atlas USA 6.0 để đi du lịch bằng ô tô
Trong suốt hành trình xuyên nước Mỹ, nó cung cấp chỉ đường đủ dùng. Không có hướng dẫn làn đường, nhưng trước mỗi lần rẽ đều báo rẽ kèm cả tên đường
Phiên bản đó còn có nhận dạng giọng nói, nên nếu nói những câu như “còn xa không?” thì nó sẽ cho biết thời gian đến dự kiến tới điểm dừng kế tiếp và điểm đến cuối cùng, cùng vị trí hiện tại; khá thú vị
Nếu sai số xác suất tròn trong trường hợp xấu thông thường dưới Selective Availability khoảng 30m, thì trừ những khu vực cực kỳ dày đặc, độ chính xác đó đủ cho định vị đường bộ. Ngay cả ở những nơi như vậy chỉ cần liếc bản đồ một cái là được, còn trên đường thoáng thì rất tốt
Các bộ thu GPS ngày xưa lấy số kênh theo dõi làm điểm marketing; bộ thu giá rẻ chỉ có phần cứng để theo dõi 6–8 vệ tinh, còn bộ thu đắt tiền có thể theo dõi 12 vệ tinh
Vì vậy bộ thu định nghĩa bằng phần mềm này đang triển khai khá nhiều phần vốn trước đây do phần cứng đảm nhiệm, và có thể theo dõi tất cả vệ tinh nhìn thấy được
Cách tiếp cận định nghĩa bằng phần mềm có lợi thế mạnh. Ví dụ, việc thu nhận vệ tinh ban đầu tính tương quan chéo giữa tín hiệu thu được và nhiều Gold code; nếu xử lý việc này trong miền Fourier thì có thể thu nhận tín hiệu khá nhanh
Nếu muốn một bộ thu GPS DIY hardcore đi xuống tận cấp transistor, có lẽ bạn sẽ thấy https://lea.hamradio.si/~s53mv/navsats/theory.html khá thú vị. Đây là bộ thu GPS DIY kiểu thập niên 1990, có cả sơ đồ mạch vẽ tay, PCB vẽ tay và ăng-ten tự chế
Hơn nữa, vào cuối thập niên 1990, dù không lý tưởng trong môi trường đô thị dày đặc, đó vẫn là lĩnh vực mà ngay cả các bộ thu hiện đại cũng thường gặp khó, và hiệu chỉnh GPS vi sai cho ô tô cũng đã có thể thực hiện. Nó dùng được ở các khu vực đô thị ven biển đông dân như NYC
Các hệ thống định vị ô tô cũ thì thô sơ và dữ liệu bản đồ nhìn chung rất tệ, nhưng vì tính khả dụng chọn lọc nên khó mà nói chúng “chắc chắn vô dụng”
Tất nhiên, tôi thừa nhận là chúng khá tệ. Nhưng tính khả dụng chọn lọc chỉ là một yếu tố; với năng lực xử lý ngày nay và bản đồ tốt hơn, ngay cả khi có sai số vị trí do tính khả dụng chọn lọc, việc hiệu chỉnh cũng sẽ dễ dàng hơn
Ngôn ngữ pháp lý trong quy định cập nhật https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec... quá phức tạp nên thậm chí còn khó hiểu liệu điều đó hiện vẫn áp dụng hay không
Nhân nói về SDR, ITAR cũng là lý do module GNU Radio radar thụ động do nhóm Kraken RF tạo ra bị gỡ xuống
Tôi cũng thích https://ciechanow.ski/gps/, có những hình minh họa tuyệt vời để xem kèm phần giải thích này
Những đồ họa tương tác đó thì không ai sánh được
Kết hợp với khả năng tạo ra cả phần mềm hỗ trợ phân tích và triển khai lời giải cuối cùng, nó trở thành một dự án rất ấn tượng. Tôi đã học GPS và làm việc chuyên nghiệp với nó vài năm nhưng vẫn chưa biết hết mọi thứ. Rất mong được xem mã nguồn
Nhìn lại thì tôi cảm thấy đó là việc rất đáng làm. Giờ đây tôi cảm thấy mình hiểu lĩnh vực RF một cách cụ thể hơn nhiều và có thể dùng nó như một công cụ. Nó gợi tôi nhớ đến những phần tôi yêu thích ở chính máy tính
Nếu công thức tạo mã P được công khai, các bộ thu GPS dân dụng cũng có thể khóa vào nó bằng đúng kỹ thuật như với mã C/A
Tôi chưa đọc hết, nhưng tò mò không biết có cách nào vét cạn chuỗi chip mã P hoặc dùng mẹo khác để lấy nó nhằm có GPS chính xác hơn không?
Nếu quan tâm đến câu chuyện phát triển GPS, “GPS Declassified” của Richard Easton là một cuốn sách kể khá hấp dẫn
GPS hoạt động cả ở chế độ máy bay, và theo nghĩa đen là cả trên máy bay. Nó hoạt động mà không cần dịch vụ di động hay Wi-Fi. Mỹ kiểm soát chùm vệ tinh GPS, có thể tắt GPS ở một số khu vực khi cần và thực tế đã từng làm vậy. Vì thế các nước khác đã phóng các chùm vệ tinh GNSS của riêng mình
Điều thú vị nữa là vệ tinh GPS không gửi vị trí xuống mà chỉ gửi thời gian. Thử làm điều này với dữ liệu nhận được từ điện thoại là một bài tập rất thú vị, và điện thoại được kết nối trực tiếp với vệ tinh
Nhân tiện, gần đây tôi học các nguyên lý cơ bản của dẫn đường bằng sao; dù là một cơ chế hoàn toàn khác, sự đối xứng ở chỗ nó cũng phụ thuộc rất nhiều vào việc duy trì thời gian chính xác thật thú vị
Những bộ thu GPS đầu tiên tôi dùng là thiết bị độc lập hoàn toàn không có kết nối dữ liệu, nên việc GPS không cần dữ liệu là điều hiển nhiên với tôi
Tuy nhiên, các thiết bị như điện thoại thường lấy dữ liệu đó từ nguồn khác vì nhanh hơn nhiều so với chờ truyền dữ liệu GPS
Theo hiểu biết của tôi, khả năng tùy ý tắt GPS ở một khu vực cụ thể không còn có trên các vệ tinh GPS mới hơn, và có lẽ cũng không còn trên tất cả các vệ tinh đang vận hành hiện nay
Nếu dùng iPhone, sau khi hạ cánh, những bức ảnh đó sẽ được liên kết với vị trí tại thời điểm chụp. Nhờ vậy sau này có thể tìm lại những địa hình thú vị tình cờ nhìn thấy
Nó còn bao gồm cả các từ khóa tìm kiếm đã dùng và độc thoại nội tâm. Đây là kiểu tutorial tôi thích nhất: không chỉ dạy cách câu cá, mà còn cho thấy cách tự tìm các linh kiện để chế tạo cả một cái máy câu
Dù vậy, thật sự cảm ơn vì bạn đã nhìn nhận cách tiếp cận đó một cách tích cực