色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何制作基于Arduino的IR接收器?

科技觀察員 ? 來源:英銳恩 ? 作者:英銳恩 ? 2023-07-10 14:20 ? 次閱讀

在本文中,英銳恩單片機開發工程師分享了一個使用紅外遙控器控制繼電器開關的案例。紅外(IR)通信技術早在WiFi和藍牙之前就已經存在,它仍然是實現典型家庭自動化系統主要組件的關鍵組件。例如,IR技術仍用于無線耳機,家庭安全系統中的入侵檢測以及手持遙控器中,用于控制家庭娛樂系統(電視,DVD,音箱等),空調裝置和其他家用電器。由于紅外技術需要在發射器和接收器單元之間形成視線,因此它只能用于連接短距離的設備,例如在同一房間。

在這里,將展示如何制作基于Arduino的IR接收器,以解碼來自TV/DVD遙控器的IR信號。根據與遙控器上特定按鈕對應的解碼值,我們將對Arduino進行編程以控制多個繼電器開關。

電路設置

遙控器發送的紅外信號很容易受到附近其他紅外源(例如加熱器和白熾燈)的干擾。因此,為了使接收器區分IR信號和所有其他紅外噪聲源,已發射的IR信號被調制。對于調制,需要穩定的載波頻率(通常為30–60

kHz),其中38Khz是最常用的載波頻率。盡管有幾種數字調制技術,但大多數現代消費類電子產品都使用幅移鍵控(ASK)來設計IR遙控器。在ASK中,載波的幅度根據數字輸入信號而變化。邏輯1由一定幅度的載波信號表示,而邏輯0通過將載波幅度更改為零(或將其關閉)表示。

在此方案中,我們將使用來自電視遙控器的IR信號來控制多個繼電器開關。為此,我們需要一個IR接收器電路,該電路將解調電視遙控器發送的IR信號。解調后的數字輸出可以由Arduino直接解釋。

TSOP1740紅外接收器內置了該方案的接收電路。TSOP17XX系列是小型接收器,具有集成在一個封裝中的光電探測器和前置放大器,可以用于紅外遙控系統。內部還使用了帶通濾波器,積分器級和自動增益控制來抑制有害噪聲。名稱的后兩位(XX)代表帶通的中心頻率。因此,TSOP1740適用于40

KHz的調制IR信號。

下面顯示的是該方案所需的完整電路設置。TSOP17340的解調后輸出將輸出到Arduino引腳D11。在此演示中使用了一個雙繼電器控制板。兩個繼電器的控制引腳(IN1和IN2)由Arduino的D6和D7

I/O引腳驅動。整個電路在5V下工作。

circuit.png

此方案中使用的繼電器板具有光耦合器,用于在輸入控制引腳和輸出繼電器驅動器電路之間進行電氣隔離。這兩個繼電器單元的板載驅動器電路可在低電平有效輸入下工作。這意味著必須將IN引腳拉低以激活繼電器。以下電路描述了繼電器控制邏輯的工作方式。同樣的電路也適用于第二繼電器單元。跳線JP1允許你為輸出側(繼電器及其晶體管驅動器)選擇單獨的電源(在板上標記為JD-VCC)。如果要為整個電路使用相同的5V電源,則需要在VCC和JD-VCC引腳之間放置一個并聯跳線。從電路圖中可以很容易地看出,輸入端的邏輯0接通了光耦合器,然后激活了繼電器。

relayboard.jpg

硬件設置完成后,我們現在將對Arduino

Nano進行編程,以接收TSOP1738解調后的輸出并解釋遙控器上各個按鈕按下的代碼。不同制造商設計了許多不同的紅外協議標準或數據格式,供消費類電子產品使用。最常用的協議是Philips的RC-5和RC-6,Sony的SIRC,NEC,JVC。這些協議中的每一種都有自己的發送數據格式,該格式由一些地址位和一些命令位組成。

#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void dump(decode_results *results) {
 int count = results- >rawlen;
 if (results- >decode_type == UNKNOWN) {
 Serial.println("Could not decode message");
 } 
 else {
 Serial.println("Signal received.");
 if (results- >decode_type == NEC) {
 Serial.print("Decoded NEC, ");
 } 
 else if (results- >decode_type == SONY) {
 Serial.print("Decoded SONY, ");
 } 
 else if (results- >decode_type == RC5) {
 Serial.print("Decoded RC5, ");
 } 
 else if (results- >decode_type == RC6) {
 Serial.print("Decoded RC6, ");
 }
 Serial.print("Value= ");
 Serial.print(results- >value, DEC);
 Serial.print(" (");
 Serial.print(results- >bits, DEC);
 Serial.println(" bits)");
 }
 
}
void setup()
{
 Serial.begin(9600);
 Serial.println("IR decoder");
 irrecv.enableIRIn(); // Start the receiver
}
int on = 0;
unsigned long last = millis();
void loop() {
 if (irrecv.decode(&results)) {
 // Wait for 0.5sec before decoding another code
 if (millis() - last > 500) {
 
 dump(&results);
 }
 last = millis(); 
 irrecv.resume(); // Receive the next value
 }
}
我們將分兩個步驟為該方案開發Arduino固件。首先,我們將編寫一個簡單的程序來找出遙控器上特定按鈕的數字代碼(或十進制值)。它將讀取IR接收器的輸出,對消息進行解碼,并在串行監視器窗口上打印出所用協議的類型以及所傳輸代碼的十進制值。這樣做的程序在下面發布(代碼改編自Ken Shirriff編寫的IRrelay示例)。

此測試程序的硬件設置與上面描述的相同。現在,將遙控器對準面包板上的TSOP1740模塊,然后按一個按鈕,你將在串行監視器窗口上看到該按鈕的解碼十進制值。確保串行監視器的波特率選擇為9600。如果你的遙控器使用IRremote庫的受支持協議列表中未提供的其他數據編碼方案,則它將無法解碼該代碼。這里用兩個不同的遙控器進行了測試:一個遙控器是Sony Blueray播放器,另一個是HP多合一電腦,它能夠同時解碼。在串行監視器窗口中,可以看到HP遙控器使用Philips RC-6協議,而Sony使用其自己的SIRC協議。在Sony遙控器上為VOL+和VOL-。

![testserialmonitor.png](http://www.enroo.com/imagePath/ae6faafdfd2640afb9ff1b2e2f152f1f.png "ae6faafdfd2640afb9ff1b2e2f152f1f.png")

現在我們知道特定按鈕按下會發送什么代碼,我們可以修改代碼以實現用于切換繼電器電路的附加邏輯。我們將對Arduino進行編程以執行以下邏輯。

按下VOL +時,繼電器1打開。
按下VOL-時,繼電器1將關閉。
按下CH +時,繼電器2打開。
按下CH-時,繼電器2將關閉。
按下暫停按鈕時,兩個繼電器都將關閉。
按下PLAY按鈕時,兩個繼電器都打開。

以下為執行此任務的代碼:

#include

#define SW1 6 // Relay control pins are 6 and 7

#define SW2 7

int RECV_PIN = 11; // IR receive pin is 11

IRrecv irrecv(RECV_PIN);

long int decodedCode;

decode_results rcv;

void controlRelays(){

if(decodedCode == 1168) digitalWrite(SW1, LOW);

if(decodedCode == 3216) digitalWrite(SW1, HIGH);

if(decodedCode == 144) digitalWrite(SW2, LOW);

if(decodedCode == 2192) digitalWrite(SW2, HIGH);

if(decodedCode == 625479){

digitalWrite(SW1, HIGH); // All off

digitalWrite(SW2, HIGH);

}

if(decodedCode == 363335){

digitalWrite(SW1, LOW); // All on

digitalWrite(SW2, LOW);

}

delay(300);

}

void setup(){

pinMode(SW1, OUTPUT);

pinMode(SW2, OUTPUT);

digitalWrite(SW1, HIGH); // Relay is active low, so HIGH will turn it off at startup

digitalWrite(SW2, HIGH);

Serial.begin(9600);

Serial.println("IR relay controller");

irrecv.enableIRIn();

}

void loop(){

if (irrecv.decode(&rcv)) {

Serial.print("Signal received, Value= ");

decodedCode = rcv.value;

Serial.println(decodedCode, DEC);

controlRelays();

irrecv.resume();

}

}

將程序上傳到Arduino之后,享受通過遙控器打開和關閉繼電器的樂趣。就可以輕松地將更多的繼電器添加到Arduino的其他免費I/O引腳,并添加更多的if語句,以類似的方式控制它們。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接收器
    +關注

    關注

    14

    文章

    2468

    瀏覽量

    71875
  • 編程
    +關注

    關注

    88

    文章

    3614

    瀏覽量

    93686
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    186958
收藏 人收藏

    評論

    相關推薦

    IR傳感Arduino制作一個數字轉速計(附代碼)

    本項目采用IR傳感Arduino開發板制作了一個數字轉速計,以RPM為單位測量馬達的轉數。項目黑簡單,只需將IR傳感
    的頭像 發表于 08-25 09:55 ?3626次閱讀
    用<b class='flag-5'>IR</b>傳感<b class='flag-5'>器</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>一個數字轉速計(附代碼)

    怎么選擇IR接收器

    我正在使用Logitech Harmony 350遙控(一體式遙控),我假設它最終將與所選的Vishay接收器“對話”。該IR接收器連接
    發表于 10-23 11:33

    基于Arduino-Nano的數字FM接收器

    描述帶有 Arduino 的數字 FM 接收器FM 發射/接收器是任何電子愛好者最喜歡的電路之一。在這篇文章/視頻中,我介紹了一個完整的數字 FM
    發表于 06-20 07:57

    怎樣在Arduino上設置IR接收器IR遙控

    IR接收器或紅外接收器是一種電子設備,它從IR遙控接收信息,對信號進行解碼,并將其發送到另一個
    的頭像 發表于 07-30 10:19 ?1w次閱讀

    紅外發射接收器制作

    這個項目的目標是在振蕩模式下使用555定時,以便產生38 kHz的方波。使用555定時的開關輸出來驅動紅外(IR)LED;意味著LED將以每秒約38,000次的速度關閉。這樣做是為了讓接收
    的頭像 發表于 08-09 15:01 ?1.5w次閱讀
    紅外發射<b class='flag-5'>器</b>和<b class='flag-5'>接收器</b>的<b class='flag-5'>制作</b>

    如何制作使用Arduino的紅外發射接收器

    以下是發送接收器的示意圖
    的頭像 發表于 10-30 16:37 ?9610次閱讀

    帶有Arduino的數字FM接收器

    電子發燒友網站提供《帶有Arduino的數字FM接收器.zip》資料免費下載
    發表于 07-19 11:31 ?4次下載
    帶有<b class='flag-5'>Arduino</b>的數字FM<b class='flag-5'>接收器</b>

    構建Arduino IR遠程解碼的教程

    在本教程中,我們將使用 TSOP1838 IR 接收器來構建使用 ArduinoIR 遠程解碼。每個按鈕的十六進制代碼都將記錄到 M
    發表于 08-10 16:52 ?1296次閱讀
    構建<b class='flag-5'>Arduino</b> <b class='flag-5'>IR</b>遠程解碼<b class='flag-5'>器</b>的教程

    Arduino控制硬幣接收器

    電子發燒友網站提供《用Arduino控制硬幣接收器.zip》資料免費下載
    發表于 10-20 09:18 ?1次下載
    用<b class='flag-5'>Arduino</b>控制硬幣<b class='flag-5'>接收器</b>

    Arduino超外差接收器開源分享

    電子發燒友網站提供《Arduino超外差接收器開源分享.zip》資料免費下載
    發表于 11-02 14:34 ?12次下載
    <b class='flag-5'>Arduino</b>超外差<b class='flag-5'>接收器</b>開源分享

    使用arduino uno、led燈條、IR傳感模塊制作折紙燈

    電子發燒友網站提供《使用arduino uno、led燈條、IR傳感模塊制作折紙燈.zip》資料免費下載
    發表于 11-08 11:28 ?0次下載
    使用<b class='flag-5'>arduino</b> uno、led燈條、<b class='flag-5'>IR</b>傳感<b class='flag-5'>器</b>模塊<b class='flag-5'>制作</b>折紙燈

    帶有Arduino UNO的IR接收器和繼電器模塊

    電子發燒友網站提供《帶有Arduino UNO的IR接收器和繼電器模塊.zip》資料免費下載
    發表于 11-11 09:14 ?0次下載
    帶有<b class='flag-5'>Arduino</b> UNO的<b class='flag-5'>IR</b><b class='flag-5'>接收器</b>和繼電器模塊

    制作自己的RTS接收器

    電子發燒友網站提供《制作自己的RTS接收器.zip》資料免費下載
    發表于 11-25 14:23 ?0次下載
    <b class='flag-5'>制作</b>自己的RTS<b class='flag-5'>接收器</b>

    Arduino上使用IR遠程發送接收器

    方案介紹在本教程中,您將了解IR協議以及如何使用IR接收器模塊。首先,您將了解IR協議的工作原理,然后您將學習如何將IR遠程控制套件與
    發表于 01-03 16:26 ?0次下載

    基于Arduino制作直流風扇速度控制

    如何使用ArduinoIR Remote制作直流風扇速度控制。硬件部件:Arduino nano R3×1個直流電機,RE40×1個Ju
    發表于 01-05 16:22 ?0次下載
    主站蜘蛛池模板: 一个人在线观看免费高清视频在线观看| 国产精品看高国产精品不卡| FREE性丰满白嫩白嫩的HD| 99久久久免费精品国产| 村上里沙快播| 国语精彩对白2021| 免费毛片视频网站| 色偷偷成人网免费视频男人的天堂| 少妇无码吹潮久久精品AV网站| 亚洲色欲色欲无码AV| 99久久综合精品免费| 国产囗交10p| 激情床戏视频片段有叫声| 亚洲野狼综合网站| 51精品少妇人妻AV一区二区| 凤楼app| 两个女人互添下身高潮自视频 | 沟沟人体一区二区| 九九免费高清在线观看视频| 欧美多人群p刺激交换电影| 亚洲人成www在线播放| swag合集120部| 久久亚洲电影www电影网| 午夜福利免费0948视频| 99久久精品免费看国产一区二区| 国产一级特黄aa毛片| 色怕怕| 啊好深啊别拔就射在里面| 久久香蕉国产线看观看精品| 小妇人电影免费完整观看2021| WWW夜片内射视频在观看视频 | 国模啪啪久久久久久久| 少妇大荫蒂毛多毛大| CHINA末成年VIDEO学生| 乱码午夜-极品国产内射| 一个人色导航| 国产系列视频二区| 天堂Av亚洲欧美日韩国产综合| 99视频精品在线| 牢记永久免费网址| 曰本xxⅹ孕妇性xxx|