||

MeshCom LoRa 433 – kompilacja na Linuksie, wgranie z Windowsa i pierwsza łączność na LilyGO T3

Płytka z nadrukiem T3_V1.6.1 i układem SX1278 nadaje się do sieci MeshCom na 433 MHz, ale sklepowy dopisek „Paxcounter” i „V2 1.6” łatwo prowadzą do złego profilu przy kompilacji. Poniżej jest droga, która to rozstrzyga: źródła z GitHuba, kompilacja w PlatformIO na Linuksie, przeniesienie jednego pliku i wgranie z Windowsa, gdy serwer nie ma kabla USB do radia.

Nadawanie w paśmie 70 cm wymaga uprawnień amatorskich i znaku wywoławczego zgodnego z przepisami. Samo wgranie firmware nic nie wysyła w eter, dopóki nie naciśniesz nadawania i nie ustawisz częstotliwości. Antena 433 MHz ma być podłączona zanim cokolwiek nadasz.

Co dokładnie uruchamiasz na tej płytce

MeshCom to amatorska sieć mesh na LoRa. Węzły powtarzają krótkie wiadomości między sobą. Nie jest to Meshtastic, LoRaWAN ani ESP32-Paxcounter – te programy na siebie nie „gadają”, nawet na tej samej płytce i tej samej częstotliwości.

Źródła, o które chodzi, leżą w repozytorium icssw-org/MeshCom-Firmware. Profil wybierany przy kompilacji opisuje głównie wyprowadzenia płytki (który GPIO resetuje radio, gdzie jest OLED). Częstotliwość 433 MHz, znak i parametry modulacji i tak muszą się zgadzać z lokalną siecią – zwykle ustawia się je po starcie, czasem też flagą w platformio.ini. Rozstrzyga README tej rewizji, którą sklonujesz, a nie ogólny opis z aukcji.

Twoja płytka to klasyczny ESP32 (nie S3 i nie C3) z radiem SX1278. SX1278 jest pod pasmo 433 MHz. Ta sama płytka bywa sprzedawana z SX1276 pod 868 MHz – wtedy nadruk T3 nic nie zmienia i do sieci 433 MHz to zły egzemplarz. Oznaczenie jest na metalowej puszce przy antenie.

Forma płytki też ma znaczenie. T3 / LoRa32 to mniejsza płytka z ekranem OLED i gniazdem LiPo, bez uchwytu 18650 i bez GPS. Dłuższa T-Beam to inny pinout i inny profil. Do opisu „TLORA V2 1.6” plus nadruk T3 pasuje właśnie T3, nie T-Beam.

T3_v1.6.1 a V2.1 1.6 – czy to coś innego

Nie. To ta sama rodzina, inne pieczątki.

LilyGO i sprzedawcy nakładają na siebie kilka nazw. Rozstrzyga sitodruk z tyłu płytki i układ radia, nie tytuł aukcji.

Co widziszCo to znaczy dla MeshCom
T3_V1.6.1 na płytceRewizja linii T3. Do firmware bierz profil V2.1 1.6 / T3 V1.6
T3_V1.6Ta sama linia, starsza drobna rewizja PCB. Ten sam profil radia
V2.1 1.6, „V2.1_1.6”Nazwa generacji używana w projektach firmware. Odpowiada T3 V1.6 / V1.6.1
„TLORA V2 1.6”, „V2 1.6”Skrót z aukcji. Najczęściej ta sama grupa, ale potwierdź nadruk T3 i SX1278
Paxcounter w tytuleNazwa cudzego programu (zliczanie urządzeń Wi-Fi/BLE), nie model pinów
V1 albo V2.0Inna mapa GPIO. Zły wybór – radio nie wstanie
SX1276 zamiast SX1278Inne pasmo (868/915). Nie używaj do mesh 433 MHz

Rewizja 1.6.1 względem 1.6 to drobiazgi zasilania, czasem reset OLED albo wyprowadzenie karty microSD. Linia resetu radia się nie zmienia. Właśnie ona odróżnia generacje, które ludzie mylą:

GeneracjaReset LoRaSkutek złego profilu
starsze V2.0GPIO 14ESP32 żyje, SX1278 milczy
V2.1 1.6 / T3_V1.6 / T3_V1.6.1GPIO 23profil, którego szukasz

Reszta radia na właściwej płytce jest wspólna i warto ją znać, gdy log pisze, że moduł nie odpowiada:

SygnałGPIO
SCK5
MISO19
MOSI27
CS / NSS18
RST23
DIO026
DIO133
DIO232
OLED SDA / SCL21 / 22
pomiar baterii35, jeśli dana rewizja go ma

Przycisk BOOT to GPIO 0. On nie jest „przyciskiem użytkownika MeshCom” – służy do wymuszenia trybu wgrywania.

Mostek USB na T3 bywa CP2102/CP2104 albo CH9102. W Menedżerze urządzeń Windows widać albo port COM, albo nieznane urządzenie. Sterownik bierz od Silicon Labs albo WCH, nie z przypadkowego archiwum.

Kompilacja źródeł na serwerze Linux

Na serwerze nie podłączasz LilyGO. Potrzebny jest internet (PlatformIO samo dociąga toolchain ESP32, zwykle kilkaset MB), git i Python 3. Osobny ESP-IDF nie jest potrzebny. Nie uruchamiaj pio przez sudo – pakiety wpadną do /root i później nie będą widoczne.

sudo apt update
sudo apt install -y git python3 python3-pip python3-venv
python3 -m venv ~/pio-venv
source ~/pio-venv/bin/activate
pip install -U platformio esptool

Aktywny venv poznasz po prefiksie w zachęcie powłoki. W nowej sesji SSH wejdź w niego ponownie (source ~/pio-venv/bin/activate), zanim wołasz pio.

git clone https://github.com/icssw-org/MeshCom-Firmware.git
cd MeshCom-Firmware
find . -name platformio.ini

Katalogiem projektu jest ten, w którym leży platformio.ini. Jeśli źródeł nie ma albo README każe dociągnąć moduły:

git submodule update --init --recursive

Nazwy środowisk nie zgaduj z aukcji. Wypisz je z pliku, który właśnie sklonowałeś:

grep -E '^\[env:' platformio.ini
grep -n -i -E '433|868|t3|tlora|lora32|v2|board' platformio.ini

Szukasz wpisu w rodzaju tlora_v2_1_6, ttgo-lora32-v21 albo nazwy z T3 i V2.1. To przykładowe tropy, nie gwarantowana nazwa – w repozytorium obowiązuje ta z platformio.ini. Omijaj profile Heltec, T-Beam, V1 i gołe V2.0. Jeśli są osobne środowiska 433 i 868, bierz 433 tylko wtedy, gdy opis mówi o częstotliwości, a nie wyłącznie o pinach. Sam pinout V2.1 1.6 jest właściwy i dla SX1278, i dla SX1276; pasmo robi układ na płytce oraz ustawiona częstotliwość.

Nie odpalaj gołego pio run – zbuduje wszystkie płytki i potrafi to trwać godzinami.

pio run -e NAZWA_Z_PLATFORMIO_INI

Na przykłąd

pio run -e ttgo-lora32-v21

Pierwsza kompilacja ściąga platformę espressif32 i kompilator. Kolejne są krótsze. Wynik, który ma trafić do urządzenia, to katalog .pio/build/NAZWA_Z_PLATFORMIO_INI/. Interesują cię co najmniej:

PlikTypowy adres w flashRola
bootloader.bin0x1000start ESP32
partitions.bin0x8000mapa pamięci
boot_app0.bin0xe000dane OTA Arduino-ESP32
firmware.bin0x10000właściwy MeshCom

Sam firmware.bin wystarcza tylko wtedy, gdy na płytce jest już zgodny bootloader i ta sama tablica partycji. Po Meshtastic, Paxcounterze albo pustej kości tak nie jest. Dlatego na serwerze składasz jeden obraz.

boot_app0.bin często nie leży w katalogu buildu, tylko w pakiecie PlatformIO:

find ~/.platformio -name boot_app0.bin

Zanim scalasz, rzuć okiem, czy projekt nie podstawia własnej mapy:

grep -n -i partition platformio.ini

Przy standardowej mapie Arduino-ESP32 (default.csv, huge_app.csv, min_spiffs.csv) aplikacja zaczyna się od 0x10000, a otadata od 0xe000. Jeśli CSV mówi inaczej, użyj adresów z tego CSV, nie z tabeli powyżej.

T3 V1.6.1 prawie zawsze ma 4 MB flash. Scalenie pod ten rozmiar:

ENV=NAZWA_Z_PLATFORMIO_INI
BOOTAPP=$(find ~/.platformio -name boot_app0.bin | head -n 1)

python3 -m esptool --chip esp32 merge_bin \
  -o meshcom-t3.bin \
  --flash_mode dio --flash_freq 80m --flash_size 4MB \
  0x1000  .pio/build/$ENV/bootloader.bin \
  0x8000  .pio/build/$ENV/partitions.bin \
  0xe000  "$BOOTAPP" \
  0x10000 .pio/build/$ENV/firmware.bin

sha256sum meshcom-t3.bin
ls -l meshcom-t3.bin

Tryb DIO i 80 MHz są właściwe dla tej płytki. QIO na części kości kończy się pętlą restartów.

Zapisz sumę SHA-256. Po przeniesieniu na Windows ma wyjść ta sama. Ucięty plik wgrywa się „prawie” i ESP32 potem milczy albo co chwilę się restartuje.

Gotowe pliki bywają też w Releases tego repozytorium. Jeśli nie zmieniasz źródeł, możesz wziąć oficjalny obraz pod tę płytkę zamiast kompilować. Nie mieszaj binarek z innego projektu.

Wgranie z Windowsa, gdy Linux nie widzi USB

Serwer kompiluje, Windows tylko pisze flash. Kabel USB (dane, nie sama ładowarka) wchodzi w LilyGO. Antena może już być przykręcona. Baterii LiPo nie wkładaj odwrotnie w gniazdo JST.

Najpierw plik. WinSCP, sftp albo z PowerShella, jeśli masz klienta OpenSSH:

scp uzytkownik@serwer:~/MeshCom-Firmware/meshcom-t3.bin .

Na Windowsie policz skrót (Get-FileHash .\meshcom-t3.bin -Algorithm SHA256) i porównaj z sha256sum z serwera.

Mostek USB ma pokazać port, na przykład COM5. Jeśli widać „nieznane urządzenie”, dołóż sterownik CP210x albo CH9102 i podepnij kabel ponownie. Numer COM bierz z Menedżera urządzeń, nie z przyzwyczajenia.

Esptool – metoda, której warto trzymać się na co dzień

Zainstaluj Pythona 3 ze strony python.org i zaznacz Add python.exe to PATH. Potem w oknie cmd:

py -m pip install -U esptool
py -m esptool --chip esp32 --port COM5 flash_id

W odpowiedzi ma być wykryty ESP32 i linia w rodzaju Detected flash size: 4MB. Inny rozmiar nie blokuje wgrania obrazu 4 MB, o ile plik mieści się w kości, ale warto wiedzieć, co masz.

Kasowanie jest zalecane przy zmianie rodziny firmware (Meshtastic, Paxcounter, pusty moduł). Znika wtedy poprzednia tablica partycji i stare ustawienia.

py -m esptool --chip esp32 --port COM5 erase_flash
py -m esptool --chip esp32 --port COM5 --baud 460800 write_flash ^
  --flash_mode dio --flash_freq 80m --flash_size detect ^
  0x0 meshcom-t3.bin

Obraz scalony na Linuksie zapisujesz od adresu 0x0, nie od 0x10000. To częsty błąd: bootloader ląduje w miejscu aplikacji i płytka wygląda na martwą, choć ROM bootloadera nadal czeka na kabel.

Gdy pojawi się Failed to connect, zejdź z prędkością do 115200 i wymuś tryb:

przytrzymaj BOOT (IO0)
        |
        v
krótko naciśnij RESET (EN)
        |
        v
puść RESET, potem puść BOOT
        |
        v
w ciągu kilku sekund uruchom esptool

Po udanym zapisie narzędzie samo robi reset. Jeśli OLED milczy, naciśnij RESET raz jeszcze. Zły program użytkownika nie kasuje sprzętowego bootloadera w ROM. Płytkę da się wgrać ponownie tym samym kablem.

Na czas wgrywania zamknij monitory portu (PuTTY, Arduino, aplikację MeshCom). Jeden program może trzymać COM.

Inne drogi z tego samego komputera Windows

Nie musisz kompilować na Windowsie. Wszystkie drogi poniżej biorą plik zrobiony na Linuksie.

SposóbKiedy ma sensNa co uważać
esptool, jak wyżejZwykła ścieżkaObraz scalony pisz od 0x0
Flash Download Tools EspressifWolisz okno graficzneChip ESP32, tryb DIO, 80 MHz, te same adresy co w tabeli. START, nie sam ERASE
esptool-js w Chrome lub EdgeNie chcesz stawiać PythonaWeb Serial, oficjalne narzędzie Espressif. Te same adresy. Nie każdy kabel i nie każda przeglądarka
PlatformIO Remote AgentChcesz pio run -t upload z serwera prosto w USB na WindowsieAgent na Windowsie, to samo konto PlatformIO na serwerze. Zależy od usługi Remote, więc plik .bin i tak trzymaj w zapasie
OTA przez Wi-FiDopiero gdy MeshCom już wstanie i ta wersja opisuje OTAPierwsza instalacja i tak idzie kablem. Nie zakładaj OTA, jeśli README jej nie podaje

Graficzne narzędzie Espressif wypełnia się tak samo jak tabela adresów: cztery pliki albo jeden scalony od 0x0. Przy czterech plikach nie pomijaj boot_app0.bin, jeśli tablica partycji ma otadata.

Remote, jeśli chcesz go spróbować, działa odwrotnie do „podłącz płytkę do serwera”. Agent stoi przy kablu:

py -m pip install -U platformio
pio account login
pio remote agent start

Na serwerze, w katalogu z platformio.ini, po pio account login na to samo konto:

pio remote device list
pio remote run -e NAZWA_Z_PLATFORMIO_INI -t upload --upload-port COMx

Port jest taki, jaki widzi Windows (COM5), nie /dev/ttyUSB0. Gdy konto, firewall albo usługa Remote przeszkadzają, wróć do meshcom-t3.bin. To nie jest gorsza metoda – przy zmianie partycji jest nawet czytelniejsza, bo wiesz, co dokładnie ląduje w flash.

Świeżo kupiona płytka nie ma MeshCom, więc nie ma też jego aktualizacji bezprzewodowej. Kabel przy pierwszym razie jest konieczny.

Antena, aplikacja i wejście w sieć

Kolejność ma znaczenie.

  1. Antena 433 MHz na złączu (często SMA lub IPEX z przejściówką). Antena 868 MHz tu prawie nie promieniuje i przy dłuższej pracy grzeje stopień nadajnika.
  2. Zasilanie z USB albo z LiPo.
  3. OLED, jeśli profil był dobry, pokazuje start MeshCom: znak, częstotliwość albo informację, że radia nie ma. Brak radia przy żywym ekranie to zwykle zły profil (reset na GPIO 14 zamiast 23) albo SX1276 zamiast SX1278.
  4. Telefon: aplikacja MeshCom tej samej generacji co firmware (przy źródłach 4.x – aplikacja 4.x). Android do skanowania BLE chce włączonej lokalizacji – to wymóg systemu, nie mapy.
  5. Połączenie Bluetooth z węzłem. Dopiero wtedy ustawiasz tożsamość i radio.

Na tej płytce nie ma GPS. Pozycja jest ręczna albo z telefonu na czas połączenia. Brak fixa satelit nie oznacza uszkodzenia. T-Beam ma GPS, T3 nie.

Parametry, które muszą być identyczne u wszystkich węzłów danej sieci:

ParametrO czym pamiętać
CzęstotliwośćW wielu sieciach OE/DL spotyka się okolice 433,775 MHz. Grupa w Polsce może użyć innego kanału w paśmie amatorskim. Bierz wartość od ludzi, z którymi chcesz się łączyć, i tylko taką, na jaką pozwala twoje uprawnienie
Spreading factor, bandwidth, coding rateRozjazd o jeden parametr = głucha sieć przy poprawnym sprzęcie
Znak wywoławczyTwój, nie „test” i nie cudzy
MocZacznij nisko, rzędu 10-17 dBm. SX1278 umie więcej, przepisy i antena często nie
Identyfikacja sieci / sync wordZostaw wartość MeshCom. Inna odetnie cię od siatki i nie zbliży do LoRaWAN

Konsola szeregowa, gdy wolisz log niż sam OLED: 115200 8N1, ten sam COM co przy wgrywaniu, ale już po resecie i bez esptoola. Na Windowsie wystarczy PuTTY albo py -m serial.tools.miniterm COM5 115200. Śmieci na ekranie oznaczają złą prędkość, niekoniecznie zły wsad.

Potem wychodzisz w teren albo stawiasz drugi węzeł w domu. Jeden moduł nie sprawdzi mesh – nie ma komu powtórzyć ramki. Drugi węzeł z tymi samymi parametrami, kilka metrów dalej, rozstrzyga więcej niż kolejna kompilacja.

serwer Linux                         komputer Windows              eter 433 MHz
pio run -e PROFIL                    esptool, obraz od 0x0
      |                                    |                            |
      v                                    v                            v
meshcom-t3.bin  -- scp/sftp -->      LilyGO T3_V1.6.1  -- BLE -->  telefon
SX1278, RST=GPIO23                   antena 433 MHz               ta sama f, SF, BW, CR

Gdy po wgraniu coś milczy

Port COM w ogóle nie powstaje. Kabel tylko zasilający, brak sterownika CH9102/CP210x, albo USB wpięte w hub, który zasila, ale nie przenosi danych. Spróbuj portu z tyłu komputera.

Failed to connect. Przytrzymaj BOOT według schematu wyżej, baud 115200, zamknij inne programy na tym COM. Chip w flash_id ma być ESP32. Jeśli narzędzie widzi inny układ, to nie jest ta płytka.

Wgranie doszło do 100%, a ekran czarny i port milczy. Obraz zapisany pod złym adresem (sam firmware.bin od 0x0 albo scalony obraz od 0x10000), tryb QIO zamiast DIO, albo ucięty plik (zła suma SHA-256). Zrób erase_flash i wgraj scalony obraz jeszcze raz od 0x0.

ESP32 żyje, OLED coś pisze, radia brak. Prawie zawsze profil V1/V2.0 zamiast V2.1 1.6, czyli reset na GPIO 14 zamiast GPIO 23. Sprawdź, jakie [env:...] naprawdę zbudowałeś. Drugi podejrzany: na płytce jest SX1276.

Ekran martwy, ale w konsoli 115200 widać log MeshCom. OLED na części rewizji ma reset na GPIO 16 i zły profil go nie rusza. Radio i tak może działać. Nie lutuj na ślepo – najpierw właściwe środowisko.

Węzeł wstał, nikt nie odpowiada. Inna częstotliwość, inne SF/BW/CR, antena 868 MHz, albo w zasięgu nie ma drugiego MeshCom. To nie jest sieć Meshtastic. Jeden węzeł nie ma z kim zestawić mesh.

Płytka co kilka sekund się restartuje. Uszkodzony lub ucięty obraz, złe napięcie zasilania, albo firmware pod inny układ (S3, T-Beam z innym sterownikiem zasilania). Wróć do flash_id, sumy pliku i nazwy środowiska.

Po każdej poprawce pinów kompilujesz od nowa na serwerze. Sam reset Windows nic nie zmieni w programie, który już siedzi w ESP32.

www.asgard.krakow.pl

Ważne: Artykuł (w szczególności treści i obrazy) powstał w całości lub w części przy udziale sztucznej inteligencji (AI). Niektóre informacje mogą być niepełne lub nieścisłe oraz zawierać błędy i/lub przekłamania. Publikowane treści mają charakter wyłącznie informacyjny i nie stanowią porady w szczególności porady prawnej, medycznej ani finansowej. Artykuły sponsorowane i gościnne są przygotowywane przez zewnętrznych autorów i partnerów. Redakcja nie ponosi odpowiedzialności za aktualność, poprawność ani skutki zastosowania się do przedstawionych informacji. W przypadku decyzji dotyczących zdrowia, prawa lub finansów należy skonsultować się z odpowiednim specjalistą.

Technologie IT – Biznes i Firma


Ilustracja Technologie IT - Biznes i Firma

A bright, solarized, glossy digital painted artwork in a High-Key Solarpunk style with a Mirror’s Edge minimalist aesthetic
and Y2K future-nostalgia, inspired by 1960 retro comic style. A bright, solarized, glossy digital painted artwork in a High-Key Solarpunk style with a Mirror’s Edge minimalist aesthetic
and Y2K future-nostalgia, inspired by 1960 retro comic style. A small LilyGO T3 LoRa board with an OLED screen, a metal-shielded radio chip beside the antenna socket, and a 433 MHz whip antenna attached, linked by a USB cable to a Windows laptop, while a Linux server nearby has just produced the firmware file being transferred for flashing, and a second identical board with its own antenna stands farther away as the first mesh contact forms, with a phone beside the first board. ;Background is a sun-drenched, high-gloss white Solarpunk facility inspired by Mirror’s Edge—sterile,
bright, and futuristic with subtle, minimal green accents integrated into sleek white architecture.
The artwork has a slick, ultra-bright digital color palette dominated by radiant white, ice blue, and reflective silver.
Added some energetic and vivid elements of deep reds, signal yellow, and controlled pops of green.
Smooth gradients, soft bloom light, and a bright, humorous, cyber-optimistic feel.
The overall style mimics neo-classic mid-century advertising with a humorous twist. ;Background is a sun-drenched, high-gloss white Solarpunk facility inspired by Mirror’s Edge—sterile,
bright, and futuristic with subtle, minimal green accents integrated into sleek white architecture.
The artwork has a slick, ultra-bright digital color palette dominated by radiant white, ice blue, and reflective silver.
Added some energetic and vivid elements of deep reds, signal yellow, and controlled pops of green.
Smooth gradients, soft bloom light, and a bright, humorous, cyber-optimistic feel.
The overall style mimics neo-classic mid-century advertising with a humorous twist.

Ilustracja Technologie IT - Biznes i Firma

A small LilyGO T3 LoRa board with an OLED screen, a metal-shielded radio chip beside the antenna socket, and a 433 MHz whip antenna attached, linked by a USB cable to a Windows laptop, while a Linux server nearby has just produced the firmware file being transferred for flashing, and a second identical board with its own antenna stands farther away as the first mesh contact forms, with a phone beside the first board.

Podobne wpisy