Как настроить нативную службу Meshtastic под управлением DietPi Linux, работающей на OrangePi Zero3 SBC с модулем Waveshare Pico LoRa.

Подключение модуля Waveshare LoRa #

Модуль Waveshare SX1262 Pico LoRa используется для сборки нативного узла Meshtastic на базе Linux. Этот модуль LoRa включает в себя термостабилизированный генератор TCXO и отлично работает с Meshtastic.

Важный:

НЕ ИСПОЛЬЗУЙТЕ плату Waveshare SX1262/SX1268 LoRa для Raspberry Pi! Модуль LoRa на этой плате использует обычный кварцевый генератор, чувствительный к температурному дрейфу и создающий проблемы при передаче длинных сообщений через Meshtastic.

Модуль Waveshare Pico LoRa подключается к OrangePi Zero3 через 26-контактный разъём. В дополнение к трём контактам GPIO и источнику питания 3,3 В используется интерфейс SPI1.

Схема подключения OrangePi Zero3 и модуля Waveshare Pico LoRa

Схема подключения OrangePi Zero3 и модуля Waveshare Pico LoRa

Cirkit Design

См. руководство Orange Pi Zero3 , глава 3.16, стр. 124 для получения информации о распиновке 26-контактного разъема.

Waveshare       Orange Pi Zero3
   36    3.3V        17
   15    MOSI        19
   16    MISO        21
   14    CLK         23
   38    GND         25
   4     BUSY        18
   20    RESET       22
   5     CS          24
   26    DIO1/IRQ    26

Оставшиеся контакты 26-контактного разъёма OrangePi Zero3 можно использовать. Интерфейсы I2C-3 и UART5 будут включены в конфигурации DietPi Linux.

Установка DietPi Linux #

Загрузите DietPi для OrangePi Zero3 и следуйте инструкциям по установке .

Конфигурация DietPi #

Перед первой загрузкой, сразу после прошивки SD-карты, вы можете настроить несколько параметров и сэкономить время на последующей настройке.

На SD-карте откройте раздел DIETPISETUP и отредактируйте текстовые файлы по мере необходимости.

Мои рекомендации:

  • Добавьте учетные данные вашей сети Wi-Fi в dietpi-wifi.txt .
  • В dietpi.txt настройте локализацию, раскладку клавиатуры, статические параметры сети, предустановленное программное обеспечение и т.д.

Обязательная настройка в dietpiEnv.txt , которую необходимо выполнить до или после первой загрузки:

  • Включите наложения дерева устройств для SPI1, I2C3 и UART5, как показано ниже, больше ничего не меняйте:
# Multiple prefixes are supported separated by space
overlay_prefix=sun50i-h616
overlays=uart5 i2c3-ph
user_overlays=dietpi-spi1_1

Не используйте ни один из оверлеев Allwinner для SPI. Кастомная версия DietPi включит SPI1 на 26-контактном разъёме, включая вывод CS1!

Конфигурацию dietpiEnv.txt можно выполнить после первой загрузки. Файлы находятся в папке /boot . В этом случае используйте:

sudo nano /boot/dietpiEnv.txt
sudo mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr

Используйте прилагаемый sudo dietpi-configинструмент для дополнительной настройки DietPi после первой загрузки.

  • Не включайте/отключайте/переключайте SPI в dietpi-config в разделе «Дополнительные параметры» !

Сборка пакета Meshtasticd 

Сборка нативного пакета Meshtasticd для Debian основана на моей версии прошивки Meshtastic , модифицированной для локальной сборки в установленной системе Debian. Оригинальная прошивка оптимизирована для сборки на Github с использованием рабочих процессов, поэтому сборка локально невозможна.

Установка зависимостей #

Предположим, что в рабочей папке dietpi находится пользователь home и сборка пакета запускается под этим пользователем.

  1. Platformio

# You may reboot before you start building

# Download Platformio installer
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py

# Install first batch of dependencies
sudo apt-get -y install python3.11-venv software-properties-common build-essential devscripts equivs

# Install Platformio
python3 get-platformio.py

# Create user links for Platformio environment
mkdir -p .local/bin
ln -s ~/.platformio/penv/bin/platformio ~/.local/bin/platformio
ln -s ~/.platformio/penv/bin/pio ~/.local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb ~/.local/bin/piodebuggdb

# Edit the dietpi users .bashrc and add the additional location to PATH
nano .bashrc
# add line:
export PATH=$PATH:$HOME/.local/bi
  1. Зависимости сборки
# Install second batch of dependencies
sudo apt-get -y install debhelper-compat lsb-release tar gzip python3-protobuf python3-grpcio git g++ pkg-config libyaml-cpp-dev libgpiod-dev libbluetooth-dev libusb-1.0-0-dev libi2c-dev libuv1-dev openssl libssl-dev libulfius-dev liborcania-dev libx11-dev libinput-dev libxkbcommon-x11-dev libdistro-info-perl
  1. Клонировать репозиторий прошивок

# Clone firmware
git clone https://github.com/Mictronics/meshtastic_firmware.git meshtasticd

# Use Mictronics branch
git checkout mictronics

# Change to local repository
cd meshtasticd

# Build a package satisfying a package's build-dependencies
sudo mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/c

Ветка Mictronics в моей прошивке не содержит файл userPrefs.jsonc из соображений безопасности (во избежание утечки учётных данных на Github)!
Вам необходимо скопировать или создать этот файл из основной ветки или исходного репозитория прошивки перед сборкой. Без userPrefs.jsonc сборка завершится ошибкой !

  1. Сборка пакета
# Start the package build by running
bash debian/ci_pack_sdeb.sh
  1. [Необязательно] Пересоздайте пакет в любое время, например, после обновления репозитория.

# Reset repository to HEAD as it is modified during package build
git reset --hard

# Get repository updates
git pull

# Remove old build files
dh_clean

# Start the package build
bash debian/ci_pack_sdeb.sh

Установка пакета Meshtasticd #

Окончательный двоичный пакет Meshtasticd находится в домашней папке пользователя dietpi и может быть установлен оттуда.


# Install Meshtasticd binary package (use your build package file name!)
sudo dpkg -i meshtasticd_2.7.2.0~local84f0c3e9~unstable_arm64.deb
# Disable Meshtasticd service prior configuration
sudo systemctl disable meshtasticd

Конфигурация сервиса Meshtasticd #

Для запуска службы Meshtasticd требуется выполнить некоторые настройки. Конфигурация Meshtasticd находится в /etc/meshtasticd.


# Copy and enable hardware configuration for the above Waveshare Pico LoRa module connection
sudo cp /etc/meshtasticd/available.d/lora-ws-raspberry-pico-to-orangepi-03.yaml /etc/meshtasticd/config.d/lora-ws-raspberry-pico-to-orangepi-03.yaml

# Edit Meshtasticd service configuration
sudo nano /etc/meshtasticd/config.yaml

# Keep unchanged:
Module: auto

# Uncomment and change:
I2C:
  I2CDevice: /dev/i2c-2
# The Meshtasticd service will then find I2C devices on the 26-pin header I2C3 interface

# Enable webserver
Webserver:
  Port: 9443 # Port for Webserver & Webservices
  RootPath: /usr/share/meshtasticd/web # Root Dir of WebServer
  SSLKey: /etc/meshtasticd/ssl/private_key.pem # Path to SSL Key, generated if not present
  SSLCert: /etc/meshtasticd/ssl/certificate.pem # Path to SSL Certificate, generated if not present

# Set numbers as desired:
  MaxNodes: 1000
  MaxMessageQueue: 100

# Uncomment or set MAC address. The service will not run without.
  MACAddressSource: eth0

# You may change the log level as desired:
  LogLevel: debug # debug, info, warn, error

При настройке уровня журнала debugобязательно ограничьте его размер! В противном случае журнал службы meshtasticd мгновенно займёт оперативную память или дисковое пространство.


# Open the journal configuration
sudo nano /etc/systemd/journald.conf

# Recommentation is to change storage in volatile so the journal is stored in memory (RAM).
# In that case set RuntimeMaxUse as desired.
# When Storage is set to persistent or auto the journal is stored on disk.
# In that case set SystemMaxUse as desired.
[Journal]
Storage=volatile
SystemMaxUse=48M
RuntimeMaxUse=48M

# Reboot after change..

Запуск службы Meshtasticd #

После окончательной настройки мы можем запустить службу.


# Enable Meshtasticd service
sudo systemctl enable meshtasticd

# Start service
sudo service meshtasticd start

# Check service status
sudo service meshtasticd status

Журнал отладки 

Журнал отладки службы Meshtasticd можно найти в журнале с помощью sudo journalctl -u meshtasticd -b

Адаптер OrangePi Zero3 - Waveshare Core1262 для Meshtastic

Антенна-диполь для Meshtastic на частоте 915 МГц

Как измерить коэффициент усиления антенны — метод передачи усиления