“(SKU:RB-03T004)紅外發(fā)射模塊”的版本間的差異

來自ALSROBOT WiKi
跳轉至: 導航、 搜索
第1行: 第1行:
?
<br/>
 
 
[[文件:3232.jpg|500px|有框|右]]
 
[[文件:3232.jpg|500px|有框|右]]
?
==概述==
+
==產品概述==
?
:由于在遠距離傳輸過程中使用連接線可能會導致傳輸數(shù)據(jù)錯誤。2010年最新推出的IR&LED Module 是一款Arduino兼容的紅外線發(fā)射傳感器,可通過對Arduino進行編程發(fā)射出38KHz 調制信號,可適應市面上各種紅外接收頭,以便IR Receiver Module 38KHz 紅外線接收傳感器能接收到,從而實現(xiàn)紅外無線通訊。
+
:由于在遠距離傳輸過程中使用連接線可能會導致傳輸數(shù)據(jù)錯誤。IR&LED Module 是一款Arduino兼容的紅外線發(fā)射傳感器,可通過對Arduino進行編程發(fā)射出38KHz 調制信號,可適應市面上各種紅外接收頭,以便IR Receiver Module 38KHz 紅外線接收傳感器能接收到,從而實現(xiàn)紅外無線通訊。 紅外發(fā)射模塊上的核心器件是紅外發(fā)射管,其廣泛使用在紅外遙控設備上。該模塊有3PIN接口,可以方便的通過Arduino等控制板實現(xiàn)紅外遙控、通訊的功能。紅外發(fā)射管是一個能發(fā)射出特定波長紅外光的二極管。紅外遙控器就是使用的紅外發(fā)射頭發(fā)出一連串的二進制脈沖碼信號。為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經紅外發(fā)射二極管發(fā)射頭發(fā)射出去。
?
==性能參數(shù)==
+
==規(guī)格參數(shù)==
?
# 供電電壓:  5V
+
* 供電電壓:5V
?
# 工作環(huán)境:-25~+85℃  
+
* 工作環(huán)境:-25~+85℃  
?
# 儲存溫度:-30~+100 ℃  
+
* 儲存溫度:-30~+100 ℃  
?
# 波長: 940nm
+
* 波長:940nm
?
# 模塊尺寸: 13.7mm×27.8mm  
+
* 模塊尺寸:13.7mm×27.8mm  
?
# 模塊重量: 1g
+
* 模塊重量:1g
 +
* 信號類型:數(shù)字信號
 +
* 紅外中心波長:約850nm-940nm
 +
* 紅外發(fā)射角:約20度
 +
* 紅外發(fā)射距離:約1.3米 (5V 38Khz)
 
==引腳定義==
 
==引腳定義==
 
:傳感器引腳的定義是
 
:傳感器引腳的定義是
第18行: 第21行:
 
==連接示意圖 ==
 
==連接示意圖 ==
 
[[文件:hongwaifashejiexian01.jpg|700px|有框|居中]]
 
[[文件:hongwaifashejiexian01.jpg|700px|有框|居中]]
?
 
 
==模塊測試 ==
 
==模塊測試 ==
?
我們使用Arduino控制器來做個測試,要用到硬件設備如下:
+
=== 看見紅外線 ===
?
# Arduino控制器×2
+
試驗目的:1秒間隔發(fā)射紅外線<br/>
?
# Arduino 傳感器擴展板×2
+
====使用硬件====
?
# 紅外發(fā)射模塊×1和紅外接收模塊×1
+
* Carduino UNO 控制器*1個
?
# 電位計模塊×1和 LED 發(fā)光模塊×1
+
* V5.0傳感器擴展板*1個
?
# 通用3P傳感器連接線×4
+
* 紅外發(fā)射傳感器*1個
?
# USB 數(shù)據(jù)通信線×2
+
* 具備攝像頭的手機*1部
?
[[文件:3232-4.jpg|500px|有框|居中]]
+
====連線方法====
?
接線方法:
+
將紅外發(fā)射模塊接在Carduino UNO控制器的數(shù)字3引腳
?
{|border="1" cellspacing="0" align="center" cellpadding="5" width="400px"
+
====例子程序====
?
|-
+
<pre style="color:blue">
?
|align="center"|產品
+
void setup() {
?
|align="center"|UNO引腳
+
  // initialize digital pin 13 as an output.
?
|-
+
  pinMode(3, OUTPUT);
?
|align="center"|紅外發(fā)射模塊
+
?
|align="center"|數(shù)字接口2
+
?
|-
+
?
|align="center"|紅外接收模塊
+
?
|align="center"|數(shù)字接口2
+
?
|-
+
?
|align="center"|旋轉角度電位計
+
?
|align="center"|模擬接口0
+
?
|-
+
?
|align="center"|LED模塊
+
?
|align="center"|數(shù)字接口9
+
?
|}
+
?
<br>
+
?
:將發(fā)送部分代碼編譯后下載到作為發(fā)送部分的Arduino里,將接收部分代碼編譯后下載到作為接收部分的Arduino里,就可以在串口助手窗口上顯示接收到的當前值(注:串口助手波特率調到115200 )。Arduino實驗代碼如下。
+
?
:發(fā)送部分程序:
+
?
<pre style='color:blue'>#define ADD 0x00
+
?
int IR_S = 2;    // 定義數(shù)字口2 為發(fā)射模塊接口
+
?
int a;
+
?
void setup()  
+
?
{  
+
?
pinMode(IR_S, OUTPUT); //定義IR_S為輸出模式
+
?
Serial.begin(115200); //定義頻率為115200
+
 
}
 
}
?
void loop()  
+
// the loop function runs over and over again forever
?
{  
+
void loop() {
?
    uint8_t dat,temp;    
+
   digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
?
{   
+
  delay(1000);             // wait for a second
?
      a=analogRead(0); // 讀取模擬口0 的值
+
  digitalWrite(3, LOW);   // turn the LED off by making the voltage LOW
?
      temp =a/4;
+
  delay(1000);             // wait for a second
?
      Serial.println(temp,DEC ); // 將讀取的數(shù)值打印到串口上
+
}
?
      IR_Send38KHZ(280,1);//發(fā)送9ms 的起始碼
+
</pre>
?
      IR_Send38KHZ(140,0);//發(fā)送4.5ms 的結果碼
+
====試驗效果====
?
   
+
程序上傳到Carduino UNO控制器后,將本模塊放置到暗環(huán)境下(可放入紙盒或用手遮擋),用手機攝像頭對準紅外發(fā)射頭前端,并在照相/攝像功能中仔細觀察,可以看到有藍紫色光在緩慢閃爍。注意在攝像范圍內要整體處于暗光狀態(tài),若有較亮的光則無法觀察到。
?
      IR_Sendcode(ADD);//用戶識別碼
+
===紅外遙控/通訊===
?
      dat=~ADD;
+
紅外遙控或通訊在技術上可以采用載波方式和非載波方式,所謂載波方式就是將要發(fā)送的信號調制到較高的載波頻率上,以達到抗干擾、抗衰減等目的。由于紅外線本身存在于自然光中,因此家電的紅外遙控普遍使用38kHz的載波來達到抗干擾的目的。
?
      IR_Sendcode(dat);//用戶識別碼反嗎
+
====使用硬件====
?
      IR_Sendcode(temp);// 操作碼
+
* Carduino UNO控制器*2個
?
      dat=~temp;
+
* V5.0傳感器擴展板*2個
?
      IR_Sendcode(dat);//操作碼反碼
+
* 紅外接收模塊*1個
?
   
+
* 紅外發(fā)射模塊*1個
?
      IR_Send38KHZ(21,1);// 發(fā)送結束碼
+
====硬件接線====
?
    }
+
* 紅外發(fā)射模塊接在Carduino UNO的數(shù)字3腳
?
    delay(200);
+
* 紅外接收模塊接在Carduino UNO的數(shù)字11腳
?
}   
+
====測試程序====
 +
=====發(fā)射端程序=====
 +
<pre style="color:blue">
 +
#include <IRremote.h>
 +
IRsend irsend;
 +
void setup()
 +
{
 +
}
 +
  void loop() {
 
   
 
   
?
void IR_Send38KHZ(int x,int y) //產生38KHZ紅外脈沖
+
    irsend.sendRC5(0x0, 8); //send 0x0 code (8 bits)
?
+
    delay(200);
?
for(int i=0;i<x;i++)//15=386US
+
    irsend.sendRC5(0x1, 8);  
?
  { 
+
    delay(200);
?
      if(y==1)  
+
  }
?
        {
+
  </pre>
?
      digitalWrite(IR_S,1);  
+
=====接收端程序=====
?
          delayMicroseconds(9);
+
<pre style="color:blue">
?
          digitalWrite(IR_S,0);  
+
#include <IRremote.h>
?
          delayMicroseconds(9);  
+
  const int RECV_PIN = 11;
?
        }
+
  const int LED_PIN = 13;
?
      else  
+
IRrecv irrecv(RECV_PIN);
?
        {
+
decode_results results;
?
          digitalWrite(IR_S,0);
+
void setup()
?
          delayMicroseconds(20);
+
{
?
        }  
+
  Serial.begin(9600);
?
  }                                                           
+
  irrecv.enableIRIn(); // Start the receiver
?
}
+
}
?
 
+
void loop()  
?
void IR_Sendcode(uint8_t x) 
+
{  
?
{
+
  if (irrecv.decode(&results))  
?
    for(int i=0;i<8;i++)
+
  {
?
    {
+
    if ( results.bits > 0 )
?
      if((x&0x01)==0x01)
+
    {
?
        {
+
      int state;
?
            IR_Send38KHZ(23,1);
+
      if ( 0x1 == results.value )
?
            IR_Send38KHZ(64,0);             
+
      {
?
        }
+
        state = HIGH;
?
        else  
+
      }
?
        {
+
      else
?
            IR_Send38KHZ(23,1);
+
      {
?
            IR_Send38KHZ(21,0); 
+
      state = LOW;
?
        }
+
      }
?
        x=x>>1;
+
      digitalWrite( LED_PIN, state );
?
    } 
+
    }
?
} </pre>
+
    irrecv.resume();       // prepare to receive the next value
?
:此代碼的功能是從模擬口0 讀取電位計的值,并通過紅外發(fā)射頭將讀取的數(shù)值發(fā)送出去。
+
  }
?
接收部分程序:
+
}
?
<pre style='color:blue'>#define IR_LED  2  //IR 接收數(shù)字口2
+
</pre>
?
#define MAX  128
+
==產品相關推薦==
?
#define MICRO_STEP 10
+
[[文件:erweima.png|230px|無框|右]]
?
#define IDLE_PULSE 4000
+
===產品購買地址===
?
unsigned long pulses[MAX];
+
[http://m.gharee.com/goods.php?id=155 紅外發(fā)射模塊]<br/>
?
unsigned char IRCOM[7];
+
===周邊產品推薦===
?
unsigned long z;
+
[http://www.alsrobot.cn/goods-151.html 紅外接收遙控套裝]<br/>
?
int w;
+
[http://m.gharee.com/goods-153.html 紅外接收發(fā)射套裝]<br/>
?
byte f=B00000000; // 定義f 為位
+
[http://m.gharee.com/goods-155.html 紅外發(fā)射模塊]<br/>
?
int n;  
+
===相關問題解答===
?
int ledpin=9; // 定義數(shù)字口9 為LED 模塊接口
+
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=2617&fromuid=10780 紅外接收發(fā)射套裝的編碼解碼技術問題]<br/>
?
void setup()  
+
===相關學習資料===
?
{  
+
[http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2 視頻: 紅外無線發(fā)射接收之顏色識別系統(tǒng)]<br/>
?
  pinMode(IR_LED, INPUT);
+
[http://v.youku.com/v_show/id_XODc4NDg2NDYw.html?from=y1.7-2 視頻: 紅外無線傳輸之旋轉電位計控制LED燈]<br/>
?
  Serial.begin(115200);  
+
[http://www.makerspace.cn/portal.php 奧松機器人技術論壇]<br/>
?
  pinMode(ledpin,OUTPUT); //定義ledpin 為輸出模式
+
?
}  
+
?
                                                           
+
?
void loop()  
+
?
{  
+
?
  if( digitalRead(IR_LED) == LOW)  
+
?
  {  
+
?
    // 開始接收數(shù)據(jù)
+
?
        int count = 0;
+
?
        int exit = 0;
+
?
    while(!exit)  
+
?
    {  
+
?
      while( digitalRead(IR_LED) == LOW )
+
?
        delayMic roseconds(MICRO_STEP);
+
?
      unsigned long start = micros();
+
?
      int max_high = 0;  
+
?
      while( digitalRead(IR_LED) == HIGH )  
+
?
      {  
+
?
        delayMic roseconds(MICRO_STEP);
+
?
        max_high += MICRO_STEP;  
+
?
        if( max_high > IDLE_PULSE )
+
?
        {  
+
?
          exit = 1;  
+
?
          break;
+
?
        }
+
?
      }
+
?
      unsigned long duration = micros() - start;
+
?
      pulses[count++] = duration;
+
?
    }
+
?
    for(int i=3; i<4; i++)
+
?
    {
+
?
      for(int j=0;j<8;j++)
+
?
      {
+
?
        if(pulses[ i*8+j+1] < IDLE_PULSE)
+
?
        {
+
?
            IRCOM[i]=IRCOM [i] >> 1;           
+
?
            if((pulses[i*8+j+1])>1000)
+
?
              {IRCOM[i] = IRCOM[i] | 0x80;}           
+
?
        }
+
?
      z= pulses[i*8+j+1];
+
?
/***************************************************/  
+
?
    //將接收到的脈沖數(shù)據(jù)轉換成十進制                                                                   
+
?
/***************************************************/ 
+
?
      if(z<800)
+
?
          w=10000000;  //如果Z 小于800  w=10000000
+
?
      else
+
?
          w=00000000;  //如果Z 大于800  w=00000000
+
?
      f=f>>1;        // 將f 右移1 位
+
?
      f=f+w;     
+
?
/***************************************************/  
+
?
    }
+
?
    }
+
?
  n=int(f);
+
?
  Serial.print(n);// 將接收到的數(shù)據(jù)打印到串口上
+
?
  analogWrite(ledpin,n); //將接收到的數(shù)據(jù)寫入ledpin 接口,控制LED 亮度
+
?
  }
+
?
} </pre>
+
?
:此代碼的功能是通過紅外接收頭接收發(fā)送部分發(fā)送出的電位計的值,將讀到的值來控制LED的亮度,并通過串口助手顯示當前接收到的值。如下圖所示左側串口助手(串口號為:117 )顯示的是紅外發(fā)送部分當前發(fā)送出的電位計的值,右側串口助手(串口號為:88)顯示的是紅外接收部分接收到的數(shù)值。這樣就實現(xiàn)了通過旋轉角度電位計模塊無線控制接收端的LED亮度。
+
?
[[文件:3232-5.jpg|500px|有框|居中]]
+
?
 
+
?
==相關推薦==
+
?
購買地址:[http://www.alsrobot.cn/goods.php?id=155 紅外發(fā)射模塊]<br/>
+
?
論壇地址:[http://www.makerspace.cn/portal.php 奧松機器人技術論壇]
+

2015年9月28日 (一) 15:34的版本

3232.jpg

目錄

產品概述

由于在遠距離傳輸過程中使用連接線可能會導致傳輸數(shù)據(jù)錯誤。IR&LED Module 是一款Arduino兼容的紅外線發(fā)射傳感器,可通過對Arduino進行編程發(fā)射出38KHz 調制信號,可適應市面上各種紅外接收頭,以便IR Receiver Module 38KHz 紅外線接收傳感器能接收到,從而實現(xiàn)紅外無線通訊。 紅外發(fā)射模塊上的核心器件是紅外發(fā)射管,其廣泛使用在紅外遙控設備上。該模塊有3PIN接口,可以方便的通過Arduino等控制板實現(xiàn)紅外遙控、通訊的功能。紅外發(fā)射管是一個能發(fā)射出特定波長紅外光的二極管。紅外遙控器就是使用的紅外發(fā)射頭發(fā)出一連串的二進制脈沖碼信號。為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經紅外發(fā)射二極管發(fā)射頭發(fā)射出去。

規(guī)格參數(shù)

  • 供電電壓:5V
  • 工作環(huán)境:-25~+85℃
  • 儲存溫度:-30~+100 ℃
  • 波長:940nm
  • 模塊尺寸:13.7mm×27.8mm
  • 模塊重量:1g
  • 信號類型:數(shù)字信號
  • 紅外中心波長:約850nm-940nm
  • 紅外發(fā)射角:約20度
  • 紅外發(fā)射距離:約1.3米 (5V 38Khz)

引腳定義

傳感器引腳的定義是
  • S:輸出信號
  • +:電源(VCC)
  • -:地(GND)
Hongwaifashe01.jpg

連接示意圖

Hongwaifashejiexian01.jpg

模塊測試

看見紅外線

試驗目的:1秒間隔發(fā)射紅外線

使用硬件

  • Carduino UNO 控制器*1個
  • V5.0傳感器擴展板*1個
  • 紅外發(fā)射傳感器*1個
  • 具備攝像頭的手機*1部

連線方法

將紅外發(fā)射模塊接在Carduino UNO控制器的數(shù)字3引腳

例子程序

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(3, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(3, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

試驗效果

程序上傳到Carduino UNO控制器后,將本模塊放置到暗環(huán)境下(可放入紙盒或用手遮擋),用手機攝像頭對準紅外發(fā)射頭前端,并在照相/攝像功能中仔細觀察,可以看到有藍紫色光在緩慢閃爍。注意在攝像范圍內要整體處于暗光狀態(tài),若有較亮的光則無法觀察到。

紅外遙控/通訊

紅外遙控或通訊在技術上可以采用載波方式和非載波方式,所謂載波方式就是將要發(fā)送的信號調制到較高的載波頻率上,以達到抗干擾、抗衰減等目的。由于紅外線本身存在于自然光中,因此家電的紅外遙控普遍使用38kHz的載波來達到抗干擾的目的。

使用硬件

  • Carduino UNO控制器*2個
  • V5.0傳感器擴展板*2個
  • 紅外接收模塊*1個
  • 紅外發(fā)射模塊*1個

硬件接線

  • 紅外發(fā)射模塊接在Carduino UNO的數(shù)字3腳
  • 紅外接收模塊接在Carduino UNO的數(shù)字11腳

測試程序

發(fā)射端程序
#include <IRremote.h>
 IRsend irsend;
 void setup()
 {
 }
 void loop() {
 
     irsend.sendRC5(0x0, 8); //send 0x0 code (8 bits)
     delay(200);
     irsend.sendRC5(0x1, 8); 
     delay(200);
 }
 
接收端程序
#include <IRremote.h>
 const int RECV_PIN = 11;
 const int LED_PIN = 13;
 IRrecv irrecv(RECV_PIN);
 decode_results results;
 void setup()
 {
   Serial.begin(9600);
   irrecv.enableIRIn(); // Start the receiver
 }
 void loop() 
 {    
   if (irrecv.decode(&results)) 
   {
     if ( results.bits > 0 )
     {
       int state;
       if ( 0x1 == results.value )	
       {		
         state = HIGH;
       }
       else
       {
       	state = LOW;
       }	
       digitalWrite( LED_PIN, state );			
     }
     irrecv.resume();        // prepare to receive the next value
   }
 }

產品相關推薦

Erweima.png

產品購買地址

紅外發(fā)射模塊

周邊產品推薦

紅外接收遙控套裝
紅外接收發(fā)射套裝
紅外發(fā)射模塊

相關問題解答

紅外接收發(fā)射套裝的編碼解碼技術問題

相關學習資料

視頻: 紅外無線發(fā)射接收之顏色識別系統(tǒng)
視頻: 紅外無線傳輸之旋轉電位計控制LED燈
奧松機器人技術論壇