Compare commits
No commits in common. "c3dog" and "main" have entirely different histories.
BIN
2024-BLINKnd-ears/02-ears-controller-on-stand.jpg
Executable file
|
After Width: | Height: | Size: 181 KiB |
BIN
2024-BLINKnd-ears/03-ears-powered-off.jpg
Executable file
|
After Width: | Height: | Size: 157 KiB |
BIN
2024-BLINKnd-ears/04-ears-powered-on-side.jpg
Executable file
|
After Width: | Height: | Size: 98 KiB |
BIN
2024-BLINKnd-ears/05-ears-reinforcement-closeup.jpg
Executable file
|
After Width: | Height: | Size: 392 KiB |
BIN
2024-BLINKnd-ears/06-case-closed.jpg
Executable file
|
After Width: | Height: | Size: 179 KiB |
BIN
2024-BLINKnd-ears/07-pcb-closeup.jpg
Executable file
|
After Width: | Height: | Size: 583 KiB |
130
2024-BLINKnd-ears/BLINKnd-ears-v1.md
Executable file
|
|
@ -0,0 +1,130 @@
|
|||
# BLINKnd Ears - Version 1
|
||||
|
||||

|
||||
|
||||
Some people started distributing 3d printed cat ears on a large scale a while ago. At the last congress, people started adding LEDs to them. But so far all variants I've seen only had a static color. Well, I wanted something blinking and useable for dancing and it should react to the beat.
|
||||
|
||||
So of course I built just that.
|
||||
|
||||

|
||||
|
||||
I wore them for the first time at gpn22 and tested them during the party there. Worked well, looked great and quite some people asked me how to built them. So here are instructions on how to build your own.
|
||||
|
||||

|
||||
|
||||
I opted to use prefabricated modules instead of creating my own PCB to get faster results and lower the entry barrier for clones. Using a custom PCB would probably result in a smaller size.
|
||||
|
||||
## How Does it Work?
|
||||
|
||||
I carry an ESP32 running the [WLED MoonModules Project](https://mm.kno.wled.ge/) fork of [WLED](https://kno.wled.ge/). Connected to it is an I2S module. The sound input is used to run a [FFT](https://en.wikipedia.org/wiki/Fast_Fourier_transform) and beat detection on the ESP. Those are then used in light effects. As lights I use a ws2812 stripe glued to 3d printed cat ears. A cable is running from the ears behind my back under my shirt to the bum bag. All together is powered via an USB power bank.
|
||||
|
||||
## Partlist
|
||||
|
||||
- ESP32\[-S3\] (I used an [ESP32-S3 Mini](https://www.waveshare.com/esp32-s3-zero.htm). There are cheaper alternatives on Aliexpress. Do not use the single core variantes. Size matters)
|
||||
- I2S microphone (I used an INMP441 module)
|
||||
- A Case (You could 3d print this, I used some [cheap junction box from obi](https://www.obi.de/p/1820240/abzweigdose-ip54-75-mm-x-37-mm-x-40-mm-10-stueck))
|
||||
- USBC socket (for example [this one](https://www.amazon.de/dp/B0CPLS1X29))
|
||||
- WS2812 COB LED Strip (200 LEDs /m in my case, resulting in 60 LEDs on a 31cm stripe)
|
||||
- Capacitors. \~1000uf in total. Used to stabilize the power supply.
|
||||
- USB Power bank
|
||||
- 3d printed cat ears (I used [this model provided by c3cat](https://wiki.hamburg.ccc.de/club:c3cat:start)). I'd recommend not to use PLA because of it's melting point.
|
||||
- transparent glue
|
||||
- black paint
|
||||
- transparent plastic string
|
||||
- some cables
|
||||
- shrink tubing
|
||||
- connectors
|
||||
- small bolts and nuts (I used m2)
|
||||
|
||||
## Buildsteps
|
||||
|
||||
### Electronics and Case
|
||||
|
||||

|
||||
|
||||
Connect the Microphone to the ESP. See [here](https://mm.kno.wled.ge/WLEDSR/Digital-Microphone-Hookup/) for the pinout. For my INMP441 I've used the following pins :
|
||||
|
||||
```
|
||||
I2S SD: 3
|
||||
I2S WS: 2
|
||||
I2S SCK: 1
|
||||
I2S MCLK: N/A
|
||||
```
|
||||
|
||||
But you can pick any supported microphone and are quite flexible in choosing those pins.
|
||||
|
||||
The ws2812 data pin from the stripe on the ears is connected to `GPIO 4`. See [here](https://mm.kno.wled.ge/basics/getting-started/#quick-start-guide) on general info on howto connect those LEDs. I've picked a 100 Ohm resistor and skipped the level shifter.
|
||||
|
||||
My board has another ws2812 LED on `GPIO 21` connected. I use this one as status LED. It's visible evenfrom outside the case.
|
||||
|
||||
For power I've connected an USB C socket. It's secured with a cable tie. I picked this option over using the port on the devboard because the traces do not like the \~3A peak current I'd like to draw. It's recommended to add some random amount of capacitors as well. Considering I plan to support a 15W LED strob mode as it's probably not a bad idea. WLED recommends 1000uF.
|
||||
|
||||
I've used m2 screws to connect board and case. To protect against stress I'd recommend to secure all external cables and sockets to the case and not only to the PCB.
|
||||
|
||||
### Ears
|
||||
|
||||

|
||||
|
||||
Get 3d printed cat ears. You should be able to find them in most hackspaces and chaos events. Or print your own with this [model from c3cat](https://wiki.hamburg.ccc.de/club:c3cat:start). I'd recommend HIPS or ABS as printing material since the LEDs get hot enought to bend PLA. Don't worry if you only have PLA ones, you just might have to heat and bend them back sometimes. I painted them black to keep moisture out permanently and have a smooth surface.
|
||||
|
||||
You need a thin LED stripe for this build. I picked up a 4mm wide one from Aliexpress which came in a silicone tube. I'd recommend a high pixel density, like 200/m, for maximum blink. For the linked 3d model this results in the need for 31cm or 60 LEDs of 200 LEDs/m stripe. I'd recommend to power on the stripe, turn on 60 LEDs, mark them, turn the stripe off and then cut it to length.
|
||||
|
||||

|
||||
|
||||
At areas of high stress (narrow bends) I've reinforced the stripe with transparent string and glue. This keeps the stripe and ears from seperating.
|
||||
|
||||

|
||||
|
||||
On the lower half the string was painted black so it's not as visible.
|
||||
|
||||
Use shrink tubing to fix the cable to the ears. You can substitute it for tape, but you have to build some kind of stress relive if you want your ears to last. Solder the cable to the backside of the stripe.
|
||||
|
||||
**WARNING**: using the wrong polarity will result in a fried ESP. You should use a reverse secure connector unlike me. Ask me how I know...
|
||||
|
||||
**WARNING 2**: I learned not all cables are skin-friendly. Random ones from Aliexpress especially might not be... maybe add a silicone tube or use less shitty cables.
|
||||
|
||||
## Software and Configuration
|
||||
|
||||
See [here](https://mm.kno.wled.ge/basics/install-binary/) how to flash the wled fork. The web installer didn't work for me so I went a different way:
|
||||
|
||||
- flash tasmota via the [web installer](https://tasmota.github.io/install/)
|
||||
- connect to the wifi and go to the tasmota web terminal -> console -> [SetOption78 on](https://tasmota.github.io/docs/Commands/#setoption78)
|
||||
- install wled via the tasmota ota update function
|
||||
|
||||
It's probably easier to flash via CLI directly but I only had a phone with me at that moment. Yes we are in a future where you can flash a microcontroller via your phones browser. I love it!
|
||||
|
||||
Now you should be able to connect to the WLED AP via wifi and it's standard password ( `wled1234` ).
|
||||
|
||||
Configure your GPIOs via the webinterface. To get nicer effects, configure segments for parts like the ears and sides separately. Setup presets for effects and colors.
|
||||
|
||||
Most importantly: experiment! Find out what looks you like. Try out what effects to use to what kind of music. [Script your own effects](https://mm.kno.wled.ge/moonmodules/arti-fx/). The documentation of WLED is quite a good help with that.
|
||||
|
||||
## Observed Problems and Ideas
|
||||
|
||||
### PLA melts
|
||||
|
||||
Yes realy. \~3A at 5V is generates enough heat to soften PLA. My next version is made using [HIPS](https://en.wikipedia.org/wiki/Graft_polymer#High_impact_polystyrene). ABS would work as well.
|
||||
|
||||
### Connector reversing kills the ESP
|
||||
|
||||
Use a different connector as I did
|
||||
|
||||
### No USB power delivery support
|
||||
|
||||
The USB C breakout I used doesn't support USB PD. Use a different module or USB A -> C cables.
|
||||
|
||||
### Too much bass (lol)
|
||||
|
||||
If it gets too loud the microphone clips out even on minimal gain settings. Either use a line in or add sound isolation. A different microphone could help as well. Or ignore the problem, it still blinks good enough.
|
||||
|
||||
### More Documentation
|
||||
|
||||
I took way too few pictures of the ears in action. I'd realy love to have more pictures of them and some other wearables I plan to build. Hopefully fixable on the next event.
|
||||
|
||||
### Hardware Controlls and Buttons
|
||||
|
||||
Looking at a phone screen is annoying. I'd love a button to cycle presets.
|
||||
|
||||
### Sync
|
||||
|
||||
WLED has the option to sync multiple devices via wifi... I've some plans.
|
||||
|
|
@ -11,32 +11,21 @@
|
|||
@layer per-site {
|
||||
.resources-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
column-gap: 1ch;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
row-gap: 1rem;
|
||||
justify-content: space-around;
|
||||
align-items: stretch;
|
||||
padding-left: 0;
|
||||
|
||||
&>a {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-basis: 45%;
|
||||
flex-grow: 1;
|
||||
max-width: 85vw;
|
||||
border: 1px solid var(--accent-color);
|
||||
padding: 8px;
|
||||
text-decoration: unset;
|
||||
color: var(--fg-color);
|
||||
background-color: color-mix(in hsl, var(--bg-color) 90%, var(--fg-color) 10%);
|
||||
min-height: 2rem;
|
||||
text-align: center;
|
||||
font-size: larger;
|
||||
|
||||
&:hover {
|
||||
background-color: color-mix(in hsl, var(--bg-color) 80%, var(--fg-color) 20%);
|
||||
box-shadow: 4px 4px 6px var(--accent-color);
|
||||
&>li {
|
||||
display: block;
|
||||
&>a {
|
||||
display: inline flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
row-gap: 4px;
|
||||
&>img {
|
||||
aspect-ratio: 1/1;
|
||||
width: 250px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -45,16 +34,23 @@
|
|||
</head>
|
||||
<body class="container">
|
||||
<main>
|
||||
<h1 class="title">3D Printing Files</h1>
|
||||
<a href="https://git.hamburg.ccc.de/c3cat/dogears" rel="external">
|
||||
<img alt="A picture of a dogear 3D model" src="assets/img/dogears.webp">
|
||||
<span></span>
|
||||
<h1 class="title">3D Printables</h1>
|
||||
<a href="./">
|
||||
<picture>
|
||||
<source srcset="assets/img/c3cat-c3sign-cccamp23-transparent-for-dark.webp" media="(prefers-color-scheme: dark)"/>
|
||||
<img src="assets/img/c3cat-c3sign-cccamp23-transparent.webp" alt="C3CAT with a cat ear headband around the 'A'" class="hero-img"/>
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
<ul class="resources-container">
|
||||
<a href="https://git.hamburg.ccc.de/c3cat/dogears" rel="external">
|
||||
Git Repository
|
||||
</a>
|
||||
<li>
|
||||
<a href="https://www.printables.com/de/model/35076-cat-ears" rel="external">
|
||||
<img alt="A picture of a catear 3D model" src="assets/img/3d-printables/catears-printables.webp">
|
||||
<span>The original catear model from <i>printables.com</i></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</main>
|
||||
<footer>
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
@layer base {
|
||||
:root {
|
||||
/* Use a shade of the c3cat logos pink, which works nicely as a link color. */
|
||||
--accent-color-light: #cd9508;
|
||||
--accent-color-light: #DC049B;
|
||||
/* A modified version of accent-color-light, which works nicely as a link color
|
||||
* and with the dark theme */
|
||||
--accent-color-dark: #FFC900;
|
||||
--accent-color-dark: #dc49b0;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
}
|
||||
|
||||
.hero-img {
|
||||
max-width: 600px;
|
||||
max-width: 500px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
|
|
|||
BIN
assets/img/3d-printables/catears-printables.webp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
assets/img/b1.jpeg
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/img/b10.jpeg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
assets/img/b2.jpeg
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/img/b3.jpeg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
assets/img/b4.jpeg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/img/b5.jpeg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
assets/img/b6.jpeg
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/img/b7.jpeg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/img/b8.jpeg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
assets/img/b9.jpeg
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
BIN
assets/img/c3cat-c3sign-cccamp23-transparent-for-dark.webp
Executable file
|
After Width: | Height: | Size: 166 KiB |
BIN
assets/img/c3cat-c3sign-cccamp23-transparent.webp
Executable file
|
After Width: | Height: | Size: 165 KiB |
BIN
assets/img/c3cat-c3sign-cccamp23.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
Before Width: | Height: | Size: 352 KiB |
|
Before Width: | Height: | Size: 898 KiB |
BIN
assets/img/party-1.webp
Executable file
|
After Width: | Height: | Size: 143 KiB |
BIN
assets/img/party-2.webp
Executable file
|
After Width: | Height: | Size: 209 KiB |
BIN
assets/img/party-3.webp
Executable file
|
After Width: | Height: | Size: 150 KiB |
BIN
assets/img/party-4.webp
Executable file
|
After Width: | Height: | Size: 400 KiB |
BIN
assets/img/party-5.webp
Executable file
|
After Width: | Height: | Size: 165 KiB |
BIN
assets/img/party-6.webp
Executable file
|
After Width: | Height: | Size: 86 KiB |
BIN
assets/img/party-7.webp
Executable file
|
After Width: | Height: | Size: 265 KiB |
BIN
assets/img/rgb-ears-39c3/10_1280.webp
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
assets/img/rgb-ears-39c3/10_1920.webp
Normal file
|
After Width: | Height: | Size: 546 KiB |
BIN
assets/img/rgb-ears-39c3/10_4960.webp
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
assets/img/rgb-ears-39c3/11_1280.webp
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
assets/img/rgb-ears-39c3/11_1920.webp
Normal file
|
After Width: | Height: | Size: 284 KiB |
BIN
assets/img/rgb-ears-39c3/11_5984.webp
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
assets/img/rgb-ears-39c3/12_1280.webp
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
assets/img/rgb-ears-39c3/12_1920.webp
Normal file
|
After Width: | Height: | Size: 237 KiB |
BIN
assets/img/rgb-ears-39c3/12_6133.webp
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
assets/img/rgb-ears-39c3/13_1280.webp
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
assets/img/rgb-ears-39c3/13_1920.webp
Normal file
|
After Width: | Height: | Size: 251 KiB |
BIN
assets/img/rgb-ears-39c3/13_5888.webp
Normal file
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/img/rgb-ears-39c3/14_1280.webp
Normal file
|
After Width: | Height: | Size: 324 KiB |
BIN
assets/img/rgb-ears-39c3/14_1920.webp
Normal file
|
After Width: | Height: | Size: 796 KiB |
BIN
assets/img/rgb-ears-39c3/14_2641.webp
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/img/rgb-ears-39c3/15_1280.webp
Normal file
|
After Width: | Height: | Size: 251 KiB |
BIN
assets/img/rgb-ears-39c3/15_1920.webp
Normal file
|
After Width: | Height: | Size: 604 KiB |
BIN
assets/img/rgb-ears-39c3/15_2757.webp
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/img/rgb-ears-39c3/16_1280.webp
Normal file
|
After Width: | Height: | Size: 196 KiB |
BIN
assets/img/rgb-ears-39c3/16_1920.webp
Normal file
|
After Width: | Height: | Size: 413 KiB |
BIN
assets/img/rgb-ears-39c3/16_3064.webp
Normal file
|
After Width: | Height: | Size: 1 MiB |
BIN
assets/img/rgb-ears-39c3/17_1280.webp
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
assets/img/rgb-ears-39c3/17_1920.webp
Normal file
|
After Width: | Height: | Size: 453 KiB |
BIN
assets/img/rgb-ears-39c3/17_6477.webp
Normal file
|
After Width: | Height: | Size: 9 MiB |
BIN
assets/img/rgb-ears-39c3/18_1280.webp
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
assets/img/rgb-ears-39c3/18_1920.webp
Normal file
|
After Width: | Height: | Size: 556 KiB |
BIN
assets/img/rgb-ears-39c3/18_7560.webp
Normal file
|
After Width: | Height: | Size: 13 MiB |
BIN
assets/img/rgb-ears-39c3/19_1280.webp
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
assets/img/rgb-ears-39c3/19_1920.webp
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
assets/img/rgb-ears-39c3/19_7352.webp
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
assets/img/rgb-ears-39c3/1_1280.webp
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
assets/img/rgb-ears-39c3/1_1919.webp
Normal file
|
After Width: | Height: | Size: 294 KiB |
BIN
assets/img/rgb-ears-39c3/1_6928.webp
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
assets/img/rgb-ears-39c3/20_1280.webp
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
assets/img/rgb-ears-39c3/20_1919.webp
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
assets/img/rgb-ears-39c3/20_5944.webp
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
assets/img/rgb-ears-39c3/21_1280.webp
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
assets/img/rgb-ears-39c3/21_1920.webp
Normal file
|
After Width: | Height: | Size: 263 KiB |
BIN
assets/img/rgb-ears-39c3/21_7960.webp
Normal file
|
After Width: | Height: | Size: 7.6 MiB |
BIN
assets/img/rgb-ears-39c3/22_1280.webp
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
assets/img/rgb-ears-39c3/22_1920.webp
Normal file
|
After Width: | Height: | Size: 306 KiB |
BIN
assets/img/rgb-ears-39c3/22_6845.webp
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
assets/img/rgb-ears-39c3/2_1280.webp
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/img/rgb-ears-39c3/2_1920.webp
Normal file
|
After Width: | Height: | Size: 370 KiB |
BIN
assets/img/rgb-ears-39c3/2_3032.webp
Normal file
|
After Width: | Height: | Size: 914 KiB |
BIN
assets/img/rgb-ears-39c3/3_1280.webp
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
assets/img/rgb-ears-39c3/3_1920.webp
Normal file
|
After Width: | Height: | Size: 306 KiB |
BIN
assets/img/rgb-ears-39c3/3_3273.webp
Normal file
|
After Width: | Height: | Size: 864 KiB |
BIN
assets/img/rgb-ears-39c3/4_1280.webp
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
assets/img/rgb-ears-39c3/4_1920.webp
Normal file
|
After Width: | Height: | Size: 794 KiB |
BIN
assets/img/rgb-ears-39c3/4_3336.webp
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
assets/img/rgb-ears-39c3/5_1280.webp
Normal file
|
After Width: | Height: | Size: 233 KiB |
BIN
assets/img/rgb-ears-39c3/5_1920.webp
Normal file
|
After Width: | Height: | Size: 536 KiB |
BIN
assets/img/rgb-ears-39c3/5_3200.webp
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/img/rgb-ears-39c3/6_1280.webp
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
assets/img/rgb-ears-39c3/6_1920.webp
Normal file
|
After Width: | Height: | Size: 437 KiB |
BIN
assets/img/rgb-ears-39c3/6_6480.webp
Normal file
|
After Width: | Height: | Size: 7.9 MiB |
BIN
assets/img/rgb-ears-39c3/7_1280.webp
Normal file
|
After Width: | Height: | Size: 187 KiB |
BIN
assets/img/rgb-ears-39c3/7_1920.webp
Normal file
|
After Width: | Height: | Size: 478 KiB |
BIN
assets/img/rgb-ears-39c3/7_5976.webp
Normal file
|
After Width: | Height: | Size: 6.8 MiB |
BIN
assets/img/rgb-ears-39c3/8_1280.webp
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
assets/img/rgb-ears-39c3/8_1920.webp
Normal file
|
After Width: | Height: | Size: 503 KiB |
BIN
assets/img/rgb-ears-39c3/8_5904.webp
Normal file
|
After Width: | Height: | Size: 6.7 MiB |
BIN
assets/img/rgb-ears-39c3/9_1280.webp
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
assets/img/rgb-ears-39c3/9_1920.webp
Normal file
|
After Width: | Height: | Size: 367 KiB |
BIN
assets/img/rgb-ears-39c3/9_4695.webp
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/img/rgb-guide-esp-labeled.jpeg
Normal file
|
After Width: | Height: | Size: 3.7 MiB |