“(SKU:RB-03T005)紅外接收模塊”的版本間的差異
來(lái)自ALSROBOT WiKi
第15行: | 第15行: | ||
* +:電源(VCC) | * +:電源(VCC) | ||
* -:地(GND) | * -:地(GND) | ||
? | [[文件:324325-2.jpg|500px|有框| | + | [[文件:324325-2.jpg|500px|有框|居中]] |
==4.連接示意圖 == | ==4.連接示意圖 == | ||
? | [[文件:324325-3.jpg|500px|有框| | + | [[文件:324325-3.jpg|500px|有框|居中]] |
==模塊測(cè)試 == | ==模塊測(cè)試 == | ||
我們使用Arduino控制器來(lái)做個(gè)測(cè)試,要用到硬件設(shè)備如下: | 我們使用Arduino控制器來(lái)做個(gè)測(cè)試,要用到硬件設(shè)備如下: | ||
第26行: | 第26行: | ||
# 電位計(jì)模塊×1和 LED 發(fā)光模塊×1 | # 電位計(jì)模塊×1和 LED 發(fā)光模塊×1 | ||
# USB 數(shù)據(jù)通信線×2 | # USB 數(shù)據(jù)通信線×2 | ||
? | [[文件:324325-4.jpg|500px|有框| | + | [[文件:324325-4.jpg|500px|有框|居中]] |
:如圖所示,使用傳感器連接線將電位計(jì)模塊連接到作為發(fā)射部分的Arduino傳感器擴(kuò)展板的模擬口0 上,紅外發(fā)射頭連接到 Arduino傳感器擴(kuò)展板的數(shù)字口2 上。然后使用傳感器連接線將紅外發(fā)射頭連接到作為接收部分的Arduino傳感器擴(kuò)展板的數(shù)字口2上,將LED 發(fā)光模塊連接到Arduino傳感器擴(kuò)展板的數(shù)字口9 上。 | :如圖所示,使用傳感器連接線將電位計(jì)模塊連接到作為發(fā)射部分的Arduino傳感器擴(kuò)展板的模擬口0 上,紅外發(fā)射頭連接到 Arduino傳感器擴(kuò)展板的數(shù)字口2 上。然后使用傳感器連接線將紅外發(fā)射頭連接到作為接收部分的Arduino傳感器擴(kuò)展板的數(shù)字口2上,將LED 發(fā)光模塊連接到Arduino傳感器擴(kuò)展板的數(shù)字口9 上。 | ||
:將發(fā)送部分代碼編譯后下載到作為發(fā)送部分的Arduino里,將接收部分代碼編譯后下載到作為接收部分的Arduino里,就可以在串口助手窗口上顯示接收到的當(dāng)前值(注:串口助手波特率調(diào)到115200 )。Arduino實(shí)驗(yàn)代碼如下。 | :將發(fā)送部分代碼編譯后下載到作為發(fā)送部分的Arduino里,將接收部分代碼編譯后下載到作為接收部分的Arduino里,就可以在串口助手窗口上顯示接收到的當(dāng)前值(注:串口助手波特率調(diào)到115200 )。Arduino實(shí)驗(yàn)代碼如下。 | ||
第169行: | 第169行: | ||
:此部分代碼功能是通過(guò)紅外接收頭接收發(fā)送部分發(fā)送出的電位計(jì)的值來(lái)控制LED的亮度變化并通過(guò)串口助手顯示當(dāng)前接收到的值。如下圖所示左側(cè)串口助手(串口號(hào)為:117 )顯示的是紅外發(fā)送部分當(dāng)前發(fā)送出的電位計(jì)的值,右側(cè)串口助手(串 | :此部分代碼功能是通過(guò)紅外接收頭接收發(fā)送部分發(fā)送出的電位計(jì)的值來(lái)控制LED的亮度變化并通過(guò)串口助手顯示當(dāng)前接收到的值。如下圖所示左側(cè)串口助手(串口號(hào)為:117 )顯示的是紅外發(fā)送部分當(dāng)前發(fā)送出的電位計(jì)的值,右側(cè)串口助手(串 | ||
? | [[文件:324325-5.jpg|500px|有框| | + | [[文件:324325-5.jpg|500px|有框|居中]] |
→購(gòu)買(mǎi)地址 紅外發(fā)射模塊 http://lifestyle201.com/goods.php?id=155] | →購(gòu)買(mǎi)地址 紅外發(fā)射模塊 http://lifestyle201.com/goods.php?id=155] |
2014年10月9日 (四) 16:12的版本
目錄 |
概述
- IR Receiver Module是一款A(yù)rduino兼容的38KHz紅外線接收模塊,可接收標(biāo)準(zhǔn)38KHz調(diào)制的遙控器信號(hào),通過(guò)對(duì)Arduino進(jìn)行編程,即可實(shí)現(xiàn)對(duì)遙控器信號(hào)的解碼操作??墒褂肁rduino制作一款帶學(xué)習(xí)功能的萬(wàn)能遙控器。
性能參數(shù)
- 供電電壓: 5V
- 工作環(huán)境: -25~+85℃
- 儲(chǔ)存溫度: -30~+100 ℃
- 接收頻率: 38KHz
- 模塊尺寸: 13.7mm×27.8mm
- 模塊重量: 2g
引腳定義
傳感器引腳的定義是
- S:輸出信號(hào)
- +:電源(VCC)
- -:地(GND)
4.連接示意圖
模塊測(cè)試
我們使用Arduino控制器來(lái)做個(gè)測(cè)試,要用到硬件設(shè)備如下:
- Arduino控制器×2
- Arduino 傳感器擴(kuò)展板×2
- 紅外發(fā)射模塊×1和紅外接收模塊×1
- 電位計(jì)模塊×1和 LED 發(fā)光模塊×1
- 電位計(jì)模塊×1和 LED 發(fā)光模塊×1
- USB 數(shù)據(jù)通信線×2
- 如圖所示,使用傳感器連接線將電位計(jì)模塊連接到作為發(fā)射部分的Arduino傳感器擴(kuò)展板的模擬口0 上,紅外發(fā)射頭連接到 Arduino傳感器擴(kuò)展板的數(shù)字口2 上。然后使用傳感器連接線將紅外發(fā)射頭連接到作為接收部分的Arduino傳感器擴(kuò)展板的數(shù)字口2上,將LED 發(fā)光模塊連接到Arduino傳感器擴(kuò)展板的數(shù)字口9 上。
- 將發(fā)送部分代碼編譯后下載到作為發(fā)送部分的Arduino里,將接收部分代碼編譯后下載到作為接收部分的Arduino里,就可以在串口助手窗口上顯示接收到的當(dāng)前值(注:串口助手波特率調(diào)到115200 )。Arduino實(shí)驗(yàn)代碼如下。
- 發(fā)送部分程序:
#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() { uint8_t dat,temp; { a=analogRead(0); // 讀取模擬口0 的值 temp =a/4; Serial.println(temp,DEC ); // 將讀取的數(shù)值打印到串口上 IR_Send38KHZ(280,1);//發(fā)送9ms 的起始碼 IR_Send38KHZ(140,0);//發(fā)送4.5ms 的結(jié)果碼 IR_Sendcode(ADD);//用戶(hù)識(shí)別碼 dat=~ADD; IR_Sendcode(dat);//用戶(hù)識(shí)別碼反嗎 IR_Sendcode(temp);// 操作碼 dat=~temp; IR_Sendcode(dat);//操作碼反碼 IR_Send38KHZ(21,1);// 發(fā)送結(jié)束碼 } delay(200); } void IR_Send38KHZ(int x,int y) //產(chǎn)生38KHZ紅外脈沖 { for(int i=0;i<x;i++)//15=386US { if(y==1) { digitalWrite(IR_S,1); delayMicroseconds(9); digitalWrite(IR_S,0); delayMicroseconds(9); } else { digitalWrite(IR_S,0); delayMicroseconds(20); } } } void IR_Sendcode(uint8_t x) { for(int i=0;i<8;i++) { if((x&0x01)==0x01) { IR_Send38KHZ(23,1); IR_Send38KHZ(64,0); } else { IR_Send38KHZ(23,1); IR_Send38KHZ(21,0); } x=x>>1; } }
- 此代碼的功能是從模擬口0 讀取電位計(jì)的值,并通過(guò)紅外發(fā)射頭將讀取的數(shù)值發(fā)送出去。
接收部分程序:
#define IR_LED 2 //IR 接收數(shù)字口2 #define MAX 128 #define MICRO_STEP 10 #define IDLE_PULSE 4000 unsigned long pulses[MAX]; unsigned char IRCOM[7]; unsigned long z; int w; byte f=B00000000; // 定義f 為位 int n; int ledpin=9; // 定義數(shù)字口9 為L(zhǎng)ED 模塊接口 void setup() { pinMode(IR_LED, INPUT); Serial.begin(115200); pinMode(ledpin,OUTPUT); //定義ledpin 為輸出模式 } void loop() { if( digitalRead(IR_LED) == LOW) { // 開(kāi)始接收數(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ù)轉(zhuǎn)換成十進(jìn)制 /***************************************************/ 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ù)寫(xiě)入ledpin 接口,控制LED 亮度 } }
- 此部分代碼功能是通過(guò)紅外接收頭接收發(fā)送部分發(fā)送出的電位計(jì)的值來(lái)控制LED的亮度變化并通過(guò)串口助手顯示當(dāng)前接收到的值。如下圖所示左側(cè)串口助手(串口號(hào)為:117 )顯示的是紅外發(fā)送部分當(dāng)前發(fā)送出的電位計(jì)的值,右側(cè)串口助手(串
→購(gòu)買(mǎi)地址 紅外發(fā)射模塊 http://lifestyle201.com/goods.php?id=155]