| | | |
الميزات الرئيسية للواجهة الأمامية هي:
تتوفر صور أخرى في مجلد ./images.
تتوفر صورة جاهزة للفلاش لـ Orange Pi Zero وOrange Pi Zero 2 وOrange Pi Zero 3 SBC: Armbian_RTKBase
إذا كنت تستخدم Raspberry Pi، فبفضل jancelin، يمكنك تنزيل ملف ISO جاهز للفلاش هنا.
قم بتوصيل جهاز استقبال gnss الخاص بك بجهاز Raspberry 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
أو:
احصل على رتكليب
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 يومًا. لأتمتة هاتين المهمتين، قم بتمكين 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 >= 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 للمحطة الأساسية والمنفذ رقم 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.str2str_ntrip_B.service
على البيانات من المثيل الرئيسي، وتحول البيانات إلى rtcm وتدفقها إلى عجلة Ntrip أخرى.str2str_local_ntrip_caster.service
على البيانات من المثيل الرئيسي، وتحول البيانات إلى rtcm، وتعمل كمحرك Ntrip محلي.str2str_rtcm_svr.service
الحصول على البيانات من المثيل الرئيسي، وتحويل البيانات إلى rtcm وبثها إلى العملاءstr2str_rtcm_serial.service
الحصول على البيانات من المثيل الرئيسي، وتحويل البيانات إلى rtcm وبثها إلى منفذ تسلسلي (رابط راديو، أو أجهزة طرفية أخرى)str2str_file.service
على البيانات من المثيل الرئيسي، ثم تسجل البيانات في الملفات. تتوفر واجهة المستخدم الرسومية للويب عند تشغيل خدمة 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 من فرع التطوير، فيمكنك القيام بذلك باستخدام هذه الأوامر:
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 مع مخرج نبض زمني هو ساعة طبقة 0 دقيقة للغاية، وبالتالي، يمكن أن تعمل محطة gnss الأساسية الخاصة بك كنظير طبقة 1 ntp لشبكتك المحلية و/أو تجمع ntp. هناك بعض الخطوات للقيام بذلك:
قم بتوصيل مخرجات النبض الزمني + GND ببعض مدخلات GPIO في SBC الخاص بك.
قم بتكوين هذا الإدخال كـ PPS في نظام التشغيل الخاص بك.
مثال راسبيري باي:
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 وأضف تحديد الأنف إلى '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
توزيعة قاعدة دبيان >= 11 (عين بولس) بايثون >= 3.8
انظر سجل التغيير
تم ترخيص RTKBase بموجب AGPL 3 (انظر ملف الترخيص).
يستخدم RTKBase بعض أجزاء البرامج الأخرى:
يستخدم RTKBase مربعات OpenStreetMap. شكرا لجميع المساهمين!