MESHTASTIC - Kompilace vlastního Firmware
Tímto textem bych rád naznačil, jak si s rostoucími zkušenostmi můžete začít kompilovat vlastní firmware pro Meshtastic. Aby mohl být tento text dostatečně nápomocný k osvojení této dovednosti, musel by být několikanásobně obsáhlejší. V takovem rozsahu to vsak nyni neni v mych moznostech takto podrobne popsat. Proto prosím omluvte stručnost.
Kompilaci vlastního firmware si ukážeme na jednoduchém příkladu, který můžete postupně využít při ladění sítě, zejména při pohodlném zjišťování kvality signálu. Inspirovano resenim jednoho z uzivatelu v Brne, ktery tuto sluzbu poskytoval na svem uzlu. Pokud se někdy začnete zabývat kompilací firmwaru intenzivněji, doporučuji nainstalovat veskere potrebne vybaveni na svůj osobní počítač - celé vývojové prostředí. Dale v textu je popsana kompilace jednodussim, ale o to rychlejsim zpusobem. S vyuzitim VSCODE (integrovane prostredi pro praci se zdrojovym kodem) a PlatformIO (vyvojove prostredi pro HW na kterem bezi Meshtastic) na cloudove sluzbe.
Pro začátek a krátkou demonstraci, která nevyžaduje žádnou instalaci, nyni pro jednoduchost využijeme cloudové řešení Gitpod.com. To provede veškerou potřebnou instalaci vsech potrebnych nastroju na virtuální počítač, který můžete vzdáleně ovládat přímo z prohlížeče (osobně používám Chrome).
Kompilace vlastní upravené verze – PING
Při seznamování s Meshtastic dříve či později narazíte na situaci, kdy bude nutné zjistit kvalitu signálu nebo pokrytí v dané oblasti. Z tohoto duvodu jsem se pro ucel seznameni s kompilaci vlastniho FW rozhodl prave pro takovou upravu kodu (Ping), kterou muzete s vyhodou pouzivat. Tuto funkci využijete nejenom pri zjistovani kvality signalu, navic k tomu jeste při testování antén – jak jejich zisku, tak částečně i směrových charakteristik. Typickým příkladem využití je instalace tohoto upraveného firmwaru do zařízení, které používáte jako hlavní a máte ho doma s externí anténou. Jeho dosah pak můžete v okolí testovat jakýmkoliv jiným zařízením pouhým odesláním zprávy "Ping" přímo na tento uzel. Nebo presvedcite i sousedy v okoli a budete mit moznost si kvalitu signalu kontrolovat navzajem.
V praxi to funguje takto: Z mobilního uzlu Z001 byla odeslána zpráva "Ping" na uzel ZR10. Ihned po přijetí zprávy upravený firmware na ZR10 odešle odpověď obsahující informace o signálu při přijetí zprávy – konkrétně sílu signálu (RSSI) a kvalitu (SNR). Díky tomu lze okamžitě zjistit, jak kvalitní je aktuální spojení s daným uzlem. Podobné informace samozřejmě můžete získat i jinými způsoby, ale tato varianta je okamžitá a zároveň ihned indikuje, pokud spojení není direct. Nejlépe je to vidět na přiloženém obrázku z aplikace připojené k uzlu Z001 – po odeslání příkazu "Ping" uzel ZR10 okamžitě vrátil informaci o RSSI/SNR.
Založení projektu na Gitpod.com
Do prohlížeče zadejte následující URL adresu:
https://gitpod.io#https://github.com/meshtastic/firmware
Tím založíte nový projekt na cloudové službě Gitpod.com, který bude vycházet z oficiálních zdrojových kódů Meshtastic firmware publikovaných na GitHubu. Jeden důležitý krok zde přeskočím – registraci nových uživatelů na Gitpod.com. Tento proces je však velmi jednoduchý a zvládne ho každý i bez podrobného popisu. 😊 Po registraci se zobrazí následující obrazovky, přičemž ta vpravo již obsahuje plně nainstalované prostředí s VS Code a PlatformIO.
Přidání nového modulu do zdrojových kódů
Do zdrojových kódů je potřeba přidat nový modul, který bude kontrolovat každou přijatou zprávu a v případě detekce příkazu "Ping" zajistí odeslání informací o kvalitě signálu.
Nakopírujte následující soubory do složky /src/modules/
Posledním krokem úprav je registrace nového modulu v již existujícím souboru /src/modules/Modules.cpp
. Na řádek 144 přidejte následující řádek:
new SignalReplyModule();
a ihned poté přejděte na začátek tohoto souboru a přidejte nový řádek s obsahem:
#include "SignalReplyModule.h"
Nepřekvapujte se, pokud se číslo řádku v nových verzích liší. Pro lepší orientaci se podívejte v obrazku na řádky 142 a 143, kde najdete text, podle kterého se můžete v budoucnu zorientovat. Nový řádek s registrací modulu vložte pod tento text.
V levém dolním rohu jsou vidět dvě nově přidané soubory (SignalReplyModule.cpp
a SignalReplyModule.h
). Kopírování můžete provést jednoduše přetažením souborů (drag & drop) z plochy přímo do prohlížeče. V levém horním rohu je zvýrazněn také upravený soubor, a v černé oblasti je vidět přímo upravený kód – na řádku 144 byla přidána registrace nového modulu.
Výběr zařízení – VARIANTS
Firmware je nutné kompilovat pro konkrétní zařízení, které používáte. Ve výchozím nastavení je ve zdrojovém kódu zvoleno zařízení T-Beam (které také používám a pro které je kompilace popsána v tomto textu). Pro první kompilaci doporučuji neexperimentovat, neprovádět žádné změny a ponechat výchozí nastavení. Tím si ověříte, jak celý proces kompilace probíhá od začátku do konce. Teprve poté začněte experimentovat s volbou cílového zařízení.
Kompilace pro jiné zařízení
Můj hlavní uzel běží na WisBlock Meshtastic Starter Kit (RAK WisBlock 4631). Pokud chcete kompilovat firmware pro jiné zařízení, je možne změnit nastavení v souboru platformio.ini
, který se nachází v kořenové složce projektu (root). Místo úpravy souboru platformio.ini
můžete variantu zařízení vybrat ale přímo při spuštění kompilace pomocí parametru v příkazové řádce. Tento způsob použijeme v našem příkladu, presto ale uvedu nyni jeste dodatecne informace, I kdyz pro nasi kompilaci konkretne nejsou nezbytne.
platformio.ini
, který se nachází v kořenové složce projektu (root). Místo úpravy souboru platformio.ini
můžete variantu zařízení vybrat ale přímo při spuštění kompilace pomocí parametru v příkazové řádce. Tento způsob použijeme v našem příkladu, presto ale uvedu nyni jeste dodatecne informace, I kdyz pro nasi kompilaci konkretne nejsou nezbytne.Nastavení kompilace pro různé varianty zařízení
Jak zjistit správnou hodnotu variants?
- Otevřete složku
variants
(na obrázku je zvýrazněná).
- Uvidíte seznam složek, kde každá obsahuje definici pro konkrétní desku.
- Jméno složky odpovídá hodnotě, kterou nastavíte do
default_envs
v souboru platformio.ini, nebo jak je tomu v našem případě, použijeme ji jako parametr v příkazové řádce při spuštění kompilace.
Spuštění kompilace
Kompilaci spustíte zadáním příkazu do terminálu. Tento přístup umožňuje rychle přepínat mezi různými zařízeními, aniž byste museli upravovat konfigurační soubor platformio.ini.
- Priklad pro TBEAM : pio run -e tbeam
- Priklad pro WisBlock : pio run -e rak4631
Po spuštění se stahnou veskere potrebne dependence a začne se kompilovat binární kód pro vaše zařízení. Tento proces zabere několik minut. Klidne se u toho da stihnout jedno kafe.
Instalace firmware do zařízení
Po úspěšném dokončení kompilace najdete binární soubor pro vaše zařízení v následujícím adresáři:
- Pro T-Beam:
.pio/build/tbeam/firmware.bin
- Pro WisBlock (RAK4631):
.pio/build/rak4631/firmware.uf2
Postup instalace ESP (tbeam, heltec apod.):
- Stáhněte soubor (firmware.bin).
- Připojte zařízení k počítači přes USB kabel.
- Nahrajte soubor do zařízení. Místo použití publikovaných kompilací si zvolíte vlastní kompilaci, kterou jste stáhli přímo z Gitpodu (viz tlacitko slozky na obr).
Postup instalace RAK(RAK4631 apod):
- Stáhněte soubor (firmware.uf2).
- Připojte zařízení k počítači přes USB kabel.
- Provedte doubleclick na tlacitko reset. Na pocitaci se objevi novy disk.
- Nahrajte soubor do zařízení - na nove pridany disk.
- Ihned pote, co se firmware nahraje se zarizeni restartuje.
Upozornění!
Tento příklad má sloužit jako ukázka, jak si zkompilovat vlastní firmware. Současně by Vám ale i takto jednoduchy prikad mohl pomoc a usnadnit seznamování s Meshtastic zařízením. Predevsim při výběru antény a zlepšování kvality signálu by se to mohlo hodit. Používáním této funkce vsak můžete zvýšit provoz v síti, což může ovlivnit ostatní uživatele. Respektujte prosím ostatní uživatele a nezneužívejte tuto funkci!
POZOR: pokud projekt na Gitpod přestanete používat, bude po několika dnech smazán. Pro zajištění, že o vaše změny nepřijdete, máte možnosti:
- Předplatit službu, abyste si svuj projekt udrželi aktivní.
- Uložit své změny a případně založit vlastní repozitář na Githubu
- Všechny změny příště zase provést manuálně podle návodu :-)
Poznatky a postřehy dalších uživatelů jsou vítány – klidně reagujte v komentářích, nebo pište na Telegram (uživatel Z001/ZR10) nebo na email (lze dohledat v profilu blogu).
Komentáře
Okomentovat