題:
433MHz範圍優化
Thijs
2015-12-17 18:29:05 UTC
view on stackexchange narkive permalink

我想從我的 433MHz模塊中獲得可能的最佳範圍。經過大量搜索和閱讀後,我相信我應該能夠在 10m室內以自由視線覆蓋

[更新]
在評論中的一些技巧之後,我做了幾件事。看起來像是用Arduino代替Pi接收了Arduino,我現在得到了一個額外的儀表,距離現在只有1,5m,所以仍然很糟糕。就像我們在荷蘭語中所說的那樣,“就像發射箭上的一聲巨響”,我現在使用兩個彼此平行的鞭狀天線。
在將接收器固定在Pi上之前,我現在首先嘗試使接收器上的接收最大化。接收Arduino。

[更新2]
再進行一些測試後,我到達了約6米的範圍。當發射器位於1厘米的木頭後面時,可以回到30厘米。
我當前的433MHz模塊正在進入垃圾箱,謝謝大家的時間。我將尋找更穩定的替代方案,並可能嘗試使用其他類似的/更好的433MHz模塊,例如: http://www.ebay.com/itm/433MHz-Superheterodyne-RF-Link-kits-3400-ARM-MCU- Transmitter-and-Reveiver- / 281169560721?hash = item4177030491:g:SUcAAOxyaTxTRKJn

[更新3]
新模塊進行了巨大的更改。現在,我可以毫無問題地從家裡發送數據了。還沒有地面飛機(將嘗試使用TwoD!)。仍在5V發射器電壓上!

我之前曾問過一個有關433MHz設置的問題,因此為了全面披露:
433MHz發送不接收

我當前的範圍約為40 / 50cm,這並不多,因為我在接收器處使用了約17cm的直天線,在發射器處使用了線圈天線:
http://www.instructables.com/id/ 433-MHz-線圈加載天線/

這些是我使用的模塊:
http://www.ebay.com/itm/-/221524421949? roken = cUgayN&soutkn = xKBBUo

僅僅是供參考,我使用了這些很棒的工作泵:
http://www.ebay.com/itm/-/321779742264?roken=cUgayN&soutkn=hk1lrB

我嘗試了許多天線組合,並將發射機電壓提高到12V,但是它並沒有太大幫助。我的目標是至少達到10m的視線。

  • 我注意到我的Pi向接收器輸出4.77V。
  • 這4個Penlite現在輸出約5V,因此發射器功率很低。
  • 我還想測試的是在發射器的V和GND上添加10uF電容,但是我必須等待它們交付。
  • 我有10mw的電容發射器,它們可能只是沒用。
  • 接收器站在揚聲器和低音炮的前面,測試時我將它們關閉。
  • 433MHz模塊成對出現。我不尊重這一點,並且將任何接收器與任何發送器一起使用,想知道這是否是一個問題。我的最終目標是在一個接收器上安裝3個發射器。
  • 由於我有多個Tx / Rx模塊,因此我將它們互換以排除DOA模塊。
  • 還嘗試了這些螺旋天線,範圍更糟 http://www.ebay.com/itm/-//171271811976?roken=cUgayN&soutkn=TmOnpH

我的Arduino使用Arduino向VirtualWire發送了1000波特的數據Raspberry Pi,在Pi端,我使用PIGPIO和以下代碼:

  if __name__ ==“ __main__”:導入時間導入datetime導入Pigpio導入vw導入json導入來自request.auth導入的請求HTTPDigestAuth#設置接收433MHz端口RX = 27#設置波特率433MHz BPS = 1000#連接到本地Pi。 pi = pigpio.pi()#指定Pi,rx gpio和波特率。 rx = vw.rx(pi,RX,BPS)#空消息msg = 0#保存時間start = time.time()#運行3秒鐘,同時(time.time()-start)< 36000:#計數msg每個週期msg + = 1#睡眠0.4秒.sleep(0.4)#在接收器準備就緒時運行,而rx.ready():#將接收到的字符串入消息
message =(“ .join(chr(c)for rx.get()中的c))##將接收到的消息打印到屏幕打印(message)#創建數據字典data = {} data ['meting'] = message [ 8:11] data ['bericht'] =消息[4:7] data ['plant'] =消息[1:3] data ['timestamp'] = str(datetime.datetime.utcnow()。isoformat() )#將數據打印到屏幕上print(data)#本地數據備份的設置文件名filename = str('data /'+ data ['plant'] + data ['bericht'] + data ['meting'] +' .json')#將JSON數據文件以open(文件名,'w')作為輸出文件寫入磁盤:json.dump(data,outfile)#發送數據url ='http:// server:8000 / v1 / documents?database = plantjes&extension = json'#設置標頭標頭= {'Content-Type':'application / json'}#執行請求r = request.post(url,json = data,auth = HTTPDigestAuth('plantje', 'password'))#打印請求響應print r#取消接收數據rx.cancel()#停止在pi.stop()引腳上監聽PIGPIO  

此腳本發送對將Hygro傳感器轉換為JSON數據庫。

Arduino使用以下代碼:

  #include <VirtualWire.h>#include <Sleep_n0m1.h>String pid =“ p02”; const int led_pin = 11 ; const int send_pin = 12; const int hygroSensor = 0; int hygroPower = 8; const int pump_pin = 5; int watering_level = 900; int count = 0;睡眠睡眠;無符號長睡眠時間;無效setup(){//串行控制台設置Serial.begin(9600); Serial.println(“設置”); //循環睡眠時間(以毫秒為單位)sleepTime = 10000; // virtualwire設置vw_set_tx_pin(transmit_pin); //設置引腳模式pinMode(hygroPower,OUTPUT); pinMode(led_pin,輸出); pinMode(泵腳,輸出); //每秒位數vw_setup(1000);}無效循環(){
//延遲以允許喚醒延遲(100)之後串行輸出準備就緒; //循環計數器計數++; //打開濕度傳感器模塊digitalWrite(hygroPower,HIGH); //等待濕度傳感器開始延遲(1000); //讀取模擬引腳0上的輸入:int measure = AnalogRead(hygroSensor); //啟動燈以顯示正在發送的digitalWrite(led_pin,HIGH); //發送Serial.println(“ Sending:” + String(measure))的日誌時刻; //創建&發送隨機消息id String mid =“ m” + String(random(100,999)); //發送數據String hygrodata =“ d” + String(measure); dataSend(pid + mid + hygrodata); //停止指示燈以顯示正在發送的digitalWrite(led_pin,LOW); //等待第二個延遲(1000); //睡眠代碼if(count > = 3){//重置計數器count = 0; //運行泵例程// waterpump(measure,mid,pid); //將睡眠日誌記錄到串行控制台Serial.print(“ Going to sleep now ..”); //設置睡眠模式sleep.pwrDownMode(); //關閉hygro模塊電源digitalWrite(hygroPower,LOW); //睡眠時間:sleepTime sleep.sleepDelay(sleepTime); }} //數據發送funtionint dataSend(String data){//聲明消息長度的int int msglen; //設置消息的長度+1 msglen = data.length()+1; //聲明字符數組char wallet [msglen]; //將字符串放入數組data.toCharArray(envelope,msglen); //將數據記錄到串行監視器Serial.println(data); //發送數據vw_send((uint8_t *)envelope,sizeof(envelope)); //等待發送完成vw_wait_tx(); //返回1表示成功返回1;} //泵功能int waterpump(int measure,String mid,String pid){//日誌度量Serial.println(measure); // //需要時澆水if(措施> watering_level){//打開水泵2秒鐘digitalWrite(pump_pin,HIGH);延遲(3000); digitalWrite(pump_pin,LOW); //發送泵數據dataSend(pid + mid +“ pump”); }}  

這可以控制消息的感測,還可以控制需要時用來自動給植物澆水的水泵。

Arduino Hygo meter 433MHz setup Raspberry Pi 433MHz receiver

那個“伸出援助之手”的天線架被“高度懷疑”-您是否將其建模為天線的一部分?確實是,而且可能不是很好。嘗試握住天線突出的電路板,並可能握住一根長度,徑向或接地平面相同的相對地線-取決於所選天線的工作原理。也就是說,這些模塊的通常範圍是多少?
您是否嘗試過將帶有串行打印輸出的Pi接收到Arduino(帶有RX模塊)?只是為了比較性能(假設Pi缺少RX)。我有幾個RF433 / Arduino模塊,用於傳感器數據在5 m範圍內通過最多三堵牆(4000 bps,3V7)傳輸。這是帶有Hamming(7,4)編碼器並帶有誤碼校正的VirtualWire的修改版本。請參閱https://github.com/mikaelpatel/Cosa/blob/master/libraries/VWI/VWI.hh、https://github.com/mikaelpatel/Cosa/blob/master/libraries/HammingCodec_7_4/HammingCodec_7_4.hh和https://github.com/mikaelpatel/Cosa-Domotica。
伸出援助之手只是為了照像:),所以測試時我沒有在那裡。通常的範圍是1面牆+ 10米或室外50m,帶有兩個直天線。但這是Google的科學……
與接收器一起使用額外的Arduino,我得到的信息越來越遠。因此,這表明我的Pi是元兇。現在,我將嘗試將Pi上的接收器轉儲到控制台以查看其中的內容。
我認為您不應該將螺旋天線和鞭狀天線組合在一起。而且,製造螺旋形天線在長度,內徑,匝數,匝間間距等方面可能需要一些精度。我會在兩側使用鞭狀天線,並確保它們彼此平行。我還將嘗試天線的長度。有人說您必須減去板上已經存在的一小圈電線的長度。只需將其變長,然後將其剪短,看看它對射程有什麼影響。周圍的單位也更多;可能有死角。
PI可能會產生大量的“背景噪音”。可能需要從中保護TX模塊。
您可以像從天線中繞出一樣繞成一圈,而不是進行手動設置。真的沒關係。
五 答案:
helio
2016-07-14 00:28:27 UTC
view on stackexchange narkive permalink

我遇到了同樣的問題,無法超過2米的範圍。直到我發現TX頻率降低了約150kHz,我才調整了RX頻率(模塊帶有微調器),現在可以在40-50m的範圍內插入牆壁了。

cranphin
2016-07-30 03:32:17 UTC
view on stackexchange narkive permalink

在發送端(使用便宜的AC開關作為接收器),我實際上在便宜的綠色方塊上取得了不錯的結果,而在ebay上隨處可見的1美元“ Helical Antenna 433MHz”同樣便宜5:這樣就可以達到我們房子的所有三個層次,綠色廣場上只有5v的電源,它只是放在麵包板上。

根據要求,將天線的圖片焊接到其中一個廉價的綠色發射器,這對5V的我來說效果很好:

Picture of antenna

該天線是從以下購買的一組5根天線: http://www.ebay.com/itm/171271811976

大約有21個繞組,直徑為5mm,因此大約為5mm * 3.14(= Pi)* 21 = 33 cm線圈中的導線數量。

你能附上天線的照片嗎?
完成,看答案
請記住,它們特定於某個頻率,您想要專門針對433MHz出售的那些:)
Hans Neve
2016-03-30 12:27:49 UTC
view on stackexchange narkive permalink

433mhz模塊可以在電源線上使用,在電源輸入端蓋上一個帽。直線天線在大多數情況下也可以使用,但是如果您想要更長的距離,可以考慮製作偶極天線,您可以製作一個裝有線圈的diy天線,以幫助您從直線上獲得一點幫助。

謝謝!我只是在閱讀有關功率輸入的上限,它如何工作以及為什麼起作用的信息。想知道多少uF,為什麼。
我使用了10uF以上的電壓,這是用於功率平滑,因此該值並不重要。
Ryan Griggs
2015-12-18 09:36:45 UTC
view on stackexchange narkive permalink

您是否曾經嘗試過基於Nordic nRF24L01的模塊?它們可在eBay上以非常低的價格購買,並在2.4 GHz頻段上運行。他們應該在室內提供至少幾十米的射程。我在這些方面取得了成功,並且它們很容易與Arduino交互。

我已命令其中之一進行檢查!我還擁有一個ESP8266模塊,但它似乎更多地用作獨立解決方案,而不是Arduino模塊。在nRF24L01出現之前,我將用它進行測試。
是的,ESP8266更適合連接到無線路由器。 nRF芯片更適合網狀網絡。
TwoD
2016-01-18 03:47:55 UTC
view on stackexchange narkive permalink

我有相同的TX / RX模塊和兩個Arduino,並且在整個房屋中都能獲得很好的傳輸可靠性,但是(我)需要做一些實驗才能找出影響遊戲的最大因素。

模塊對應該沒關係,我把5對裝在一個塑料袋裡弄亂了,以為只有一個是DOA。我將它們與Nexa無線電源插座和遙控器一起使用,因為它們以相同的頻率工作,並為我提供了不錯的參考點。

我注意到[接收器]模塊的一件事是它們傾向於自動調整信號強度。用近距離的發射器對它們進行轟炸一會兒,一段時間後,它們會從遠距離的噪聲中拾取信號,變得更糟。 433Mhz Nexa設備也是如此,當開始從更遠的地方開始發射時,接收器可能需要更長的時間才能發現信號,請記住,這些模塊僅輸出1或0,而不輸出模擬信號,因此他們必須決定將哪個噪聲水平接受為0,何時將其接受為1。

我的第一個錯誤是沒有使用牢固連接的天線。簡單的一根堅固的電線本身就足夠了,但前提是必須與模塊良好接觸。始終建議您具有良好的焊接技能。

我的第二個錯誤是沒有給變送器足夠的功率。它可以處理12V,所以給它12V(不在數據引腳上!)。只有在達到所需的距離後才可以降低它。

請嘗試使用較大的發射器和接收器接地平面(不要與設備本身接觸!)。接收器放在電腦機箱上,發射器放在冰箱上,我的射程非常好!

我什至可以從距離房子10m的車庫內的溫度傳感器中獲得可靠的讀數距離地面2m,使用17cm的平直線作為天線,並具有良好的接地平面。 (單極天線需要接地層才能將信號反射出去。)

嘗試用示波器在接收端觀察信號。如果您提供了模擬接收器,則可能更容易區分噪聲和真實數據。但是,如果您只有RX模塊,那麼將數據針腳連接到某種記錄的可視化視圖上,至少可以讓您看到發現數據模式有多困難。

嘗試增加數據的長度實際數據之前的序言。它將使接收器在到達感興趣的比特之前進行調整。

重複發送的數據。包括一條ID數據,該ID數據隨每條消息而變化,但不會隨每次重複而變化,並存儲最後收到的ID以進行比較,然後再將其中繼到任何地方。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...