Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gemesa/stm32-rf-scanner

STM32 and nRF24L01+ based 2.4GHz RF scanner
https://github.com/gemesa/stm32-rf-scanner

blue-pill c eclipse hal hardware-abstraction-layer nrf24 nrf24l01plus stm32 stm32cubemx stm32f1 stm32f103 stm32f103c8t6 stm32hal

Last synced: 3 days ago
JSON representation

STM32 and nRF24L01+ based 2.4GHz RF scanner

Awesome Lists containing this project

README

        

# 2.4GHz RF scanner

This project contains the source code of an [nRF24L01+](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) and [Blue Pill (STM32F103C8T6)](https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill.html) based RF scanner. The Blue Pill scans frequencies from 2.400GHz to 2.525GHz (1MHz resolution) with nRF24L01+ and plots the activity on each frequency through UART.

This is what the UART output looks like (explained below):

|------------------------------------------------------------------------------------------------------|-----|-----|
|Frequency layout [GHz] |Ref. |Max. |
|2.4 2.41 2.42 2.43 2.44 2.45 2.46 2.47 2.48 2.49..2.52 |RPD |RPD |
|| | | | | | | | | | | |[pcs]|[pcs]|
|------------------------------------------------------------------------------------------------------|-----|-----|
| :-. :: ::..%%@%@#%@@@%%%%#@@@ .-: :: | 10 | 180 |
|. .... .. . @@#%@@#%@@@%%%%#@@ :: . | 10 | 180 |
| .... ... .%@#%%%%%%%####%##% .. ..:. | 16 | 180 |
| .. ...:##***###%@%%@@@%#@ .::: | 11 | 180 |
| .... ...:... %%%%@%%%%%#***%#%% | 16 | 180 |
|:. . : .:. ..-###%%@###%##%##=: ...:. : | 11 | 180 |
|.. .. .:....: %%%%%%%%%%%@@%%# ::... | 12 | 180 |
|.... ... .. ..@%%@@%%%@%%%%%%% .. .. | 18 | 180 |
| . .::. @%#%%%#########* . | 11 | 180 |
|.. .. ::%%%%@%%%%@%%@@@% .:..: | 12 | 180 |
|..:::: .. . @#**#%***##*#%## .. .-:. | 10 | 180 |
| ... .. ... @%%%%@%%@%%##%%* .. ... . | 13 | 180 |
| .. . .. :*%*%%%%%@%%%%@@% ....... .. | 14 | 180 |
|.. .... .-:::--::------:: .+@@@* ....... | 57 | 180 |
|... .. ....::.:............ -#@@@#. . .. | 72 | 180 |
| .. . .. .. ................ :*@@@# ... .. | 73 | 180 |
| .. ....:............... -+@@@# .. | 73 | 180 |
| ...... ... .................. .##@@%# ..... .. | 74 | 180 |
| .... .......:............... #@@%%= .. .. | 75 | 180 |
|. ... . .... :::::::::::::::: *#@@%* | 38 | 180 |
|:.... .. ..@#**##**%**+**** ... ... | 14 | 180 |
|... . ... %**%%%%@%%##%#*# .. .. | 16 | 180 |
| . .. ....##*#%###*%%#%@## .....: | 14 | 180 |

Unknown sig. Unknown sig. Wi-Fi (WLAN 6) Microwave oven Unknown sig.

The axes:

f[GHz]
------------->
|
t |
[s] |
|
V

The time difference between each line is ~4s. The greyscale characters represent the signal strengths relative to each other. The signal classification has been added manually.

The code of this project has been implemented using

- [Eclipse](https://www.eclipse.org/),
- [STM32Fx project templates](https://eclipse-embed-cdt.github.io/templates/stm32f/),
- [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html),
- [STM32 HAL](https://www.st.com/content/ccc/resource/technical/document/user_manual/72/52/cc/53/05/e3/4c/98/DM00154093.pdf/files/DM00154093.pdf/jcr:content/translations/en.DM00154093.pdf).

A detailed description can be found in [docs/project_description.md](docs/project_description.md).

A similar, Arduino libraries based design by **cpixip** can be found at [forum.arduino.cc](https://forum.arduino.cc/index.php?topic=54795.0).

## Deployment

**Important: the project has been developed and tested on Windows only.**

Quick deployment process:
- Build the SW from command line with `make` and `arm-none-eabi-gcc`:

```
cd \stm32-rf-scanner\src\Debug
make all
```

- Connect the configured pins (SWD, SPI and UART). Refer to [docs/project_description.md#pin-description](docs/project_description.md#pin-description).
- Download the binary to the Blue Pill with [STM32CubeProgrammer](https://www.st.com/en/development-tools/stm32cubeprog.html).
- Run the SW and plot the UART output using an USB-UART adapter and a serial port terminal.

Note: the SW can be built from Eclipse also. `.project` is stored in [src](src).

## Results

Measurement results are stored in the [meas](meas) folder.

## License

This project contains files from multiple sources with different licenses. The relevant license is added to every source file.

The configuration files generated by Eclipse using the ARM Cortex-M C/C++ Project template are licensed (depending on the file) by:
- Arm Limited under Apache license 2.0 (Copyright (c) 2009-2018 Arm Limited. All rights reserved.)
- Liviu Ionescu under MIT license (Copyright (c) 2014 Liviu Ionescu)

The configuration files generated by STM32CubeMX are licensed by:
- ST under BSD 3-Clause license (Copyright (c) 2020 STMicroelectronics. All rights reserved.)

The files implementing the logic of the scanner functionality are licensed by:
- András Gémes under GNU GPLv3 license (Copyright (c) 2024 András Gémes. All rights reserved.)