1. 程式人生 > 實用技巧 >【雕爺學程式設計】Arduino動手做(71)---紅外遙控擴充套件模組

【雕爺學程式設計】Arduino動手做(71)---紅外遙控擴充套件模組

37款感測器與執行器的提法,在網路上廣泛流傳,其實Arduino能夠相容的感測器模組肯定是不止這37種的。鑑於本人手頭積累了一些感測器和執行器模組,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這裡準備逐一動手嘗試系列實驗,不管成功(程式走通)與否,都會記錄下來---小小的進步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種感測器模組系列實驗(資料程式碼+圖形程式設計+模擬程式設計)

實驗七十一:HX1838紅外無線遙控套件紅外擴充套件模組(遙控器+接收板)

紅外線
又稱紅外光波,在電磁波譜中,光波的波長範圍為0.01um~1000um。根據波長的不同可分為可見光和不可見光,波長為0.38um~0.76um的光波可為可見光,依次為紅、橙、黃、綠、青、藍、紫七種顏色。光波為0.01um~0.38um的光波為紫外光(線),波長為0.76um~1000um的光波為紅外光(線)。紅外光按波長範圍分為近紅外、中紅外、遠紅外、極紅外4類。紅外線遙控是利用近紅外光傳送遙控指令的,波長為0.76um~1.5um。用近紅外作為遙控光源,是因為目前紅外發射器件(紅外發光管)與紅外接收器件(光敏二極體、三極體及光電池)的發光與受光峰值波長一般為0.8um~0.94um,在近紅外光波段內,二者的光譜正好重合,能夠很好地匹配,可以獲得較高的傳輸效率及較高的可靠性。

紅外遙控
紅外線遙控是目前使用最廣泛的一種通訊和遙控手段。 由於紅外線遙控裝置具有體積小、 功耗低、 功能強、 成本低等特點, 因而, 繼彩電、 錄影機之後, 在錄音機、 音響裝置、 空凋機以及玩具等其它小型電器裝置上也紛紛採用紅外線遙控。 工業裝置中, 在高壓、 輻射、 有毒氣體、 粉塵等環境下, 採用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。紅外遙控的發射電路是採用紅外發光二極體來發出經過調製的紅外光波;紅外接收電路由紅外接收二極體、三極體或矽光電池組成,它們將紅外發射器發射的紅外光轉換為相應的電訊號,再送後置放大器。

VS/HX1838 VS1838和HX1838均為紅外接收頭,兩者的區別主要表現在接收距離上,vs1838的最大接收距離為18--20米,HX1838的最大接收距離為15米。
vs1838引數如下——工作電壓:2.7-5.5V,接收距離:18-20M,vs1838具有高靈敏度,抗光、電磁干擾能力強等特性。廣泛應該於機頂盒、DVD、AV、TV、空調等,是高檔電器的理想選擇。 HX1838引數如下——工作電壓:2.7~5.5V,工作電流:1.4mA,距離:15M,頻率:38K,角度:±45°,HX1838具有寬電壓適應、低功耗、高靈敏度、優良的抗干擾特性;廣泛應用於家用電器、空調、玩具等紅外遙控接收。 特性
  ●小型設計
  ●內建專用IC
  ●寬角度及長距離接收
  ●抗干撓能力強
  ●能抵擋環境干撓光線
  ●低電壓工作
應用
  ■視聽器材(音箱,電視,錄影機,碟機)

  ■家庭電器(冷氣機,電風扇,電燈)
  ■其它紅外線遙控產品 紅外的簡單發射接收原理
在發射端,輸入訊號經放大後送入紅外發射管發射,在接收端,接收管收到紅外訊號後,由放大器放大處理後還原成訊號,這就是紅外的簡單發射接收原理。 紅外遙控系統結構
紅外遙控系統的主要部分為調製、發射和接收。紅外遙控是以調製的方式發射資料,就是把資料和一定頻率的載波進行“與”操作,這樣既可以提高發射效率又可以降低電源功耗。調製載波頻率一般在30khz到60khz之間,大多數使用的是38kHz,佔空比1/3的方波,如圖2所示,這是由發射端所使用的455kHz晶振決定的。在發射端要對晶振進行整數分頻,分頻係數一般取12,所以455kHz÷12≈37.9kHz≈38kHz。38KH載波發射(完整的發射)如下圖。 Arduino紅外無線遙控擴充套件套件由Mini超薄紅外遙控器和38KHz紅外接收模組組成,Mini超薄紅外遙控器具有17個功能鍵,發射距離最遠可達8米,非常適合在室內操控各種裝置。紅外接收模組可接收標準38KHz調製的遙控器訊號,通過對Arduino進行程式設計,即可實現對遙控器訊號的解碼操作,從而可製作各種遙控機器人以及互動作品。 超薄紅外遙控引數
1.CR2025環保鈕釦電池,容量160mah
2.發射距離:8m以上(具體和周圍環境、接收端的靈敏度等因素有關)
3.有效角度:60度
4.面貼材料:0.125mmPET,有效壽命2萬次。
5.品質穩定,價效比高
6.靜態電流3-5uA,動態電流3-5mA。
/*

【Arduino】168種感測器模組系列實驗(資料程式碼+圖形程式設計+模擬程式設計)

實驗七十一:HX1838紅外無線遙控套件紅外擴充套件模組(遙控器+接收板)

*/



#include <IRremote.h>

int PIN_RECV = 7;

IRrecv irrecv(PIN_RECV);

decode_results results;

void setup()

{

 Serial.begin(9600);

 irrecv.enableIRIn();

}

void loop() {

 if (irrecv.decode(&results)) {

  Serial.println(results.value);

  irrecv.resume();

 }

}

  

/*

【Arduino】168種感測器模組系列實驗(資料程式碼+圖形程式設計+模擬程式設計)

實驗七十一:HX1838紅外無線遙控套件紅外擴充套件模組(遙控器+接收板)

程式之二,1和2鍵控制板載13腳LED燈的亮暗

*/



#include <IRremote.h>

int RECV_PIN = 7;

int LED_PIN = 13;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()

{

 Serial.begin(9600);

 irrecv.enableIRIn(); // Start the receiver

 pinMode(LED_PIN, OUTPUT);

 digitalWrite(LED_PIN, HIGH);

}

void loop() {

 if (irrecv.decode(&results)) {

  Serial.println(results.value, HEX);

  if (results.value == 0xFFA25D) //開燈的值

  {

   digitalWrite(LED_PIN, LOW);

  } else if (results.value == 0xFF629D) //關燈的值

  {

   digitalWrite(LED_PIN, HIGH);

  }

  irrecv.resume(); // Receive the next value

 }

 delay(100);

}

  

/*

【Arduino】168種感測器模組系列實驗(資料程式碼+圖形程式設計+模擬程式設計)

實驗七十一:HX1838紅外無線遙控套件紅外擴充套件模組(遙控器+接收板)

程式之三,查詢紅外數字與HEX編碼值

*/



#include <IRremote.h>

int PIN_RECV = 7;

IRrecv irrecv(PIN_RECV);

decode_results results;

void setup()

{

 Serial.begin(9600);

 irrecv.enableIRIn();

}

void loop() {

 if (irrecv.decode(&results)) {

  Serial.print("數字編碼= "); 

  Serial.println(results.value);

  irrecv.resume();

  Serial.print("HEX編碼= ");      

  Serial.println(results.value, HEX); 

  Serial.print("編碼位數= ");      

  Serial.println(results.bits); 

 }

 delay(600);

}

  

實驗場景圖

實驗開源圖形程式設計(Mind+、編玩邊學)

實驗開源模擬程式設計(linkboy3.7)