https://github.com/araobp/ultrasonic-communication
Ultrasonic communication by STM32L4 and MEMS microphone
https://github.com/araobp/ultrasonic-communication
arm-cortex-m4l chirp dfsdm dsp fft jupyter pdm stm32 truestudio
Last synced: about 1 month ago
JSON representation
Ultrasonic communication by STM32L4 and MEMS microphone
- Host: GitHub
- URL: https://github.com/araobp/ultrasonic-communication
- Owner: araobp
- Created: 2018-05-14T10:21:44.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-03T20:00:04.000Z (over 6 years ago)
- Last Synced: 2023-03-23T01:45:55.047Z (about 2 years ago)
- Topics: arm-cortex-m4l, chirp, dfsdm, dsp, fft, jupyter, pdm, stm32, truestudio
- Language: C
- Homepage:
- Size: 50.2 MB
- Stars: 12
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
**(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](https://www.st.com/content/st_com/en/about/events/events.html/techno-frontier-2018.html), 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-L476RG_DFSDM_PDM-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](https://docs.google.com/presentation/d/e/2PACX-1vSd3PQnKqmKbjcGNyNh_gygd175jgfzZYH5iwcEPqmmgiy7k3yYzqqHzfs7u-95jm_9hHgc0ugAvv2U/pub?start=false&loop=false&delayms=3000)
#### Platform: STM32L4 platform and FFT test code on MEMS mic
==> [Platform](./experiments/PLATFORM.md)
==> [Test code](./experiments/basic)
#### 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](./misc/Formula.ipynb)
#### 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](./receiver)
## 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](./experiments/EXPERIMENT.md)
==> [Test code](./experiments/ultracom)
#### Ultrasonic communications experiment (Chirp modulation)
==> [Experiment2](./experiments/EXPERIMENT2.md)
==> [Test code](./experiments/chirp)
#### Ultrasonic communications experiment (Chirp modulation with compression)
==> [Experiment3](./experiments/EXPERIMENT3.md)
#### Ultrasonic communications experiment (time frame synchronization)
==> [Experiment4](./experiments/EXPERIMENT4.md)