Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Tiggilyboo/vanny-hub
My van's embedded monitoring platform, using Modbus over RS-485 and RS-232.
https://github.com/Tiggilyboo/vanny-hub
embedded monitoring rasberry-pi-pico renogy rs-232 rs-485 waveshare-eink
Last synced: 9 days ago
JSON representation
My van's embedded monitoring platform, using Modbus over RS-485 and RS-232.
- Host: GitHub
- URL: https://github.com/Tiggilyboo/vanny-hub
- Owner: Tiggilyboo
- Created: 2021-04-21T16:04:19.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-11-09T21:40:17.000Z (about 2 years ago)
- Last Synced: 2024-08-02T14:07:34.867Z (3 months ago)
- Topics: embedded, monitoring, rasberry-pi-pico, renogy, rs-232, rs-485, waveshare-eink
- Language: C
- Homepage:
- Size: 1.09 MB
- Stars: 11
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# vanny-hub
![Hub](https://i.imgur.com/v27shz1.jpg)
## What?
My van's embedded monitoring platform, using Modbus over RS-485 and RS-232 on the Raspberry Pi Pico microcontroller.This is a DIY open source project of my own creation, and as such take no responsibility for this code...
## Features
1. Interface with a range of Renogy Products
a) Renogy Rover 40A (RVR40) over Modbus RTU 232
b) Renogy Smart Lithium Battery (LFP100S) over Modbus RTU 485
c) Renogy DC-DC Battery Charger (DCC50S) over Modbus RTU 485
2. Display information from each of these products on a WaveShare 2.9" E-Ink display
3. Display statistics over time (Rolling average for the hour, and after 48 hours, 7 days).## Configuration
- `device-lfp10s.h`: Register mappings for the LFP100S battery
- `device-dcc50s.h`: Register mappings for the DCC50S unit
- `device-rvr40.h`: Register mappings for the RVR40 controller### Pinouts
`devices-modbus.h` contains the various pinouts for the Raspberry Pi Pico UART pins. It makes use of both UARTs (one for modbus 485, and one for 232).
```c
#define UART_RX_TIMEOUT 1000000#define RS485_PORT uart0
#define RS485_BR 9600
#define RS485_DBITS 8
#define RS485_SBITS 1
#define RS485_PIN_TX 0
#define RS485_PIN_RX 1
#define RS485_PIN_RTS 22#define RS232_PORT uart1
#define RS232_BR 9600
#define RS232_DBITS 8
#define RS232_SBITS 1
#define RS232_PIN_TX 4
#define RS232_PIN_RX 5
````vanny-hub.h` contains the modbus node configuration, as well as refresh rates and statistic storing rates, as well as the GPIO pin used for changing the screen view.
```c
#define _VERBOSE#define LED_PIN 25
#define BTN_PIN 21//#define EPD_UPDATE_PARTIAL
#define EPD_FULL_REFRESH_AFTER 3
#define EPD_REFRESH_RATE_MS 60000#define RS485_DCC50S_ADDRESS 0x01
#define RS485_LFP100S_ADDRESS 0xf7
#define RS232_RVR40_ADDRESS 0x01#define STATS_MAX_HISTORY 168
#define STATS_UPDATE_ROLLING_MS 10000 // (secondly)
#define STATS_UPDATE_HISTORIC_MS 3600000 // (hourly)
```And finally, the display SPI pinout configuration is defined in `display/display-ws-eink.h`
```c
#define SPI_PORT spi1
#define SPI_BD 4000000#define SPI_PIN_DC 8
#define SPI_PIN_CS 9
#define SPI_PIN_CLK 10
#define SPI_PIN_DIN 11 // Aka. MOSI
#define SPI_PIN_RST 12
#define SPI_PIN_BSY 13
```## Setup
This project uses the Raspberry Pi Pico, and as such uses it's C API as well as a modbus library (stored as git submodules). This requires the use of:
```bash
$ git submodule sync
$ git submodule update
```Currently I have only written bash scripts for building and deploying the binaries (Ubuntu / Debian or Arch with minor adjustments of paths). But to use them, simply:
```bash
$ ./build.sh
$ ./deploy.sh
```