本人非專業(yè)人士,只是一個(gè)小小程序員,arduino純屬愛(ài)好,所發(fā)文章僅限于本人智商,如有問(wèn)題,請(qǐng)大家指正。
近期對(duì)智能家居比較敢興趣,其中存在幾個(gè)無(wú)線傳輸的模塊,起初選用的2.4G的nRL24L01模塊,那個(gè)東西真是折騰死人,弄了一個(gè)星期都沒(méi)找到問(wèn)題點(diǎn)。最后在收拾元件箱子的時(shí)候,發(fā)現(xiàn)一套以前買的433Mhz模塊,就想干脆用這個(gè)吧。在各種方式的search,找到了一個(gè)lib - RCSwitch,看了例子還比較好用,可以傳輸24bit的值。立刻裝上測(cè)試。
315433射頻模塊介紹:
當(dāng)發(fā)射電壓為3V時(shí),空曠地傳輸距離約20~50米,發(fā)射功率較小,當(dāng)電壓5V時(shí)約100~200米,當(dāng)電壓9V時(shí)約300~500米,當(dāng)發(fā)射電壓為12V時(shí),為最佳工作電壓,具有較好的發(fā)射效果,發(fā)射電流約60毫安,空曠地傳輸距離700~800米,發(fā)射功率約500毫瓦。外接天線:10cm(發(fā)射模塊天線:10cm,接收模塊天線:30cm)多芯或單芯普通導(dǎo)線。
在實(shí)際測(cè)試中,隨便接了跟電線,傳輸能達(dá)到5米,無(wú)丟包現(xiàn)象。這個(gè)射頻模塊的穿墻效果,應(yīng)該會(huì)比2.4G的好很多。我家里以前一套315Mhz的報(bào)警器,全屋傳輸無(wú)壓力。
接線很簡(jiǎn)單,只有三個(gè)腳,兩個(gè)是電源,一個(gè)是數(shù)據(jù)。
發(fā)射端
VCC GND DATA- arduino 10腳(可以變更,在代碼中調(diào)整)
接收端
VCC GND DATA- arduino 2腳(使用終端2則使用3腳,在代碼中調(diào)整)
程序使用RCSwitch附帶示例修改,傳感器值使用隨機(jī)數(shù)替代。
傳輸思路是將24bit的值分開(kāi),前12位為傳感器ID,后12位為傳感器值,12bit,可以到4096,應(yīng)該夠用了。
其他的控制編碼器的例子還沒(méi)有試,下次測(cè)試好了再來(lái)。
說(shuō)明:
還忘了一個(gè)重要的東西,在lib中有個(gè)代碼需要修改,不然會(huì)接受到4個(gè)重復(fù)的值。由于本人對(duì)中斷不是很熟悉,不知道4個(gè)重復(fù)值造成的原因,只是測(cè)試出改了一個(gè)值,請(qǐng)各位大師給予解答。
[pre lang="arduino" line="1"]void RCSwitch::handleInterrupt() {
if (repeatCount == 6) { // 需要將 2改為 6repeatCount == 2
if (receiveProtocol1(changeCount) == false){
if (receiveProtocol2(changeCount) == false){
if (receiveProtocol3(changeCount) == false){
//failed
}
}
}
repeatCount = 0;
}
}[/pre]
RF射頻模塊發(fā)射端程序部分截圖:
RF射頻模塊接收端程序部分截圖: