Page 1 of 1

M5Dial Zombieverter Dial Dislay

Posted: Tue Feb 03, 2026 11:12 pm
by robertwa
I've been working on a $35 rotary dial display from M5Stack to view certain parameter from zombieverter and push updates to others for functions such as gear shifting. This is hugely leveraged from Jamiejones Lilygo zombie display code. The device is also ESP32-S3
Screenshot 2026-02-03 144214.png
I don't code at all, so leveraged ClaudeAI to do all the porting of code and updating features, as well as documenting files and instructions on github:
https://github.com/robertwa1974/Zombiev ... al-Display

Still lots of tweaking to do, but so far am able to display parameters like temperatures from zombie, ISA shunt values like voltages and current, and BMS information from SIMBMS. I have it configured to push changes like hi/lo gear select, modify regen and select motor modes - Mg1/2/blend etc

I'm hoping to use its RFID capability to connect to smartphone NFC as a kind of immobilizer. Currently working on the graphics to make it look cleaner.




Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Feb 10, 2026 5:37 am
by robertwa
Working on updates to add an immobilizer feature and improve look and feel of screens. My car is pretty open like a Jeep so security is important to me. I am building the immobilizer to have a 4 digit PIN entry or a scan of a RFID card/NFC from smartphone. It can output a digital signal via GPIO or via CAN. For inputs, PIN functionality is currently working, I am working on the RFID part.

For outputs, I could use a relay to control inverter 12V power or brake input switch (my setup is Lexus inverter). I'd prefer CAN for minimal wiring but am struggling with finding a parameter I can use to inhibit run mode. Open to any suggestions here - I tried to CAN map to idcmax, tried limiting idcmax via SDO control, and tried a BMS spoof (no discharge allowed) 0x6B4 BMS signal, to no avail. Please chime in if any suggestions.

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Feb 24, 2026 3:51 am
by robertwa
Continuing to evolve the dial. Latest release:
https://github.com/robertwa1974/Zombiev ... y/releases

Playing with the dials web interface to read parameters. Have some scaling issues need work
Screenshot 2026-02-21 142507.png
Added tab to show can log
Screenshot 2026-02-21 141620.png
Thinking more on the Web UI and don't want to reinvent the wheel. Jamie already has a great CAN based derivative of the Openinverter one so I'm going to pivot to that. I've been able to run that on the dial successfully but not yet without killing dial functionality. Will keep working on this as time allows

This whole Claude AI thing has been an experience. It's so easy for AI to go off track and, as someone who doesn't know code, is easy to get sucked in. Many times, I've had to call a timeout (akin to a board meeting) and reinforce the objectives. It's been fun, but quite a detour from my car build. On the plus side, I've learned about SPIFFS and JSONs and SDO and all sorts of other stuff. I've had SavvyCan running along with Openinerter CAN tool together.

Re: M5Dial Zombieverter Dial Dislay

Posted: Sat Feb 28, 2026 8:23 pm
by LRBen
robertwa wrote: Tue Feb 10, 2026 5:37 am Working on updates to add an immobilizer feature and improve look and feel of screens. My car is pretty open like a Jeep so security is important to me. I am building the immobilizer to have a 4 digit PIN entry or a scan of a RFID card/NFC from smartphone. It can output a digital signal via GPIO or via CAN. For inputs, PIN functionality is currently working, I am working on the RFID part.

For outputs, I could use a relay to control inverter 12V power or brake input switch (my setup is Lexus inverter). I'd prefer CAN for minimal wiring but am struggling with finding a parameter I can use to inhibit run mode. Open to any suggestions here - I tried to CAN map to idcmax, tried limiting idcmax via SDO control, and tried a BMS spoof (no discharge allowed) 0x6B4 BMS signal, to no avail. Please chime in if any suggestions.
There is a drive inhibit feature in the vehicle testing branch that uses PP detect, wouldn't be too difficult to add the immobiliser function into that as an option. Wouldn't stop power up functions or charging, but would stop drive until it saw whatever signal you decided to use. I've been thinking about something similar for the Land Rover as that's also going to be quite open. Being a can message would be ideal as you can't hotwire around that.

Re: M5Dial Zombieverter Dial Dislay

Posted: Sat Mar 07, 2026 11:41 pm
by robertwa
Thanks, will look forward to seeing that drive inhibit feature on next zombie release, that will be great

Re: M5Dial Zombieverter Dial Dislay

Posted: Mon Mar 16, 2026 12:40 am
by robertwa
Finally got the Openinverter Web Interface working with the dial.
Released v2.1.0
https://github.com/robertwa1974/Zombiev ... tag/v2.1.0


Re: M5Dial Zombieverter Dial Dislay

Posted: Fri Mar 20, 2026 3:15 am
by robertwa
Got the Dial fetching parameters from zombieverter on boot. Also created a one-click install link in the release notes below in case anyone is interested. Again, all coding done by ClaudeAI

# Release Notes — v2.2.1

## ZombieVerter Dial Display — Auto Parameter Fetch & One-Click Web Installer

---

## What's New

### Automatic Parameter Fetch from VCU

The display now downloads its parameter list directly from the ZombieVerter VCU at boot via SDO segmented transfer — no more manual `params.json` upload required.

**Boot sequence:**
1. On first power-up with the VCU connected, the display fetches the full parameter schema (~30KB) from the VCU over CAN
2. The splash screen shows live progress: **"Fetching params from VCU..."**
3. On success: **"VCU params loaded!"** — the file is automatically saved to internal storage for future use
4. If the VCU is not connected at boot, the display falls back to the last cached parameter file
5. If no cache exists, a minimal set of default parameters is used

**Three-tier fallback system:**
| Priority | Source | When used |
|----------|--------|-----------|
| 1 | VCU (live SDO fetch) | VCU powered and CAN connected at boot |
| 2 | Cached `/params.json` (SPIFFS) | VCU not available, but previously fetched |
| 3 | Built-in sample params | No VCU and no cache — limited functionality |

This means after one successful boot with the VCU connected, the display works correctly even if the VCU is off when the display powers up. It also means that if you upgrade your VCU firmware and the parameter list changes, the display automatically picks up the new list on next boot with the VCU connected.

### One-Click Web Installer

A browser-based installer is now available — no development tools, no drivers, no command line required.

**Visit:** `https://robertwa1974.github.io/Zombieve ... l-Display/

- Works in Chrome and Edge (Web Serial API required)
- Flashes firmware, web interface, and all supporting files in a single operation
- Takes approximately 30–60 seconds
- M5Stack Dial connects automatically — no button pressing required

The installer is automatically rebuilt and published every time a new release is pushed to GitHub.

---

## Bug Fixes

- Fixed SDO task startup order — SDOManager now starts after the VCU parameter fetch completes, preventing frame routing conflicts during boot
- Removed leftover `buildParamsJsonCache` / `cachedParamsJson` code from CANData that was no longer used

---

## Technical Notes

- Parameter fetch uses CANopen segmented upload protocol on SDO index `0x5001` (the ZombieVerter strings index)
- Download runs synchronously before SDOManager starts, reading directly from TWAI to avoid FreeRTOS queue conflicts
- On a typical 200-parameter VCU, the download takes 3–5 seconds (~4400 segments × 7 bytes)
- Fetched file is saved to SPIFFS as `/params.json`, overwriting any previously uploaded file
- GitHub Actions workflow builds `factory.bin` (merged binary at offset `0x0`) and deploys to GitHub Pages on every push to `main`

---

## Upgrade Notes

- Flash firmware only (no filesystem change required if you already have v2.1.0)
- On first boot after upgrade, the display will attempt to fetch parameters from the VCU
- Any manually uploaded `params.json` will be overwritten on the next successful VCU fetch — this is intentional and ensures the display always has the correct parameter list for the connected VCU firmware version
- If you want to prevent overwriting a custom `params.json`, connect the display without the VCU powered on — it will load from SPIFFS instead

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Apr 07, 2026 4:18 am
by robertwa
Released v2.3.0.

Full release notes: https://github.com/robertwa1974/Zombiev ... tag/v2.3.0

Key changes:
- Changed gearchange, motor select, regen to SDO, no more need for parameter mapping.
- Added tab to web UI screen showing CAN traffic, decoding, transmit single packet and logging
- Added OTA FW updates on web UI
-Added parameter fetch on web UI (in addition to fetching automatically on dial boot)
-Fixed bugs on parameter fetching on dial boot
-General file cleanup and dial graphics optimization
Screenshot 2026-04-06 173710.png
Screenshot 2026-04-06 173907.png
Screenshot 2026-04-06 173923.png
Screenshot 2026-04-06 173937.png
Screenshot 2026-04-06 173955.png
Screenshot 2026-04-06 173737.png

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Apr 21, 2026 3:47 pm
by Ghia66
IMG_3777.jpeg

Hi Robert, what is the Zombieverter-Display password when using a M5Stack Dial…I’m stuck!?

What Can H Can L did you use on the Zombieverter…I was going to use pin 25 and 26 (which is free) but I have the Can to the BMW Sbox or Outlander charger available?

Thanks 🙂

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Apr 21, 2026 4:12 pm
by Mhs
Ghia66 wrote: Tue Apr 21, 2026 3:47 pm IMG_3777.jpeg


Hi Robert, what is the Zombieverter-Display password when using a M5Stack Dial…I’m stuck!?
Password should be

Code: Select all

zombieverter
if I'm not mistaken

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Apr 21, 2026 7:58 pm
by robertwa
Correct, password is 'zombieverter'
Instructions here:
https://github.com/robertwa1974/Zombiev ... /README.md

I connect to CAN 1 on zombieverter as that is confirmed to work with SDO. Not sure about CAN 2. You will want it in on the same bus as you have your shunt/S-box wired to

Re: M5Dial Zombieverter Dial Dislay

Posted: Tue Apr 21, 2026 9:23 pm
by Ghia66
Brilliant, thanks Robert, I will get on with it! 🙂