0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP8266紅外信號收發(fā)實(shí)驗(yàn)

CHANBAEK ? 來源:編程圈子 ? 作者:編程圈子 ? 2023-03-26 17:25 ? 次閱讀

一、概述

1. ESP8266紅外功能及庫

ESP8266 支持通過紅外接收器和紅外LED進(jìn)行紅外收發(fā)功能。

ESP8266的紅外收發(fā)功能需要借助外部庫,常用的庫有IRremoteESP8266、IRremote、IRLib2等。

IRremoteESP8266庫是專門為ESP8266芯片設(shè)計(jì)的紅外收發(fā)庫,它支持多種協(xié)議,包括NEC、Sony、RC5、RC6等,還支持學(xué)習(xí)和發(fā)送紅外信號。

另外IRremote庫和IRLib2庫也是常用的紅外收發(fā)庫,但這兩個(gè)庫不是專門為ESP8266設(shè)計(jì)的,需要進(jìn)行相應(yīng)的適配。

2. 紅外收發(fā)常見步驟

使用這些庫進(jìn)行紅外收發(fā)時(shí),一般需要進(jìn)行以下步驟:

  1. 初始化紅外收發(fā)器和紅外LED引腳,一般使用IRrecv和IRsend對象進(jìn)行操作。
  2. 在循環(huán)中檢測是否有紅外信號接收到,使用IRrecv對象的decode方法對信號進(jìn)行解碼。
  3. 根據(jù)解碼后的數(shù)據(jù)判斷紅外信號的類型和命令,進(jìn)行相應(yīng)的操作。
  4. 使用IRsend對象的send*方法發(fā)送紅外信號。

二、發(fā)送端

1. 電路接線

下面將紅外發(fā)射管接在GPIO4(D2)引腳,為防止燒管,可以在紅外發(fā)射管和地之間串聯(lián)一個(gè)1K電阻。

下面的程序?qū)崿F(xiàn)了從串口讀入4個(gè)字節(jié),然后通過紅外發(fā)射出去。

2. 源代碼

#include 

int IR_S =  4;     //接arduino 8號引腳
IRsend irsend(IR_S);

void setup() 
{ 
  pinMode(IR_S, OUTPUT);
  Serial.begin(9600); // 9600 波特率
}
void loop() 
{
  uint8_t buffer[4];
  if ( Serial.available()>=4) {
    Serial.readBytes(buffer, 4);
    uint32_t data = buffer[0] << 24 | buffer[1] << 16 | buffer[2] <<8 | buffer[3];
    Serial.println(data, HEX);
    irsend.sendSony(data, 32);
  }
  delay(1000);
}

3. sendSony介紹

這里重點(diǎn)是使用sendSony方法,函數(shù)定義:irsend.sendSony(data, nbits)

  • data 要發(fā)送的數(shù)據(jù)
  • nbits 紅外碼的位數(shù)

如果要發(fā)送0x0a9,那么使用Sony紅外協(xié)議發(fā)送,可以使用下面的代碼:

irsend.sendSony(0x0A9, 12);

假設(shè)現(xiàn)在要發(fā)送 0x9AB32AFC,轉(zhuǎn)換為二進(jìn)制數(shù)

10011010101100110010101011111100,

然后,我們按照 Sony 協(xié)議的格式構(gòu)造數(shù)據(jù),即:

起始位(4位)  設(shè)備地址(7位) 命令數(shù)據(jù)(8位) 
0101          0000001         00110101

其中,起始位是固定的 0101,設(shè)備地址可以是 0 到 127 之間的任意一個(gè)值,這里我們假設(shè)設(shè)備地址為 1,所以設(shè)備地址的二進(jìn)制表示為 0000001。

接下來是命令數(shù)據(jù),我們將 0x9AB32AFC 轉(zhuǎn)換為二進(jìn)制后,從左到右依次填入,不足 8 位則在高位補(bǔ)零。因此,命令數(shù)據(jù)的二進(jìn)制表示為 10011010 10110011 00101010 11111100,這里我們將這 4 個(gè)字節(jié)從左到右依次排列,即

10011010101100110010101011111100。

最后,在命令數(shù)據(jù)的右邊再添加一位結(jié)束位,固定為 0。因此,最終的數(shù)據(jù)為 0101 0000001 10011010 10110011 00101010 11111100 0。

將這個(gè)二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),即 1413266032。因此,對于發(fā)送 0x9AB32AFC 的情況,irsend.sendSony(0x9AB32AFC, 32) 中的第二個(gè)參數(shù)應(yīng)為 32。

二、接收

下面把帶解碼功能的紅外接收管(型號1838B)接在了D5引腳。接收直接調(diào)用IRremote.h庫。

1. 源代碼

#include 
 
int RECV_PIN = D5; 
IRrecv irrecv(RECV_PIN); 
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  
  irrecv.enableIRIn(); //初始化紅外遙控
}
 
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    // 接收下一個(gè)值
    irrecv.resume();
  }
  delay(150);
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23277

    瀏覽量

    660869
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2791

    瀏覽量

    76764
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1554

    瀏覽量

    76514
  • 紅外接收器
    +關(guān)注

    關(guān)注

    2

    文章

    42

    瀏覽量

    19083
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    45008
收藏 人收藏

    評論

    相關(guān)推薦

    ESP8266_IR_紅外例程及使用說明_Version 0.3

    ESP8266__Interface_Infrared_Device紅外接口參考說明
    發(fā)表于 12-30 14:37 ?571次下載

    ESP8266系列模塊選型

    ESP8266系列模塊選型ESP8266 ESP-01 ESO-02
    發(fā)表于 01-05 17:34 ?37次下載

    使用esp8266實(shí)現(xiàn)STM32聯(lián)網(wǎng)(最簡單USART方法)

    上一篇 esp8266怎么配置esp8266和USB轉(zhuǎn)TTL連接esp8266簡單介紹esp8266連接路由器esp8266通過路由器連接在
    發(fā)表于 11-22 11:51 ?1.3w次閱讀

    esp8266 at指令集詳解

    ESP8266可廣泛應(yīng)用于智能電網(wǎng)、智能交通、智能家具、手持設(shè)備、工業(yè)控制等領(lǐng)域。本文介紹了esp8266 at指令集,以及ESP8266使用AT指令開發(fā)示例
    發(fā)表于 12-08 13:52 ?14.4w次閱讀
    <b class='flag-5'>esp8266</b> at指令集詳解

    ESP32和ESP8266基于Arduino的MQTT收發(fā)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是ESP32和ESP8266基于Arduino的MQTT收發(fā)資料說明。
    發(fā)表于 01-24 08:00 ?109次下載
    <b class='flag-5'>ESP</b>32和<b class='flag-5'>ESP8266</b>基于Arduino的MQTT<b class='flag-5'>收發(fā)</b>資料說明

    怎樣使用ESP8266 Flasher和Programmer燒寫ESP8266 AT固件

    選擇要連接的COM端口ESP8266 Flasher和Programmer + ESP8266 Wifi串行收發(fā)器模塊。將BAUDRATE設(shè)置為115200。
    的頭像 發(fā)表于 11-18 17:58 ?2.1w次閱讀

    ESP8266-NodeMCU

    2C1.8 SPI1.9 ESP8266引腳功能一覽ESP8266-NodeMCU引腳功能1.1 可用引腳??ESP8266芯片有17個(gè)GPIO引腳(GPIO0~GPIO16)。這些引腳中的GPIO6~GPIO 11被用于連接開
    發(fā)表于 10-25 16:51 ?43次下載
    <b class='flag-5'>ESP8266</b>-NodeMCU

    ESP8266 wifi模塊開發(fā)匯總

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ESP8266 wifi模塊開發(fā)匯總?ESP8266 wifi模塊開發(fā)匯總本文檔主要介紹開發(fā)者在ESP8266開發(fā)中常見的一些問題。 這些
    發(fā)表于 11-05 19:21 ?188次下載
    <b class='flag-5'>ESP8266</b> wifi模塊開發(fā)匯總

    ESP8266

    優(yōu)點(diǎn)1.性能穩(wěn)定ESP8266EX 的工作溫度范圍大,且能夠保持穩(wěn)定的性能,能適應(yīng)各種操作環(huán)境。2.低功耗ESP8266EX 專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì),通過多項(xiàng)專有技術(shù)實(shí)現(xiàn)了
    發(fā)表于 11-07 10:36 ?26次下載
    <b class='flag-5'>ESP8266</b>

    ESP8266】接入bl

    ESP8266】接入bl
    發(fā)表于 12-08 13:36 ?10次下載
    【<b class='flag-5'>ESP8266</b>】接入bl

    ESP8266學(xué)習(xí)之路——環(huán)境部署

    文章目錄前言ESP8266SDK前言ESP8266SDK官方鏈接
    發(fā)表于 12-22 18:47 ?28次下載
    <b class='flag-5'>ESP8266</b>學(xué)習(xí)之路——環(huán)境部署

    ESP8266使用教程之初識

    一.ESP8266介紹? 這里將會(huì)使用正點(diǎn)原子的 ATK-ESP8266 為例,來說明 ESP8266 的使用。? 該模塊上面板載了安可信的公司的 ESP8266 模塊,ATK-
    發(fā)表于 01-04 18:59 ?80次下載
    <b class='flag-5'>ESP8266</b>使用教程之初識

    ESP8266 WIFI模擬GPS時(shí)鐘信號

    電子發(fā)燒友網(wǎng)站提供《ESP8266 WIFI模擬GPS時(shí)鐘信號.zip》資料免費(fèi)下載
    發(fā)表于 08-04 14:33 ?15次下載
    <b class='flag-5'>ESP8266</b> WIFI模擬GPS時(shí)鐘<b class='flag-5'>信號</b>

    ESP8266硬件

    目前市面上有關(guān)ESP8266模組有很多的種類,但是都是使用的樂鑫公司開發(fā)的ESP8266的wifi模組,而且種類也很多。
    的頭像 發(fā)表于 02-10 14:25 ?4760次閱讀
    <b class='flag-5'>ESP8266</b>硬件

    nodemcu和esp8266是什么關(guān)系?

    nodemcu和esp8266是什么關(guān)系 nodemcu和esp8266是什么關(guān)系?通俗理解就是nodemcu是一個(gè)開發(fā)板,基于esp8266的開發(fā)板。 目前市面上搭載有ESP8266
    的頭像 發(fā)表于 10-20 14:53 ?3742次閱讀
    nodemcu和<b class='flag-5'>esp8266</b>是什么關(guān)系?