I might have to check that out.
I have an nrf52840 micromod CPU, but I didn’t get very far in porting ProffieOS to it. Don’t remember at what point I stopped, but I was using the Mbed arduino core as described in the micromod documentation. Maybe zephyr is a better way to go.
Ive been working to make an MJPEG video player and was encountering the SD bitrate issues. The latest updates push the default SD SPI to 40mhz, which speeds things up. I know they can be pushed to 53mhz no problem. I have not tried SDMMC yet.
Ive got it doing 320x240 on an st7789. Most spi values are very conservative compared to actual capability.
Also, apparently you can just direct wire an sd, lol.
SDMMC is generally much faster than SPI. In our use case, the problem is often that we don’t actually read sequential data, so each read ends up having to actually fetch data from flash memory, which slows things down a lot.
The ESP32 problem isn’t a bitrate problem though. I think maybe it reads the whole directory when you try to find a file or something…
If you don’t need SDIO, an ESP32-S2 is worth a try. The S2 has an inbuilt DAC, whereas the S3 does not. The DAC can easily handle the 44100Hz. And it’s the same (sma footprint as the S3.
As an example: https://www.electromaker.io/project/view/pov-light-saber
He uses an ESP32, a MPU6050, a PAM8403 (Amp), a WS2812B strip and the rest belongs to the charging.
If you want to try the internal DAC, I recommend the following library:
https://github.com/WeekendWarrior1/XTronical_XT_DAC_Audio_Mirror
But there’s a “bug”. Since the API it was written for was 1.x, you need to add the line #include “soc/rtc_io_reg.h” to XT_DAC_Audio.cpp.
btw: I’d use APA102, if you want LED-Strips in the blades. Compared to WS2811 strips (and other WS28xx), they are flicker-free in POV thanks to higher PWM (20000 vs 400). And with the SPI interface it’s much faster and on top of that there is no critical timing required. And they need only 5V.
We need all the speed we can get from the SD card.
Even with the SDIO, freertos is kind of slow to read from the SD card.
I prefer I2S over DACs. It’s too easy to end up with lots of buzz and noise with analog signals.
APA102 are nice, but not an option for most people since it requires an extra pin.
I’ll make the bold assumption you’ve tested it:
How slow is “kind of slow” relative to a PB 2.2. or 3.9?
Here is what I wrote previously in this thread:
Ah, that’s my bad, I didn’t see that.
That’s… less than ideal.
I should try it again though.
I saw a commend that indicated that a fix was coming, so it’s possible that it works better now.
So, while thinking about TeensySaber V4 and the future of Proffieboards, I’m realizing that it’s getting pretty difficult to find modern MPUs that are 5v tolerant, and since we really need to be able to feed battery power into a neopixels, we really need proffieboards to be able to handle at least 4.2V without dying.
This makes me think that maybe the future of proffieboards is to use a main CPU that does all the calculations and plays sound. However, when it comes to actually output things, it would send the data over SPI or serial to another MCU, which is in charge of neopixel outputs, and would be 5v tolerant.
The question is; what would this secondary MCU be? It would need:
- 5v tolerant, or operate at 5 volts.
- good neopixel driving support
- enough RAM to hold neopixel data
- (optional) 6x12/14/16-bit PWM for driving the FETs.
- (optional) 3 5v tolerant inputs with pullup/pulldown for buttons
- Require very few external components
What about a attiny85 for just the Neopixels? You could use the main CPU to trigger the light effects.
I read up a bit on attiny85,and I don’t think it’s going to work.
In particular, it seems to fail this point:
attiny85 has 512 bytes, which just isn’t enough.
A few kilobytes is the minimum, and that assumes that we can drive neopixels without requiring one byte per bit. (Which many implementations do.)
Also, the neopixel output support seems very limited. (The chip is unable to do anything else while feeding out nepixel data.)