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

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

3天內不再提示

ESP8266紅外信號收發(fā)實驗

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

一、概述

1. ESP8266紅外功能及庫

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

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

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

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

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

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

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

二、發(fā)送端

1. 電路接線

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

下面的程序實現了從串口讀入4個字節(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介紹

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

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

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

irsend.sendSony(0x0A9, 12);

假設現在要發(fā)送 0x9AB32AFC,轉換為二進制數

10011010101100110010101011111100,

然后,我們按照 Sony 協議的格式構造數據,即:

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

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

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

10011010101100110010101011111100。

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

將這個二進制數轉換為十進制數,即 1413266032。因此,對于發(fā)送 0x9AB32AFC 的情況,irsend.sendSony(0x9AB32AFC, 32) 中的第二個參數應為 32。

二、接收

下面把帶解碼功能的紅外接收管(型號1838B)接在了D5引腳。接收直接調用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);
    // 接收下一個值
    irrecv.resume();
  }
  delay(150);
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    240

    文章

    22905

    瀏覽量

    650072
  • 信號
    +關注

    關注

    11

    文章

    2739

    瀏覽量

    76166
  • 串口
    +關注

    關注

    14

    文章

    1533

    瀏覽量

    75449
  • 紅外接收器
    +關注

    關注

    2

    文章

    42

    瀏覽量

    19029
  • ESP8266
    +關注

    關注

    50

    文章

    959

    瀏覽量

    44539
收藏 人收藏

    評論

    相關推薦

    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實現STM32聯網(最簡單USART方法)

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

    esp8266 at指令集詳解

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

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

    本文檔的主要內容詳細介紹的是ESP32和ESP8266基于Arduino的MQTT收發(fā)資料說明。
    發(fā)表于 01-24 08:00 ?104次下載
    <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設置為115200。
    的頭像 發(fā)表于 11-18 17:58 ?2.1w次閱讀

    ESP8266-NodeMCU

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

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

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

    ESP8266

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

    ESP8266】接入bl

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

    ESP8266學習之路——環(huán)境部署

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

    ESP8266使用教程之初識

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

    ESP8266硬件

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

    ESP8266初次如何實現無線通信(基于電腦與ESP8266)

    一.需要的軟件及硬件 1.軟件 2.硬件 二.ESP8266的使用 .ESP8266的介紹 2.ESP8266進行初始AT指令的配置步驟 三.所用軟件安裝分享 ESP8266
    發(fā)表于 05-30 09:53 ?21次下載
    <b class='flag-5'>ESP8266</b>初次如何實現無線通信(基于電腦與<b class='flag-5'>ESP8266</b>)

    nodemcu和esp8266是什么關系?

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