https://github.com/radiokot/osmand-display
🗺 A wireless Arduino-based E-Ink display that helps me navigate through my bike rides
https://github.com/radiokot/osmand-display
arduino ble e-ink waveshare
Last synced: 11 months ago
JSON representation
🗺 A wireless Arduino-based E-Ink display that helps me navigate through my bike rides
- Host: GitHub
- URL: https://github.com/radiokot/osmand-display
- Owner: Radiokot
- License: mit
- Created: 2022-12-02T11:05:30.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-16T06:33:58.000Z (over 2 years ago)
- Last Synced: 2025-03-24T10:38:47.635Z (12 months ago)
- Topics: arduino, ble, e-ink, waveshare
- Language: C
- Homepage: https://radiokot.com.ua/p/bike-nav-display
- Size: 54.7 KB
- Stars: 19
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
#
Bike navigation display
A wireless Arduino-based E-Ink display that helps me navigate through my bike rides.
The display is capable of:
- Showing the current location on the map, which is rotated according to the bearing
- Showing a track on the map
- Showing step-by-step navigation directions from OsmAnd, which was the original purpose of the display, but turned out to be useless
The device receives data from the [Android app](https://github.com/Radiokot/osmand-display-app) over the BLE serial.
📒 [How it was built](https://blog.radiokot.com.ua/bike-nav-display)
## Key components
- **Arduino Pro Mini** – 5V version but the frequency is divided in 4
- **1.54inch e-Paper Module (B)** – is not really the suitable option for this use case, it is slow and temperature-dependent. The display is used in the BW mode as BWR full refresh takes **15 seconds**
- **JDY-23** BLE 5.0 module – should be configured with the STARTEN mode 0 (power on sleep) for power saving
- **Li-Po battery**
- **TP4056** battery charging module
- **AMS1117** voltage stabilizer was in the prototype, but turned out to be useless (JDY-23 works fine at Li-Po max voltage)
## Commands
| Name | Description | Code | Payload | Example |
| -----|-------------|------|---------|---------|
|Direction|Shows given direction|`0x10`|1 byte [OsmAnd turn type](https://github.com/osmandapp/OsmAnd/blob/master/OsmAnd-java/src/main/java/net/osmand/router/TurnType.java); 4 bytes of unsigned short distance in meters, **Little endian**| `0x10 0x02 0x04 0x1F 0x00 0x00` – Turn left in 7940 m.|
|Clear|Clears the display|`0x20`|-|`0x20`|
|Frame prepare|Prepares the display for writing the frame data|`0x30`|-|`0x30`|
|Frame data|Writes given data to the display memory. Has no log output. Must be called after `Frame prepare`|`0x31`|1 byte data size, no more than 62; frame data|`0x31 0x01 0xFF` – Writes 1 byte of 8 black dots|
|Frame show|Shows whatever is in the display memory. Must be called after `Frame prepare`|`0x32`|-|`0x32`|