DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32

หลายสิบปีที่ตลาด DIY หรือตลาดระดับล่างจะเห็น UBlox Zed F9P ของสวิสเซอร์แลนด์โลดแล่นบนยุทธจักรนี้มานานหลายสิบปี จนในที่สุดก็มีคู่แข่งกันกลายๆคือ Unicorecomm จากจีนแผ่นดินใหญ่ โดยเฉพาะชิป UM980 ที่พร้อมจะท้าชนทุกสถาบัน ที่มี channel ทั้งหมด 1408 ช่อง พูดง่ายๆแบบชาวบ้านคือสามารถรับสัญญานดาวเทียมบนท้องฟ้าได้สูงสุด 1408 ดวง แต่ในปัจจุบันนี้ดาวเทียมนำหนบนท้องฟ้าประมาณแค่ 200 เครื่อง ดังนั้นถือว่าเผื่อมาแบบก่อนกาลกันเลยทีเดียว

ที่จริงยังมีตลาดบนๆคือชิป Septentrio ของเบลเยียม ฝั่งยุโรป มีคุณภาพและราคาที่สูงกว่าหลายช่วงตัว ปัจจุบันบริษัทผู้ผลิตดั้งเดิมถูกซื้อโดยยักษ์ใหญ่ Hexagon และผมจะไม่ขอกล่าวในที่นี้

และแล้วโครงการที่ผมรอมานานมาก จะทำแต่ไม่ได้ทำสักทีเนื่องจากหาเวลาว่างที่ต่อเนื่องไม่ค่อยมี ผมตั้งเป้าว่าจะทำ RTK Base Station ที่พร้อมจะอึดๆหน่อย และที่สำคัญจะทำยังไงให้ตัวสถานีฐานความละเอียดความถูกต้องอยู่ในระดับSurvey-grade พูดแบบชาวบ้านคือสามารถใช้เป็นสถานีฐานสำหรับโรเวอร์ ที่สามารถนำไปเซอร์เวย์เช่นให้ตำแหน่งในงานก่อสร้างได้ ทั้งระดับและค่าพิกัด หรือเป็นสถานีฐานสำหรับงานบินโดรนที่ถ่ายภาพหรือสแกนไลดาร์ สำหรับทำแผนที่ความละเอียดสูง

การใช้งานอื่นๆเช่นนำมาใช้ในงานการเกษตร เหล่านี้ไม่ต้องค่าระดับและพิกัดที่ถูกต้องมากนัก สังเกตว่าโครงการส่วนใหญ่ที่ฝากโค้ดไว้ใน Github ล้วนแล้วที่ไม่ใช้ในงานเซอร์เวย์ เพราะไม่มีการใช้ค่าพิกัดและระดับสำหรับสถานีฐานเป็นเรื่องเป็นราว ดูได้จากเว็บของแอพไม่สามารถตั้งค่าพิกัดและระดับให้กับสถานีฐานได้ บางเจ้าเน้นส่งสัญญาน NTRIP เข้า Caster พวก Onocoy เพื่อแปรเป็นเงินคริปโตไปนั่นเลยครับ

และที่สำคัญสำหรับ RTK Base Station สมัยนี้ ต้องสามารถส่งข้อมูลผ่านอินเทอร์เน็ตไปยัง NTRIP Caster ได้ ที่มีทั้งฟรี เสียเงิน เสียเงินยังแบ่งเป็นเสียมากหน่อยแบบว่าจ่ายแล้วจบสำหรับคนที่มีเงินหนา ส่วนอีกแบบคือเสียน้อยแต่ต้องลงทุนออกแรงเอง DIY อ่านได้ที่บทความก่อนของผมตามด้านล่างนี้

ระบบ RTK Base Station แบบส่งสัญญานวิทยุ UHF (Radio modem) ต้องบอกว่ามาถึงยุคที่สัญญาณโทรศัพท์และอินเทอร์เน็ตเข้าถึงทุกที่ ตอนนี้ได้ล้าสมัยไปเรียบร้อย เนื่องจากความยุ่งยาก ต้องลงทุนซื้อตัววิทยุโมเด็มที่ประกบกับเครื่อง GNSS สำหรับสถานีฐาน ในทะเลอาจจะไปถึง 20 กม. เพราะไม่มีอะไรมาบังสัญญาณ แต่บนบกไปได้สัก 5 กม. ถือว่าเยี่ยมแล้ว

ส่วนประกอบของฮาร์ดแวร์ของ DIY RTK Base Station (NTRIP Server)

  1. บอร์ด Unicorecomm UM980 ต่อกับสายอากาศไปยังจานรับสัญญาณ (Antenna) ราคาประมาณ 3000 – 8000 บาท
  2. บอร์ด ESP32 เป็นศูนย์กลาง รับข้อมูล GNSS จากบอร์ด UM980 โดยที่ตัวของมันเอง เราเรียกว่า NTRIP Server เมื่อรับข้อมูลจาก UM980 แล้ว จะส่งข้อมูลผ่านอินเทอร์เน็ตต่อให้กับ NTRIP Caster อีกที ราคาประมาณ 150 -300 บาท ควรจะเลือกรุ่นที่มีเสาอากาศ Wifi เพราะจะได้ส่งได้ไกลกว่า
  3. จานรับสัญญาณ (GNSS Antenna) และสายสัญญาณ เน้นว่าต้องสามารถรับสัญญาณได้อย่างน้อยที่ความถี่ L1 และ L2 หรือถ้าให้ดีกว่าจะเลือกเป็นสามความถี่คือ L1, L2 และ L5 ราคา 1500 – 10000 บาท
  4. กล่องใส่อุปกรณ์ ผมเลือกวัสดุเป็นอลูมิเนียมเนื่องความเบาและสามารถระบายความร้อนได้ดี ขนาดประมาณ 10 x 15 x 4 ซม. ราคาประมาณ 200 – 300 บาท
  5. พัดลมขนาดเล็ก 3 x 3 ซม. มีหน้ากากกันด้านนอกขนาด 4 x 4 ซม. ราคารวม 30 – 50 บาท
  6. สายสัญญาณไวไฟในกล่อง แถมมากับบอร์ด ESP32
  7. สายสัญญาณ GNSS สำหรับใช้ภายในกล่อง (ใช้สายไวไฟ) ราคาประมาณ 50 บาท
  8. ตัวแปลงไฟฟ้า DC 12V เป็น USB 5V เพื่อจ่ายเลี้ยงบอร์ด UM980 และ ESP32 ราคา 80 บาท
🧭 UM980 ปะทะ ZED-F9P: การตัดสินใจเลือก Base Station

UM980 นับว่าเป็นชิปที่อยู่ในเครื่อง GNSS ของจีนทั้งยี่ห้อชั้นนำ Top 10 ตลาดกลางและตลาดล่างล้วนแต่ใช้ชิปตัวนี้ ราคาของ GNSS จะต่างกันที่วัสดุที่ใช้ทำรวมถึงซอฟท์แวร์ที่มากับคอนโทรลเลอร์ และบริการหลังการขาย ทำให้เครื่องรับ GNSs ของจีนที่ขายในประเทศไทยมีราคาที่ต่างกัน

มาลองดูผลการเปรียบเทียบ

หัวข้อการเปรียบเทียบUnicore UM980 (Triple-Frequency)u-blox ZED-F9P (Dual-Frequency)
ความถี่สัญญาณสามความถี่ (L1, L2, L5/E5b)สองความถี่ (L1, L2)
จำนวนช่องสัญญาณ1408 ช่องสัญญาณน้อยกว่า (แต่ประสิทธิภาพสูง)
ประสิทธิภาพ RTKดีมาก, แต่อาจใช้เวลาในการหาตำแหน่งเริ่มต้น (Fix) นานกว่า F9P เล็กน้อยยอดเยี่ยม, มีชื่อเสียงเรื่องการหาตำแหน่ง RTK Fix ได้รวดเร็วมาก
การรองรับสัญญาณรองรับสัญญาณกว้างขวางกว่า รวมถึง GPS L1C/A/L2C/L5, Galileo E1/E5b/E6, BeiDou B1I/B2I/B3I/B2b, GLONASS L1/L2, QZSS, SBASรองรับสัญญาณหลักๆ ได้ดี (GPS L1/L2, Galileo E1/E5b) แต่ครอบคลุมน้อยกว่า UM980
ราคาถูกกว่าและคุ้มค่าเมื่อเทียบกับคุณสมบัติที่ได้รับคุ้มค่าและเป็นที่นิยม (โดยทั่วไปมักแพงกว่า UM980 เล็กน้อย)
ความง่ายในการใช้งาน/พัฒนาซับซ้อนกว่าเล็กน้อย, อาจต้องมีความรู้ด้าน RF เพิ่มเติมใช้งานง่าย, มีเอกสารเยอะ, รองรับในแพลตฟอร์มต่างๆ มากมาย (เช่น Ardupilot, Raspberry Pi)

สรุปเบื้องต้น UM980 โดดเด่นเรื่อง ความสามารถในการรับสัญญาณที่เหนือกว่า ด้วยการใช้สามความถี่ ทำให้ทำงานได้ดีในสภาพแวดล้อมที่ท้าทาย (เช่น ในเมืองหรือใต้ต้นไม้) และให้ความคุ้มค่าด้านราคาต่อคุณสมบัติสูง u-blox ZED-F9P เป็นมาตรฐานอุตสาหกรรมที่ได้รับการพิสูจน์แล้ว มีจุดแข็งคือ ความน่าเชื่อถือและการหาตำแหน่ง RTK ที่รวดเร็ว ใช้งานง่าย มีชุมชนผู้ใช้และการสนับสนุนที่กว้างขวาง

🛠️ การตั้งค่าเริ่มต้น UM980 ผ่าน UPrecise

ในการใช้งานครั้งแรก ผู้ใช้จำเป็นต้องใช้โปรแกรม UPrecise ของ Unicore เพื่อกำหนดค่าพื้นฐานและบันทึกค่าลงในหน่วยความจำถาวรของโมดูล การใช้ UPrecise เพื่อติดต่อกับ UM980 นั้นมีความจำเป็นโดยเฉพาะคนที่ซื้อบอร์ด UM980 มาใหม่ จะต้องมาตั้งค่ากันก่อน การต่อบอร์ด UM980 อาจจะทำให้ผู้ใช้ที่ไม่เคยใช้ UM980 จะงงงันเพราะต่อด้วย USB port จะพบไม่มีข้อมูลดาวเทียมขึ้นบนหน้าจออย่างที่มันควรจะเป็น จะต้องมีการตั้งค่าก่อนเสมอ

การเชื่อมต่อและปรับ Baud Rate เริ่มต้น
  • คำแนะนำ: ผู้ใช้ต้องเชื่อมต่อ UM980 เข้ากับคอมพิวเตอร์ผ่าน โดยใช้พอร์ต USB ของบอร์ด และเปิดโปรแกรม UPrecise
  • การตั้งค่าเริ่มต้น: กำหนดค่า COM Port ที่เชื่อมต่อกับ UM980 และตั้งค่า Baud Rate เป็นค่าเริ่มต้นจากโรงงาน (โดยทั่วไปคือ 115200) แล้วกด Connect
  • การตั้งค่า COM2 สำหรับ ESP32: เนื่องจากเราจะใช้ COM2 พอร์ต COM2 นี้ไม่ใช่ของคอมพิวเตอร์นะครับเป็นพอร์ต UART สำหรับเชื่อมต่อกับ ESP32 ในอัตราความเร็วสูง ผู้ใช้ควรตั้งค่านี้ผ่าน UPrecise ก่อน ที่ UPrecise ไปช่องป้อนคำสั่ง:
    • คำสั่ง: SETCOM COM2 BAUD 460800
    • คำอธิบาย: การตั้งค่านี้จะทำให้ UM980 ส่งข้อมูล RTCM ออกทางขา UART ที่ต่อกับ ESP32 ที่ความเร็ว 460800 bps โดยอัตโนมัติเมื่อเปิดใช้งาน

ชุดคำสั่งกำหนดโหมดเป็นสถานีฐาน

serial port ของ UM980 ตั้งชื่อ COM1, COM2 และ COM3 (อย่าไปสับสนกับ serial port ของคอมพิวเตอร์) ไดอะแกรมของ serial port ของ UM980 ดังนี้

UM980 has 3 ports:
├─ COM1 (TTL UART1: RX1/TX1)
├─ COM2 (TTL UART2: RX2/TX2)  
└─ COM3 (RS232)

เมื่อเปิดโปรแกรมแล้ว ให้คัดลอกคำสั่งไปใส่ใน Command Entry แล้วกด Enter โดยที่ผมต่อ ESP32 TX (GPIO 17) → UM980 RX1 และ ESP32 RX (GPIO 16) → UM980 TX1

mode base 12.708027694109 101.009721414363 3.320
GPGSV COM1 1
GLGSV COM1 1  
GAGSV COM1 1
GBGSV COM1 1
GPGGA COM1 1
RTCM 1005 COM1 10
RTCM 1077 COM1 1
RTCM 1087 COM1 1
RTCM 1097 COM1 1
RTCM 1127 COM1 1
SAVECONFIG

คำอธิบาย: สังเกตว่า RTCM ที่ตั้งไว้ได้แก่ 1077, 1087, 1097, 1127 คือ MSM7 และคำสั่งปิดท้ายคือ saveconfig สำคัญที่สุด หากไม่ได้ทำ การตั้งค่าต่างๆจะหายไปเมื่อถอดปลั๊ก


💻 การเปลี่ยน ESP32 ให้เป็น NTRIP Server

นี่อาจจะเป็นส่วนที่ยากที่สุดแต่ก็ท้าทายที่สุด เพราะการทำส่วนติดต่อผู้ใช้ (UI) จะมาทำที่นี่ ข้อดีคือสามารถหาเอกสารอ่านได้ง่าย มีโครงการ repository ที่ฝากตาม github ไว้เยอะพอสมควร

  • การเชื่อมต่อ (Hardware Interfacing):
    • อุปกรณ์: ESP32 Dev Board ผมเลือกใช้ ESP32-WROOM-32U แบบมีสายอากาศไวไฟ จำนวนขา 38 ขา
    • การเชื่อมต่อ UART: แผนภาพการต่อสาย TX/RX จาก UM980 ซึ่งส่งข้อมูล RTCM ไปยังขา RX/TX ของ ESP32 อย่างถูกต้อง ใช้แรงดันไฟฟ้า 3.3V
    • แสดงการต่อจำนวน 5 สาย ESP32-WROOM-32 และ UM980 Board
    • ต่อไปสวิตช์กดดับปล่อยติด (Reset) เพื่อให้สามารถมีปุ่มรีเซ็ตได้ในกรณีที่เครื่องค้าง
  • โค้ดและตรรกกะสำหรับ ESP32 ใช้เครื่องมือจากผู้ผลิต ESP-IDF:
    • โครงสร้างหลักของโค้ด ESP-IDF: มีฟังก์ชันหลัก 4 ส่วน
      1. WiFi Connection: การเชื่อมต่อ ESP32 เข้ากับเครือข่ายไวไฟ
      2. UART Listener: รับข้อมูล RTCM ไบนารีจากบอร์ด UM980 อย่างต่อเนื่องที่ Baud Rate สูง เช่น 460800
      3. NTRIP Server: เชื่อมต่อ TCP/IP ผ่านอินเทอร์เน็ตไปยัง NTRIP Caster และส่งผ่านข้อมูล RTCM ที่ได้รับจาก UART ไปยัง Caster ทันทีที่รับมา
      4. กำหนดค่าผ่าน Web Interface: เพื่อให้ผู้ใช้สามารถกำหนดค่า IP Caster, Port, Mountpoint, และ Password และแสดงข้อมูล GNSS ในขณะนั้นให้ผู้ใช้ทราบว่า
        ESP32-WROOM-32                    UM980 Board
    ┌─────────────────────┐         ┌──────────────────────┐
    │                     │         │                      │
    │  GPIO 17 (TX0) ─────┼────────>│ RX1 (COM1/UART1)     │
    │                     │         │                      │
    │  GPIO 16 (RX0) <────┼─────────│ TX1 (COM1/UART1)     │
    │                     │         │                      │
    │  GPIO 33 (TX1) ─────┼────────>│ RX2 (COM2/UART2)     │
    │                     │         │                      │
    │  GPIO 32 (RX1) <────┼─────────│ TX2 (COM2/UART2)     │
    │                     │         │                      │
    │              GND    ┼─────────│ GND                  │
    └─────────────────────┘         └──────────────────────┘
                                              │
                                              │ SMA Connector
                                              ▼
                                    ┌─────────────────┐
                                    │  GNSS Antenna   │
                                    │  (L1+L2+L5)     │
                                    └─────────────────┘
🌐 Web Interface สำหรับการตั้งค่าและควบคุม

ส่วนที่น่าสนใจที่สุดของโครงการนี้คือการพัฒนา Web Interface ที่ทำงานบน ESP32 โดยตรง ผู้ใช้สามารถเข้าถึงผ่านเบราว์เซอร์ จากบนมือถือหรือคอมพิวเตอร์ได้ทันทีโดยไม่ต้องติดตั้งโปรแกรมเพิ่มเติม ผมออกแบบหน้าเว็บให้มีลักษณะเป็น Sidebar Navigation เพื่อให้เข้าถึงเมนูแบบง่ายๆ

ฟีเจอร์หลักของ Web Interface:

  1. WiFi – แสดงสถานะของ Wifi AP ตัวของ ESP32 สามารถเข้าถึงได้ด้วย AP อย่างง่ายๆ ในขณะเดียวกันสามารถสั่งให้ ESP32 เชื่อมต่อกับไวไฟที่เป็น Hotspot อื่นๆ เพื่อใช้อินเทอร์เน็ต ในการส่งข้อมูล ลักษณะ ทูอินวัน แบบนี้ทำให้ตามตัวง่ายหาง่าย การออกแบบนี้เป็นลักษณะของ แบบฉบับ iOT
  2. Satellite Tracking Display – แสดงจำนวนดาวเทียมแต่ละกลุ่มที่รับสัญญาณได้ (GPS, GLONASS, Galileo, BeiDou) ในรุ่นต่อไปจะสามารถแสดงกราฟและ SkyPlot ได้
  3. Base Station Configuration – หน้าเว็บสำหรับตั้งค่าพิกัดของสถานีฐาน (Latitude, Longitude, Ellipsoid Height) ผมออกแบบให้รองรับการป้อนค่าพิกัดแบบทศนิยม 12 ตำแหน่ง เพื่อความแม่นยำระดับมิลลิเมตร ซึ่งเป็นสิ่งที่สำคัญสำหรับงาน Survey-grade
  4. NTRIP Server Settings – หน้าเว็บตั้งค่าการเชื่อมต่อกับ NTRIP Caster ซึ่งสามารถส่งได้สอง Caster (Duo) ประกอบด้วย:
    • IP Address หรือ Domain name ของ Caster
    • Port (ปกติคือ 2101)
    • Mountpoint ชื่อสถานีฐาน
    • Username และ Password สำหรับการยืนยันตัวตน
  5. UART Configuration – ตั้งค่าสำหรับ UART ได้แค่หมายเลขขา (Pin) การตั้งค่าของ UART จะถูกเตือนว่าเป็นเรื่องแอดวานซ์ ถ้าไม่แน่ใจอย่าแก้ไข
  6. System Information – แสดงข้อมูลระบบ เช่น Firmware version, Uptime, Free Memory, และ IP Address ของ ESP32

ทุกการตั้งค่าจะถูกบันทึกลงใน NVS (Non-Volatile Storage) ของ ESP32 ทำให้ค่าคงอยู่แม้จะถอดปลั๊กไฟ และเมื่อเปิดเครื่องใหม่ ระบบจะโหลดค่าเดิมกลับมาใช้งานอัตโนมัติ


⚙️ การติดตั้งและทดสอบระบบ

เมื่อประกอบฮาร์ดแวร์เสร็จเรียบร้อย และอัพโหลดโค้ดลง ESP32 แล้ว ขั้นตอนการใช้งานมีดังนี้:

1. การเชื่อมต่อครั้งแรก (First-time Setup)
  • เมื่อ ESP32 บูตครั้งแรก หากยังไม่มีการตั้งค่า WiFi มันจะเปิดโหมด Access Point (AP Mode) ขึ้นมา
  • เชื่อมต่อมือถือหรือคอมพิวเตอร์เข้ากับ WiFi นี้ จากนั้นเปิดเบราว์เซอร์ไปที่ http://192.168.4.1
  • ตั้งค่า WiFi ที่ต้องการให้เชื่อมต่อ และบันทึกการตั้งค่า ESP32 จะรีบูตและเชื่อมต่อกับ WiFi ที่กำหนด
  • ตรวจสอบ IP Address ที่ ESP32 ได้ที่หน้า Wifi Station
2. การตั้งค่าพิกัดสถานีฐาน (Base Location Configuration)

นี่เป็นขั้นตอนที่สำคัญที่สุดสำหรับการทำ RTK Base Station ระดับ Survey-grade เพราะความถูกต้องของพิกัดสถานีฐานจะส่งผลโดยตรงต่อความแม่นยำของ Rover ที่ใช้งาน

วิธีการหาพิกัดที่ถูกต้อง:

  • วิธีที่ 1: ใช้ Post-Processing – นำข้อมูล GNSS ดิบ (Raw data) จากสถานีฐานไปประมวลผลแบบ Static ใช้ GNSS RTSD ของออนไลน์ของกรมแผนที่ทหาร ระยะเวลา 1-24 ชั่วโมง จะได้พิกัดที่แม่นยำในระดับเซนติเมตร
  • วิธีที่ 2: ใช้ Total Station วัดจากหมุดควบคุม – ถ้ามีหมุดควบคุมที่ใกล้เคียง สามารถใช้ Total Station วัดมาได้ (วิธีนี้แม่นยำและเชื่อถือได้มาก)
  • วิธีที่ 3: ใช้ NTRIP Rover Mode – ใช้ UM980 เชื่อมต่อกับ NTRIP Caster อื่น (เช่น RTK2go หรือ GNSS RTSD ของกรมแผนที่ทหาร) เพื่อทำ RTK Fix แล้วบันทึกพิกัด Average 15-30 นาที (วิธีนี้สะดวกแต่ความแม่นยำขึ้นอยู่กับระยะห่างจากสถานีฐานอ้างอิง)
  • วิธีการที่ 4: ถ้าเป็นงานก่อสร้างที่มีหมุดควบคุมจากเจ้าของงานอยู่แล้ว จะทำการรังวัดแบบโครงข่ายเพื่อขยายหมุดควบคุม และหนึ่งในหมุดนั้นก็คือหมุดสำหรับติดตั้งเป็น RTK Base Station

ในโครงการนี้ ผมใช้วิธีที่ 4 จากนั้นนำค่าพิกัดที่ปรับแก้แล้ว (Adjustment Network) มาใช้เป็นพิกัดสถานีฐาน

สิ่งที่ต้องระวัง:ผมพบว่าการใช้ ค่าระดับ WGS84 Ellipsoid Height เป็นค่าระดับสำหรับสถานีฐาน จะทำงานได้ดีกว่าการแปลงเป็น MSL (Mean Sea Level) ในประเทศไทย เนื่องจากปัญหาความไม่แน่นอนของ Geoid Model ดังนั้นผมจึงเลือกใช้ ECEF (Earth-Centered, Earth-Fixed) Coordinate System ในการคำนวณ ซึ่งให้ผลลัพธ์ที่สม่ำเสมอและแม่นยำกว่า

3. การตั้งค่า NTRIP Caster และทดสอบการส่งข้อมูล
  • ป้อนข้อมูล NTRIP Caster ในหน้า Web Interface (ผมใช้ DigitalOcean VPS ที่ติดตั้ง NTRIP Caster ไว้แล้ว ตามบทความก่อนหน้า)
  • กด “Save Configuration and Restart” จากนั้น ESP32 จะทำการรีสตาร์ท จากนั้นเข้าหน้าเว็บอีกครั้งสามารถตรวจสอบสถานะการเชื่อมต่อ หน้าเว็บจะแสดงว่าเชื่อมต่อสำเร็จหรือไม่ สามารถดูได้จากจำนวนไบต์ที่ส่งไปแล้ว
  • ทดสอบการรับข้อมูลจาก Caster โดยใช้โปรแกรม SNIP Caster หรือ STRSVR (จาก RTKLib) เชื่อมต่อเข้ามาที่ Mountpoint ดูว่าได้รับข้อมูล RTCM หรือไม่ หรือถ้ามี RTK โรเวอร์ก็ลองต่อดูได้ว่ารับสัญญาน RTCM จาก NTRIP Caster แล้วค่า “Fix” หรือไม่

เมื่อทุกอย่างทำงานถูกต้อง อัตราการส่งข้อมูลประมาณ 2-4 KB/s ขึ้นอยู่กับจำนวนดาวเทียมและ RTCM Message ที่เปิดใช้งาน


📊 ผลการทดสอบความแม่นยำ (Accuracy Testing)

ผลลัพธ์นี้ถือว่ายอดเยี่ยมสำหรับระบบ DIY ที่ลงทุนไม่ถึง 10,000 บาท โดยเฉพาะค่า Vertical Accuracy ที่อยู่ในระดับ ±2.0 cm เหมาะสำหรับงานก่อสร้างทั่วไปและงานสำรวจภูมิประเทศระดับกลาง ถ้ามีโอกาสผมจะนำผลการทดสอบที่มากกว่านี้ในทางสถิติมานำเสนอกันดู

💡 สรุปและแนวทางในอนาคต

โครงการ DIY RTK Base Station ด้วย ESP32 และ UM980 นี้ พิสูจน์ให้เห็นแล้วว่า เราสามารถสร้างสถานีฐาน GNSS ระดับ Survey-grade ได้ด้วยงบประมาณที่ต่ำมาก เมื่อเทียบกับสินค้าสำเร็จรูปที่มีราคาหลายหมื่นบาทจนถึงหลายแสนบาท

✅ ข้อดีของระบบ
  • ต้นทุนต่ำ: ลงทุนรวมประมาณ 10,000 บาท (ขึ้นอยู่กับจานรับสัญญาณที่เลือก) เทียบกับสินค้าสำเร็จรูปที่ราคา 50,000-800,000 บาท
  • ความแม่นยำสูง: ให้ผลลัพธ์ระดับเซนติเมตร เทียบเท่ากับอุปกรณ์มืออาชีพ
  • ปรับแต่งได้: สามารถเขียนโค้ดเพิ่มฟีเจอร์ตามต้องการได้เอง เช่น Data Logging, Remote Monitoring, หรือการส่งข้อมูลไปยัง Cloud
  • Open Source: ใช้เครื่องมือและไลบรารีที่เป็น Open Source ทั้งหมด ไม่ต้องเสียค่าลิขสิทธิ์
  • ขนาดเล็กกะทัดรัด: บรรจุในกล่องขนาดเล็ก พกพาสะดวก ติดตั้งง่าย
⚠️ ข้อจำกัด
  • ต้องมีความรู้ทางเทคนิค: ต้องเข้าใจเรื่อง GNSS, UART, ESP-IDF, และ Web Development ในระดับหนึ่ง ในสมัยนี้มี AI ที่มาช่วยได้ เขียนโค้ดช่วยได้ แต่คนใช้ก็ต้องเก่งและเข้าใจในการใช้งานเขา ถึงจะได้ผลงานที่ดี
  • ใช้เวลาในการติดตั้งและปรับแต่ง: ไม่ได้เป็น Plug-and-Play แบบสินค้าสำเร็จรูป
  • ไม่มีการรับประกัน: ถ้าอุปกรณ์เสีย ต้องซ่อมแซมหรือเปลี่ยนเอง ถ้าสนุกกับงานพวก DIY นี่เป็นทางเลือกที่ถูกต้องและถูกใจ
  • ความทนทานต่ำกว่า: อุปกรณ์ภายในกล่องไม่ได้มาตรฐาน IP67 เหมือนอุปกรณ์มืออาชีพ อาจไม่เหมาะสำหรับสภาพแวดล้อมที่อากาศรุนแรง
  • ข้อจำกัดของ ESP32 WRoom 32U ที่ใช้งานอยู่ถึงแม้ไมโครคอนโทรลเลอร์ตัวนี้จะแรงเอาเรื่องในรุ่นราวคราวเดียวก้น แต่เมื่อทำงานงานหลายๆงาน ผมพบว่ามันหนักไม่ไหวและอีกอย่างคือแรม 512 KB มันน้อย ผมใช้หมดเหลือประมาณ 35% ตามสเป็คแล้วควรให้เหลือประมาณ 30% ก็ปริ่มๆ วิธีการแก้ข้อจำกัดของผมคือจะขยับไปใช้รุ่นที่แรงกว่าคือ ESP32 S3 N16R8 ที่ซีพียูดูอัลคอร์ที่แรงกว่า มีแรมมากกว่า
🚀 แผนพัฒนาต่อไป

ผมมีแผนจะพัฒนาระบบนี้ต่อไปในหลายด้าน:

  1. Data Logging: บันทึกข้อมูล Raw GNSS ลงใน SD Card หรือสื่อประเภทแฟลชเมโมรี เพื่อนำไป Post-Processing ภายหลัง
  2. Remote Monitoring: ส่งสถานะการทำงานไปแสดงผลบน Dashboard แบบ Real-time ผ่าน MQTT หรือ WebSocket
  3. Multi-Band Antenna: ทดลองใช้จานรับสัญญาณแบบ Survey-grade ที่รองรับความถี่ L1+L2+L5 อย่างเต็มรูปแบบ เนื่องจากของดีมีราคาระดับหลักหมื่นด้วยงบที่จำกัดจึงจำต้องใช้ของที่มีราคาถูกระดับหลักพันต้นๆไปก่อน
  4. Solar Power: ใช้ระบบจ่ายไฟด้วย Solar Panel + Battery เพื่อใช้งานในพื้นที่ห่างไกล เรื่องนี้เป็นเรื่องง่ายๆมีชุดนอนนาที่ราคา 2500-3500 บาท ที่ขายอยู่มากมาย
  5. OTA Update: เพิ่มฟีเจอร์ Over-The-Air firmware update เพื่ออัพเดต ESP32 ผ่านเน็ตได้โดยไม่ต้องถอดออกมา (ถ้าเปลี่ยนไปใช้ ESP32 N16R8)
  6. ให้ระบบพัดลมที่อยู่ข้างในสามารถเปิดปิดเองอัตโนมัติขึ้นอยู่กับอุณภูมิภายในกล่อง
  7. เปลี่ยนไมโครคอนโทรลเลอร์เป็น ESP21-N16R8 หรืออาจจะขยับไปยัง Orange PI Zero 3W
📦 ผู้สนับสนุนโครงการ

ขอขอบคุณคุณบัณฑิต คุ้มสูงสำหรับการเป็นสปอนเซอร์ในการสร้าง DIY รุ่นที่หนึ่งในครั้งนี้ และเท่าที่คุยกันจะมีรุ่นที่สองที่จะปรับปรุงและพัฒนาดังที่กล่าวมาแล้วข้างต้น เนื่องจากโค้ดที่ปรับปรุงใหม่จากของเก่าที่มีบั๊กพอสมควร อีกทั้งมีบั๊กใหม่ๆ ผมไม่พร้อมที่จะเปิดโค้ดเป็นสาธารณะในเวลาอันใกล้นี้


🎯 สรุป

การสร้าง DIY RTK Base Station ด้วย ESP32 และ UM980 เป็นโครงการที่ท้าทายแต่คุ้มค่าอย่างยิ่ง ไม่เพียงแต่ประหยัดต้นทุนได้มหาศาล แต่ยังได้เรียนรู้เทคโนโลลยี GNSS, RTK, Embedded System, และ Web Development ในเชิงลึก

ในการทำสถานีฐาน RTK ที่มีงบประมาณจำกัด และผมได้เรียนรู้เทคโนโลยีเหล่านี้ด้วยตัวเอง แม้จะมีอุปสรรคบ้างในระหว่างทาง แต่เมื่อได้เห็นระบบทำงานจริงและให้ผลลัพธ์ที่แม่นยำระดับเซนติเมตร ทำให้มีกำลังใจที่จะพัฒนาต่อไปครับ โปรดติตตามตอนต่อไปครับ


📚 อ้างอิง

อัพเดทล่าสุด: ธันวาคม 2025

1 thought on “DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32”

  1. ได้รับความรู้ทางด้านนี้จาก Blog มากครับ
    ขอบคุณครับ

Leave a Reply to Sor Saimai Cancel reply

Your email address will not be published. Required fields are marked *