Skip to content

Commit

Permalink
Update docs (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
awawa-dev authored Feb 4, 2023
1 parent 499032e commit db2cc26
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 32 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/push-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
- name: Create draft release
uses: softprops/action-gh-release@v1
with:
name: HyperSerialEsp8266 ${{ env.VERSION }}
name: HyperSerialESP32 ${{ env.VERSION }}
tag_name: ${{ env.TAG }}
files: |
*.bin
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 awawa-dev
Copyright (c) 2023 awawa-dev

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
67 changes: 37 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ RGB to RGBW conversion is calibrated for the neutral white channel BTF SK6812 bu

# Example of supported boards

**ESP32 MH-ET Live (CP2104 or CH9102x: for Windows you may need CH343CDC driver from *wch* website) and ESP32-S2 Lolin mini (CDC)**
**ESP32 MH-ET Live (CP2104 or CH9102x: 4Mb speed) and ESP32-S2 Lolin mini (CDC: 5Mb speed)**
<p align="center">
<img src="https://user-images.githubusercontent.com/69086569/207587620-1c4c53c8-426c-486e-a6d9-d429fd1b050d.png" /><img src="https://user-images.githubusercontent.com/69086569/207587635-b7816329-0e29-47ee-a75a-bc6c41cdc51f.png" />
</p>
Expand All @@ -31,7 +31,7 @@ Why the data integrity check was introduced which causes incompatibility with ot

Recommend to use [esphome-flasher](https://github.com/esphome/esphome-flasher/releases)

ESP32-S2 lolin mini requires special firmware version (also provided)
ESP32-S2 lolin mini requires using `esptool.py` to flash the firmware.

Generic ESP32:

Expand All @@ -48,11 +48,18 @@ If you want to disable your first LED because it's used as a sacrificial level s
For the RGBW firmware the white channel is automatically calculated and R,G,B channels are corrected.

# Usage in HyperHDR

**In HyperHDR `Image Processing→Smoothing→Update frequency` you should do not exceed the maximum capacity of the device. Read more here: [how to get statistics](https://github.com/awawa-dev/HyperHDR/wiki/HyperSerial)**

To test the maximum performance in HyperHDR, enable `Image Processing→Smoothing→Continuous output`, set a high value for `Update Frequency` in the same tab and set any color in the `Remote Control` tab as the active effect. Get the statistics and optionally adjust `Update Frequency`. After testing, you need to disable `Continuous output`and set `Update frequency`" according to your results.

Make sure you are using HyperHDR v19beta2 or above.
Set `Refresh time` to zero, `Baudrate` to 2000000 and you enabled `HyperHDR's AWA protocol`.
Configuring HyperHDR v19beta2 or above.
- set `Refresh time` to zero
- set `Baudrate` to 2000000
- enabled `HyperHDR's AWA protocol`.

Enabling `White channel calibration` is optional, if you want to fine tune the white channel balance of your sk6812 RGBW LED strip.
`ESP8266/ESP32 handshake` could help you to properly initialize the ESP device and enables statistics available in the logs (you must stop the LED device first to get them).
`ESP8266/ESP32 handshake` could help you to properly initialize the ESP device and enables statistics output to the logs (you must stop the LED device first to get them).

![obraz](https://user-images.githubusercontent.com/69086569/207109594-0493fe58-3530-46bb-a0a3-31a110475ed6.png)

Expand All @@ -75,10 +82,10 @@ Tutorial: https://github.com/awawa-dev/HyperSerialESP32/wiki

# Multi-Segment Wiring

Proposed example of building a multisegment:
Using parallel multi-segment allows you to double your Neopixel (e.g. sk6812 RGBW) LED strip refresh rate by dividing it into two smaller equal parts. Both smaller segments are perfectly in sync so you don't need to worry about it. Proposed example of building a multisegment:
- Divide a long or dense strip of LEDs into 2 smaller equal parts. So `SECOND_SEGMENT_START_INDEX` in the HyperSerialESP32 firmware is the total number of LEDs divided by 2.
- Build your first segment traditional way e.g. clockwise, so it starts somewhere in middle of the bottom of frame/TV and ends in the middle of the top of frame/TV
- Start the second segment in the opposite direction to the first one e.g. counterclockwise (`SECOND_SEGMENT_REVERSED` option in the HyperSerialESP32 firmware configuration must be enabled). So it starts somewhere in the middle of the bottom of the frame/TV and ends in the middle of the top of the TV/frame. Both segments should be connected at the top but only 5v and ground ( NOT the data line).
- Start the second segment in the opposite direction to the first one e.g. counterclockwise (`SECOND_SEGMENT_REVERSED` option in the HyperSerialESP32 firmware configuration must be enabled). So it starts somewhere in the middle of the bottom of the frame/TV and ends in the middle of the top of the TV/frame. Both segments could be optionally connected if possible at the top but only 5v and ground ( NOT the data line).
- The data line starts for both segments somewhere in the middle of the bottom of the TV/frame (where each of the LED strips starts)
- Configuration in HyperHDR does not change! It's should be configured as one, single continues segment. All is done in HyperSerialESP32 firmware transparently and does not affect LED strip configuration in HyperHDR.

Expand All @@ -102,35 +109,35 @@ build_flags = -DNEOPIXEL_RGB -DDATA_PIN=2 ${env.build_flags} -DSECOND_SEGMENT_ST

ESP32 MH-ET LIVE mini is capable of 4Mb serial port speed and ESP32-S2 lolin mini is capable of 5Mb. But to give equal chances for a single-segment mode all models were tested using the default speed of 2Mb which should saturate Neopixel data line. Parallel multi-segment mode uses the highest option available because communication performance is critical here.

## Parallel multi-segments can double your large sk6812/ws2812b setup refresh rate for free. All you need is to properly project & construct the LED strip and use HyperSerialESP32 v9. Parallel communication provides perfect synchronization between Neopixel segments.
**Parallel multi-segments can double your large sk6812/ws2812b setup refresh rate for free. All you need is to properly project & construct the LED strip and use HyperSerialESP32 v9. Parallel communication provides perfect synchronization between Neopixel segments.**

| LED strip / Device | ESP32<br>MH-ET LIVE mini @ 4Mb speed | ESP32-S2<br> Lolin mini @ 5Mb speed |
|-----------------------------------------------------------------------------------------|--------------------------|------------------------------|
| 300LEDs sk6812<br>Refresh rate/continues output=100Hz<br>SECOND_SEGMENT_START_INDEX=150 | 100 | 100 |
| 600LEDs sk6812<br>Refresh rate/continues output=100Hz<br>SECOND_SEGMENT_START_INDEX=300 | 83 | 82 |
| 900LEDs sk6812<br>Refresh rate/continues output=**60Hz** <br>SECOND_SEGMENT_START_INDEX=450 | 54-56 | 55-56 |
| Parallel multi-segment mode / Device | ESP32<br> MH-ET LIVE mini @ 4Mb speed | ESP32-S2<br> Lolin mini @ 5Mb speed |
|---------------------------------------------------------------------------------------|--------------------------|------------------------------|
| 300LEDs RGBW<br>Refresh rate/continues output=100Hz<br>SECOND_SEGMENT_START_INDEX=150 | 100 | 100 |
| 600LEDs RGBW<br>Refresh rate/continues output=83Hz <br>SECOND_SEGMENT_START_INDEX=300 | 83 | 83 |
| 900LEDs RGBW<br>Refresh rate/continues output=55Hz <br>SECOND_SEGMENT_START_INDEX=450 | 55 | 55 |

## Comparing v6.1 and v9 version (single segment) refresh rate using MH-ET LIVE mini
## ESP32 MH-ET LIVE mini

| LED strip / Device | ESP32<br>MH-ET LIVE mini<br>HyperSerialESP32 v6.1 | ESP32<br>MH-ET LIVE mini<br>HyperSerialESP32 v9 |
|------------------------------------------------|---------------------------------------------------|-------------------------------------------------|
| 300LEDs<br>Refresh rate/continues output=100Hz | 81-83 | 83 |
| 600LEDs<br>Refresh rate/continues output=60Hz | 39-40 | 41-42 |
| 900LEDs<br>Refresh rate/continues output=40Hz | 21-26 | 28 |
| Single RGBW LED strip / Device | ESP32<br>MH-ET LIVE mini<br>HyperSerialESP32 v9 |
|-----------------------------------------------------|-------------------------------------------------|
| 300LEDs RGBW<br>Refresh rate/continues output=83Hz | 83 |
| 600LEDs RGBW<br>Refresh rate/continues output=42Hz | 42 |
| 900LEDs RGBW<br>Refresh rate/continues output=28Hz | 28 |

## Comparing v6.1 and v8 version (single segment) refresh rate using generic ESP32 with CH340C
## Generic ESP32 with CH340C

| LED strip / Device | ESP32 (CH340C)<br>HyperSerialESP32 v6.1 | ESP32 (CH340C)<br>HyperSerialESP32 v8 |
|------------------------------------------------|-----------------------------------------|---------------------------------------|
| 300LEDs<br>Refresh rate/continues output=100Hz | 72-78 | 81-83 |
| 600LEDs<br>Refresh rate/continues output=60Hz | 33-38 | 39-42 |
| 900LEDs<br>Refresh rate/continues output=40Hz | 21-25 | 26-28 |
| Single RGBW LED strip / Device | ESP32 (CH340C)<br>HyperSerialESP32 v9 |
|-----------------------------------------------------|---------------------------------------|
| 300LEDs RGBW<br>Refresh rate/continues output=83Hz | 83 |
| 600LEDs RGBW<br>Refresh rate/continues output=42Hz | 42 |
| 900LEDs RGBW<br>Refresh rate/continues output=28Hz | 28 |

## ESP32-S2 lolin mini performance

| LED strip / Device | ESP32-S2 lolin mini<br>HyperSerialESP32 v8 |
|------------------------------------------------|--------------------------------------------|
| 300LEDs<br>Refresh rate/continues output=100Hz | 80-84 |
| 600LEDs<br>Refresh rate/continues output=60Hz | 42 |
| 900LEDs<br>Refresh rate/continues output=40Hz | 27-28 |
| Single RGBW LED strip / Device | ESP32-S2 lolin mini<br>HyperSerialESP32 v9 |
|-----------------------------------------------------|---------------------|
| 300LEDs RGBW<br>Refresh rate/continues output=83Hz | 83 |
| 600LEDs RGBW<br>Refresh rate/continues output=42Hz | 42 |
| 900LEDs RGBW<br>Refresh rate/continues output=28Hz | 28 |

0 comments on commit db2cc26

Please sign in to comment.