下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Arduino可使用的無(wú)限通信方式眾多,如zigbee、WIFI、藍(lán)牙等。較為常見(jiàn)的開(kāi)發(fā)方式是使用串口透?jìng)髂K,這類(lèi)模塊設(shè)置好以后,連接到Arduino串口即可用串口通信的方式進(jìn)行通信,這個(gè)過(guò)程相當(dāng)于將串口的有線通信,改為了無(wú)線通信方式,而程序不需要改變。另一種常見(jiàn)方式是使用SPI接口的無(wú)線模塊,這類(lèi)模塊通常都有配套的驅(qū)動(dòng)庫(kù),如ArduinoWifi擴(kuò)展板。這種方式驅(qū)動(dòng)無(wú)線模塊,傳輸速率更快,可以完成高級(jí)操作。Arduino可以使用的無(wú)線模塊太多,驅(qū)動(dòng)方式各有不同,本書(shū)中不做過(guò)多介紹。本章中
要介紹的是一種最常用、成本最低的無(wú)線通信方式——紅外通信。紅外紅外線通信是一種利用紅外光編碼進(jìn)行數(shù)據(jù)傳輸?shù)臒o(wú)線通信方式,是目前使用最廣泛的一種通信和領(lǐng)域。。由于紅外線
裝置具有體積小、功耗低、成本常見(jiàn)的電視機(jī)
、空調(diào)
,均是使用紅外線特點(diǎn),因而被廣泛應(yīng)用于各個(gè)。要使用紅外線
,你需要準(zhǔn)備這些器材:紅外接收頭1:OUT2:GND3:VCCl紅外接收頭紅外接收頭其
集成了紅外接收電路,包括紅外監(jiān)測(cè)二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。它可以接收到紅外信號(hào)并還原成發(fā)射端的波形信號(hào)。通常
使用的紅外接收頭都是接收38kHz左右的紅外信號(hào)。需要注意的是,不同的紅外一體接收頭可能會(huì)有不同的引腳定義。紅外l
紅外紅外上每個(gè)按鍵都有各自的編碼,按下按鍵后,
就會(huì)發(fā)送對(duì)應(yīng)編碼的紅外波。最常見(jiàn)的紅外
大多是使用NEC編碼.生活中,大多數(shù)紅外通信都是用38KHz的頻率進(jìn)行通信,
這里使用的
接收頭和都是使用38Khz收發(fā)信號(hào)的,如果要使用其他頻率通信,需要選用對(duì)應(yīng)頻率的器材。l
紅外發(fā)光二極管其外形與使用方法都和普通發(fā)光二極管相似,但是它可以發(fā)出肉眼不可見(jiàn)的紅外光。搭配紅外一體接受管使用,就可以進(jìn)行紅外通信了。紅外發(fā)光二極管要使用紅外
功能,你還需要用到一個(gè)第的紅外庫(kù)——IRremote庫(kù),你可以在以下
到它:/shirriff/Arduino-IRremoteIRremote庫(kù)成員函數(shù)IRrecv類(lèi)IRercv類(lèi)可以用于接收紅外信號(hào)并對(duì)其
。使用該類(lèi)前,你需要實(shí)例化一個(gè)該類(lèi)型的對(duì)象。其成員函數(shù)如下:IRrecv()
enableIRIn()IRrecv類(lèi)的構(gòu)造函數(shù)??芍付t外
接收頭的連接引腳。l
語(yǔ)法:IRrecvobject(recvpin)l
參數(shù):object:用戶自定義的對(duì)象名recvpin:連接到紅外
接收頭的Arduino引腳初始化紅外
。l
語(yǔ)法:IRrecv.enableIRIn()l
參數(shù):
IRrecv:一個(gè)IRrecv類(lèi)型的對(duì)象l
返回值:無(wú)decode()
resume()IRrecv:一個(gè)IRrecv類(lèi)型的對(duì)象results:一個(gè)decode_results類(lèi)型的對(duì)象l
返回值:Int型0:接收到編碼1:沒(méi)有接收到編碼初始化紅外
。 接收下一個(gè)編碼。l
語(yǔ)法:
l
語(yǔ)法:IRrecv.decode(&results)
IRrecv.resume()l
參數(shù):
l
參數(shù):IRrecv:一個(gè)IRrecv類(lèi)型的對(duì)象l
返回值:無(wú)IRsend類(lèi)IRsend類(lèi)可以將紅外信號(hào)的編碼并發(fā)送。IRsend()
sendNEC()IRsend類(lèi)的構(gòu)造函數(shù)。l
語(yǔ)法:IRsendobject()l
參數(shù):object:一個(gè)IRsend類(lèi)型的對(duì)象以NEC編碼格式發(fā)送指定值。l
語(yǔ)法:IRsend.sendNEC(data,
nbits)l
參數(shù):IRsend:一個(gè)IRsend類(lèi)型的對(duì)象data:發(fā)送的編碼值
nbits:編碼位數(shù)l
返回值:無(wú)sendSony()
sendRaw()以Sony編碼格式發(fā)送指定值。l
語(yǔ)法:IRsend.sendSony(data,
nbits)l
參數(shù):IRsend:一個(gè)IRsend類(lèi)型的對(duì)象data:發(fā)送的編碼值nbits:編碼位數(shù)l
返回值:無(wú)發(fā)送原始紅外編碼信號(hào)l
語(yǔ)法:IRsend.sendRaw(buf,
len,
hz)l
參數(shù):IRsend:一個(gè)IRsend類(lèi)型的對(duì)象buf:
原始編碼的數(shù)組len:數(shù)組長(zhǎng)度hz:紅外發(fā)射頻率l
返回值:無(wú)除此之外,還有如下函數(shù),用于其他常見(jiàn)協(xié)議的紅外信號(hào)發(fā)送:sendRC5()sendRC6()sendDISH()sendSharp()sendPanasonic()sendJVC()在紅外通信中的兩端上,一端進(jìn)行紅外信號(hào)的編碼并發(fā)送,另一端接收到紅外信號(hào),并以下示例中, 使用紅外。作為紅外信號(hào)的發(fā)接收頭作為紅外信號(hào)的接送端,使用Arduino和收端。紅外接收各按鍵對(duì)應(yīng)的編碼,不同的可以通過(guò)IRremote的示例程序獲取到,不同的的發(fā)要使用
控制Arduino,首先
得知道按鍵,不同的協(xié)議,都對(duì)應(yīng)著不同的編碼。送的信號(hào)的編碼。紅外信號(hào)的接收端的制作只需將紅外
接收頭按圖7-4連入Arduino即可,示例中收頭的輸出腳連接到Arduino的11號(hào)引腳。紅外連線示意圖這里
使用以下程序?qū)t外信號(hào)進(jìn)行
:你可以在文件菜單>示例>IRremote>IRrecvDemo找到該程序:
該示例程序后,會(huì)看到如圖的信息:使用向紅外接收頭發(fā)送信號(hào),并在串口監(jiān)視器中查看,你不同的的每個(gè)按鍵都對(duì)應(yīng)了不同的編碼,使用的編碼方式也不相同。出現(xiàn)“FFFFFFFF”編碼,是因?yàn)槲沂褂玫氖荖EC協(xié)議的
,當(dāng)按住某按鍵不放時(shí),其會(huì)發(fā)送一個(gè)重復(fù)編碼“FFFFFFFF”。而其他一些協(xié)議的
,則會(huì)重復(fù)發(fā)送對(duì)應(yīng)的編碼。你還可以在以下碼:找到常見(jiàn)品牌的編在以上示例中, 通過(guò)int
RECV_PIN
=
11;IRrecvirrecv(RECV_PIN);實(shí)例化了一個(gè)IRrecv類(lèi)型的紅外接收對(duì)象irrecv并將紅外接收頭引腳連接到了Arduino
11號(hào)引腳;接著在setup()
中使用enableIRIn()函數(shù)初始化紅外 功能。在loop()
中使用decode()函數(shù)檢查是否收到編碼,并將結(jié)果 到decode_results類(lèi)型的results對(duì)象中。 后的結(jié)果會(huì)保存在results.value中;最后通過(guò)resume()
函數(shù), 開(kāi)始接受下一個(gè)編碼。如果要使用紅外
控制Arduino上連接的設(shè)備,
只需要將
后的結(jié)果results.value與設(shè)定功能的編碼進(jìn)行比對(duì),如果一致,便執(zhí)行相應(yīng)的功能,如在以上程序中添加如下語(yǔ)句:紅外發(fā)射除了使用紅外
發(fā)射紅外信號(hào)外,
也可以使用Arduino來(lái)發(fā)送經(jīng)過(guò)編碼的紅外信號(hào)。如圖7-6所示,你只需要將紅外發(fā)射管與Arduino連接即可,連接方式和普通LED類(lèi)似,串聯(lián)一個(gè)限流電阻即可。另外IRremote庫(kù)只能使用3號(hào)引腳作為紅外信號(hào)輸出腳。l
連接示意圖你可以在文件菜單>示例>IRremote>IRrecvDemo找到該程序:這樣便可以模擬紅外 發(fā)射經(jīng)過(guò)編碼的紅外信號(hào)了。雖然紅外光不可見(jiàn),但你可以通過(guò)
或者電腦的頭觀察紅外LED是否發(fā)光,以便排除硬件問(wèn)題。你還可以使用兩塊Arduino,進(jìn)行紅外無(wú)線通信。在一定環(huán)境下,即使接收模塊和發(fā)送模塊沒(méi)有相對(duì),紅外信號(hào)也可以靠物體反射進(jìn)行
。在以上程序中, 使用了for循環(huán),發(fā)送了3次Sony紅外編碼,這是因?yàn)樵赟ony、RC5、RC6協(xié)議中都規(guī)定,編碼要發(fā)送3次。IRremote庫(kù)還可以使用其他函數(shù),發(fā)送不同編碼的
紅外信號(hào),如使用sendNEC()發(fā)送NEC編碼的紅外信號(hào),使用sendPanasonic()發(fā)送松下編碼的紅外信號(hào)等。除了這些常見(jiàn)標(biāo)準(zhǔn)協(xié)議外,IRremote庫(kù)還支持發(fā)送自定義的原始編碼,在下面的項(xiàng)目中,
講給大家詳細(xì)講解。實(shí)驗(yàn):
家電設(shè)備除了用
控制Arduino外,
還可以使用Arduino發(fā)送紅外信號(hào)控制其他紅外
設(shè)備。l
實(shí)驗(yàn)所需器材Arduino
UNO、紅外一體接收模塊、紅外發(fā)送模塊、可紅外的家電及實(shí)現(xiàn)原理和設(shè)備中均 了各種功能的編碼。按下 上的不發(fā)送的信號(hào)后,設(shè)備中的程序即會(huì)運(yùn)行該信號(hào)編碼對(duì)應(yīng)的一個(gè) 之所以能 相應(yīng)的設(shè)備,是因?yàn)橥存I會(huì)發(fā)送不同編碼的紅外信號(hào),設(shè)備接收到程序。因此要控制一個(gè)電器,需要先知道這個(gè)電器各功能的對(duì)應(yīng)的紅外信號(hào)編碼。再使用Arduino與紅外發(fā)射模塊將需要的編碼信號(hào)發(fā)送給這個(gè)電器,便可以達(dá)到Arduino控制電器設(shè)備的目的。7.1.3所示的發(fā)送sony、NEC等協(xié)議但是很多家電廠商都有自己的編碼協(xié)議,且IRremote庫(kù)并不支持,對(duì)于這種情況IRremote庫(kù)還提供了一種以高低電平時(shí)間記錄原始編碼數(shù)據(jù)的方法。使用這個(gè)方法,即使不清楚信號(hào)的編碼協(xié)議,只要將這些數(shù)據(jù)記錄下來(lái),再通過(guò)紅外發(fā)射模塊發(fā)送出一模一樣的信號(hào),便可以達(dá)到控制家電設(shè)備的目的。為了讓IRremote庫(kù)可以應(yīng)對(duì) 的品牌、不同編碼的家電協(xié)議,
需要先對(duì)庫(kù)文件做如下修改:打開(kāi)Arduino
IDE安裝文件夾
>
libraries
>
IRremote下的IRremote.h文件,找到如下語(yǔ)句#define
RAWBUF
100
//
Length
of
raw
duration
buffer將其修改為#define
RAWBUF
255
//
Length
of
raw
duration
buffer并保存。接著使用以下程序獲取你家電的原始編碼數(shù)據(jù):程序后,打開(kāi)串口監(jiān)視器,并使用你的家電
向一體化紅外接收頭發(fā)送紅外信號(hào),隨意按下
上的按鍵,你會(huì)看到類(lèi)似圖7-8所示的輸出信息。這里我使用的空調(diào)
,要控制你的家電設(shè)備,你需要使用對(duì)應(yīng)的
,獲取其編碼。每次按下按鍵,Arduino都會(huì)輸出一長(zhǎng)串的數(shù)列,這些輸出數(shù)列便是以高低電平持續(xù)時(shí)間表示的紅外信號(hào)原始編碼數(shù)據(jù)。而括號(hào)中的244表示這個(gè)數(shù)列有244個(gè)項(xiàng)。每個(gè)數(shù)列的第一項(xiàng)都是不定值,可以直接刪去,刪去后,
余下的數(shù)據(jù)做成一個(gè)數(shù)組。例如,這里我將打開(kāi)空調(diào)的原始編碼做成了一個(gè)數(shù)組:接著
只要使用sendRaw()
函數(shù)將這個(gè)紅外信號(hào)數(shù)據(jù)發(fā)送出去即可。發(fā)送原始紅外編碼信號(hào)程序后,將紅外發(fā)射模塊對(duì)著
空調(diào),便可以打開(kāi)空調(diào)了。以上程序中irsend.sendRaw(open_button,243,38);的三
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級(jí)英語(yǔ)下冊(cè) 【詞形轉(zhuǎn)換 】 Unit1 How tall are you 題型專(zhuān)項(xiàng)訓(xùn)練 (含答案)(人教PEP)
- 人力資源招標(biāo)合同模板
- 2024年LED廣告制作服務(wù)購(gòu)銷(xiāo)合同
- 2024年工程總承監(jiān)理合同范本
- 臨沂大學(xué)《互換性與技術(shù)測(cè)量A》2021-2022學(xué)年第一學(xué)期期末試卷
- 臨沂大學(xué)《工業(yè)藥物分析》2021-2022學(xué)年第一學(xué)期期末試卷
- 臨沂大學(xué)《高速鐵路概論》2021-2022學(xué)年第一學(xué)期期末試卷
- 【機(jī)電實(shí)務(wù)】達(dá)為 教材精講班教案 81-第5章-5.2-建設(shè)用電及施工規(guī)定(二)
- 2024年工程設(shè)計(jì)合作合同
- 2024年山坪塘生態(tài)保護(hù)合同
- 人教版九年級(jí)數(shù)學(xué)下冊(cè)相似《相似三角形(第4課時(shí))》示范教學(xué)課件
- 2024年新高考試題分析及2025屆備考策略建議課件
- 義務(wù)教育地理2022年版課程標(biāo)準(zhǔn)考試題庫(kù)及答案
- 部編人教版道德與法治二年級(jí)上冊(cè)全冊(cè)教案
- 華為質(zhì)量回溯(根因分析與糾正預(yù)防措施)模板
- 中國(guó)融通筆試
- 2024年湖北省武漢市中考語(yǔ)文試卷真題(含答案逐題解析)
- 人教部編版八年級(jí)道德與法治上冊(cè):4.3《誠(chéng)實(shí)守信》教學(xué)設(shè)計(jì)1
- 2024年會(huì)計(jì)知識(shí)競(jìng)賽考試題庫(kù)及答案(共170題)
- 人教PEP版英語(yǔ)六上Unit 3《My weekend plan》(A Lets talk )說(shuō)課稿
- 《習(xí)作:這兒真美》( 教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論