قناة واحدة Lora UDP Packet Proversealer مثالية لأغراض التطوير أو الاختبار. يستقبل وينقل ثنائي الاتجاه. يعد هذا المشروع مثاليًا لواحد من أرخص "بوابات" Lora التي تتكون من جهاز كمبيوتر أحادي اللوحة ووحدة Lora 4 دولارات.
الهدف من المشروع هو توفير توجيه لورا بسيط لـ:
جنبا إلى جنب مع اتصال الشبكة على جهاز الكمبيوتر الخاص بك (WiFi ، Ethernet ...) يجب تخصيص المسامير التالية على جهازك:
يرجى الرجوع إلى الأمر gpio readall (تحقق أيضًا من الأقسام التالية) للحصول على مزيد من المعلومات للمجلس الخاص بك. ابحث عن أرقام الأسلاك أيضًا ، لأن ملف التكوين يتوقع نظام الترقيم هذا.
على سبيل المثال:
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 12 | 0 | SDA.0 | ALT2 | 0 | 3 || 4 | | | 5V | | |
| 11 | 1 | SCL.0 | ALT2 | 0 | 5 || 6 | | | 0v | | |
| 6 | 2 | PA6 | OFF | 0 | 7 || 8 | 0 | OFF | TxD3 | 3 | 13 |
| | | 0v | | | 9 || 10 | 0 | OFF | RxD3 | 4 | 14 |
| 1 | 5 | RxD2 | OFF | 0 | 11 || 12 | 1 | OUT | PD14 | 6 | 110 |
| 0 | 7 | TxD2 | OFF | 1 | 13 || 14 | | | 0v | | |
| 3 | 8 | CTS2 | OFF | 0 | 15 || 16 | 0 | IN | PC04 | 9 | 68 |
| | | 3.3v | | | 17 || 18 | 1 | IN | PC07 | 10 | 71 |
| 64 | 11 | MOSI | ALT3 | 0 | 19 || 20 | | | 0v | | |
| 65 | 12 | MISO | ALT3 | 0 | 21 || 22 | 0 | OFF | RTS2 | 13 | 2 |
| 66 | 14 | SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0 | 15 | 67 |
| | | 0v | | | 25 || 26 | 0 | OFF | PA21 | 16 | 21 |
| 19 | 17 | SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1 | 18 | 18 |
| 7 | 19 | PA07 | OFF | 0 | 29 || 30 | | | 0v | | |
| 8 | 20 | PA08 | OFF | 0 | 31 || 32 | 0 | OFF | RTS1 | 21 | 200 |
| 9 | 22 | PA09 | OFF | 0 | 33 || 34 | | | 0v | | |
| 10 | 23 | PA10 | OFF | 0 | 35 || 36 | 0 | OFF | CTS1 | 24 | 201 |
| 20 | 25 | PA20 | OFF | 0 | 37 || 38 | 0 | OFF | TxD1 | 26 | 198 |
| | | 0v | | | 39 || 40 | 0 | OFF | RxD1 | 27 | 199 |
| 4 | 28 | PA04 | ALT2 | 0 | 41 || 42 | 0 | ALT2 | PA05 | 29 | 5 |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
+------+-----+----------+------+---+OrangePiH3+---+------+----------+-----+------+
___
_/ SX1278 module
| --------------
--- | ANT GND |===== Pin #20 [OrangePiH3 Physical]
| GND DIO1 |===== Pin #18 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 10]
| DIO2 |
| DIO3 |
| VCC |===== Pin # 1 [OrangePiH3 Physical]
| MISO |===== Pin #21 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 12]]
| MOSI |===== Pin #19 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 11]]
| SLCK |===== Pin #23 [OrangePiH3 Physical] / [[a.k.a WiringPi pin ## 14]]
| NSS |===== Pin #12 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 6]
| DIO0 |===== Pin #16 [OrangePiH3 Physical] / [a.k.a WiringPi pin ## 9]
| REST |===== optional, if it isn't used leave floating or connect to VCC
| GND |
--------------
git clone --recurse-submodules https://github.com/zhgzhg/LoRaPacketForwarder.git
تم اختبار الخطوات التالية على Armbian v5.90. ومع ذلك ، يوصى باستخدام أحدث إصدار لها.
./build commandPLATFORM=orangepipc ./build ) أو اترك برنامج Build Script لتحديده تلقائيًا.spi-spidev . بالإضافة إلى ذلك في /boot/armbianenv.txt ستحتاج إلى إضافة parameter param_spidev_spi_bus=1 أو param_spidev_spi_bus=0 اعتمادًا على نموذج اللوحة. على سبيل المثال:param_spidev_spi_bus=1 إذا نظرنا إلى التراكبات النشطة التالية: i2c0 i2c1 pps-gpio pwm spi-add-cs1 spi-spidev uart1 usbhost2 usbhost3param_spidev_spi_bus=0/dev/spidev* على الرغم من برنامج تشغيل spidev المحمّل. حل مؤقت لهذه الحالة هو التحول إلى نواة أقدم.gpio readall أيضًا جدولًا مختلفًا قليلاً ، حيث يحتوي على بعض الصفوف مخفية أو معروضة.gpio readall لمشاهدة جدول مخطط Pinoutmakemake إنشاء config.json عن طريق نسخ config.json.template:
gpio readallsudo ls /dev/spi* حيث تتوافق نتائج مثل EG "/dev/spidev1.0" مع/dev/spidev <Spichannelnumber> . <spiportnumer>SX1261 أو SX1262 أو SX1268LLCC68SX1272 ، SX1273 ، SX1276 ، SX1277 ، SX1278 ، أو SX1279RFM95 ، RFM96 ، RFM97 ، أو RFM98gpio readall للتحقق من أرقام PIN PIRIREPI التي تحتاج إلى تحديد). يرجى ملاحظة أن pin_rest اختياري . إذا لم يتم استخدامه ، فيجب عليك تعيينه على -1 وترك دبوس جهاز الإرسال والاستقبال عائمًا أو متصلاً بـ VCC ؛لتنفيذ التطبيق:
./LoRaPktFwrdلتنفيذ التطبيق وأيضًا تحديد واجهة الشبكة المستخدمة لتوليد المعرف:
./LoRaPktFwrd wlan0للحصول على خيارات CLI المدعومة:
./LoRaPktFwrd -h يمكن تثبيت هذا المشروع كخدمة SystemD (راجع ملف LoRaPktFwrd.service ) والتي قد تبدأ تلقائيًا بعد أحذية النظام. كشرط مسبق ، تأكد من تجميع المشروع (عبر الأمر make ) وهو قادر على التنفيذ بشكل صحيح مع ملف config.json الخاص بك.
sudo make installsudo make uninstallsudo systemctl enable LoRaPktFwrd.servicesudo systemctl disable LoRaPktFwrd.service sudo service LoRaPktFwrd start
sudo service LoRaPktFwrd restart
sudo service LoRaPktFwrd stop
sudo service LoRaPktFwrd status
sudo journalctl -n 100 -f -u LoRaPktFwrd.service تعتمد توجيه حزمة Lora UDP على البرامج والمكتبات التالية:
المقدمة هو مثال بسيط لورا تراسيتر مشروع Arduino يسمى "Transmit" في الدليل الحالي. قم بربط ESP8266/Arduino/أيا كان اللوحة عبر وحدة SPI إلى SX1278 ، وتجميعها ، وسيبدأ في نقل البيانات. باستخدام التكوين الافتراضي داخل "config.json.template" من حيث مواصفات الترددات اللاسلكية ، يجب على تطبيق Tawperer اختيار البيانات على الفور من جهاز الإرسال.
برنامج مراقبة درجة حرارة صغيرة يمكن أن يعمل في الخلفية وتعديل دبابيس GPIO استجابة.
يبدو أن تحقيق توقيت نقل الوصلة الهابطة المثالية أمر صعب مع مزيج من جهاز كمبيوتر عادي من الألواح المفردة مزود بجهاز إرسال أجهزة إرسال لوراء عادي. السبب في ذلك يعود إلى ساعة الأجهزة غير الدقيقة للكمبيوتر مع طبيعة الوقت غير الحقيقي لـ Linux. للتعويض عن هذا المشروع ، يهدف هذا المشروع بأولوية عالية جدًا (في الوقت الفعلي تقريبًا) ، وزيادة استخدام وحدة المعالجة المركزية (حوالي 20 ٪) لتعويض تأخيرات OS غير المنتظمة.
https://github.com/jgromes/radiolib
https://github.com/adafruit/single_chan_pkt_fwd
https://github.com/orangepi-xunlong/wiringop
https://github.com/xpertsavenue/wiringop-zero
https://github.com/lora-net/packet_forwarder
https://www.gw-openscience.org/static/js/gpstimeutil.js
https://github.com/tencent/rapidjson