69 lines
2.8 KiB
Markdown
69 lines
2.8 KiB
Markdown
# Bus LCD for Arduino
|
||
|
||
Этот набор состоит из двух частей:
|
||
|
||
- `bus_monitor.py` получает координаты автобусов `94` и `96` с `https://rnd.don.su/get_bus`, считает примерное время до заданных точек и формирует две строки по 16 символов.
|
||
- `arduino_bus_display/arduino_bus_display.ino` принимает эти строки по `Serial` и выводит их на LCD 16x2 через `LiquidCrystal`.
|
||
|
||
Используются точки:
|
||
|
||
- `94`: `47.291609, 39.694856`
|
||
- `96`: `47.220350, 39.632114`
|
||
|
||
На экране выводится короткая ASCII-строка, например:
|
||
|
||
```text
|
||
94 #8 09m 2.4km
|
||
96 #6 03m 180m
|
||
```
|
||
|
||
`#8` это сколько автобусов скрипт видит на маршруте в текущем ответе API. `09m` это примерный ETA, `2.4km` или `180m` это расстояние по прямой до нужной точки. Это не маршрутное время, а оценка по текущему положению и скорости автобуса.
|
||
|
||
## Подключение LCD
|
||
|
||
Прошивка использует ваш вариант подключения:
|
||
|
||
- `RS -> D6`
|
||
- `EN -> D7`
|
||
- `DB4 -> D8`
|
||
- `DB5 -> D9`
|
||
- `DB6 -> D10`
|
||
- `DB7 -> D11`
|
||
|
||
## Что установить на компьютере
|
||
|
||
```bash
|
||
python3 -m pip install -r requirements.txt
|
||
```
|
||
|
||
## Как загрузить прошивку
|
||
|
||
Откройте файл `arduino_bus_display/arduino_bus_display.ino` в Arduino IDE и загрузите его в плату.
|
||
|
||
Скорость `Serial`: `115200`.
|
||
|
||
## Как запустить скрипт
|
||
|
||
Если хотите сначала просто посмотреть вывод в консоль:
|
||
|
||
```bash
|
||
python3 bus_monitor.py --once
|
||
```
|
||
|
||
Если Arduino подключена по USB:
|
||
|
||
```bash
|
||
python3 bus_monitor.py --serial-port /dev/ttyACM0
|
||
```
|
||
|
||
Полезные параметры:
|
||
|
||
- `--interval 5` или другое значение, если нужно изменить частоту обновления
|
||
- по умолчанию обновление идет каждые `5` секунд
|
||
- `--baud-rate 115200` скорость `Serial`
|
||
- `--once` один запрос без бесконечного цикла
|
||
|
||
## Примечания
|
||
|
||
- Скрипт сам получает свежие `cookie` и `csrf-token` с главной страницы `rnd.don.su`, поэтому не использует одноразовые токены из браузера.
|
||
- Если стандартный LCD 1602 плохо показывает кириллицу, это нормально. Поэтому строки на экране оставлены в ASCII.
|