Comments (1)
You cannot use the PlutoSDR for capturing DJI DroneID signals as the PlutoSDR is not able to capture signals over about ~ 4 MSPS (in this case equivalent to ~ 4 MHz of spectrum). The only way that the PlutoSDR could demodulate these signals is if the bursts were detected and captured in the FPGA and then sent to the ARM and then over USB to your desktop/laptop. If someone wanted to it wouldn't be horrifically difficult.
Warning: Lots of rambling below. Many thoughts came to mind that I wanted to put out there for others to possibly polish and implement :)
In fact, here's a rough idea of what would be entailed with an FPGA detector that doesn't demodulate:
- Instantiate a FIR filter with coefficients that are the conjugate of the first ZC sequence (this is a constant value, so nothing too tricky here)
- The next part has two options: normalized or not
- If normalized (which is the better option) then the normalization (power estimation mainly) functionality of [1] needs to be replicated in hardware which isn't terrible
- Normalization allows a threshold that's between 0 and 1 which is agnostic to the amount of power present in the signal
- If not normalized then an absolute threshold needs to be determined which will likely false trigger a fair bit and also miss lower power bursts, but it should work and is a lot easier
- If normalized (which is the better option) then the normalization (power estimation mainly) functionality of [1] needs to be replicated in hardware which isn't terrible
- Use the filter and possibly normalization logic to find the start of the first ZC sequence and write a state machine to count until all samples in the burst have been received (this is a constant value) and write this out over DMA to the ARM cores
- Both the normalized and non-normalized would require a separate buffer to hold onto the time domain samples while the FFT filter is running. The output of the FFT filter would just tell you when to look back by N samples into the past since the FFT takes a long time to process
- Once the samples are sent over DMA, the ARM can do demodulation, or the data can be sent over USB to some other x86 system to demod via MATLAB (data rate would be low enough for this to be possible)
There will need to be a software component to this the FPGA portion is writing data out to DMA. There are examples on Xilinx's website/wiki about how to accomplish this and some examples that should work.
The hardest part of this IMO will be integrating into PlutoSDR block design in Vivado and writing the software to pull data from DMA.
The correlation filter might be a bit large for the PlutoSDR's FPGA, but switching off the dual channel and TDD logic in the AD9361 block will save a lot of resources. The correlation will have to be done with an FFT since the number of DSP48's is very limited in the 7010 (no way you're doing a time domain systolic FIR filter with 1024 taps on the Zynq-7010 without time sharing multipliers which gets really complicated).
[1] https://github.com/proto17/dji_droneid/blob/main/matlab/updated_scripts/normalized_xcorr_fast.m
from dji_droneid.
Related Issues (20)
- AttributeError: module 'gnuradio.fosphor' has no attribute 'glfw_sink_c' HOT 2
- I don't understand what is mean this results HOT 6
- Some problem HOT 1
- Zc sequence identify HOT 2
- parameters of descrambler HOT 2
- Got some questions HOT 1
- Final step error: NO DRONE ID HOT 27
- Detect DroneID burst without "gr-fosphor" HOT 4
- the problem of frequency_offset HOT 2
- This DJI Drone ID Not Working for Phantom 4 Pro v2.0 Data HOT 2
- different sequence HOT 1
- Mavic 3 DroneID descrambling HOT 2
- Low Correlation Scores HOT 4
- Proposal for normalized cross correlation
- Signal Detection HOT 3
- baudline not available HOT 1
- gnuradio import droneid HOT 3
- Ocusync 4 cannot be resolved HOT 4
- ocysync 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dji_droneid.