Build Your Own Phased Array Beamformer
In this video I'll walk you through a complete example of how to build your own low cost two channel digital beamformer. At the end, we'll use it to track a 2.3 GHz RF signal and display its direction of arrival.
You can follow my blog series on this topic here:
ez.analog.com/tags/DIYRadio
The python files used in this video are found here:
github.com/jonkraft/Pluto_Bea...
To build this yourself, you'll need:
ADALM-PLUTO, rev C: www.digikey.com/short/8q0t4hf2
Crystek CLPFL-2400 Filters: www.digikey.com/short/ht1q39zp
Antennas: a.co/d/hMSP3xR
Stand: a.co/d/6VuwgZ8
SMA cables
Technical Support Questions on any product from Analog Devices should go here:
ez.analog.com/adieducation/un...
Other links used in this video:
Pluto Dual Channel Modifications: • Enable Dual Receive an...
Phased Array Beamforming: Understanding and Prototyping: • Phased Array Beamformi...
Rapid Phased Array prototyping with Analog Devices and X-Microwave: • Rapid Phased Array pro...
Chapters:
0:00 Introduction
0:51 Agenda
1:56 Disclaimer!
2:58 Brief Overview of Beamforming Concept
4:11 Analog vs Digital Beamforming
6:21 Build our Beamformer
12:51 Calculate Expected Results
15:27 Program Beamformer in Python
19:46 FFT Plots of the Phase Shifted Signal
22:49 Array Factor Plots
26:48 Improve Setup
29:07 Direction of Arrival Compass
30:03 What's Next?
This is really well done. It's rare to find RF / SDR videos that are so clearly explained. Thank you and keep it up!
Thanks Jim!
Indeed! this video is amazing.
Your efforts are amaizing. You've simplified the concept. You use python! and your script is open. You use cheap (accessible) hardware. Bless you man. A thousand times.
Ha, thanks! It is fun to see it working. And then the math behind it makes more sense too.
This is why KZhead is allowed to exist
Thanks, glad you found the video!
What a masterpiece! You are the neighbour I desired for a life, to spend an hour after dinner, with an italian wine bottle and electronics projects beside! Thank you for the time spent to illustrate your project.
Thank you Roberto! That's very kind!
god bless you man
this is a nice example of methodologically how to go about solving this sort of engineering problem taking a very rough solution and step by step refining and extending it to meet required performance specs
This is AWESOME! Ive been interested in beamforming/AoA since I first heard of it a few years ago, and had a few unanswered questions floating around in my head that you finally addressed. Thank you for taking the time to make this video!
I'm very impressed with your demo and speaking style. You reduced a ton of concepts down to a wonderful demo. Kudo's! I worked on a plane in the 80's that used these concepts to always keep the antennas pointed at the horizon. Back then, they used "trombone line stretchers" and stepper motors. Like the stone age...
Thank you for transmitting your expert level knowledge to the people in a high effort way. This is a crucial subject so I pay close attention.
Hey Jon, 3 yrs ago, I used an Arduino micro to operate dozens of Mouser F2910 RF switches to achieve cumulative delays for elements (5.8g patches) in a 4-element array and the analog beam-forming worked well for drone FPV video receiver. However, digital beam-forming was out of reach for me due to its high cost and complexity. THANK U SO MUCH for sharing this fairly inexpensive setup that accomplishes digital beam forming in such a simple yet effective fashion. You have a new subscriber!
Thanks Terence, very interesting! It is amazing how in just a few years so many more technologies have become accessible to us.
This is the freaking masterpiece and invaluable piece of knowledge for my pet project. Thank you very much for your work, Mr Jon!
That was outstanding! I really love your content and just ordered my RevC Pluto. Keep up the great work!
Awesome! Thank you!
Awesome video! I would really love to see further progress in this area . And also how this fits with phased arrays tech.
As others have mentioned, very good video, great audio and screen captures not to mention the information and code provided.
Wow, this is an awesome video! The end result works surprisingly well, given that it's just 2 antennas and everything is happening indoors, where indeed you may have a ton of interference. The frequencies seem to be close to 2.4GHz range - which of course is where some WiFi and all Bluetooth are (AFAIK), so I bet all the home appliances that use these are going to interfere.
Hey man, great video on the basic concepts of beamforming! The demo looks cool too! Might want to try it out someday
Nothing short of beautiful. Thanks for the video.
Thank you so much for this video! It was very clear and easy to understand. If you have more videos about the beamformer equation, it would be amazing.
Thank you, I enjoyed your video. Recently saw that Ball Aerospace is making progress with their phased aray antenna. Haven't seen smaller antenna that do the same thing though. Multiple apratures that can TX and RX.
Excellent! Thanks. Socked away for future re review.
KZhead has reached peak value! Fantastic video. Much appreciated.
I need this tech to take out the Skynet drone army lol
Superb vid Jon golddust ! I've been scouring utube for this sort of info for ages and I've found it. very interested with the spacex starship program and these guys are working with this, hence my interest
Thank you so much for making this video. A work colleague talked about the Pluto, but this is my first time seeing it set up for use, I can see it's set up with great tools. We have a few of the RTL SDRs around, and we have much less control over their use! No tx for one thing! We can learn much more with the Pluto.
Yes, especially now that Pluto exposes the 2nd Rx and 2nd Tx channel, there's just a ton that you can do with it.
Wow! Very impressive! Thank you very much for sharing your rf passion and knowledge here. Microwave Radar tech and RF are the few technologies that's still a science and art right !! Great video ! J
super interesting Jon... thanks for the demo
Jon, your videos are incredible. The team at ADI is just a pleasure to work with and in this case watch. A couple of comments that are worth noting: 1. When you claim that the original Pluto antennas perform poorly due to multipath, that's half the truth. The other part is that those lack an omindirectonal pattern as you tend to imply. All the three antennas that you are using have directivity. Problem is that G0d knows its pattern. A vertical monopole has an omni pattern if and only if it has an infinite ground plane below it. As soon as you remove the ground plane those antennas have an unpredictable gain pattern. Which means that you may very will be transmitting your signal with higher gain to the sides or back, which makes the multipath issue more obvious. The same goes for the receiving antennas. 2. When you switched to the directional antennas you placed the metallic mounting clips next to one of the antenna elements. Oh that hurts! I've been designing radio direction finders using ADI's products for long. Your stack is a pleasure to work with!
This is fantastic! I wish I knew about Adalm-Pluto 3 years ago when I started to build my dual output phased array. It would have saved me a lot of time and money. Perhaps I will use it in my next upgrade. After looking at the data sheets, it's a great value compared to the AD9910 I'm currently using. Yes, do more videos! Thank you.
Agreed! It is amazing how much more accessible these things are in just the past few years. Given your AD9910 digital beamforming experience, any suggestions for what a good video or project would be for this Pluto setup?
@@jonkraft That's a great question. Let me think about it for a bit. I just finished building my receiver using HMCAD1511. Now I'm working on my control software for the hardware. I consider my use case for this build off label as I won't be using it for a radar or communication. I'm sure I'll run into some challenges that will make for a good video.
Usually dipole antennas has a tight nul, and you usually direct the station by searching the nul. Great interesting wideo. keep up the good work 👍 the oh2fhj
Beyond me at present but very interesting. Heading into retirement now so should give me something to think about. I am now subscribed I'll be watching. Thank you.
Excellent demonstration !
Great and educational video! Thank you for sharing. :)
I'm a Ham Radio Operaters here in the US, I Operate on the 2 meters to 5 GHz Band, I use a Adalm Pluto SDR and a SDR Play RSP DX and use SDR Angel Software for DATV!
Very nice! I just got my ham radio license, but I haven’t done anything with it yet. What’s a cool first project I could do with Pluto?
Congrats, first on a great video, and second on getting your ham license. Given your background and knowledge, be sure to move up to general then extra class if you haven't already. There are any number of "microwave clubs". Extra provides all band, all mode operation, and some uW clubs require an extra class to join. They have homebrew comm contests on 10GHz and above.
Thank you for sharing. Great channel.
Im so glad you have made this video! Thank You!
Glad it was helpful!
That was the coolest thing I've ever seen! AND I could do it thanks to you! Bless you for this! Thank you!
I'd love if others gave it a try too--and let me know if you do! And then share suggestions and try out new algorithms with it, etc. And all learn together--that is my hope!
@Jon Kraft I will and "I will!" Can you please make a video next of how to make an affordable phased array radar? That would get a billion views! Maybe not a billion, just the most important (and intelligent) viewers on KZhead! :-)
Seriously good channel!! Subscribed!
Excellent video 👍 Thank you 🙂
Kudos amigo! Well done video.
Thanks Matt!
Great Video Jon!
Thanks, nice work!
Amazing presentation, you have to consider the fact that you need to be at far distance from receiver, the reason for not behaving the way it should at some angles were that you ingored that fact, far distance could 1 meter at that frequency
I think you mean the far field. And for such a small array (2 elements) the far field at this freq is much less than a meter. So its not a problem.
Excellent dude !
Great job!
Great channel. Subscribed. Thanks.
Love it !!! Please more video
Loved this! Would love to see you dive into transmit beams
That's a good suggestion! Transmit is the same, just not as much fun to "see". But it would be good to show some transmit stuff.
Thank you sir
Great Job!! thanks for share!!
Thanks Jon, I'm pen tester and radio amateur. This was a great explanation !
Very cool. thank you.
It is really very good job you've made. Thank you very much Jon. What about the idea of creating Pluto based communication system for transmitting voice or some video? I mean if Pluto is in standalone mode, without using third-party softs like MatLab or something.
Thanks Ashot! For using open source software, I think GNURadio is probably the best way to do this. Matlab would work well, though not free!, and there are some examples here: wiki.analog.com/resources/eval/user-guides/pzsdr/carriers/portable-radio-reference-design/features?s[]=adrv&s[]=packrf
BIG, BIG like, bro!
The sharp null is sometimes the desired feature of beamforming.
Indeed! Check out the monopulse tracking video on my channel, and we talk a bit about that. kzhead.info/sun/i7Rxf7uFe3qcgok/bejne.html
Great thanks so much
Hi, I just discovered you channel, and it seems really interesting. Small recommandation, when linking to a video in your slides, add the link in the description, it's a bit painful to type it manually, especially with some upper case i and lower case L looking so much alike (I'm referring to the link to the Pluto modding video)
Agreed! I did try to list all the videos in the description already. Check out the one labeled "Pluto Dual Channel Modifications". Is this the one you're referring to? Or did I miss one?
@@jonkraft oh, my bad. I missed the links. For some reason KZhead don't put them in blue like it used to, got me confused.
Monopulse please!!! I wanted to do monopulse myself with a bunch of antennas and mixers before the sdr, but maybe doing it in the digital domain would be so much easier.
Yes, for sure we have to do monopulse! That’ll be fun. I have it working now, but I’m trying out a couple other ways to do the math. And I agree with you that digital beamforming would make it easier-you’d have a lot more flexibility to add and subtract different elements.
I just posted the Monopulse tracker video. Take a look and let me know what you think. Did this cover the things you were interested in? Or is there something more we could try out with this 2 channel beamformer?
@@jonkraft wow thanks, watching now
I work at my project ı need self tracking radar system and its help a lot thanks sir
Great video. I’m just barely learning all this. My question, In the Python code, Is the time interval of a given degree of phase represented as being inversely proportional to the the frequency? I’m probably not seeing it because it’s built in somewhere. Anyway, thanks for the video. I look forward to watching others you’ve produced. Thanks for your time.
If I am understanding your question, then the time interval is set by the sample rate -- so 2 MHz in this case. When we run an FFT on the data we collect, that sample rate will set which freq bins we see. But since our signal is very narrow band (100kHz complex sin wave), it doesn't have much impact for us. I'm going to do a video on radar with Pluto, and then sample rate is a much bigger deal--it sets the freq chirp we can generate and how well we can see the received beat frequency.
Great video, so thanks very much. I have a Pluto and want to experiment with amateur radio direction finding (aka Fox Hunting) on 144MHz NBFM. In the past I used an HB9CV and handheld Rx but you see reflections from trees and buildings so it's not easy! BTW can you point me to hints and tips on getting audio output from NBFM using Python?
Thanks! I think GNU radio would be your best bet for NBFM. It works very well with Pluto and has python modules you can add in for whatever programming you need. Check out: www.gnuradio.org/
A good plan! Thanks@@jonkraft
Thank you for this very instructive video. What would happen if the low pass filters were not used?
That's a good question, and I should have done some comparisons in the video of with and without those filters. There's two things to consider: (1) With no filter on transmit, we'll be throwing the harmonic frequencies into the air at fairly strong power levels. So we'd be polluting or interfering with other bands. So definitely want a low pass filter on the transmitter. (2) The other main issue is the interference to the array. So without the low pass filters, I'd be transmitting a bunch of harmonics, and my receiver can pick up all those harmonics. Each of frequencies, for my antenna spacing, is going to constructively/destructively sum in my phased array. And so it'll be chaotic -- it'll look like what we saw at 26:13. So I did test this out just now. With just a transmit filter (no receive filter), it seemed to work ok. But without any filters, it did indeed look like the 26:13 video. Maybe not quite as bad, but certainly not as clean and stable as with the low pass filters. So for both those reasons, at the very least, use a low pass filter on the transmitter. Thanks for the good question!
@@jonkraft If I'm reading it right the low pass filters on the Rx antennas are there to increase performance of the attenuation of the Tx harmonics. Is that right?
@@kingjamez80 Yes, that's the primary purpose. But it's always a good idea to filter your Rx so that other signals don't also mix down, or overload the ADC. But for this very controlled lab type experiment, you would be fine to omit the Rx filters and just use the one Tx filter.
I am assuming this sort of array could be used to locate a transmitter's physical location. Maybe not this particular setup, but in general. If I am i incorrect, I apologize, but I am curious if they can do that, would it be likley to cause any detectable interference on the target's end? I am trying to understand so I can quench a curiosity that poped up while I was thinking about something. Unfortunately I do not have the time or resources available to dedicate to this particular thought to understand 100% right now, but I figired would at least try, who knows it may inspire me to redirect some time etc to learning more. Anyway thanks!
hi i have a question, if i what to build a phase array antena, using Helical antenna (axial mode) elements. what can i use in terms of radio reciver since i whant to be able to determine what individual array recived the signal, to determine directions? (imagine a dome shape array)
You could do that with two elements, like in the example above. But more elements will give you a sharper SNR to pinpoint the signal. I'd try it with 2 antenna elements first--just like in this video. And then try the monopulse tracking video.
How about putting a Kalman filter on the output data ?... Or have you already considered that?
I think the wireless headset work on 2.4GHz, so it might interfere with your test setup. Still very good job and insightful video.
How can i make a portable ultrasound imaging that connect to microcontroller to control prosthetic bionic hand? Thank you
Ive always wanrwd to undetstand monopulse processesing!
Good job! Do you experiment with radial antenna array?
That’s an interesting idea. What do you see as the possible benefits there? And any links to antennas I could get?
thanks Jon. great work, are there another method to do calibration ?
Thanks! And yes, there are lots of methods. What I present is just the very simplest way. There are more clever and complex methods, but I'm not an expert in them. This might be an interesting article for you: www.analog.com/en/technical-articles/hybrid-beamforming-transmit-calibration-with-sfdr-optimization.html
Instead of transmitter, can it detect the objects?
Thanks a lot.And i got some questions. What's meaning of the data[0](Rx_0)? Is that those two variable(RX_0 and RX_1 which also can say the data[0] and data[1]) meaning the received data from two antennas respectively?
Right. When you get one buffer of data from Pluto (i.e. 'data'), it will contain an array of complex data samples for RX0 and an array of complex data samples for RX1. So we just separate out those two arrays to make the rest of the code more readable.
@@jonkraft Thanks for your reply. Another question is caculating the steer_angle by the phase difference, which I think the operation would be minus, but in your code "delayed_sum = dbfs(Rx_0 + delayed_Rx_1)". It looks like using the operation of plus. That confuses me.
@@doonabae988 It's not using the phase difference. Rx_0 + delayed_Rx_1 is just summing the complex IQ samples of the two channels together. Then the dbfs function converts that summed data into an FFT and gives the amplitude response scaled in dBFS. I think it'll make more sense if you try it out yourself. Give it a try!
@@jonkraft Thanks very much. I'll try it. But our platform may be different from yours. It's gnuradio and X310/N321. In your video I see Dr Travis Collins, he display the tracking demo by gnuradio. Could you please provide some materials about His tracking demo. Much appreciated.
Is there any way to sort of combine two PLUTOs and have 4 receiver channels for a 4x1 array? I guess there needs to be some synchronization of the clocks and calibrating out the phase difference but what happens to the code?
That's a great question! I think the answer is no. You can pipe the CLKOUT from one Pluto (revC) to the CLKIN of another Pluto. But their phase relationship will change every time you power up. So you'd have to cal them at powerup. You may also have to cal them during streaming--I'm not sure.
@@jonkraft Thank you for your answer! As I understood, the only (cheap) way to have 4x1 array with Pluto is to add 2 phase shifters? (If I need not 10Ghz and cannot use ADAR1000)
@@dmitrytok5646 Yes, you could add external phase shifters to each antenna element, and then use and RF combiner and send to Pluto.
What about a beam to divert another beam? Can you get an understanding how to block a beam(defense applications)? Thank you!
Well, not divert the transmitted interferer--but we could alter the beamweights of the receiver so that a null is placed where that jammer/interferer is coming from. It's a little hard to do with only 2 elements, but Dr. Mike Picciolo has been helping me with a demo of doing this with the 2 element Pluto setup. And it does work! So hopefully we can do a video of that soon. And Analog Devices also just released an 8 element beamformer kit: www.analog.com/cn0566, the "Phaser"! And I hope to do a null steering demo with that to illustrate a similar goal but accomplished with analog beam steering.
@@jonkraft Amazing! so exciting!
Will this work if the transmitting antenna is directional?
Great question! When I switched to the directional Yagi's for Receive, I saw a big reduction in multipath interference. And so you were probably wondering if doing that for transmit would also have that same benefit. I was wondering that too! So I've tried transmit with a Yagi and a patch antenna. It works about the same as the monopole stub. I didn't see a noticeable improvement in any of the Python I ran. But it was also no worse!
is it possible to make a DIY radar that can do xy & distance at ~500 feet ?
Yes, but to do both x and y (i.e. azimuth and elevation), you'll need at least 4 elements. For this, I'd recommend the 8 element "Phaser" (www.analog.com/cn0566). You could connect your own receive antenna and configure it as a 2x4 array. Phaser can also generate much higher bandwidth chirps than Pluto can do. Which will greatly help in resolution.
Note that the equation for \theta_B around time index 15 minutes is in radians.
Good clarification! I'll add a note to the video. Thanks!
B-1 Electronic Warfare in a nutshell
Will it work on 900 MGz on 0,5 to 2km ranges?
You could 900MHz. I don't know about the range though. Give a try and let me how far it works!
What the effective detection distance in such radar based on pluto? or like EVAL-CN0566-RPIZ, i'm Ukrainian developer, we looking something like this for make small AWACS like drones for detect iran-drones SHAHED 136
Great work , i do it but i get +-35 degree maximum angle,why .
??? I don't understand your question. Could you share a video of your setup and the measurement you're doing?
Fascinating witchcraft.
Ha, indeed! It really is shocking that this stuff works. I mean it's only 10's of picoseconds (a millionth of a millionth of a second!) of shift, and yet it has a huge impact. Hats off to the very smart people who figured it out many decades ago!
Compartilhem ... gratidão ... Ex Conselheiro local de Saúde, não medico ...
Can you show us how to use it as a synthetic aperture?
Yes, that is a great idea and something I want to learn. Hopefully that will be a project this summer. In the meantime, the MIT Cantenna lab project could be very interesting to you: ocw.mit.edu/courses/res-ll-003-build-a-small-radar-system-capable-of-sensing-range-doppler-and-synthetic-aperture-radar-imaging-january-iap-2011/pages/projects/
@@jonkraft wow this is indeed a very interesting project.
Subbed. But be warned, I have no clue what you are talking about. But I love to learn new subject matter.
hey the algorythm brought me here. what is the use case for this? or is it just for fun?
Ha, fair enough! Yeah, I'm sorry youtube led you to such an obscure topic! These phased array beamformers are used to point an antenna wherever you want -- but to do so without physically moving the antenna. So its all steered electronically. Probably most famously this concept is used in the "Dishy McFlatface" Starlink antenna: kzhead.info/sun/m5qGlrFwfHihep8/bejne.html. So my video is just a way that people can experiment with this topic in a simple and inexpensive way. Thanks for watching and commenting!
So for this to work, both of the receiving channels have to be phase-locked and sample at the same time.
Yes, that's right. That feature is built into basically all of Analog Device's multi channel high speed data converters and transceivers.
Great video! But those are not Yagi antennas, they are log periodic antennas.
Thanks, and great catch! I'll update the video. I found this helpful explanation of the two types: kzhead.info/sun/qpuYhsV9hKRogqs/bejne.html
But don’t you need to sample the ADC at least 2.5x the DAC frequency, say at 300kHz?
The sample rate I use is 2 MHz, and the tone is at 200kHz -- so that's a 10:1 ratio, which is plenty. Did that clarify for you?
I'm pretty sure phase array is the early stages of a "force field", except by then we would be abandoning classical electro magnetism.
Instrument landing system?
One horizontal lobe, one vertical and four frequencies if I remember it correctly… Standard approach 3 degrees, steep approach 6.5 ish glide slope that would be places life Lugano and St Bart if I remember it correctly. Just look at an approach plate for the airfield.
i wanna see you make a metamaterial array antenna, ala starlink
That would be interesting! Do you have any advice on how to start a project like that?
this is how god looks like
Build an aviation radar altimeter
Nice yob! But step by step?
To do this video, step by step, you'll want to start here first: kzhead.info/sun/o8xpe9psipmJqIE/bejne.html Hopefully that helps you get started.
Build a radar?
Yes, we could an FMCW radar fairly easily with Pluto. And I've got that working, I just need to find the time to document and do a quick video on it. Hopefully soon!
@@jonkraft Cool.
BIY : Buy it yourself
Ha, right! Just to be clear, I'm not suggesting everyone should be making their own beamfomers to replace their Starlink dish, or wifi MIMO, etc.! These videos are directed for the people designing and researching those beamformers, so that others can buy them. But I hope it was an interesting new topic for you.
Todays Pave Paws early warning systems……..
invisibility
Why was this recommended to me? What is a beamformer? What? Who? How???
dummy ask: what's the use of this beam ?
All good questions! The idea here is to be able to point an antenna (i.e. antenna "beam") without actually mechanically moving that antenna. It's the same idea that the starlink flat panel antenna uses. More background is given here: kzhead.info/sun/Y8ynh8qMrXeKlo0/bejne.html