Ultrasonic communication by STM32L4 and MEMS microphone
(Nov 2, 2018) I am going to rework on this project
Learning DSP with ultrasonic communications

Background and motivation
STMicro gave me STM32L4(Arm Cortex-M4) evaluation board and a pair of MEMS microphones for free at a trade show held in Makuhari city, Chiba, Japan. Thanks a lot to STMicro!
As an IoT hobyyist, I am becoming interested in DSP with MEMS mic.
Also thanks to this: https://github.com/y2kblog/NUCLEO-L476RGDFSDMPDM-Mic.
Project goal
I am a DSP beginner, so I learn DSP by doing: realize "low-power narrow area networking" by cheap DSP and MEMS mic.
My work so far
Project documentation
==> Specification
Platform: STM32L4 platform and FFT test code on MEMS mic
==> Platform
==> Test code
Mathematical formula expressing ultrasonic wave
I tested frequency-hopping to transmit data over ultra-sonic, resulting in very bad performance at low SNR in a noisy room. So I decided to employ chirp modulation in this project.

==> Formula
Developing my original MEMS mic shield

I developed my original shield with Knowles MEMS mic:
- Knowles MEMS mic
- Character LCD
- LED (red)
- Tactile switche (reset)
Pinout of STM32L476RG

Working code
Code of the ultrasonic receiver running on STM32L476RG (Arm Cortex-M4L) and the original expansion board:
==> Code
Next challenge: I/Q modulation
I already made the code, but it did not fit into the RAM, so I will reduce the number of samples to 1024.
But the resolution of FFT w/ I/Q modulation will be still much better than the current implementation (FFT of 2048 samples w/o I/Q modulation).
Experiments I made over the past month
I have made several experiments over the past month to study how data can be transmitted over ultra-sonic wave: FSK, hopping and chirp. The conclusion is to try Chirp modulation to fight with noise.
Ultrasonic communications experiment (FSK modulation)
==> Experiment
==> Test code
Ultrasonic communications experiment (Chirp modulation)

==> Experiment2
==> Test code
Ultrasonic communications experiment (Chirp modulation with compression)
==> Experiment3
Ultrasonic communications experiment (time frame synchronization)
==> Experiment4