用433M模塊做無線通信,距離只有幾米,太短了怎么辦?
按照教程做的,天線也接了,功率也調(diào)了,就是距離上不去。
說實話,433M通信距離是個很玄學的問題。
很多人覺得是個模塊,接上去就能用。
但實際上,距離短通常不是模塊的問題,是你電路設(shè)計的問題。
以前我有兩年多一直在做這種射頻的項目,雖然不是主做硬件設(shè)計,但是一起聯(lián)調(diào)測試過,下面分享下自己踩過的坑及總結(jié)。
433M無線通信,本質(zhì)上就是無線電發(fā)射和接收。
發(fā)射端把數(shù)據(jù)調(diào)制到433MHz的載波上,通過天線發(fā)射出去。
接收端通過天線接收信號,解調(diào)出數(shù)據(jù)。
聽起來簡單,但要做好不容易。
通信距離受很多因素影響:發(fā)射功率、接收靈敏度、天線增益、環(huán)境干擾、阻擋物,代碼層面。
你改一個地方,可能整個系統(tǒng)的表現(xiàn)都不一樣。
我給你分析一下,為什么你的通信距離這么短,從硬件上來說。
第一個原因,天線問題。
天線是433M通信最關(guān)鍵的部件。
天線選對了,距離能翻倍。
天線選錯了,功率再大也沒用。
很多人用彈簧天線,或者隨便根導線當天線。
這種天線,增益低,駐波比高,發(fā)射效率低。
第二個原因,匹配問題。
射頻電路最重要的是阻抗匹配。
發(fā)射模塊、匹配電路、天線,三者的阻抗要匹配。
不匹配就會反射,功率就損耗了。
你花了大功率發(fā)射,結(jié)果大部分功率被反射回來了。
實際發(fā)射出去的功率,沒多少。
第三個原因,電源問題。
無線發(fā)射的時候,瞬時電流很大。
如果電源跟不上,電壓會跌落,發(fā)射功率就上不去。
很多人用小容量的電容,或者離芯片太遠。
導致電源紋波大,發(fā)射不穩(wěn)定。
第四個原因,PCB布局問題。
射頻走線是有講究的。
很多人隨便拉根線就完事。
結(jié)果信號質(zhì)量差,距離自然上不去。
先說天線,這是提升距離最有效的方法。
常見的433M天線有幾種。
第一種,彈簧天線。
便宜,但性能一般。
增益低,駐波比高,適合短距離通信。
第二種,鞭狀天線。
比彈簧天線好,增益高一點。
但要注意長度,1/4波長是17cm左右。
太短了性能差,太長了效率低。
第三種,PCB天線。
做在PCB上的天線,成本低,一致性好。
但需要專門設(shè)計,不是隨便畫根線就行。
第四種,棒狀天線。
性能最好,增益高,駐波比低。
但成本也高,適合遠距離通信。
我們項目1(MC01)無線門磁探測器用的是哪種?
用的是PCB天線。
為什么?因為成本低,生產(chǎn)便利,而且對于門磁這種應用,距離夠用。
如果你要更遠的距離,可以換成棒狀天線。
阻抗匹配是射頻電路的核心。
匹配電路的作用,是把模塊的輸出阻抗匹配到天線的輸入阻抗。
如果不匹配,信號會反射,功率損耗大。
這塊我也沒深入研究,如果直接用模塊的話,廠家通常會推薦匹配電路的參數(shù)。
你按推薦的來,一般不會有太大問題。
如果你自己調(diào),可以準備幾組不同參數(shù)的電感電容。
換著試試,先看頻譜儀上的信號,信號沒問題再實際去測距離,找最優(yōu)的。
雖然笨,但管用,我們一般就用這種方法測試。
無線發(fā)射的時候,瞬時電流能達到幾十毫安。
如果電源跟不上,電壓會跌落。
電壓跌落,發(fā)射功率就上不去。
所以電源設(shè)計很重要。
一般要加一個大電容和小電容,比如100uF電解電容和0.1uF陶瓷電容。
為什么要用兩個電容?
因為電解電容ESR大,濾不了高頻。
陶瓷電容容量小,濾不了低頻。
兩個配合,才能全頻段濾波。
而且電容要盡量靠近模塊的電源引腳。
離得遠了,線路的寄生電感會削弱濾波效果。
除了硬件,軟件上也能做一些優(yōu)化。
第一個,降低發(fā)射速率。
發(fā)射速率低一點,每個bit的時間長一點。
接收端解調(diào)更容易,誤碼率更低。
距離也能更遠。
第二個,增加數(shù)據(jù)數(shù)量。
對于433M OOK這種很容易受到同頻之類的干擾。
我們一般是發(fā)送23個重復的數(shù)據(jù)為一幀,主機連續(xù)收到幾個正確的數(shù)據(jù),就確認接收。
這樣雖然犧牲了實時性,但提高了可靠性。
第三個,調(diào)整發(fā)射功率。
有些模塊支持功率調(diào)整。
在保證通信的前提下,用合適的功率。
功率太大,反而會增加干擾。
end

下面是更多無際原創(chuàng)的個人成長經(jīng)歷、行業(yè)經(jīng)驗、技術(shù)干貨。
1.電子工程師是怎樣的成長之路?10年5000字總結(jié)
2.如何快速看懂別人的代碼和思維
3.單片機開發(fā)項目全局變量太多怎么管理?
4.C語言開發(fā)單片機為什么大多數(shù)都采用全局變量的形式?
5.單片機怎么實現(xiàn)模塊化編程?實用程度讓人發(fā)指!
6.c語言回調(diào)函數(shù)的使用及實際作用詳解
7.手把手教你c語言隊列實現(xiàn)代碼,通俗易懂超詳細!
8.c語言指針用法詳解,通俗易懂超詳細!