client | ||
server | ||
.gitignore | ||
README.md |
Odjezdová tabule MHD
Odjezdová tabule městské hromadné dopravy v Plzni postavená na protokolu LoRaWAN a mikrokontroléru M5Stack Core2.
✅ Základní funkce
- zobrazení aktuálního času a data
- zobrazení nejbližších odjezdů ze zastávky se započítaným zpožděním
- funkčnost na celém území Plzně a okolí
- aktualizace zobrazených dat za chodu
🧰 Použité technologie
- C/C++
- Python
- LoRaWAN
- HTML, CSS
- JavaScript
- Vue.js
🔧 Instalace a nastavení
Aby bylo s projektem možné pracovat, je potřeba několik věcí. Kód pro mikrokontrolér byl vyvíjen v Arduino IDE a použity byly knihovny M5Core2, M5GFX a M5-LoRaWAN. Serverová část byla vytvořena v Pythonu za použití knihoven PyYAML a Bottle, webové rozšíření poté za pomoci knihovny Vue.js (načítá se z CDN).
Pro zprovoznění je potřeba doplnit konfigurační soubory config.yml (pro server) a config.h (pro mikrokontrolér).
Odesílání zpráv na mikrokontrolér probíhá přes REST API portálu lora.plzen.eu, kam je potřeba se zaregistrovat a nastavit údaje mikrokontroléru (detailnější informace v konfiguračních souborech).
Cíl projektu
Cílem práce je navrhnout a zprovoznit odjezdovou tabuli spojů MHD, která bude fungovat na celém území Plzně a v blízkém okolí. Řešení bude založené na protokolu LoRaWAN a využívat bude mikrokontroléru M5Stack Core2 s příslušným komunikačním modulem.
Protokol
Pomocí protokolu LoRaWAN jsou přenášeny zprávy v podobě textového řetězce. Z důvodu snížení velikosti přenášených zpráv není vhodné data posílat například ve formátu JSON. Proto byl vytvořen vlastní úsporný protokol ke komunikaci s mikrokontrolérem.
Navržený protokol používá pro oddělení posílaných dat znak |
. Protokol podporuje několik typů zpráv, které najdete níže.
- data o spoji (
1|4|1|Bory|104
)- uložení či aktualizace informací o spoji
- části:
- identifikátor
- číslo spoje (řetězec, např.
N1
) - typ (1 - tramvaj, 2 - trolejbus, 3 - autobus)
- poslední zastávka
- čas odjezdu (v minutách s desetinnou částí:
104
= 10.4 min.)
- aktuální čas (
TIME|1670453990
)- nastavení aktuálního času a data
- části:
- značka, že se jedná o čas
- čas ve vteřinách od 1. 1. 1970
- vymazání dat (
CLEAR
)- vymazání všech uložených spojů (např. pro nahrání nových)