女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

CW32模塊使用 紅外接收模塊

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2025-01-23 13:16 ? 次閱讀

一、模塊來源

模塊實物展示:

wKgZO2eR0J6AYT_gAAA2fkb4QFQ72.webp


資料鏈接:https://pan.baidu.com/s/1dEWVMIFDWb7k1NcsRy5hHA
資料提取碼:uucv

二、規格參數

1.CR2025環保紐扣電池,容量160mah

2.發射距離:8m以上(具體和周圍環境、接收端的靈敏度等因素有關)

3.有效角度:60度

4.面貼材料:0.125mmPET,有效壽命2萬次。

5.品質穩定,性價比高

6.靜態電流3-5uA,動態電流3-5mA。

以上信息見廠家資料文件

三、移植過程

我們的目標是將例程移植至CW32F030C8T6開發板上【能夠實現紅外信號接收的功能】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。

3.1查看資料

在光譜中波長自760nm至400um的電磁波稱為紅外線,它是一種不可見光。紅外線通信的例子我們每個人應該都很熟悉,目前常用的家電設備幾乎都可以通過紅外遙控的方式進行遙控,比如電視機、空調、投影儀等,都可以見到紅外遙控的影子。這種技術應用廣泛,相應的應用器件都十分廉價,因此紅外遙控是我們日常設備控制的理想方式。

紅外線的通訊原理

紅外光是以特定的頻率脈沖形式發射,接收端收到到信號后,按照約定的協議進行解碼,完成數據傳輸。在消費類電子產品里,脈沖頻率普遍采用 30KHz 到 60KHz 這個頻段,NEC協議的頻率就是38KHZ。這個以特定的頻率發射其實就可以理解為點燈,不要被復雜的詞匯難住了,就是控制燈的閃爍頻率(亮滅),和剛學單片機完成閃爍燈一樣的意思,只不過是燈換了一種類型,都是燈。

接收端的原理: 接收端的芯片對這個紅外光比較敏感,可以根據有沒有光輸出高低電平,如果發送端的閃爍頻率是有規律的,接收端收到后輸出的高電平和低電平也是有規律對應的,這樣發送端和接收端只要約定好,那就可以做數據傳輸了。

紅外線傳輸協議可以說是所有無線傳輸協議里成本最低,最方便的傳輸協議了,但是也有缺點,距離不夠長,速度不夠快;當然,每個傳輸協議應用的環境不一樣,定位不一樣,好壞沒法比較,具體要看自己的實際場景選擇合適的通信方式。

NEC協議介紹

NEC協議是眾多紅外線協議中的一種(這里說的協議就是他們數據幀格式定義不一樣,數據傳輸原理都是一樣的),我們購買的外能遙控器、淘寶買的mini遙控器、電視機、投影儀幾乎都是NEC協議。像格力空調、美的空調這些設備使用的就是其他協議格式,不是NEC協議,但是只要學會一種協議解析方式,明白了紅外線傳輸原理,其他遙控器協議都可以解出來。

NEC協議一次完整的傳輸包含: 引導碼、8位地址碼、8位地址反碼、8位命令碼、8位命令反碼。這里我們主要講解如何接收紅外發送端發送的NEC協議內容。

wKgZPGeR0J-AEgOzAAAffi7KyGo11.webp

引導碼:由9ms的低電平+4.5ms的高電平組成。

4個字節的數據: 地址碼+地址反碼+命令碼+命令反碼。這里的反碼可以用來校驗數據是否傳輸正確,有沒有丟包。

重點: NEC協議傳輸數據位的時候,0和1的區分是依靠收到的高、低電平的持續時間來進行區分的。這是解碼關鍵。

數據發送0碼:0.56ms低電平+ 0.56ms的高電平。

wKgZO2eR0J-AeHtnAAAr3PC7Wnc68.webp

數據發送1碼:0.56ms低電平+1.68ms的高電平

wKgZPGeR0J-AfZa5AAAy6hK3Lio26.webp

所以,收到一個數據位的完整時間表示方法是這樣的:

收到數據位0:   0.56ms低電平+ 0.56ms的高電平

    收到數據位1:  0.56ms低電平+1.68ms的高電平

還有一個重復碼,它是由一個 9ms 的低電平和一個 2.5ms 的高電平組成。當一個紅外信號連續發送時,可以通過發送重復碼的方式快速發送。

wKgZO2eR0J-ASM7GAABSDOXDxNI72.webp

3.2引腳選擇

當紅外線接收頭感應到有紅外光就輸出低電平,沒有感應到紅外光就輸出高電平。因此我們配置紅外引腳為外部中斷下降沿觸發方式,當紅外引腳有下降沿時,我們馬上進入中斷處理并接收紅外信號。

wKgZPGeR0KCABdNsAACEilRh7qU98.webp

模塊接線圖

3.3移植至工程

引腳配置如下:

//紅外引腳初始化
void infrared_goio_config(void)
{
    IR_RCC_GPIO_ENABLE();      // 使能GPIO時鐘

    GPIO_InitTypeDef GPIO_InitStruct;                   // GPIO初始化結構體

    GPIO_InitStruct.Pins  = IR_PIN;                     // GPIO引腳
    GPIO_InitStruct.Mode  = GPIO_MODE_INPUT_PULLUP;     // 上拉輸入
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;            // 速度高
    GPIO_InitStruct.IT    = GPIO_IT_FALLING;            // 下降沿觸發中斷
    GPIO_Init(IR_PORT, &GPIO_InitStruct);               // 初始化

    // 清除PA0中斷標志
    GPIOA_INTFLAG_CLR(EXTI_BV);
    // 使能NVIC
    NVIC_EnableIRQ(EXTI_IRQ);
}

紅外信號的數據,全部是以時間長度來確定數據是0還是1,而最小的單位要求有560us,已經達到了us級的測量。

我們在 空白工程中已經為大家準備好了us延時,就在board 文件中。

獲取高低電平時間

獲取低電平時間的實現代碼如下:

//獲取紅外低電平時間
//以微秒us作為時間參考
void get_infrared_low_time( uint32_t *low_time )
{
    uint32_t time_val = 0;

    while( GPIO_ReadPin(IR_PORT, IR_PIN) == 0 )
    {
        if( time_val>= 500 )
        {
            *low_time = time_val;
            return;
        }
        delay_us(20);
        time_val++;
    }
    *low_time = time_val;
}

當引腳為低電平時,將進入 while 循環,直到不為低電平時就結束循環。在循環之中不斷的讓時間變量time_val累加, 每加一次需要經過20us。當time_val變量累加時間大于 500 * 20 = 10000us = 10ms時,判斷為超時,強行結束該函數,防止阻礙系統運行。

獲取高電平時間的代碼同理:

//獲取紅外高電平時間
//以微秒us作為時間參考
void get_infrared_high_time(uint32_t *high_time)
{
    uint32_t time_val = 0;
    while( GPIO_ReadPin(IR_PORT, IR_PIN) == 1 )
    {
        if( time_val >= 250 )
        {
            *high_time = time_val;
            return;
        }
        delay_us(20);
        time_val++;
    }
    *high_time = time_val;
}

引導碼與重復碼判斷

引導碼是由一個 9ms 的低電平和一個 4.5ms 的高電平組成。每當接收到一個紅外信號時,第一個數據就是引導碼。我們通過判斷紅外信號的第一個數據是否是引導碼,來決定是否要進行后面的數據接收處理。

重復碼是由一個 9ms 的低電平和一個 2.5ms 的高電平組成。當我們的紅外遙控一直按住按鍵時,就會發出重復碼,我們可以檢測重復碼,來確定是否要連續觸發重復動作,比如長按開機,長按加速等等。

/******************************************************************
 * 函 數 名 稱:guide_and_repeat_code_judgment
 * 函 數 說 明:引導 和 重復 碼 判斷
 * 函 數 形 參:無
 * 函 數 返 回:1:不是引導碼   2:重復碼  0:引導碼
 * 作       者:LC
 * 備       注:以20微秒us作為時間參考
                引導碼:由一個 9ms 的低電平和一個 4.5ms 的高電平組成
                重復碼:由一個 9ms 的低電平和一個 2.5ms 的高電平組成
******************************************************************/
uint8_t guide_and_repeat_code_judgment(void)
{
    uint32_t out_time=0;
    get_infrared_low_time(&out_time);
    //time>10ms             time  500) || (out_time < 400))
    {
        return 1;
    }
    get_infrared_high_time(&out_time);
    // x?>5ms  或者 x 250) || (out_time < 100))
    {
        return 1;
    }

    //如果是重復碼  2ms < time < 3ms
    if((out_time > 100) && (out_time < 150))
    {
        return 2;
    }

    return 0;
}

完整紅外數據接收

具體接收流程:【判斷是否接收到引導碼】->【接收數據】->【判斷數據是否正確】。

//接收紅外數據
void receiving_infrared_data(void)
{
    uint16_t group_num = 0,data_num = 0;
    uint32_t time=0;
    uint8_t bit_data = 0;
    uint8_t ir_value[5] = {0};

    uint8_t guide_and_repeat_code = 0;

    //等待引導碼
    guide_and_repeat_code = guide_and_repeat_code_judgment();
    //如果不是引導碼則結束解析
    if(  guide_and_repeat_code == 1 ) return;

    //共有4組數據
    //地址碼+地址反碼+命令碼+命令反碼
    for(group_num = 0; group_num < 4; group_num++ )
        {
        //接收一組8位的數據
        for( data_num = 0; data_num < 8; data_num++ )
        {
            //接收低電平
            get_infrared_low_time(&time);
            //如果不在0.56ms內的低電平,數據錯誤
            if((time > 60) || (time < 20))
            {
                return ;
            }

            time = 0;
            //接收高電平
            get_infrared_high_time(&time);
            //如果是在1200us=60) && (time < 100))
            {
                bit_data = 1;
            }
            //如果是在200us=10) && (time < 50))
            {
                bit_data = 0;
            }

            //groupNum表示第幾組數據
            ir_value[ group_num ] 

判斷數據是否正確,可以通過將正常數據取反,與反碼比較。如果不一致說明數據不對。

typedef struct INFRARED_DATA{

    uint8_t AddressCode;            //地址碼
    uint8_t AddressInverseCode;     //地址反碼
    uint8_t CommandCode;            //命令碼
    uint8_t CommandInverseCode;     //命令反碼

}_INFRARED_DATA_STRUCT_;
_INFRARED_DATA_STRUCT_ InfraredData;


//紅外數據是否正確判斷
uint8_t infrared_data_true_judgment(uint8_t *value)
{
    //判斷地址碼是否正確
    if( value[0] != (uint8_t)(~value[1]) )  return 0;
    //判斷命令碼是否正確
    if( value[2] != (uint8_t)(~value[3]) )  return 1;

    //串口輸出查看接收到的數據
    printf("%x %x %x %xrn",value[0],value[1],value[2],value[3]);
    //保存正確數據
    InfraredData.AddressCode        = value[0];
    InfraredData.AddressInverseCode = value[1];
    InfraredData.CommandCode        = value[2];
    InfraredData.CommandInverseCode = value[3];
}

//獲取紅外發送過來的命令
uint8_t get_infrared_command(void)
{
    return InfraredData.CommandCode;
}
//清除紅外發送過來的數據
void clear_infrared_command(void)
{
    InfraredData.CommandCode = 0x00;
}

最后,記得在外部中斷服務函數中,調用紅外接收函數。

void EXTI_HANDLER(void)
{
        if(IR_PORT->ISR_f.EXTI_PIN)   // 中斷標志位
        {
                if(GPIO_ReadPin(IR_PORT, IR_PIN) == GPIO_Pin_RESET)  // 如果是低電平
                {
                        //接收一次紅外數據
                        receiving_infrared_data();
                }
                GPIOA_INTFLAG_CLR(EXTI_BV); // 清除標志位
        }
}

移植步驟中的導入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_ir_receiver.c與bsp_ir_receiver.h。這里不再過多講述,移植完成后面修改相關代碼。

以下為完成紅外接收代碼:

bsp_ir_receiver.c

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */

#include "bsp_ir_receiver.h"
#include "stdio.h"
#include "board.h"



typedef struct INFRARED_DATA{

    uint8_t AddressCode;            //地址碼
    uint8_t AddressInverseCode;     //地址反碼
    uint8_t CommandCode;            //命令碼
    uint8_t CommandInverseCode;     //命令反碼

}_INFRARED_DATA_STRUCT_;


_INFRARED_DATA_STRUCT_ InfraredData;

//紅外引腳初始化
void infrared_goio_config(void)
{
        IR_RCC_GPIO_ENABLE();      // 使能GPIO時鐘


        GPIO_InitTypeDef GPIO_InitStruct;                // GPIO初始化結構體

        GPIO_InitStruct.Pins  = IR_PIN;                  // GPIO引腳
        GPIO_InitStruct.Mode  = GPIO_MODE_INPUT_PULLUP;  // 上拉輸入
        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         // 速度高
        GPIO_InitStruct.IT    = GPIO_IT_FALLING;         // 下降沿觸發中斷
        GPIO_Init(IR_PORT, &GPIO_InitStruct);            // 初始化

        // 清除PA0中斷標志
        GPIOA_INTFLAG_CLR(EXTI_BV);
        // 使能NVIC
        NVIC_EnableIRQ(EXTI_IRQ);
}




//獲取紅外低電平時間
//以微秒us作為時間參考
void get_infrared_low_time( uint32_t *low_time )
{
    uint32_t time_val = 0;

    while( GPIO_ReadPin(IR_PORT, IR_PIN) == 0 )
    {
        if( time_val>= 500 )
        {
            *low_time = time_val;
            return;
        }
        delay_us(20);
        time_val++;
    }
    *low_time = time_val;
}

//獲取紅外高電平時間
//以微秒us作為時間參考
void get_infrared_high_time(uint32_t *high_time)
{
    uint32_t time_val = 0;
    while( GPIO_ReadPin(IR_PORT, IR_PIN) == 1 )
    {
        if( time_val >= 250 )
        {
            *high_time = time_val;
            return;
        }
        delay_us(20);
        time_val++;
    }
    *high_time = time_val;
}

/******************************************************************
 * 函 數 名 稱:guide_and_repeat_code_judgment
 * 函 數 說 明:引導 和 重復 碼 判斷
 * 函 數 形 參:無
 * 函 數 返 回:1:不是引導碼   2:重復碼  0:引導碼
 * 作       者:LC
 * 備       注:以20微秒us作為時間參考
                引導碼:由一個 9ms 的低電平和一個 4.5ms 的高電平組成
                重復碼:由一個 9ms 的低電平和一個 2.5ms 的高電平組成
******************************************************************/
uint8_t guide_and_repeat_code_judgment(void)
{
    uint32_t out_time=0;
    get_infrared_low_time(&out_time);
    //time>10ms             time  500) || (out_time < 400))
    {
        return 1;
    }
    get_infrared_high_time(&out_time);
    // x?>5ms  或者 x 250) || (out_time < 100))
    {
        return 1;
    }

    //如果是重復碼  2ms < time < 3ms
    if((out_time > 100) && (out_time < 150))
    {
        return 2;
    }

    return 0;
}

//紅外數據是否正確判斷
uint8_t infrared_data_true_judgment(uint8_t *value)
{
    //判斷地址碼是否正確
    if( value[0] != (uint8_t)(~value[1]) )  return 0;
    //判斷命令碼是否正確
    if( value[2] != (uint8_t)(~value[3]) )  return 1;


    printf("%x %x %x %xrn",value[0],value[1],value[2],value[3]);
    //保存正確數據
    InfraredData.AddressCode        = value[0];
    InfraredData.AddressInverseCode = value[1];
    InfraredData.CommandCode        = value[2];
    InfraredData.CommandInverseCode = value[3];
}

//接收紅外數據
void receiving_infrared_data(void)
{
    uint16_t group_num = 0,data_num = 0;
    uint32_t time=0;
    uint8_t bit_data = 0;
    uint8_t ir_value[5] = {0};

    uint8_t guide_and_repeat_code = 0;

    //等待引導碼
    guide_and_repeat_code = guide_and_repeat_code_judgment();
    //如果不是引導碼則結束解析
    if(  guide_and_repeat_code == 1 )
    {
        printf("errrn");
        return;
    }

    //共有4組數據
    //地址碼+地址反碼+命令碼+命令反碼
    for(group_num = 0; group_num < 4; group_num++ )
        {
        //接收一組8位的數據
        for( data_num = 0; data_num < 8; data_num++ )
        {
            //接收低電平
            get_infrared_low_time(&time);
            //如果不在0.56ms內的低電平,數據錯誤
            if((time > 60) || (time < 20))
            {
                return ;
            }

            time = 0;
            //接收高電平
            get_infrared_high_time(&time);
            //如果是在1200us=60) && (time < 100))
            {
                bit_data = 1;
            }
            //如果是在200us=10) && (time < 50))
            {
                bit_data = 0;
            }

            //groupNum表示第幾組數據
            ir_value[ group_num ] <<= 1;

            //接收的第1個數為高電平;在第二個for循環中,數據會向右移8次
            ir_value[ group_num ] |= bit_data;

            //用完時間要重新賦值
            time=0;
        }
    }
    //判斷數據是否正確,正確則保存數據
    infrared_data_true_judgment(ir_value);
}

//獲取紅外發送過來的命令
uint8_t get_infrared_command(void)
{
    return InfraredData.CommandCode;
}
//清除紅外發送過來的數據
void clear_infrared_command(void)
{
    InfraredData.CommandCode = 0x00;
}


void EXTI_HANDLER(void)
{
        if(IR_PORT-?>ISR_f.EXTI_PIN)   // 中斷標志位
        {
                if(GPIO_ReadPin(IR_PORT, IR_PIN) == GPIO_Pin_RESET)  // 如果是低電平
                {
                        //接收一次紅外數據
                        receiving_infrared_data();
                }
                GPIOA_INTFLAG_CLR(EXTI_BV); // 清除標志位
        }
}
bsp_ir_receiver.h
/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */

#ifndef _BSP_IR_RECEIVER_H__
#define _BSP_IR_RECEIVER_H__

#include "board.h"

#define IR_RCC_GPIO_ENABLE()     __RCC_GPIOA_CLK_ENABLE()
#define IR_PORT                  CW_GPIOA
#define IR_PIN                   GPIO_PIN_2

#define EXTI_PIN                 PIN2
#define EXTI_BV                  bv2
#define EXTI_IRQ                 GPIOA_IRQn
#define EXTI_HANDLER             GPIOA_IRQHandler

void infrared_goio_config(void);
uint8_t get_infrared_command(void);
void clear_infrared_command(void);
#endif

四、移植驗證

在自己工程中的main主函數中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_ir_receiver.h"

int32_t main(void)
{
    board_init();        // 開發板初始化

    uart1_init(115200);        // 串口1波特率115200


    //紅外接收初始化
    infrared_goio_config();

    printf("Start!!!rn");

    while(1)
    {
            //如果按下遙控的【1】鍵
            if( get_infrared_command() == 0xA2 )
            {
                    clear_infrared_command();
                    printf("按下【1】按鍵! rn");
            }

    }
}

移植現象:

wKgZO2eR0KCAH_BVAACIXG-fcos46.webp

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1Yln6MD82bPkgS2x-YMnfCQ?pwd=LCKF

提取碼:LCKF

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 紅外接收模塊

    關注

    1

    文章

    5

    瀏覽量

    7010
  • CW32
    +關注

    關注

    1

    文章

    242

    瀏覽量

    1098
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    CW32移植Free-RTOS】CW32開發者扶持計劃

    CW32配置Free-RTOS全過程,CW32開發者扶持計劃
    的頭像 發表于 04-18 09:38 ?6566次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發者扶持計劃

    【項目展示】基于CW32的遙控循跡小車

    藍牙模塊、OLED屏幕、TB6612和紅外循跡模塊組成,電源采用可充電鋰電池供電,建議不要使用 1.5V 干電池供電。 圖1 CW32小車 二、硬件部分 2.1主控板 小車主控板由小
    的頭像 發表于 05-31 17:33 ?1740次閱讀
    【項目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    #電子元器件 紅外接收模塊

    元器件紅外接收
    Mr_haohao
    發布于 :2022年07月16日 14:29:53

    紅外接收模塊+Stduino Nano&UNO

    37種傳感器(三十一)紅外接收模塊+Stduino Nano&UNO本文轉載自:關鍵詞:51、stm32、arduino、stduino單片機、stduino UNO&Nano、紅外接收
    發表于 08-06 09:26

    紅外接收頭基礎知識

    紅外接收頭基礎知識 紅外接收電路通常由紅外接收二極管與放大電路組成,放
    發表于 10-19 12:46 ?3652次閱讀
    <b class='flag-5'>紅外接收</b>頭基礎知識

    51單片機對紅外發射和紅外接收模塊電路的設計

    紅外發射模塊:電源3.3V或5V,通過發射管發射38KHz的紅外信號,高電平驅動 紅外接收模塊:電源3.3V或5V,可
    發表于 12-10 15:49 ?2.7w次閱讀
    51單片機對<b class='flag-5'>紅外</b>發射和<b class='flag-5'>紅外接收</b><b class='flag-5'>模塊</b>電路的設計

    51單片機的紅外發射和接收模塊設計

    紅外發射模塊:電源3.3V或5V,通過發射管發射38KHz的紅外信號,高電平驅動 紅外接收模塊:電源3.3V或5V,可
    發表于 07-08 15:30 ?1.5w次閱讀
    51單片機的<b class='flag-5'>紅外</b>發射和<b class='flag-5'>接收</b><b class='flag-5'>模塊</b>設計

    dfrobot數字紅外接收模塊簡介

    紅外遙控是我們生活中最常見的遙控方式。你每天使用的電視遙控器和空調遙控器都是使用這個原理。運用Arduino搭建紅外遙控設備也非常簡單。你只需一個紅外接收器(接收信號)、遙控器(發射信
    的頭像 發表于 12-13 15:39 ?1986次閱讀
    dfrobot數字<b class='flag-5'>紅外接收</b><b class='flag-5'>模塊</b>簡介

    【更好用的單片機】Stduino學習(三十一)紅外接收模塊

    37種傳感器(三十一)紅外接收模塊+Stduino Nano&UNO本文轉載自:http://www.stduino.com/forum.php?mod=viewthread&tid
    發表于 12-17 17:45 ?8次下載
    【更好用的單片機】Stduino學習(三十一)<b class='flag-5'>紅外接收</b><b class='flag-5'>模塊</b>

    基于CW32的RC522刷卡模塊的應用

    基于CW32的RC522刷卡模塊的應用
    的頭像 發表于 11-02 14:53 ?1586次閱讀
    基于<b class='flag-5'>CW32</b>的RC522刷卡<b class='flag-5'>模塊</b>的應用

    基于CW32的物聯網應用

    CW32】基于CW32的物聯網應用
    的頭像 發表于 11-02 15:55 ?1134次閱讀
    基于<b class='flag-5'>CW32</b>的物聯網應用

    基于CW32的遙控循跡小車

    本實驗是使用CW32單片機制作一個入門的遙控循跡小車。遙控采用藍牙配合手機APP進行遙控。循跡使用一個5路的循跡模塊。使用OLED模塊進行顯示當前小車狀態。
    的頭像 發表于 11-17 17:46 ?1346次閱讀
    基于<b class='flag-5'>CW32</b>的遙控循跡小車

    Vishay推出升級版紅外接收模塊

    Vishay近日宣布推出升級版的TSOP18xx、TSOP58xx和TSSP5xx系列紅外(IR)接收模塊,這些模塊經過優化,適用于遙控、接近探測和光幕應用。
    的頭像 發表于 02-01 14:06 ?897次閱讀

    紅外接收頭的主要功能_紅外接收頭的應用場景有哪些

    紅外接收頭(又稱紅外接收模組,IRM)是集成紅外接收PD二極管、放大、濾波和比較器輸出等的IC模塊
    的頭像 發表于 10-21 16:04 ?1788次閱讀

    CW32模塊使用 紅外解碼編碼模塊

    紅外解碼編碼模塊采用MCU+紅外發射頭+紅外接收頭,引出MCU的串口連接其他需要紅外控制的設備,可作為
    的頭像 發表于 01-23 12:56 ?581次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 <b class='flag-5'>紅外</b>解碼編碼<b class='flag-5'>模塊</b>