And ESP32 powered VU matrix using the INMP441 I2S microphone

Overview

ESP32-INMP441-Matrix-VU

This is the repository for a 3D-printed, (optionally) battery-powered, WS2812B LED matrix that produces pretty patterns using audio input from an INMP441 digital microphone and running on an ESP32. Watch the explanatory video at the YouTube link below:

Hardware

At a minimum, you will need:

  • A 3D printer to produce the case, STLs are available.
  • An ESP32 dev board, the exact type doesn't matter.
  • An 8x8 (80x80 mm) or 16x16 (160x160 mm) WS2812B LED matrix.
    • My code should work with any matrix providing the width is 8 or a multiple of 16. The height isn't important. If you're using WLED, you can have whatever size you like!
    • The data input for my matrix is at the bottom-left, and is wired in a horizontal zig-zag pattern.
  • An INMP441 I2S microphone.
  • A power switch
  • A DC input socket and 5V power supply if you are not powering from a battery.
  • The usual electronics tools and equipment to build it.

No battery schematic

If you want to battery power your creation, you will also need:

  • A LiPo / LiIon battery - exact specs depend on the run time you need and what solution you are using for your charge / boost circuits.
  • A charge / boost board to connect to your battery and output 5V for the LEDs.
    • Alternatively you could use seperate modules for these functions, this might be a good idea for the higher power 16x16 matrix.

Battery schematic

Software

Regarding software you have two main options, the software given in this repository or WLED sound reactive fork. The hardware connections are the same for either option. There are many advatages of using WLED over this software, it's a much more complete solution with better support for syncing multiple controllers setting up playlists of patterns and customising the patterns that exist. The only realy advantage of my software is that I wanted to write my own patterns and be able to completely customise how things worked. The choice is yours. If you want to use my software, read on...

Software setup

  1. Download the code, and make sure you have all of the required libraries installed. They are listed at the top of the .ino file.
  2. Make sure your matrix is set up correctly in the software for input position, and wiring style. See notes at the top of the .ino file for more details.
  3. Change M_WIDTH and M_HEIGHT to the correct number of LEDs for your matrix.
  4. Go into web_server.h and change ssid, password, ssid2, and password2 to your primary and backup network credentials.
  5. Upload the code to your ESP32 and hope for the best!

Using the matrix

Every time you power the matrix, it will attempt to connect to the primary WiFi network for 5 seconds. If this fails, it will try the secondary credentials for 5 seconds. If this also fails, it will fall back to whatever its previous setting were, but you will be unable to make any changes. I have the secondary credentials set to the hotspot on my phone, so I can use the device outside of my home network. If it succeeds in connecting to a network, the local IP of the ESP will scroll across the screen. Go to this address in any browser to change the settings. The settings that can be altered are:

  • Next pattern - Self explanatory.
  • Auto-change pattern - Will cycle through the patterns every so many seconds, defined by...
  • Seconds to show each pattern on auto - Values between 1 and 65535 seconds accepted
  • Brightness - Be carerful here, at max brightness the larger panels can consume many amps. Make sure your power supply is up to the job!
  • Gain - Increases the sensitivity of the microphone to adjust for louder or quieter environoments.
  • Squelch - Increasing this value puts a limit on the quietest sounds that will be picked up. Useful for if you have some background noise to remove. The settings are saved in the EEPROM so they should remain the same across power cycles.
Comments
  • LEDMatrix.h

    LEDMatrix.h

    Hi, I like this uv meter, you did a great job and I'm try to build one 8x8 for my self but I'm having problem compiling the code, the error that comes up.. LEDMatrix.h: No such file or directory I have install all the libraries for this project but why it can't find the LEDMatix.h in the library. Do you know where I'm going wrong with this, I really would appreciate the help. Thanks

    Pepster

    opened by pepster01 4
  • Pulse without sound

    Pulse without sound

    Hi,

    I have pulses without a sound. So even with silence. I suspect that the microphone has a bug. What do you think?

    Here you can take a look: https://www.dropbox.com/s/tudjnyesxygd2lo/telegram-cloud-document-2-5282922645820541774.mp4

    opened by Sle77en 4
  • The VU effects are really great. Would love to see them added to the sound reactive fork of wled.

    The VU effects are really great. Would love to see them added to the sound reactive fork of wled.

    I'm wondering how hard it would be put your vu visualizations into the sound reactive fork. The 2d audio effects in the sound reactive forke pale in comparison to your hand coded VU code. Also great job on the f3d file with the matrix size fully configurable. I made an 8x32 sized base and everything works except for two little tabs.

    opened by tavdog 3
  • hi, i'm trying to build your project but i can't find the <driver / i2s.h> library

    hi, i'm trying to build your project but i can't find the library

    hi, i'm trying to build your project but i can't find the <driver / i2s.h> library can you help me please

    Originally posted by @PaoloBassan in https://github.com/s-marley/ESP32-INMP441-Matrix-VU/issues/1#issuecomment-779302357

    opened by PaoloBassan 3
  • Glitchy led on 16x16

    Glitchy led on 16x16

    I got my 16x16 together and it was behaving very strangely. very glitchy and unreadable during the ip address and very glitchy during the VU. I tracked it down a missing delay line after FastLED.show();. All of the ledmatrix examples have this and when I add delay(1); after all FastLED.show() lines the issue is fixed. will create a pull request.

    opened by tavdog 2
  • Change intensivity of low frequences

    Change intensivity of low frequences

    Hey, i have another question :)

    Is it possible to reduce the intensivity of the first 5 frequency blocks of the 16x16 matrix? fftCalc[0] = (fftAdd(3,4)) /2; // 60 - 100 fftCalc[1] = (fftAdd(4,5)) /2; // 80 - 120 fftCalc[2] = (fftAdd(5,7)) /3; // 100 - 160 fftCalc[3] = (fftAdd(7,9)) /3; // 140 - 200 fftCalc[4] = (fftAdd(9,12)) /4; // 180 - 260

    Because if you have bass-heavy music it will dominate the rest of the screen.

    If you can help me, i will buy you a coffee :D

    Best Regards!

    opened by Sle77en 2
  • Esp smartconfig wifi provision

    Esp smartconfig wifi provision

    I added the ability to use the ESP Touch Smartconfig App for wifi provisioning. This method of connection also significantly speeds up subsequent hardcoded wifi boot times since it attempts to reconnect to any previously connected AP's stored in the esp own wifi credential memory. The first boot does take about 30 seconds longer due to the smartconfig attempt followed by the hard code connection attempts. Later feature in this this vein might be more display feedback during smartconfig process.

    opened by tavdog 1
  • Brightness Controll

    Brightness Controll

    Hi,

    If you change "Seconds to show each pattern on auto" and press enter, the brightness will change too. In the code I coudnt find any relation between those two. Maybe you can find something.

    Thomie

    opened by Th0mie 0
  • add esp smartconfig

    add esp smartconfig

    I added the ability to use the ESP Touch Smartconfig App for wifi provisioning. This method of connection also significantly speeds up subsequent hardcoded wifi boot times since it attempts to reconnect to any previously connected AP's stored in the esp own wifi credential memory. The first boot does take about 30 seconds longer due to the smartconfig attempt followed by the hard code connection attempts. Later feature in this this vein might be more display feedback during smartconfig process.

    opened by tavdog 0
Owner
null
New version of the well known ESP32 Radio. Now optional I2S output!

ESP32Radio-V2 New version of the well known ESP32 Radio. Now optional I2S output! Compile time configuration in config.h. Do not forget to upload the

Ed Smallenburg 47 Sep 19, 2022
(R) Efficient methods and operators for the sparse matrix classes in 'Matrix' (esp. CSR format or "RsparseMatrix")

MatrixExtra MatrixExtra is an R package which extends the sparse matrix and sparse vector types in the Matrix package, particularly the CSR or Rsparse

null 15 Aug 29, 2022
matrix-effect This is a dumb matrix effect type thing

matrix-effect This is a dumb matrix effect type thing. It's only like one source file which should compile... Define __POSIX or __WIN though, for posi

null 42 Sep 23, 2022
An FPGA accelerator for general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM).

Sextans Sextans is an accelerator for general-purpose Sparse-Matrix Dense-Matrix Multiplication (SpMM). One exciting feature is that we only need to p

linghao.song 25 Sep 24, 2022
very simple matrix library, int addition to a recreation of DCM attitude estimation in the form of matrix of C.

matrix very simple matrix library, int addition to a recreation of DCM attitude estimation in the form of matrix of C. the lib include matrix inversio

null 4 Mar 21, 2022
Teensy 4 I2S Audio Library

Teensy 4 I2S Library This is a no-nonsense I2S library for Teensy 4 and 4.1. It was derived from the I2S code in Paul Stoffregen's Teensy Audio Librar

Valdemar Erlingsson 8 Sep 26, 2022
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

null 5 Feb 4, 2022
Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. 🎤

pico-microphone Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. ?? Hardware RP2040 board Raspberry Pi Pico Microp

Sandeep Mistry 111 Oct 1, 2022
RGB Matrix Audio Visualiser for ESP32

AuroraDrop v0.0.3 RGB Matrix Audio Visualiser for ESP32 Based on the Auroa Demo by Jason Coon, and using the ESP32-HUB75-MatrixPanel-I2S-DMA library b

null 18 Sep 14, 2022
An experiment of running a lot of wasm apps on esp32 M5 atom matrix board

Wasms This is a POC project to run many wasm apps on a single esp32 board (in my case, M5 Atom Matrix, with a nice neopixel 5x5 display matrix). All I

Dmitry Kabak 16 Sep 21, 2022
WIP: ESP32 powered robot dog, quadruped robot. This is just code, hardware in the other repositories

Small Robot dog (quadruped) Hardware ESP32 IMU (not implemented) 12 servos TowerPro mg90d (hope it will work) Two 18650 Software Arduino IDE compatibl

Gleb Devyatkin 68 Sep 23, 2022
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

Husarnet 31 Sep 22, 2022
null 270 Sep 23, 2022
Allows for multiple SwitchBot buttons and curtains to be controlled via MQTT sent to ESP32. ESP32 will send BLE commands to switchbots and return MQTT responses to the broker. Also supports Meter/Temp Sensor

SwitchBot-MQTT-BLE-ESP32 Switchbot local control using ESP32. no switchbot hub used/required. works with any smarthub that supports MQTT https://githu

null 305 Oct 2, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

null 30 Sep 28, 2022
Simplified design of an analog keypad matrix interface and demo thereof

Analog Keypad Interface In pin-restricted microcontroller designs it is common to use analog pins and sets of resistors to encode button switch inputs

null 14 Feb 6, 2022
Neo - Simulates the digital rain from "The Matrix" (cmatrix clone with 32-bit color and Unicode support)

neo WARNING: neo may cause discomfort and seizures in people with photosensitive epilepsy. User discretion is advised. neo recreates the digital rain

Stew Reive 426 Sep 27, 2022
A test using a TTGO module (ESP32 + screen) which renders a 3d scene using pingo library

A simple 3D renderer tested and developed for the TTGO T-Display ESP32 board. The 3d renderer is: https://github.com/fededevi/pingo The 3D renderer is

fedevi 9 Aug 17, 2022
Send messages to a LED Matrix display through Telegram. Inspired by a tweet from Smarter Every Day

Send messages to a LED Matrix display through Telegram. Inspired by a tweet from Smarter Every Day

Brian Lough 22 Jun 13, 2022