通過百度搜索,315/433Mhz無線傳輸,采用的是ASK(調幅)傳輸,一般在taobao上,有賣模塊的,一對大概也就10塊錢,甚至更便宜。使用起來也很方便。輸入端一個io,輸出端一個io。
用示波器,檢測了一下接收端,在接收到遙控器的碼型。
高電平持續時間 低電平持續時間
第一個, 600us, 1.84ms
第二個, 1.84ms, 600us
第三個, 600us 1.84ms
第四個, 600us 1.80ms
第五個, 640us 1.80ms
第六個, 1.92ms 600us
第七個, 600us 1.84ms
第八個, 1.92ms 600us
第九個, 600us 192ms
第10個, 600us 1.80ms
第11個, 1.88ms 600us
第12個, 1.92ms 600us
第13個,600us 1.80ms
第14個,1.92ms 600us
第15個,1.92ms 600us
第16個,600us 1.88ms
第17個,600us 1.80ms
第18個,1.80ms 600us
第19個, 1.80ms 600us
第20個,600us 1.80ms
第21個,600us 1.80ms
第22個, 600us 1.80ms
第23個, 600us 1.80ms
第24個, 600us 1.80ms
第25個, 600us 低電平
以上的數據表明,通過高電平,低電平持續時間來區別“0”和“1”,一幀數據有25個碼。
把遙控器拆掉以后,看到的芯片是sc2260 ,不過沒有看到所謂的15ms的前導碼?連續發送時,碼與碼的間隔為18.2ms
上圖是用示波器測試315Mhz收發模塊的收發波形圖
藍色的是發送模塊,黃色是接收模塊
發送模塊,和接收模塊都接5v供電,發送模塊是通過stm8單片機的串口,以波特率為9600的速度發送0x55
接收模塊,除電源外,輸出出口直接與示波器探頭相連,測的上圖波形
從上圖可以反映出來一些信息:
1,發送模塊的io電壓為5v,而接收到的數據則不足5v,大概在4v左右。
2,發送端波形規則,因為是用單片機驅動的,所以肯定規則,而接收端的波形則不太規則。
3,由于是通過串口發送,所以串口發送端的空閑電平為高電平,而315M接收模塊的空閑電平則為低電平
4,空閑時,接收模塊會接收到很多不穩定的雜波。
5,當發送模塊完成后,會有一段時間的電平保持時間,然后繼續輸出雜波
6,發送上升沿時延遲大,而發送下降沿的延遲小。
當將發送端直接與串口相連時,無論設置為多少波特率,都會收到亂碼。而發送端發送的數據,雖然可收到,但有誤碼存在。
這兩天在百度搜索了一下遙控器芯片sc2262的說明書,又回想了一下以前查的資料,又看了一下波形。知道了:
1,首先是芯片,地址碼,有3中狀態,這三種狀態是 ,接地,接電源,浮空。這樣的話,可以多編很多碼,這是一方面。
2,芯片的數據碼也可以當地址碼,但數據碼和地址碼的區別是,數據碼是負責告訴芯片,什么時候,向外發送數據的,而地址碼就沒有這個功 能,當幾個數據中,只要有一個為高電平時,則會觸發芯片連同地址碼,一并發送出去。這時,接收端即可接受解析。
3,數據發送時,先發地址碼,再發數據碼最后才發一個很長很長的低電平,無論叫同步碼或者叫引導碼,都是最后一個發的。全都發完才算一幀數據
4, 為保證數據的準確傳輸,一個數據的變化,芯片則會向外發送4次數據。
5,震蕩電阻,發送的震蕩電阻不同,接收的震蕩電阻也不同。
對于以上這4個問題,在寫程序時,有以下幾點需要注意
發送端:發送的地址,由于增加了浮空輸入,所以要對函數的參數進行響應調整,至于怎么調整,目前還沒整明白。
發送端:每次發送4個重復的幀。
發送端:脈沖時間要根據接收端不同的振蕩電阻進行響應調整。
接收端:同步碼的判斷。
接收端:接收碼的格式,應與發送碼一致。
接收端:同時接收4次,判斷同時兩次,即可執行響應函數。
接收端:考慮震蕩電阻,對接收到的數據進行識別。