You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+63-32Lines changed: 63 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ Raspberry Pi acts as a master, ESP8266/ESP32/ESP32-S2/rp2040(Raspberry Pi Pico)
16
16
- SPI doesn't have any data integration check. But AWA protocol does have one
17
17
- you don't need to have 2Mb capable serial port on your ESP board
18
18
- SPI transmission is much lighter than serial communication
19
-
- There is a hardware limitation for the Rpi current design...even if you connect your grabber using USB2.0 mode, working serial port driver (used by Adalight) results in quite a large overall USB transfer. So we can replace Adalight with a pure SPI data transfer as an alternative
19
+
- There is a hardware limitation for the Rpi current design...even if you connect your grabber using USB2.0 mode, working serial port driver (used by Adalight) results in quite a large drop in overall USB transfer. So we can replace Adalight with a pure SPI data transfer as an alternative
20
20
- I needed it and I was able to implemented it 😉
21
21
22
22
# Hardware connection
@@ -33,7 +33,11 @@ As you can also notice, the pinout of the SPI0 interface is identical for the en
> The ground connection between both GPIOs is as important as the other SPI data connections. The ground cable should be of a similar length as them and run directly next to them.
@@ -101,12 +109,25 @@ Or use `esptool.py` e.g.
101
109
For **RGBW LED strip** like RGBW SK6812 NEUTRAL white choose: *hyperspi_..._SK6812_RGBW_NEUTRAL.bin*
102
110
For **RGBW LED strip** like RGBW SK6812 COLD white choose: *hyperspi_..._SK6812_RGBW_COLD.bin*
103
111
For **RGB LED strip** like WS8212b or RGB SK6812 variant choose: *hyperspi_..._WS281x_RGB.bin*
112
+
113
+
## Flashing Pico boards
114
+
115
+
It's very easy and you don't need any special flasher.
116
+
117
+
Use firmware from the `hyperspi_pico_rp2040.zip` archive. Adafruit boards have their own custom firmware package inside the archive: `Adafruit_ItsyBitsy_RP2040.zip` and `Adafruit_Feather_RP2040_Scorpio.zip`
118
+
119
+
Put your Pico board into DFU mode:
120
+
* If your Pico board has only one button (`boot`) then press & hold it and connect the board to the USB port. Then you can release the button.
121
+
* If your Pico board has two buttons, connect it to the USB port. Then press & hold `boot` and `reset` buttons, then release `reset` and next release `boot` button.
122
+
123
+
In the system file explorer you should find new drive (e.g. called `RPI-RP2` drive) exposed by the Pico board. Drag & drop (or copy) the selected firmware to this drive.
124
+
The Pico will reset automaticly after the upload and after few seconds it will be ready to use.
104
125
105
126
# Software configuration (HyperHDR v17 and above)
106
127
107
128
**In HyperHDR `Image Processing→Smoothing→Update frequency` you should do not exceed the maximum capacity of the device. Read more here: [testing performance](https://github.com/awawa-dev/HyperSPI#performance-output)**
108
129
109
-
Select esp8266 protocol for ESP proprietary SPI protocol, esp32 for ESP32 boardsor 'standard' for other devices.
130
+
Select `esp8266` protocol for ESP proprietary SPI protocol, `esp32` for ESP32 boards, `rp2040 (Pico)` for Pico boards or `standard` for other devices.
110
131
Make sure you set "Refresh time" to zero, "Baudrate" should be set to high but realistic value like ```25 000 000```.
111
132
Enabling "White channel calibration" is optional, if you want to fine tune the white channel balance of your sk6812 RGBW LED strip.
112
133
@@ -116,38 +137,44 @@ Enabling "White channel calibration" is optional, if you want to fine tune the w
116
137
117
138
## ESP32 & ESP32-S2 parallel multi-segment mode
118
139
119
-
| LED strip / Device | ESP32 MH-ET LIVE mini<br/>HyperSPI v9 | ESP32-S2 Lolin mini<br/>HyperSPI v9 |
140
+
|sk6812 LED strip / Device | ESP32 MH-ET LIVE mini<br/>HyperSPI v9 | ESP32-S2 Lolin mini<br/>HyperSPI v9 |
Currently we use PlatformIO to compile the project. Install [Visual Studio Code](https://code.visualstudio.com/) and add [PlatformIO plugin](https://platformio.org/).
144
159
This environment will take care of everything and compile the firmware for you. Low-level LED strip support is provided by my highly optimizated (pre-fill I2S DMA modes, turbo I2S parallel mode for up to 2 segments etc) version of Neopixelbus library: [link](https://github.com/awawa-dev/NeoPixelBus).
145
160
146
-
But there is also an alternative and an easier way. Just fork the project and enable its Github Action. Use the online editor to make changes to the ```platformio.ini``` file, for example change default pin-outs or enable multi-segments support, and save it. Github Action will compile new firmware automatically in the Artifacts archive. It has never been so easy! **Just remember to follow the steps in the correct order otherwise the Github Action may not be triggered the first time after saving the changes.**
161
+
## Pico rp2040
162
+
163
+
Use Pico SDK and Visual Code to open ```rp2040``` folder. Edit ```rp2040\CMakeLists.txt``` configuration file if you need to apply changes.
164
+
165
+
## Github Action
166
+
167
+
But there is also an alternative and an easier way. Just fork the project and enable its Github Action. Use the online editor to make changes:
168
+
- esp8266/ESP32 boards: to the ```platformio.ini``` file
169
+
- rp2040 Pico boards: to the ```rp2040\CMakeLists.txt``` file
170
+
171
+
for example change default pin-outs or enable multi-segments support, and save it. Github Action will compile new firmware automatically in the Artifacts archive. It has never been so easy! **Just remember to follow the steps in the correct order otherwise the Github Action may not be triggered the first time after saving the changes.**
# Multi-Segment Wiring (ESP32, ESP32-S2 and Pico rp2040 boards only)
176
+
177
+
## ESP32
151
178
152
179
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:
153
180
- Divide a long or dense strip of LEDs into 2 smaller equal parts. So `SECOND_SEGMENT_START_INDEX` in the HyperSPI firmware is the total number of LEDs divided by 2.
- The diagram of the board for WS2812b/SK6812 including ESP32 and the SN74AHCT125N 74AHCT125 [level shifter](https://github.com/awawa-dev/HyperHDR/wiki/Level-Shifter).
175
202
203
+
## Pico rp2040
204
+
205
+
Edit ```rp2040\CMakeLists.txt``` file and recompile the project.
0 commit comments