How LoRa Modulation really works - long range communication using chirps

  Переглядів 210,467

Visual Electric

Visual Electric

День тому

LoRa (LoRaWAN) is a new modulation technique optimised for long range, low power, low bitrate communication. You'll often hear people say LoRa uses "Chirp Spread Spectrum', but this alone is only a small part of the story. LoRa uses an elegant mathematical trick to allow more efficient receivers. In this video, I outline how LoRa modulation works - it is incredibly unique. I was amazed how LoRa can communicate well beneath the noise floor. I tested the performance of LoRa with a Matlab livescript demonstration.
00:00 Introduction
01:00 Chirps as the basis for LoRa
04:20 Towards a mathematical description of the LoRa symbol
09:00 Correlation
12:34 Our first attempt at a receiver
13:12 Towards a more efficient receiver using a "mathematical trick"
16:40 Performance of LoRa
18:54 Matlab code to simulate a LoRa system
26:32 Summary

КОМЕНТАРІ: 279
@VisualElectric_
@VisualElectric_ Рік тому
Which modulation scheme should I cover next? 🤔
@zachreyhelmberger894
@zachreyhelmberger894 5 місяців тому
I thought FT8, JT65, JT9, etc, were the best low noise schemes because of the very narrow bandwidth, which means you can use very narrow filters and get rid of almost all the noise.
@tomaszsalwach8423
@tomaszsalwach8423 4 місяці тому
This one....but after reading what Shannon limit is and Eb/N0... Then you will compare apple to apples....
@thesolderman861
@thesolderman861 4 місяці тому
GPS Signals also come below the noise floor. They also have a correlation receiver type. The descriptions of it, that I found, did not brought me insight how it really works on the modulation level. I only understood that upper layer, there it receives from the 4 or more satellites their precise realtime and precise in space position, albeit the last digits of these numbers are enciphered for intentionally reducing the precision on non-military receivers.
@JxH
@JxH 4 місяці тому
I agree with Zach..894, any of the digital modes created by Dr. Joe Taylor. Use FT8 as your search term.
@marcin_szczurowski
@marcin_szczurowski 3 місяці тому
Go for WCDMA so you can compare processing gain against LoRa.
@AdarshMammen3
@AdarshMammen3 2 роки тому
This is possibly the best explanation of Lora modulation I’ve seen ever…
@mhr4778
@mhr4778 Рік тому
It's like all of signal processing topics in one video! Exciting to learn about a robust platform with so much room for a lot of creative micro modulations.
@imlassuom
@imlassuom Рік тому
No it is not !!
@bjorn2625
@bjorn2625 4 місяці тому
@@imlassuomcould you link to a better one? I’d love to see that one too.
@eswnl1
@eswnl1 4 місяці тому
Why?
@w5cdt
@w5cdt 3 місяці тому
“You can always detect a sine wave in noise….if you are willing to “wait” long enough” - E.J. Swanson
@paaao
@paaao 11 місяців тому
I’m a ham operator. I setup a LoRa base station using the lora ham shield that runs on top of an arduino. With that arduino plugged into my raspberry pi at home, and another arduino with lora hsm shield running in my car. I was able to TX/RX short text messages first try back/forth about 9 miles apart. This was at only 1 watt or less power output, on 440 mhz. I was dumbfounded. It took some pass band filters, and good antennas, but still… Able to communicate well beyond any voice, digital voice, or digital modes on UHF from a very tough location to another, separated by multiple freeways, high rise buildings, trees, cars, etc, etc…
@brianbutton6346
@brianbutton6346 Місяць тому
That is impressive.
@paddler-sn7ub
@paddler-sn7ub Місяць тому
Have a tutorial? I would be interested in your project 👍🏽
@paaao
@paaao Місяць тому
@paddler-sn7ub I don't sorry. It was an old project based on the LoRaChat program, and lora hamshield. The youtube channel was run by username inductive twig or something, and the arduino code for LoRaChat is on his github page. The key to making these cheap single board transceivers communicate much further than what is possible, is by using band pass filters to block out all the other RF noise. So I used very tight, 435 to 450 mhz band pass filters when experimenting. Also very good coax and antennas. My base station during that test had 1/2" hardline running up to a good folded dipole 15' above my roof. So just reducing the losses. Especially at the receive side.
@777arc2
@777arc2 Рік тому
This wasn't really emphasized but usually more bits per symbol means worse performance for a given SNR, but in LoRas case, a higher SF also greatly increases the symbol's duration (as well as the bits per symbol), increasing SF by 1 means 1 more bit per symbol but it also doubles the symbol length, so that gives you more effective spreading, and lets you go to lower SNRs.
@VisualElectric_
@VisualElectric_ Рік тому
Yes, you explain it well.
@flapjack9495
@flapjack9495 Рік тому
I was confused by this at first because I'm so used to more bits per symbol meaning worse performance, but this makes it clear, thanks!
@gauthierostervall4849
@gauthierostervall4849 8 місяців тому
Thanks for adding this crucial comment. I'm not sure why longer symbols give more effective spreading?
@oceanexplorationlab
@oceanexplorationlab 7 місяців тому
This is an extremely important point that confused me at first. Since the symbol duration doubles with each increase in the spreading factor by one, the symbol duration increases exponentially with the SF. However, the number of bits per symbol increases linearly with the SF. Consequently, the overall data rate decreases with an increased SF. There's no magic there; a lower data rate improves the permissible signal-to-noise ratio.
@1isten2me
@1isten2me 4 місяці тому
So how does the performance versus the bit energy to noise density ratio (Eb/No) compare to other modulation schemes and how does it change with SF?
@carlosaldea
@carlosaldea Рік тому
It absolutely blew my mind how clearly you have explained the LoRa modulation despite the complex maths behind it.
@VisualElectric_
@VisualElectric_ Рік тому
Thanks!
@edinfific2576
@edinfific2576 11 місяців тому
This is what I call well-balanced video making and editing: normal transitions, clear presentation, voice level fairly constant, background tune merely present and allows or even helps one to get immersed in the topic without being disturbed either by its loudness or a crappy tune choice. Your explanation is pretty good and shows you have a good understanding of the principles, but math is my weak side so I mostly skip over calculus and differential equations.
@gblargg
@gblargg 3 місяці тому
If he'd encoded the music using LoRa it could have been turned down to below the noise floor! /s
@pedrovictorc
@pedrovictorc 9 днів тому
Man, your explanation is awesome. I really liked the way you added the paper information and brought a nice explanation. Please, keep going with these kind of videos. Regards, Pedro.
@travnewmatic
@travnewmatic Місяць тому
Perfect material for our LoRa APRS group!
@satviksharma3722
@satviksharma3722 2 роки тому
Dont know what amazed me more - the LoRa protocol or your explaination. Thanks for the video.
@educationshouldbefun3
@educationshouldbefun3 2 роки тому
Great video! Just one comment: The LoRa demodulator is basically a correlator plus a bank of filters, the latter being implemented using FFT. And, the LoRa symbols are basically time shifted versions of each other. Conceptually it is very similar to an FMCW radar that also uses a similar demodulator. Instead of the symbols, the radar receives time delayed versions of the chirp waveform depending on the location of the target. The correlator output is a sine wave (for a single point target) whose frequency is proportional to the time delay (i.e. the range). Bank of filters (i.e. FFT) can thus be used to discriminate targets.
@eswnl1
@eswnl1 2 місяці тому
Are matched filters used to sense each frequency component?
@senfilatechnologies2938
@senfilatechnologies2938 2 місяці тому
The FFT by its nature is a matched filter to the fundamental sin/cos waves@@eswnl1
@standriggs2420
@standriggs2420 2 місяці тому
@@eswnl1 The FFT IS the bank of matched filters. Each FFT bin is computing how well the input signal matches the frequency for that bin. For CSS, the highest bin number is the symbol. For FMCW radar, the highest bin number is the range.
@martinmckee5333
@martinmckee5333 2 роки тому
I've been very impressed with the performance I've been getting with LoRa, and this was a wonderful addition to the documentation from Semtec. They make it easy enough to use, but this understanding is invaluable.
@itskevscott
@itskevscott 10 місяців тому
Excellent video mate, cheers for that! Good to see matlab getting used as well, it is invaluable in so many ways.
@mateussertanejo2009
@mateussertanejo2009 2 роки тому
Wonderful video. Amazing. I'm working with LoRA modeling on my thesis. Great job and great explanation.
@TheMomo2212
@TheMomo2212 5 місяців тому
Truly wonderful and comprehensive explanation. Thanks a lot!
@LittleScientist2011
@LittleScientist2011 2 роки тому
Brilliant video, this has demystified how the modulation and below noise floor parts work for me far better than any other video I've watched.
@bonowong3524
@bonowong3524 11 місяців тому
What a great video and details explanation! That helps me a lot with my project in LoRa IoT! Thank you very much!
@rockapedra1130
@rockapedra1130 3 місяці тому
This is a super valuable video! Simple and to the point. Thanks!
@cafe-valente
@cafe-valente 8 місяців тому
Absolutely nailed it!!!!!!!
@alexmassy
@alexmassy Рік тому
Excellent ! Really helped me to grasp the intution about LoRa !
@davidwilkie9551
@davidwilkie9551 4 місяці тому
Life, the Universe and Everything. Excellent Teaching.
@japaz0r
@japaz0r 3 місяці тому
Incredible explanation! Thanks!
@sureshchandrachauhan8167
@sureshchandrachauhan8167 2 роки тому
Excellent explanation. Excellent content. Excellent topic. Keep up the good work.
@ZeR0God
@ZeR0God 3 місяці тому
Signed up! Love so deep math analysis.
@herman7140
@herman7140 Рік тому
Brilliant explanation. Thank you
@mikegofton1
@mikegofton1 2 роки тому
Thanks for such a well presented and clear description of the modulation scheme used. In response to your question, the LoRa modulation scheme is still subject to the Shannon limit, the maximum information rate is a function of channel SNR and bandwidth. If you increase the spreading factor in a channel where the SNR is constant, you will need more bandwidth to maintain the received symbol error rate. As bandwidth is usually fixed for a given channel, the SF can be varied to optimise information throughput for a given channel SNR. This can be done adaptively as the SNR varies over time, due to radio fading and interference sources.
@ingidiego6407
@ingidiego6407 2 роки тому
Fantastic explanation!
@damny0utoobe
@damny0utoobe 2 роки тому
Great video. I love learning the theory behind stuff like LoRa. Keep it up.
@sebastianbabiel6155
@sebastianbabiel6155 Рік тому
Really good explanation! Again this shows the power of FFT. OFDM uses a similar mathimatical trick with the FFT btw.
@zerodegrekelvin2
@zerodegrekelvin2 10 місяців тому
This is a really good video you did explaining LoRa "mathematics', i.e. the magic of decoding a symbol where signal is less than noise i.e. SNR negative 8-) and the Matlab code is really useful. Thank you!
@dr.routsdigitalcommunicati934
@dr.routsdigitalcommunicati934 Рік тому
impressive explaination, perfectly explained
@VincentFischer
@VincentFischer Рік тому
Thanks for explaining this what I always considered RF wizardry. Even though I don't have the mathematical fundament to stand on to understand it thoroughly, I have the feeling that I'm a lot smarter than before the video
@kuravasic
@kuravasic Рік тому
This video is simply unbelievable, very clever explanation!
@VisualElectric_
@VisualElectric_ Рік тому
Thanks!
@Carolus_64
@Carolus_64 4 місяці тому
Thanks for the video and very clear explanation. As a graduated in electronic engineering at the Padua university ( the same of Lorenzo Evangelista) I studied spread spectrum in the nineties but at the time I didn't catched the concept: too much theory and few concrete examples. At the time spread spectrum modulation was probably used only by military and hardware was not able to support the computation needed. After this video I want to go deeper on how Lora works, I think I will take the mathlab simulation you have developed to play a bit by myself.
@peterderidder6549
@peterderidder6549 Рік тому
Well done. It would be interesting to add information about the bandwidth of the signal vs SF. This relates directly to the received noise and hence the S/N ratio. This will perhaps also shed a light on your question how far one can go by increasing the SF.
@walter_mayer
@walter_mayer 3 місяці тому
Thank you for this good explanation!
@raymondbyczko
@raymondbyczko 4 місяці тому
Well produced! I'll investigate more with MatLab; very inspiring!
@lavanyaraman7999
@lavanyaraman7999 Місяць тому
Truly amazing work . Thanks for your efforts. Inspiring ❤
@Mehmet-jh5eo
@Mehmet-jh5eo 3 місяці тому
Amazing video. Thank you!
@xatteg
@xatteg 8 місяців тому
Great Vid! Although I mostly forgot university maths, I got to understand the principle of spreading factor and symbols on LORA.
@fotografm
@fotografm 2 місяці тому
Thank you for this excellent explanation !
@hradynarski
@hradynarski Рік тому
I'm new to radio staff. But I have basic knowledge of signal processing from my university studied 30 years ago. That is best described LoRa that I really understood. Keep up with a great job spreading knowledge and understanding!!! 🙏🙏🙏
@Chastor97
@Chastor97 3 місяці тому
Explanation is great. Subscribed
@highfidelityinc
@highfidelityinc Рік тому
Many thanks for posting this video. I had no idea how LoRa worked beforehand but your video clearly explained it. It took a while to figure out how convert your Matlab code into Octave code and correct my typos. But the final result worked exactly like your demo showed.
@mikemccauley2
@mikemccauley2 2 місяці тому
Can you pls share your octave version?
@ClarkTelecom
@ClarkTelecom 5 місяців тому
Super explanation, many thanks!
@andriypostelzhuk9655
@andriypostelzhuk9655 7 місяців тому
This video really explains not only LoRa protocol. But Modulation/Demodulation process in general. Nice!
@sureshbabuvu
@sureshbabuvu Рік тому
Really good explanation
@olfo4100
@olfo4100 3 місяці тому
Thank you, that's really interesting
@martinsimbona6145
@martinsimbona6145 2 роки тому
Incredible!
@nathanjaroszynski6210
@nathanjaroszynski6210 13 днів тому
at 4:09 you put up both down chirps. Thanks for the lecture
@luisalejandrosaenz4748
@luisalejandrosaenz4748 5 місяців тому
Great Video! Thanks so much!
@aliarous7303
@aliarous7303 10 місяців тому
amazing video, thank you sir
@SuperLeoSG
@SuperLeoSG Рік тому
Awesome explanation, thanks!
@VisualElectric_
@VisualElectric_ Рік тому
Glad it was helpful!
@neilclay5835
@neilclay5835 4 місяці тому
fascinating,thanks
@JLenival
@JLenival Рік тому
Perfect video. It's like a missed Digital Communications lecture that I finally found. Thank you.
@thanhcongnguyen55
@thanhcongnguyen55 2 роки тому
Good explanation. Keep it up
@mostlymessingabout
@mostlymessingabout 3 місяці тому
LoRa is incredible in that it can work below the noise floor
@andrewbourne2296
@andrewbourne2296 4 місяці тому
What an extremely well presented video on a very complex subject. What I was wondering is what kind of bit rate you expect from this modulation scheme. You could always add a Foreward Error Correction protocol (FEC) to the original signal to improve the SNR. We use that extensively on high speed optical transmission systems
@secondarycontainment4727
@secondarycontainment4727 4 місяці тому
As a visual learner - THANK YOU! I don't think I could have ever wrapped my head around this without your visual representation of time. All of it makes sense and, when you see how it works, it is one of those things that makes you go - yeah, why did it take so long for this to be figured out?! THANK YOU!!!
@junaid_qadir
@junaid_qadir 2 роки тому
Amazing lecture indeed. Would you make more tutorials on LoRaWAN implementation, hacking, and defending?
@nikooplayer
@nikooplayer 3 місяці тому
Although I wasn't able to follow most of the parts related to the mathematical bases, but I got the concept behind and I've learned something new and interesting. I am sure I will never use it... but thanks :)
@casev799
@casev799 4 місяці тому
For as little as I do know about wireless, and even wired signal communications, this honestly feels like it fills a lot of gaps in my brain
@casev799
@casev799 4 місяці тому
Since UKposts has trouble with comments on Shorts, if there are any here that are unrelated, @ me so I can just delete them
@thecriss88
@thecriss88 10 місяців тому
you deserve more subs and viewers
@bjorn2625
@bjorn2625 4 місяці тому
Man, how have I not come across your channel before and how are your subscriber numbers not 10x?! Instant subscribe, super clear explanation thank you!!
@elguapo3436
@elguapo3436 2 місяці тому
This the very original way in which knowledge should be conveyed. Structured, well articulated language and definitely accurate. Thank you for your time and effort. New subscriber.
@void94
@void94 Рік тому
Wow, what a helpful video. Actually I'm doing some studies on LPWAN Technologies and tried to figure out where the limits of LoRa are. The other technology that I've tested is way weaker and loses connection at a SNR of like -2.
@rikvermeer1325
@rikvermeer1325 2 роки тому
Thanks
@pascalcoole2725
@pascalcoole2725 2 роки тому
Years ago with a friend i did a equivalent experiment using GNU-Radio. Not related to LoRa but the target was using width bandwidth spreadspectrum to get a signal over a long distance 100 - 200 km (60-100Mi) I also added a noise generator to see what happened.... it's long ago, but you retriggered my interest.
@siberx4
@siberx4 3 місяці тому
Somehow, I just knew the clever math trick would involve fourier transforms. Invariably in signals, compression, or other similar domains, converting between time and frequency domains opens up all sorts of interesting options for improving the efficiency of the process. Great video, very enlightening! LoRa is no longer magic to me. I'd love to see you cover CDMA, especially the way code-based modulations are combined with other methods to provide efficient band sharing and tolerance for multipath interference.
@mcwolfbeast
@mcwolfbeast 4 місяці тому
Thanks for the clear explanation! I do wonder what happens if there are 2 LoRa transmitters in an area though, how would the receiver distinguish between them?
@richardamullens
@richardamullens 3 місяці тому
Thank you
@TymexComputing
@TymexComputing 10 місяців тому
Wow - great explanation - usually there are 3 features but youre only allowed 2 of them - here you can choose 3 simultanously :) Low Bitrate, Low Power and Long Range :) - great idea :)))
@TerrisLeonis
@TerrisLeonis 3 місяці тому
Well technically the desirable traits are High Bitrate, Low Power and Long Range. Power and bitrate are low to begin with. Each time you increment the spreading factor, symbol duration has to double, but so does the number of bits per symbol. I think the trade-off there is in the processing power needed by the larger FFT in the receiver.
@rfly-fpv
@rfly-fpv Рік тому
Amazing video! If i'm not wrong LoRa technique was used in Express LRS open source system used for example in FPV drones. You can get amazing range even at super small TinyWhoop like Mobula 7 1S ELRS. There is super tiny ceramic antenna and this system rocks in terms of penetration even on small transmitter power.
@ChaseNoStraighter
@ChaseNoStraighter 3 місяці тому
Very well presented! In thinking about the limits to the number of symbols, as the symbol duration increases distortions in propagation will modulate the baseband coordinates and increase the error rate. This is not ‘noise’ and will not show up in simulation. A noise driven delay modulation term would cover this.
@mitchhilger5394
@mitchhilger5394 3 місяці тому
Fantastic analysis and explanation of the signal. So does this breakdown such that many of the newer SDR equipment could utilize this as a new digital mode as well? This could be a new mode to explore for ham radio.
@johnwest7993
@johnwest7993 2 місяці тому
I have only a high-school education. a total of 13 years of formal education, and no math beyond a semester of intro to algebra, but my fascination with RF led me to do a bit of research, and I ended up building a LowFER antenna and transmitter (175 kHz) transmitting BPSK ASCII using a computer program called Coherent, and with my transmitting beacon sending a short, repetitive text message, using crystal ovens at the beacon and in a homebrew receiver in my car, and averaging out the noise I was able to receive my beacon's text message, ( except for a couple of minutes in De Moines, Iowa, every foot of the way as I drove over a distance of 800 miles. It would have worked further, but I had not included sufficient front-end gain for copying the signal at great distances. I realized this because instead of my CRT screen printing out random characters, as it would with my transmitter turned off, in a low noise location it stopped displaying anything at all. Not enough gain. So, based on my simple experiments there is no SNR that a good modulation technique is incapable of receiving a signal through if the effective bandwidth is narrow enough, (i.e. a synchronized message repeated enough times to average out the noise.) The only limitation is how long you're willing to wait for the data to appear correctly. BTW, I estimated the EIRP of my transmit antenna to be 7 mW, which is very good for a LowFER antenna and 1 W transmitter. A friend took a receiver with him on his vacations each summer and received the beacon all over the western USA, day and night. So if chirp modulation can reduce the amount of time necessary to receive a given symbol and act in a manner similar to what we were doing with crystal ovens, BPSK, and Coherent, I'd say they have a winner.
@JxH
@JxH 4 місяці тому
Awesome. Thank you. +Subscribed. 🙂
@RyanLynch1
@RyanLynch1 Рік тому
wow. I'm totally not a EE or hardware guy but I find this so interesting. I'm surprising that a higher SF results in lower error rare since it seems to me that a higher SF actually means more data is transmitted (unless I'm misunderstanding or somehow the length of transmission is longer for compensate) but with lower error. very cool video!!!
@zerpharet
@zerpharet Рік тому
You are correct, there is one thing: With a higher SF the chirps also get longer. So the bitrate goes down although there are more symbols.
@the.25.dreamer
@the.25.dreamer 2 роки тому
Really interesting video! :)
@bobowzki
@bobowzki 2 місяці тому
The clearest explanation in the history of explanations.
@daviddavidson2357
@daviddavidson2357 6 місяців тому
"Spreading factor is between 7 and 12 in Lora" Fascinating, I'll be sure to let her know.
@r0cketplumber
@r0cketplumber 3 місяці тому
Armsman Pham Trinli at the On-Off star would be very happy with this encoding scheme for his nanopower localizers...
@darkmandrake69
@darkmandrake69 4 місяці тому
Very good 🙌👏👏👏
@kensmith5694
@kensmith5694 4 місяці тому
LoRa, also can let you use a longer preamble. In just random noise, sometimes your whole message is messed up by the sync being thrown off. Most implementations allow a longer preample to help with this. If you really want to push the range, you can add error correction. Real word noise is a bit episodic. Error correction codes can take this into account. For those who want to try this at home without having to get matlab, there is the option to use octave. Most anything that works in matlab, also works in octave. I haven't tried it but if anyone finds an issue, they can respond with a reply saying it happened and I will take a look.
@nunyabidness9257
@nunyabidness9257 Рік тому
Thanks for the video-i’m an Amateur radio operator with an interest in digital modes and LORA. I’m not sophisticated enough to follow along with the calculations in the video, but I understood the scene behind interpreting the symbols based on your description.
@VisualElectric_
@VisualElectric_ Рік тому
Glad it was helpful!
@_a_x_s_
@_a_x_s_ Рік тому
Wow beautiful! From a new modulation concept with a complex maths expressions to a smart way of computational representation, that’s incredible! Cannot imagine how people invented this smart are!
@VisualElectric_
@VisualElectric_ Рік тому
Thanks! Yes, it is a smart idea with a lot of applications.
@TheAlchaemist
@TheAlchaemist 4 місяці тому
Let me see, as stated in some comments, if the SF increases by 1, the symbol length (and window) doubles. That effectively lowers the bitrate, which makes total sense. Then, why the chirp at all? You could do exactly the same with nFSK, just have more possible values per symbol, over a longer time with a lower bitrate. For this to work so well, the chirp has to provide some important benefit. Perhaps less reliance in the oscillator stability? I'd love to see a comparison between LoRa and an equivalent nFSK in Matlab. BTW awesome video!
@realsolarcars
@realsolarcars 2 місяці тому
I guess the nFSK system would fail much sooner due to frequency selective multipath or constant carrier interference. That interference won't match the chirp rate. The difference wouldn't show in a simulation using AGWN like in this video. Just a guess, this video is the only real research I've done into LoRa.
@TheAlchaemist
@TheAlchaemist 2 місяці тому
@realsolarcars I guess, but you could address those problems in nFSK in an upper level of spreading and FEC, no one said the FSK should be simple and straight, after all LoRa isn't. I think what I try to say is that there is no real need for the continuous shifting in frequency, you could instead do discrete jumping between the n subcarriers. The reason could very well be making it patentable. Anyway I am just guessing. Regards!
@senfilatechnologies2938
@senfilatechnologies2938 2 місяці тому
The benefit is each symbol is spread across the entire bandwidth, so no symbol can be lost in a multipath null, unlike what could happen with nFSK. When you DONT use forward error correction this has big advantage!
@richyoung9662
@richyoung9662 3 місяці тому
Great explanation. Here is the code if you want to play with it. clear all SF = 7; %Spreading Factor BW = 1000;% Bandwidth Fs = 1000;%Sampling Frequency s = 127; %send symbol '10' SNR = -10;%Signal to Noise Ratio %Generate a data symbol num_samples =(2^SF)*Fs/BW; k = s; %add s to k to start (defines the data symbol) lora_symbol = zeros(1,num_samples); for n=1:num_samples if k>= (2^SF) k = k-2^SF; end k = k+1; lora_symbol(n) = (1/(sqrt(2^SF)))*exp(1i*2*pi*(k)*(k/(2^SF*2))); end loop = 100; ind2 = zeros(1,loop); for j=1:loop %Add noise lora_symbol_noisy = awgn(lora_symbol,SNR,'measured'); %Transmit %Receiver below % Generate the Base Down Chirp base_down_chirp = zeros(1,num_samples); k=0; for n=1:num_samples if k>= (2^SF) k = k-2^SF; end k = k + 1; base_down_chirp(n) = (1/(sqrt(2^SF)))*(exp(-1i*2*pi*(k)*(k/(2^SF*2)))); end dechirped = lora_symbol_noisy.*(base_down_chirp); corrs = (abs(fft(dechirped)).^2); figure(1); plot(corrs) [~, ind] = max(corrs); ind2(j) = ind; pause(0.01) end figure(2); histogram(ind2,2^SF) symbol_error_rate = sum(ind2~=s+1)/j figure(3); spectrogram(lora_symbol)
@tonyb8660
@tonyb8660 4 місяці тому
thanks for whatever this is... sounded informashunny and signal to noise wallacazam 4 Hz got it Thanks!
@turtility
@turtility Рік тому
YOU ARE GREAT !!!
@soybeanrice
@soybeanrice Рік тому
Overall great video. Good job extracting the bottom line information from the sinusoidal equations. Small correction needed: 20 db implies a magnitude of 100, not 10. Meaning the at -20db, the Noise is 100x the Signal magnitude, further driving the point of just how effective the signaling scheme is at handling noise, especially when you show the -10dB signal... just imagine 10x that. I do wish that you explained the Y axis of the Err Rate vs SNR a little bit, because the way its graphed in the video (right to left) almost implies that the higher value on the Y axis is good, but for anyone viewing, having an error rate of 1 is of course unusable. Maybe a horizontal line on the graph that shows an acceptable error rate wouldve helped. Oh, and thank you VERY much for providing a Matlab example
@jerrygaffke9386
@jerrygaffke9386 2 місяці тому
This video shows the mathematical basis for a trick used in the LoRa implementation to reduce the complexity and power requirements of LoRa receivers. How LoRa works is quite simple, it sends a fixed duration linear chirp between fixed low and high frequencies, for each symbol to be transmitted, which symbol is determined by when the abrupt transiton from the highest back to the lowest frequency of the chirp occurs. There is also an abrupt transition between symbol boundaries. en.wikipedia.org/wiki/LoRa#LoRa_PHY The core equation for the trick is a thick read if you're not an RF design engineer. At 6:40 into the video, it shows Equation 2 from the original paper: c(n*Ts+k*T) = 1/sqrt(2**SF)*e**(j*2*pi*((s(n*Ts)+k)mod(2**SF))*(k*T*B/(2**SF)) c(): The complex number result from the equation, to be evaluated at each moment in time n*Ts+k*T: The time in seconds from time 0, when the k'th sample of the n'th symbol is sent SF: The "Spreading Factor", which is the number of bits in each symbol. k: An integer that increments up from 0 to (2**SF)-1 for each sample within a symbol Ts: The time it takes to send each symbol, there are 2**SF samples in each symbol n: An integer that increments up (starting from 0) with each symbol to be transmitted s(n*Ts): The integer value of the n'th symbol to be transmitted, a value between 0 and (2**SF)-1 B: The bandwidth that the complete LoRa signal will occupy in Hz pi: 3.14159265... (Ratio of the circumference over the diameter of a circle) e: 2.71828... (Euler's constant) j: The square root of -1 (some sources use the letter i instead of j) This is the equation for a complex sine wave using Euler's formula e**(j*2*pi*f*t) = cos(j*2*pi*f*t) + j*sin(j*2*pi*f*t) Euler's formula converts what would be a trigonometric equation involving sines and cosines into an exponential in the complex plane that is much easier to manipulate mathematically. We are interested the real part cos(2*pi*f*t), equal to sin(2*pi*f*t) shifted 90 degrees. In sin(2*pi*f*t), the sin() operator expects a value in radians, not in degrees. There are 2*pi radians in a full cycle of 360 degrees, so 2*pi*f is the frequency expressed in radians per second. Multiplying that by the time t in seconds we get the number of radians that have passed since time zero, and can evaluate the sin() function to determine the value (perhaps in Volts) of the sine wave at that moment. As t increases to infinity, the result of sin(2*pi*f*t) repeatedly cycles through values between +1 and -1. The complex conjugate of Equation 2 is: e**(-j*2*pi*f*t) = cos(j*2*pi*f*t) - j*sin(j*2*pi*f*t) At 15:00 minutes into the video he multiplies Equation 2 by its complex conjugate while performing the convolution, the imaginary parts involving j cancel out leaving only a real result. The mathematical trick is that the complex conjugate can be broken down into two terms, we need only multiply each incoming symbol by a base down-chirp (the complex conjugate of a base up-chirp), and this will result in a different constant tone for each possible symbol. The receiver must first be synchronized to the symbol boundaries by inspecting the preamble sequence. But forget complex conjugates, let's evaluate the real part of Equation 2: v(n*Ts + k*T) = 1/sqrt(2**SF) * sin(2*pi*((s(n*Ts)+k) mod(2**SF))*(k*T*B/(2**SF))) The v(n*Ts + k*T) means that the formula gives a value (perhaps in Volts) for the k'th sample of the n'th symbol to be transmitted. The 1/sqrt(2**SF) is a constant for the amplitude in Volts of the sine wave, which scales with the power of the transmitter. This is arbitrary, and we can ignore this factor. The remainder of the equation is: sin(2*pi*((s(n*Ts)+k) mod(2**SF))*(k*T*B/(2**SF))) and we expect this to be of the form: sin(2*pi*f*t). Since k is the number of steps and T is the seconds per step, then (k*T) is the elapsed time since the start of the symbol, and thus equal to "t". With that resolved, the remaining terms must be the frequency f in Hz: f = ((s(n*Ts)+k) mod(2**SF))*(B/(2**SF)) Lets make this all a bit more concrete by specifying that SF=7, so the symbols transmitted have 7 bits of information, and thus each symbol can take any of the 128 integer values between 0 and 127. We will further assume that the transmitter is continuously sending the same symbol of s(n*Ts) = 0. The text above Equation 2 in the paper says LoRa (arbitrarily?) sets the bandwidth B equal to the inverse of the sample time T, or B = 1/T. Let's assume a LoRa bandwidth of 10400 Hz, (one of the standard choices) so the sample time is 1/10400 = 0.000096 seconds When all the above substitutions are made, the equation for f in Hz simplifies to: f = ((0+k) mod(128))*(10400Hz/(128)) With the symbol value held at 0, the mod(128) no longer has any effect since it never sees an argument greater than 127: f = k * 10400Hz/128 And now it is clear that the frequency varies from 0 to 10400*127/128 = 10318.75 Hz with a step size of 10400/128 = 81.25 Hz as k increments from 0 to 127 during each symbol. This is a baseband signal. The signal must later be translated up to the target center frequency for transmission, in the US this would typically be in the 915 MHz ISM band. It seems likely that the discrete frequencies given by equation 2 would be the frequency at the center of each sample period, and that the frequency is varied continuously. Given that, the bandwidth will indeed be 10400 Hz. Each symbol in our example with SF=7 takes 128/10400 seconds to transmit, giving us a data rate of 7/(128/10400) = 568.75 bits/second. There will be overhead added to that for the preamble sequence used for synchronization, a header to identify the transmitter, and the proprietary LoRa Forward Error Correction. As others have noted in the comments, if we increase SF from 7 to 8 bits per symbol then the time it takes to send one symbol goes up from 128 sample periods to 256. Given the much longer time per bit spent transmitting, it is not surprising that noise immunity improves. Receiving signals below the noise floor has been done by radio amateurs for at least 50 years. Other services likely had similar schemes long before that. www.sigidwiki.com/images/a/a5/Coherent_CW_arrl.pdf
@niteman555
@niteman555 3 місяці тому
If I understand the modulation scheme correctly, then the spreading factor correlates with the symbol transmission time. This means that it falls entirely with the expected strategy for improving the probability of error, which is to either reduce the data rate (larger spreading factor) or to increase the transmission power. You could get even better error performance by (a priori) agreeing to only use a subset of the the symbols provided by a given spreading factor, since reducing the constellation size increases the distance between symbols and therefore reducing the probability of misinterpreting a symbol.
@HDL_CinC_Dragon
@HDL_CinC_Dragon 2 місяці тому
Absolutely fantastic explanation! Thank you so much for making this!
@andrewrossy
@andrewrossy 3 місяці тому
Wow, what a great video explanation. Thankyou. So if I get this correctly there is a signal hidden in the noise, you just need to know how to decode ... so wonder what the implications of something like this is for SETI and so on. Would the checks that SETI perform still just show noise as well.
@jiaxichen7558
@jiaxichen7558 Рік тому
Great video, why the code in the exponential part divided by 2^SF*2? in the paper, it is devided by 2^SF, the same in dechirp part? Thanks a lot.^_^
@randyscorner9434
@randyscorner9434 2 місяці тому
Excellent explanation of a highly technical subject. I guess I'm going to have to experiment more with Lora, if I can find a worthy use. Thanks for investing the time to show this.
@repatch43
@repatch43 3 місяці тому
Everything about Lora is counterintuitive. Increasing the spreading factor which means increasing the possible symbols IMPROVES performance? Incredible how the maths proves the fact. Does make you think about what more advanced tech the military has hidden away
@cbowns
@cbowns 3 місяці тому
As noted in other comments, the data rate falls in relation to improvement in noise performance
@mos_cha
@mos_cha 5 місяців тому
This is the fourth time I've seen this video. It covers everything I knew about LoRa modulation. Only the MatLab code is very important to me for educational reasons.
@ResonantFractal
@ResonantFractal 4 місяці тому
Just wow
How far can I broadcast LoRa packets WITHOUT a radio?
37:58
CNLohr
Переглядів 123 тис.
Секретная разработка КГБ! Волга «Догонялка» на V8…
1:07:10
Мастерская Синдиката
Переглядів 2,5 млн
Nonomen funny video😂😂😂 #magic
00:29
Nonomen ノノメン
Переглядів 63 млн
Артем Пивоваров х Klavdia Petrivna - Барабан
03:16
Artem Pivovarov
Переглядів 2,5 млн
#112 LoRa / LoRaWAN De-Mystified / Tutorial
20:25
Andreas Spiess
Переглядів 996 тис.
Why is a Chirp Signal used in Radar?
7:25
Iain Explains Signals, Systems, and Digital Comms
Переглядів 31 тис.
Rutgers University Confirmed: Meshtastic and LoRa are dangerous
13:27
Andreas Spiess
Переглядів 712 тис.
The Idiots Guide To Meshtastic - Long Range Comms!
10:20
Ringway Manchester
Переглядів 786 тис.
Getting Started with Meshtastic - Devices
15:01
The Comms Channel
Переглядів 166 тис.
The Story of the Telegrapher's Equations - from diffusion to a wave.
15:01
Visual Electric
Переглядів 61 тис.
Iphone yoki samsung
0:13
rishton_vines😇
Переглядів 9 млн
Как должен стоять ПК?
1:00
CompShop Shorts
Переглядів 537 тис.
Какой MacBook выбрать в 2024 - М1, М2 или М3?
24:56
Rabbit R1: Barely Reviewable
19:53
Marques Brownlee
Переглядів 3,6 млн
Сомнительно... Ну Окэй... Распаковал Nothing Phone (2a)
16:19
РасПаковка ДваПаковка
Переглядів 56 тис.