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.
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.
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!
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...
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
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.
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!
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!
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.
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.
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!
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.
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.
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.
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.
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
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
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
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)
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 UA-cam! :-)
So RF phase shift its ok for lower frequency antennas with a smaller array and smaller BW but for calibrating an 8x8 or 16x16 array at mmw whist steering, ya don't want to do it element by element, the calibration can be done with NF measurements on the VNA for True time delay at BB but also the antennas are omni directional in first video take so it won't work well but I love the concept!! Get some directional patches at X band or mmW and it might work, never mind the reflections then
Great to find this video, I want to build a steerable beam using four or more Yagi antennas at 144 MHz. I can turn the Az El to do so, but want to have digitally controlled beam steering using PIN diodes. Plus or minus 20 degrees from center would be enough but I would like at least 5 degree increments. Not yet sure if this is doable at my level of expertise in this which is at the novice level. I'd love my project to be capable of receive beam steering, but transmit is also desired. I might need to abandon a solid state version for simply using coaxial switches to switch in and out coaxial lines at incremental wavelengths instead.
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
Hey Jon, I love the videos and they're so insightful. So for a personal project I have been trying to use both transmit channels simultaneously to do transmit beamforming I wasnt sure what the best method is to make sure its working properly, any tips?
Yes, transmit beamforming is harder to demonstrate because you can't "see" the beam, like you can for receive. You can see a demo I did transmit beamforming here: ua-cam.com/video/V5lKMiHYyB0/v-deo.html Another way to do it is to put an RF Power detector (or several) out there and then not how the power levels change as you steer the transmit beam towards the power detector. You can see a demo we did at IMS 2019 here: ua-cam.com/video/Ufa5VBC0mQU/v-deo.htmlsi=EwVtmHVgLAeJHBmI In that demo, there are 9 power detectors (sitting on the table), each with an LED "volume" type meter connected. So you can see the signal strength as you steer the beam to each of those 9 detectors.
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?
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.
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.
Hi, I have the ADAM-pluto with 2 antennas I got with it, where can I get a third similer antenna? And what kind of SMA cables do I need to set this up, I'm very new to this and I am having a hard time finding the right components.
Great tutorial. Thanks Jon. A question about the LO. YOu mentioned the harmonics are created due to square wave LO in pluto which uses AD9363. My question is, is the same square wave LO used in AD9361? Do we need to filter when using ADRV9361 as well
Yes. For faster (and more knowledgeable!) answers you can ask the ADI experts your AD936x questions here: ez.analog.com/rf/wide-band-rf-transceivers/design-support/
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!
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.
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.
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
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?
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.
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!
I don't think it would be easy. I think it would require calibrating the phaser offset between the two Plutos after each startup. You can see an example of how it would be done here: wiki.analog.com/resources/eval/user-guides/ad-fmcomms5-ebz
Thanks Dmytro! Actually, for MUSIC, I've been working with Dr. Marc Lichtman, author of www.pysdr.org on implementing this with hardware. And I think we'll do a future video together on this topic. But right now he has some great DOA resources on his website, I would recommend checking that out.
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/
Hello sir, I'm using omni directional antennas for same setup and facing the issue of ambiguity . The phase difference at 0 and 180 degree are same so algorithm is not able to detect difference in position of transmitter. Please help
I would recommend either using directional (or back baffled) antennas. Or, if you have more antenna channels (like 5), you can do a circular array. Dr. Marc Lichtman does a great explanation of all of this on pysdr: pysdr.org/content/doa.html#degree-ambiguity
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/
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.
Hello Jon, Thanks for these great Labs on PLUTO I finally had some time to go through installation-modification and testing My setup is running with a I7 on Ubuntu 22.04 with Python 3.10 and adi.version 0.0.16 Only one issue is dealing with pyplot that does not refresh the graph I patched with these lines plt.draw() #plt.show() plt.pause(0.05) plt.clf()
Thanks Patrick! Yes that's a better, more universal, way to update those plots. I use spyder IDE a lot, and that displays plots inline. But I like your changes and I should do those when I post the code. Thanks!
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: ua-cam.com/video/h6MfM8EFkGg/v-deo.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!
@jonkraft Thank you, sir. I am trying to implement beamsteering using MVDR and MUSIC algorithm. If you have an idea on it, share some information or, if possible, make a video on it. It will be so useful to me.
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.
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.
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!
The very same here in Argentina, but I prefer a local Malbec..
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.
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...
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
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.
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.
This is the freaking masterpiece and invaluable piece of knowledge for my pet project. Thank you very much for your work, Mr Jon!
This is why UA-cam is allowed to exist
Thanks, glad you found the video!
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!
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.
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.
Awesome video! I would really love to see further progress in this area . And also how this fits with phased arrays tech.
Nothing short of beautiful. Thanks for the video.
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!
UA-cam has reached peak value! Fantastic video. Much appreciated.
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.
That was outstanding! I really love your content and just ordered my RevC Pluto. Keep up the great work!
Awesome! Thank you!
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.
As others have mentioned, very good video, great audio and screen captures not to mention the information and code provided.
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.
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.
Excellent! Thanks. Socked away for future re review.
Im so glad you have made this video! Thank You!
Glad it was helpful!
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
god bless you man
Great and educational video! Thank you for sharing. :)
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
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.
Thank you for sharing. Great channel.
Kudos amigo! Well done video.
Thanks Matt!
Dude. You’re the coolest. Awesome content.
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.
super interesting Jon... thanks for the demo
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 UA-cam! :-)
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.
So RF phase shift its ok for lower frequency antennas with a smaller array and smaller BW but for calibrating an 8x8 or 16x16 array at mmw whist steering, ya don't want to do it element by element, the calibration can be done with NF measurements on the VNA for True time delay at BB but also the antennas are omni directional in first video take so it won't work well but I love the concept!! Get some directional patches at X band or mmW and it might work, never mind the reflections then
Great to find this video, I want to build a steerable beam using four or more Yagi antennas at 144 MHz. I can turn the Az El to do so, but want to have digitally controlled beam steering using PIN diodes. Plus or minus 20 degrees from center would be enough but I would like at least 5 degree increments. Not yet sure if this is doable at my level of expertise in this which is at the novice level. I'd love my project to be capable of receive beam steering, but transmit is also desired. I might need to abandon a solid state version for simply using coaxial switches to switch in and out coaxial lines at incremental wavelengths instead.
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
Hey man, great video on the basic concepts of beamforming! The demo looks cool too! Might want to try it out someday
Excellent demonstration !
Hey Jon, I love the videos and they're so insightful. So for a personal project I have been trying to use both transmit channels simultaneously to do transmit beamforming I wasnt sure what the best method is to make sure its working properly, any tips?
Yes, transmit beamforming is harder to demonstrate because you can't "see" the beam, like you can for receive. You can see a demo I did transmit beamforming here:
ua-cam.com/video/V5lKMiHYyB0/v-deo.html
Another way to do it is to put an RF Power detector (or several) out there and then not how the power levels change as you steer the transmit beam towards the power detector. You can see a demo we did at IMS 2019 here:
ua-cam.com/video/Ufa5VBC0mQU/v-deo.htmlsi=EwVtmHVgLAeJHBmI
In that demo, there are 9 power detectors (sitting on the table), each with an LED "volume" type meter connected. So you can see the signal strength as you steer the beam to each of those 9 detectors.
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. ua-cam.com/video/XP8OWMDHfOQ/v-deo.html
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
Thanks Jon, I'm pen tester and radio amateur. This was a great explanation !
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.
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?
I need this tech to take out the Skynet drone army lol
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.
Seriously good channel!!
Subscribed!
Hi, I have the ADAM-pluto with 2 antennas I got with it, where can I get a third similer antenna? And what kind of SMA cables do I need to set this up, I'm very new to this and I am having a hard time finding the right components.
No problem, any SMA cables will work. A good "getting started" kit would be:
a.co/d/11vA6dt
a.co/d/02vyS01
a.co/d/71mXnHL
Great tutorial. Thanks Jon. A question about the LO. YOu mentioned the harmonics are created due to square wave LO in pluto which uses AD9363. My question is, is the same square wave LO used in AD9361? Do we need to filter when using ADRV9361 as well
Yes. For faster (and more knowledgeable!) answers you can ask the ADI experts your AD936x questions here: ez.analog.com/rf/wide-band-rf-transceivers/design-support/
Love it !!! Please more video
Excellent video 👍 Thank you 🙂
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!
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!
Excellent dude !
Thanks, nice work!
Great job!
Great channel. Subscribed. Thanks.
How about putting a Kalman filter on the output data ?... Or have you already considered that?
Great Job!! thanks for share!!
I think the wireless headset work on 2.4GHz, so it might interfere with your test setup. Still very good job and insightful video.
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.
Great Video Jon!
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
Very cool. thank you.
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 UA-cam don't put them in blue like it used to, got me confused.
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.
BIG, BIG like, bro!
How can i make a portable ultrasound imaging that connect to microcontroller to control prosthetic bionic hand? Thank you
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!
how easy is to sync two different pluto device for a 4RX coherent receiver? Is common clock enough?
I don't think it would be easy. I think it would require calibrating the phaser offset between the two Plutos after each startup. You can see an example of how it would be done here: wiki.analog.com/resources/eval/user-guides/ad-fmcomms5-ebz
I work at my project ı need self tracking radar system and its help a lot thanks sir
Ive always wanrwd to undetstand monopulse processesing!
Don't you plan to show MUSIC or any other algorithm like this?
P.S.: Amazing video! (all three)
Thanks Dmytro! Actually, for MUSIC, I've been working with Dr. Marc Lichtman, author of www.pysdr.org on implementing this with hardware. And I think we'll do a future video together on this topic. But right now he has some great DOA resources on his website, I would recommend checking that out.
@@jonkraft Thank you very much! Marc told MUSIC can work with a 3 elements minimum. But MVDR is not bad too.
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.
Hello sir, I'm using omni directional antennas for same setup and facing the issue of ambiguity . The phase difference at 0 and 180 degree are same so algorithm is not able to detect difference in position of transmitter. Please help
I would recommend either using directional (or back baffled) antennas. Or, if you have more antenna channels (like 5), you can do a circular array. Dr. Marc Lichtman does a great explanation of all of this on pysdr: pysdr.org/content/doa.html#degree-ambiguity
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
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!
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.
Hello Jon,
Thanks for these great Labs on PLUTO
I finally had some time to go through installation-modification and testing
My setup is running with a I7 on Ubuntu 22.04 with Python 3.10 and adi.version 0.0.16
Only one issue is dealing with pyplot that does not refresh the graph
I patched with these lines
plt.draw()
#plt.show()
plt.pause(0.05)
plt.clf()
Thanks Patrick! Yes that's a better, more universal, way to update those plots. I use spyder IDE a lot, and that displays plots inline. But I like your changes and I should do those when I post the code. Thanks!
I've listened multiple times and can't make out what you said after "it's pretty much mandatory..." around 1:30.
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?
Thank you sir
brilliant thanks
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 thanks so much
I'm pretty sure phase array is the early stages of a "force field", except by then we would be abandoning classical electro magnetism.
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: ua-cam.com/video/w7_VaEMr2Os/v-deo.html
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: ua-cam.com/video/h6MfM8EFkGg/v-deo.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!
Hi, I am Shameer from India. This video was so useful. Can we use this python script for USRP 2901(SDR)
The basic idea will work, but you'll to change the setup commands, etc. I would contact NI and ask for help on this.
@jonkraft Thank you, sir. I am trying to implement beamsteering using MVDR and MUSIC algorithm. If you have an idea on it, share some information or, if possible, make a video on it. It will be so useful to me.
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?
Instead of transmitter, can it detect the objects?
You can find it in other Jon's videos about radar.
Subbed. But be warned, I have no clue what you are talking about. But I love to learn new subject matter.
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!
can this be used with WiFi
Sure, add a wifi dongle to the raspberry pi
Compartilhem ... gratidão ...
Ex Conselheiro local de Saúde, não medico ...