- - - -
คุณสมบัติหลักของส่วนหน้าคือ:
รูปภาพอื่นๆ มีอยู่ในโฟลเดอร์ ./images
มีรูปภาพที่พร้อมแฟลชสำหรับ Orange Pi Zero, Orange Pi Zero 2, Orange Pi Zero 3 SBC : Armbian_RTKBase
หากคุณใช้ Raspberry Pi ต้องขอบคุณ jancelin คุณสามารถดาวน์โหลดไฟล์ iso ที่พร้อมสำหรับแฟลชได้ที่นี่
เชื่อมต่อตัวรับสัญญาณ gnss ของคุณกับราสเบอร์รี่ pi/orange pi/....
เปิดเทอร์มินัลแล้ว:
cd ~
wget https://raw.githubusercontent.com/Stefal/rtkbase/master/tools/install.sh -O install.sh
chmod +x install.sh
sudo ./install.sh --all release
ไปดื่มกาแฟหน่อยเถอะ อีกไม่นานหรอก สคริปต์จะติดตั้งซอฟต์แวร์ที่จำเป็น และหากคุณใช้ตัวรับ U-Blox ZED-F9P ที่เชื่อมต่อ USB สคริปต์จะถูกตรวจพบและตั้งค่าให้ทำงานเป็นสถานีฐาน หากคุณไม่ได้ใช้ F9P คุณจะต้องกำหนดค่าเครื่องรับของคุณด้วยตนเอง (ดูขั้นตอนที่ 7 ในการติดตั้งด้วยตนเอง) และเลือกพอร์ตที่ถูกต้องจากหน้าการตั้งค่า
เปิดเว็บเบราว์เซอร์ไปที่ http://ip_of_your_sbc
(สคริปต์จะพยายามแสดงที่อยู่ IP นี้ให้คุณ) รหัสผ่านเริ่มต้นคือ admin
หน้าการตั้งค่าช่วยให้คุณสามารถป้อนการตั้งค่าของคุณเองสำหรับพิกัดฐาน ข้อมูลประจำตัว ntrip และอื่นๆ...
หากคุณยังไม่ทราบพิกัดฐานที่แม่นยำของคุณ ก็ถึงเวลาอ่านบทช่วยสอนข้อใดข้อหนึ่งเหล่านี้:
สคริปต์ install.sh
สามารถใช้ได้โดยไม่มีอ็อพชัน --all
เพื่อแบ่งกระบวนการติดตั้งออกเป็นหลายขั้นตอน:
################################
RTKBASE INSTALLATION HELP
################################
Bash scripts to install a simple gnss base station with a web frontend.
* Before install, connect your gnss receiver to raspberry pi/orange pi/.... with usb or uart.
* Running install script with sudo
Easy installation: sudo ./install.sh --all release
Options:
-a | --all <rtkbase source>
Install all you need to run RTKBase : dependencies, RTKlib, last release of Rtkbase, services,
crontab jobs, detect your GNSS receiver and configure it.
<rtkbase source> could be:
release (get the latest available release)
repo (you need to add the --rtkbase-repo argument with a branch name)
url (you need to add the --rtkbase-custom-source argument with an url)
bundled (available if the rtkbase archive is bundled with the install script)
-u | --user
Use this username as User= inside service unit and for path to rtkbase:
--user=john will install rtkbase in /home/john/rtkbase
-d | --dependencies
Install all dependencies like git build-essential python3-pip ...
-r | --rtklib
Get RTKlib 2.4.3b34g from github and compile it.
https://github.com/rtklibexplorer/RTKLIB/tree/b34g
-b | --rtkbase-release
Get last release of RTKBase:
https://github.com/Stefal/rtkbase/releases
-i | --rtkbase-repo <branch>
Clone RTKBASE from github with the <branch> parameter used to select the branch.
-j | --rtkbase-bundled
Extract the rtkbase files bundled with this script, if available.
-f | --rtkbase-custom <source>
Get RTKBASE from an url.
-t | --unit-files
Deploy services.
-g | --gpsd-chrony
Install gpsd and chrony to set date and time
from the gnss receiver.
-e | --detect-gnss
Detect your GNSS receiver. It works only with receiver like ZED-F9P.
-n | --no-write-port
Doesn'''t write the detected port inside settings.conf.
Only relevant with --detect-gnss argument.
-c | --configure-gnss
Configure your GNSS receiver.
-s | --start-services
Start services (rtkbase_web, str2str_tcp, gpsd, chrony)
-h | --help
Display this help message.
ดังนั้น หากคุณต้องการมันจริงๆ ให้ทำการติดตั้งด้วยตนเองพร้อมคำอธิบายบางส่วน:
ติดตั้งการพึ่งพาด้วย sudo ./install.sh --dependencies
หรือดำเนินการด้วยตนเองด้วย:
sudo apt update
sudo apt install -y git build-essential pps-tools python3-pip python3-dev python3-setuptools python3-wheel libsystemd-dev bc dos2unix socat zip unzip pkg-config psmisc
ติดตั้ง RTKLIB ด้วย sudo ./install.sh --rtklib
หรือ:
รับ RTKlib
cd ~
wget -qO - https://github.com/rtklibexplorer/RTKLIB/archive/refs/tags/b34j.tar.gz | tar -xvz
คอมไพล์และติดตั้ง str2str:
หรือคุณสามารถแก้ไขบรรทัด CTARGET ใน makefile ใน RTKLIB/app/str2str/gcc
cd RTKLIB/app/str2str/gcc
nano makefile
สำหรับ Orange Pi Zero SBC ฉันใช้:
CTARGET = -mcpu=cortex-a7 -mfpu=neon-vfpv4 -funsafe-math-optimizations
จากนั้นคุณสามารถคอมไพล์และติดตั้ง str2str:
make
sudo make install
คอมไพล์/ติดตั้ง rtkrcv
และ convbin
แบบเดียวกับ str2str
รับ rtkbase รุ่นล่าสุด sudo ./install.sh --rtkbase-release
หรือ:
wget https://github.com/stefal/rtkbase/releases/latest/download/rtkbase.tar.gz -O rtkbase.tar.gz
tar -xvf rtkbase.tar.gz
หากต้องการ คุณสามารถโคลนพื้นที่เก็บข้อมูลนี้เพื่อรับโค้ดล่าสุดได้
ติดตั้งข้อกำหนด rtkbase:
python3 -m pip install --upgrade pip setuptools wheel --extra-index-url https://www.piwheels.org/simple
python3 -m pip install -r rtkbase/web_app/requirements.txt --extra-index-url https://www.piwheels.org/simple
ติดตั้งบริการ systemd ด้วย sudo ./install.sh --unit-files
หรือดำเนินการด้วยตนเองด้วย:
rtkbase/unit/
) เพื่อแทนที่ {user}
ด้วยชื่อผู้ใช้ของคุณarchive_and_clean.sh
จะทำเพื่อคุณ การตั้งค่าเริ่มต้นจะบีบอัดข้อมูลวันก่อนหน้าและลบไฟล์เก็บถาวรทั้งหมดที่เก่ากว่า 90 วัน หากต้องการทำให้ 2 งานนี้เป็นแบบอัตโนมัติ ให้เปิดใช้งาน rtkbase_archive.timer
ค่าเริ่มต้นจะรันสคริปต์ทุกวันเวลา 04H00/etc/systemd/system/
จากนั้นเปิดใช้งานเว็บเซิร์ฟเวอร์ str2str_tcp และ rtkbase_archive.timer: sudo systemctl daemon-reload
sudo systemctl enable rtkbase_web
sudo systemctl enable str2str_tcp
sudo systemctl enable rtkbase_archive.timer
ติดตั้งและกำหนดค่า chrony และ gpsd ด้วย sudo ./install.sh --gpsd-chrony
หรือ:
ติดตั้ง chrony ด้วย sudo apt install chrony
จากนั้นเพิ่มพารามิเตอร์นี้ในไฟล์ chrony conf (/etc/chrony/chrony.conf):
refclock SHM 0 refid GPS precision 1e-1 offset 0.2 delay 0.2
แก้ไขไฟล์หน่วย chrony คุณควรตั้งค่า After=gpsd.service
ติดตั้ง gpsd release >= 3.2 ไม่เช่นนั้นจะใช้ไม่ได้กับ F9P ไฟล์ conf ควรมี:
# Devices gpsd should connect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="tcp://localhost:5015"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-n -b"
แก้ไขไฟล์หน่วย gpsd คุณควรมีสิ่งนี้ในส่วน "[หน่วย]":
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
BindsTo=str2str_tcp.service
After=str2str_tcp.service
sudo systemctl daemon-reload
sudo systemctl enable chrony
sudo systemctl enable gpsd
เชื่อมต่อตัวรับสัญญาณ gnss ของคุณกับ raspberry pi/orange pi/.... ด้วย usb หรือ uart และตรวจสอบว่าพอร์ต com ใดที่ใช้ (ttyS1, ttyAMA0 อย่างอื่น...) หากเป็นเครื่องรับ U-Blox F9P (usb หรือ uart) หรือ Septentrio Mosaic-X5 (usb) คุณสามารถใช้ sudo ./install.sh --detect-gnss
ได้ จดผลลัพธ์ไว้ คุณอาจต้องการมันในภายหลัง
หากคุณยังไม่ได้กำหนดค่าตัวรับ gnss คุณต้องตั้งค่าให้เอาต์พุตข้อมูลดิบ:
หากเป็น U-Blox ZED-F9P (usb หรือ uart) หรือ Septentrio Mosaic-X5 (usb) คุณสามารถใช้
sudo ./install.sh --detect-gnss --configure-gnss
หากคุณต้องการใช้เครื่องมือกำหนดค่าจากคอมพิวเตอร์เครื่องอื่น (เช่น U-center) คุณสามารถใช้ socat
:
sudo socat tcp-listen:128,reuseaddr /dev/ttyS1,b115200,raw,echo=0
เปลี่ยนค่า ttyS1 และ 115200 หากจำเป็น จากนั้นคุณสามารถใช้การเชื่อมต่อเครือข่ายใน U-center ด้วยที่อยู่ IP ของสถานีฐานและพอร์ต n°128
ตอนนี้คุณสามารถเริ่มบริการด้วย sudo ./install.sh --start-services
หรือ:
sudo systemctl start rtkbase_web
sudo systemctl start str2str_tcp
sudo systemctl start gpsd
sudo systemctl start chrony
sudo systemctl start rtkbase_archive.timer
ทุกอย่างควรจะพร้อม ตอนนี้คุณสามารถเปิดเว็บเบราว์เซอร์ไปยังที่อยู่ IP ของสถานีฐานของคุณได้
RTKBase ใช้อินสแตนซ์ RTKLIB str2str
หลายอินสแตนซ์ที่เริ่มต้นด้วย run_cast.sh
เป็นบริการ systemd run_cast.sh
รับการตั้งค่าจาก settings.conf
str2str_tcp.service
เป็นอินสแตนซ์หลัก มันเชื่อมต่อกับตัวรับ gnss และเผยแพร่ข้อมูลดิบบน TCP สำหรับบริการอื่น ๆ ทั้งหมดstr2str_ntrip_A.service
รับข้อมูลจากอินสแตนซ์หลัก แปลงข้อมูลเป็น rtcm และสตรีมไปยัง Ntrip casterstr2str_ntrip_B.service
รับข้อมูลจากอินสแตนซ์หลัก แปลงข้อมูลเป็น rtcm และสตรีมไปยัง Ntrip caster อื่นstr2str_local_ntrip_caster.service
รับข้อมูลจากอินสแตนซ์หลัก แปลงข้อมูลเป็น rtcm และทำหน้าที่เป็น Ntrip caster ในพื้นที่str2str_rtcm_svr.service
รับข้อมูลจากอินสแตนซ์หลัก แปลงข้อมูลเป็น rtcm และสตรีมไปยังไคลเอนต์str2str_rtcm_serial.service
รับข้อมูลจากอินสแตนซ์หลัก แปลงข้อมูลเป็น rtcm และสตรีมข้อมูลเหล่านั้นไปยังพอร์ตอนุกรม (ลิงก์วิทยุหรืออุปกรณ์ต่อพ่วงอื่นๆ)str2str_file.service
รับข้อมูลจากอินสแตนซ์หลัก และบันทึกข้อมูลลงในไฟล์ เว็บ GUI จะพร้อมใช้งานเมื่อบริการ rtkbase_web
ทำงานอยู่
สถานีฐานออฟไลน์ที่ไม่มีตัวรับ U-Blox วิธีรับวันที่และเวลา: หาก gpsd ไม่สามารถเข้าใจข้อมูลดิบจากตัวรับ gnss ของคุณ คุณสามารถเปิดใช้งานบริการ raw2nmea ได้ มันจะแปลงข้อมูลดิบเป็นพอร์ต tcp ที่ตั้งค่าใน settings.conf
(nmea_port) และ gpsd จะใช้ข้อมูลดังกล่าวเพื่อป้อนข้อมูลแบบ chrony systemctl enable --now rtkbase_raw2nmea
ภาพถ่ายทางอากาศ: พื้นหลังแผนที่เริ่มต้นคือ OpenStreetMap แต่คุณสามารถเปลี่ยนไปใช้เลเยอร์ทางอากาศทั่วโลกได้ หากคุณมีคีย์ Maptiler หากต้องการเปิดใช้งานเลเยอร์นี้ ให้สร้างบัญชีฟรีบน Maptiler สร้างคีย์และเพิ่มลงใน settings.conf
ภายในส่วน [general]
: maptiler_key=your_key
ตัวเลือกตัวรับ: str2str ยอมรับตัวเลือกบางตัวที่ขึ้นกับตัวรับ หากคุณใช้ U-Blox แนะนำให้ใช้พารามิเตอร์ -TADJ=1
เป็นวิธีแก้ไขปัญหาชั่วคราวสำหรับค่าที่สองที่ไม่ปัดเศษในเอาต์พุต Rtcm และ Ntrip คุณสามารถป้อนพารามิเตอร์นี้ภายในแบบฟอร์มการตั้งค่า ข้อมูลเพิ่มเติม ที่นี่ และ ที่นี่
หากคุณต้องการติดตั้ง RTKBase จากสาขา dev คุณสามารถทำได้โดยใช้คำสั่งเหล่านี้:
cd ~
wget https://raw.githubusercontent.com/Stefal/rtkbase/dev/tools/install.sh -O install.sh
chmod +x install.sh
sudo ./install.sh --all repo --rtkbase-repo dev
เครื่องรับ gnss ที่มีเอาท์พุตไทม์พัลส์เป็นนาฬิกา stratum 0 ที่แม่นยำมาก ดังนั้น สถานีฐาน gnss ของคุณจึงสามารถทำหน้าที่เป็นเพียร์ stratum 1 ntp สำหรับเครือข่ายท้องถิ่นของคุณและ/หรือพูล ntp มีขั้นตอนไม่กี่ขั้นตอนในการดำเนินการนี้:
เชื่อมต่อเอาต์พุต timepulse + GND กับอินพุต GPIO บางตัวบน SBC ของคุณ
กำหนดค่าอินพุตนี้เป็น PPS ในระบบปฏิบัติการของคุณ
ตัวอย่างราสเบอร์รี่ Pi:
dtoverlay=pps-gpio,gpiopin=18
ในบรรทัดใหม่ '18' เป็นอินพุตที่ใช้สำหรับไทม์พัลส์pps-gpio
ในบรรทัดใหม่ หากไม่มีอยู่ตัวอย่าง Orange Pi Zero ภายใน /boot/armbianEnv.txt:
pps-gpio
ลงในบรรทัด overlays
เลย์param_pps_pin=PA19
<- เปลี่ยน 'PA19' เป็นอินพุตของคุณตั้งค่า gpsd และ chrony เพื่อใช้ PPS
gpsd: แสดงความคิดเห็น DEVICE
บรรทัดใน /etc/defaut/gpsd
และยกเลิกการใส่เครื่องหมายข้อคิดเห็น #DEVICES="tcp:\127.0.0.1:5015 devpps0
แก้ไขพอร์ตหากคุณใช้บริการ rtkbase_raw2nmea
chrony: ภายใน /etc/chrony/chrony.conf
ไม่ใส่เครื่องหมายข้อคิดเห็นบรรทัด refclock pps และเพิ่ม noslect ใน 'refclock SHM 0` คุณควรจะมีสิ่งนี้:
refclock SHM 0 refid GPS precision 1e-1 offset 0 delay 0.2 noselect
refclock PPS /dev/pps0 refid PPS lock GPS
chronyc sources -v
คุณควรอ่านอะไรแบบนี้ สังเกต '*' ก่อน 'PPS': basegnss@orangepizero:~$ chronyc sources -v
210 Number of sources = 6
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| | | zzzz = estimated error.
|| | |
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? GPS 0 4 377 17 +64ms[ +64ms] +/- 200ms
#* PPS 0 4 377 14 +363ns[ +506ns] +/- 1790ns
^- ntp0.dillydally.fr 2 6 177 16 -12ms[ -12ms] +/- 50ms
^? 2a01:e35:2fba:7c00::21 0 6 0 - +0ns[ +0ns] +/- 0ns
^- 62-210-213-21.rev.poneyt> 2 6 177 17 -6488us[-6487us] +/- 67ms
^- kalimantan.ordimatic.net 3 6 177 16 -27ms[ -27ms] +/- 64ms
การกระจายฐาน Debian >= 11 (เป้า) Python >= 3.8
ดูบันทึกการเปลี่ยนแปลง
RTKBase ได้รับอนุญาตภายใต้ AGPL 3 (ดูไฟล์ใบอนุญาต)
RTKBase ใช้บางส่วนของซอฟต์แวร์อื่น:
RTKBase ใช้ไทล์ OpenStreetMap ขอขอบคุณผู้มีส่วนร่วมทุกคน!