I need to create a sound level meter for ambients with 4 MEMS digital microphone, I2S protocol. Also need to show those infos in a 7" LCD display and save those info to a file on the sd card.
The hardware connection and communication between the Raspi Pi to communicate with the ICS43434 I2S Digital MEMS Microphone is done, the mic outputs 2 words of 32 bits each, for right and left channels, from those 32 bits, 24 bits are used for signal data as you can see on the images.
The code has to be well commented and a simple tutorial on how to use/implement the code /libraries should be created.
The main goal is to get the data from each microphone and transform this digital data to decibel (dB) with A-Weighting scale, and also make a Fast Fourier Transform (FFT) to display the frequency domain and save a string with (Hour, DeviceNumber, ...dB level) in a .csv file, show these information and the value in decibel dB on a 7" HDMI touch screen (already connected),
A second goal would be to provide this dB and FFT information to a webserver database which could be accessed online at any moment (maybe MQTT protocol or any other).
So mainly you have to know about Python, Raspberry Pi, ARM, I2S protocol, Pointers, DMA, dynamic and static memory. The second goal we can discuss more further.
For this first part I need a clean firmware. The firmware should be full accesible as well as the libraries, so later on would be easy to add extra functionality. It would take samples from MEMS microphones, do the FFT with embedded DSP core, apply A-Weighting, calculate dB, display it with one GUI, and log data to csv file on SD card.
The Image shows the I2S communication on a Oscilloscope