Added README

This commit is contained in:
Filip Znachor 2022-12-09 01:29:31 +01:00
parent 6214b6cdf1
commit 8f77d5b9ea

51
README.md Normal file
View file

@ -0,0 +1,51 @@
# 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
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](https://github.com/m5stack/M5Core2/), [M5GFX](https://github.com/m5stack/M5GFX) a [M5-LoRaWAN](https://github.com/m5stack/M5-LoRaWAN). Serverová část byla vytvořena v Pythonu za použití knihoven [PyYAML](https://pyyaml.org/) a [Bottle](https://github.com/bottlepy/bottle), webové rozšíření poté za pomoci knihovny [Vue.js](https://vuejs.org/) (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).
## 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)