Odjezdova-tabule-MHD/README.md

2.8 KiB

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)