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

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

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

用 M61模組做一個紅外空調(diào)遙控器

AIoT行業(yè)洞察 ? 來源:AIoT行業(yè)洞察 ? 作者:AIoT行業(yè)洞察 ? 2024-08-23 08:58 ? 次閱讀

本作品由安信可社區(qū)用戶

WildboarG制作

使用

連接 wifi

訂閱 MQTT 服務(wù)

接入 HOMEASSISTANT

材料準(zhǔn)備

wKgZombH3peAb06oAAAJhxU5Rlg135.png

紅外發(fā)射模塊原理圖

wKgaombH3piAddLNAACSeAzhks435.jpeg

原理

空調(diào)遙控器簡單來講就是通過紅外發(fā)射管的亮滅來承載編碼信息,對應(yīng)的空調(diào)設(shè)備上有一個接收管,它接收到發(fā)射管的光信號來解析協(xié)議獲取數(shù)據(jù),然后對空調(diào)進行對應(yīng)指令的控制

例如:將溫度設(shè)置為 16° 冷風(fēng) 風(fēng)速 1 級

既然要控制燈的亮滅,那么就只需要一個 IO 口控制就可以了(除去 VCC 和 GND),手上剛好有一個

M61 板子剛好用上了。一般的控制紅外遙控器使用的 38KHZ 頻率,所以只要模擬 GPIO 產(chǎn)生 38KHZ 的高低電平就可以控制紅外發(fā)射管發(fā)送數(shù)據(jù)了。

紅外編碼

借助 esp8266+ 紅外接收模塊,用你的遙控器懟著接收模塊按鍵,讀取紅外發(fā)射的原始數(shù)據(jù),arduino 有對應(yīng)的示例代碼(IRremoteESP8266/IRrecvDumpV2.ino),連接好線,刷入示例程序,手動按你的遙控器,從串口讀取 rawData 數(shù)組。

獲取的數(shù)據(jù)大概是這樣的:

uint16_t rawData[279] = { 9000, 4442, 608, 1624, 584, 494, 610, 496, 608, 1600, 608, 1602, 608, 494, 608, 496, 608, 496, 608, 496, 608, 494, 610, 520, 584, 1624, 586, 498, 606, 518, 586, 496, 608, 518, 586, 496, 608, 494, 610, 494, 610, 496, 608, 518, 586, 1624, 586, 494, 610, 494, 610, 496, 606, 498, 608, 496, 608, 498, 606, 1600, 610, 520, 584, 1624, 584, 496, 608, 496, 608, 1602, 608, 518, 638, 20150, 606, 496, 608, 496, 608, 496, 608, 496, 608, 1602, 606, 494, 610, 518, 586, 494, 610, 494, 610, 518, 586, 518, 586, 496, 608, 494, 610, 1602, 608, 494, 608, 496, 608, 494, 610, 520, 584, 496, 608, 498, 606, 496, 608, 498, 606, 496, 608, 518, 586, 518, 586, 496, 608, 494, 610, 494, 610, 494, 610, 1600, 608, 1600, 608, 1602, 660, 40406, 9158, 4440, 610, 1602, 608, 496, 608, 496, 608, 1602, 608, 1600, 608, 494, 610, 494, 610, 494, 610, 496, 608, 518, 584, 496, 608, 1602, 608, 518, 584, 496, 608, 496, 608, 496, 608, 496, 608, 496, 608, 496, 608, 494, 610, 498, 606, 1600, 610, 494, 610, 518, 586, 494, 610, 518, 586, 494, 610, 496, 608, 1600, 608, 1600, 608, 1624, 584, 496, 608, 520, 584, 1600, 608, 520, 664, 20150, 608, 518, 584, 496, 608, 496, 608, 496, 608, 520, 584, 496, 608, 496, 608, 494, 610, 518, 586, 496, 608, 496, 608, 498, 606, 496, 608, 494, 610, 496, 608, 496, 608, 494, 610, 496, 608, 496, 606, 496, 608, 1624, 584, 496, 608, 496, 608, 520, 584, 496, 608, 496, 608, 498, 606, 496, 608, 520, 584, 494, 610, 1602, 608, 1600, 608 }; // 24 度

只需要借助 GPIO 連接的紅外燈亮滅對應(yīng)的時長就將數(shù)據(jù)發(fā)送出去了。具體的協(xié)議高低電平起始不同,以我的格力空調(diào)為例子,它的起始數(shù)據(jù)是高電平 第一個數(shù)據(jù)是 9000 也就是說 需要我的 GPIO 輸出 9000us 的高電平,(這里說的高電平不是真正的高電平 1,而是需要以 38KHZ 載波的高電平,也就是說需要用 38khz 頻率一直高低翻轉(zhuǎn)的電平),而第二個數(shù)據(jù)是 4442,這就需要真正的低電平延時 4442us,以此類推奇數(shù)需要電平反轉(zhuǎn),偶數(shù)需要真正的低電平。直到將這 279 個數(shù)據(jù)發(fā)送完。就完成了控制部分。

參考了zzbinfo 的這篇帖子用 Ai-M61 實現(xiàn)物聯(lián)網(wǎng)開發(fā)(2)---實現(xiàn)遠程開機、無線控制、紅外遙控"

和 wxlinus 的這篇帖子Ai-M61-32S-Kit 開發(fā)板 mqtt 調(diào)試

邏輯實現(xiàn)

采用 pwm 輸出 38Khz 頻率。

pwm 配置:

#if 0
// 定時器配置
struct bflb_timer_config_s cfg0;
cfg0.counter_mode = TIMER_COUNTER_MODE_PROLOAD;
cfg0.clock_source = TIMER_CLKSRC_XTAL;//外部時鐘為40M
cfg0.clock_div = 39; //預(yù)分頻后 1M
cfg0.trigger_comp_id = TIMER_COMP_ID_0;
cfg0.comp0_val = 13; //計數(shù)13us 約等于38kHz
cfg0.preload_val = 0;
timer0 = bflb_device_get_by_name("timer0");
bflb_timer_init(timer0, &cfg0);
bflb_irq_attach(timer0->irq_num, timer0_isr, NULL);
bflb_irq_enable(timer0->irq_num);
#endif

// PWM配置

pwm = bflb_device_get_by_name("pwm_v2_0"); //給外設(shè)接口賦名pwm_v2_0
/* period = .XCLK / .clk_div / .period = 40MHz / 7 / 150 ≈ 38KHz */
struct bflb_pwm_v2_config_s cfg = {
.clk_source = BFLB_SYSTEM_XCLK,
.clk_div = 7,
.period = 150,
}; //設(shè)置PWM的頻率,選擇時鐘,分頻,和周期。根據(jù)上面的公式算出最終的頻率。
/*初始化PWM輸出*/
bflb_pwm_v2_init(pwm, &cfg);
bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0,0, 75); //占空比50%
發(fā)送配置:
void Send_IR(uint16_t *buf,uint8_t len)
{
// printf("Sending IR code...n");
bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0); //開啟正向通道
for (uint16_t i = 0; i < len; i++) {
if (i%2==0) {
//bflb_timer_start(timer0); // 啟用38kHz載波的定時器
bflb_pwm_v2_start(pwm); //開啟pwm
bflb_mtimer_delay_us(buf[i]); // 高電平(脈沖時間)
//bflb_timer_stop(timer0); // 停止38kHz載波
bflb_pwm_v2_start(pwm); //關(guān)閉pwm
} else {
bflb_gpio_reset(gpio, IR);
bflb_mtimer_delay_us(buf[i]); // 低電平(空閑時間)
}
}
}

使用

克隆倉庫AirCondition

首先需要獲取你家空調(diào)遙控對應(yīng)的紅外編碼(上邊給了兩種方法)

修改本例程

配置 wifi ,mqtt 訂閱主題 (/state/user_state.h)

獲取空調(diào)遙控器的 RawData 以數(shù)組的形式存放 user_aric.c 目錄下

燒錄

使用

克隆倉庫AirCondition

首先需要獲取你家空調(diào)遙控對應(yīng)的紅外編碼(上邊給了兩種方法)

修改本例程

配置 wifi ,mqtt 訂閱主題 (/state/user_state.h)

獲取空調(diào)遙控器的 RawData 以數(shù)組的形式存放 user_aric.c 目錄下

燒錄

接入 HOMEASSISTANT

1.在 HACS 中下載 Lovelace Thermostat 組件,按照說明配置

2.修改 configuration.yaml 文件

3.添加設(shè)備發(fā)現(xiàn)

mqtt:

- climate:

name: AC

temperature_command_topic: "home/ac"

precision: 1.0

代碼

4.然后更新配置,再到概覽中添加 UI 卡片,類型為恒溫器

wKgZombH3piANpAPAAA1D5jR2N463.jpeg

備注

1.定時器模擬載波已經(jīng)更新為 PWM 控制更準(zhǔn)確

2.更新了 WB2 版本的,在同一倉庫下

帖子鏈接:【DIY 電子作品】WB2 復(fù)刻一個空調(diào)遙控器

下載:

git clone -b wb2 https://github.com/WildboarG/AirCondition.git

上圖:

獲取紅外編碼的 esp8266+ 淘寶不知名的紅外接收模塊

wKgaombH3pmASrGbAAE4AtNgLoE20.jpeg

以前畫的一個紅外發(fā)射模塊,淘寶買的沒有三極管放大,距離太近了

wKgZombH3pmARz88AADVtQVthWM24.jpeg

視頻演示

https://www.bilibili.com/video/BV1nevPefE5E/?t=19.532662&spm_id_from=333.1350.jump_directly&vd_source=54c5db21948db2378659b7e8e42bafbf

wKgaombH3pqAdhkwAAAuffEhMg446.jpeg

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 紅外
    +關(guān)注

    關(guān)注

    8

    文章

    717

    瀏覽量

    94625
  • 模組
    +關(guān)注

    關(guān)注

    6

    文章

    1356

    瀏覽量

    29940
  • 空調(diào)遙控器
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    7254
收藏 人收藏

    評論

    相關(guān)推薦

    格力空調(diào)遙控器

    我想用51做一個格力空調(diào)遙控器 求代碼或者格力的紅外
    發(fā)表于 08-03 18:17

    89C52 做一個學(xué)習(xí)型遙控器

    現(xiàn)在有單片機89C52 紅外線發(fā)射二級管 三級管 按鈕 電阻 電容 0038紅外接收 晶振 想做一個 學(xué)習(xí)型遙控器 遙控電視 和
    發(fā)表于 02-13 09:04

    關(guān)于萬能空調(diào)遙控器的制作

    網(wǎng)上買了空調(diào)碼庫的學(xué)習(xí)型紅外遙控器模塊,請問下實現(xiàn)將它做成萬能
    發(fā)表于 08-02 10:33

    手機紅外空調(diào)遙控器DIY制作

    `手機紅外空調(diào)遙控器DIY制作DIY&分享—GravityShare炎炎夏日,當(dāng)你回到家或者辦公室的時候想開空調(diào)時找不到
    發(fā)表于 07-10 00:31

    如何做一個空調(diào)紅外的功能

    最近做一個空調(diào)紅外的功能,上網(wǎng)搜了一下格力空調(diào)紅外編碼,就按照編碼模擬時序。格力空調(diào)
    發(fā)表于 01-10 06:40

    如何做一個相機紅外遙控器?

    如何做一個相機紅外遙控器?
    發(fā)表于 02-15 07:04

    請問能用單片機加上紅外做一個空調(diào)遙控器嗎?

    能用單片機加上紅外做一個空調(diào)遙控器嗎?該怎么實現(xiàn)?
    發(fā)表于 11-07 06:28

    TCL 飛利浦超級SMT M61機芯電路圖

    TCL SMT M61彩電電路圖TCL SMT M61彩色電視機電路圖,TCL SMT M61彩電圖紙,TCL SMT M61原理圖。
    發(fā)表于 05-06 14:40 ?35次下載
    TCL 飛利浦超級SMT <b class='flag-5'>M61</b>機芯電路圖

    自制電腦紅外遙控器

      句話,就是用電視遙控器控制電腦!   遙控器可以隨便電視、VCD、DVD
    發(fā)表于 09-23 17:32 ?268次下載

    智能學(xué)習(xí)型紅外空調(diào)遙控器分析

    為了解決空調(diào)遙控器不兼容問題,設(shè)計了款基于Atmega16單片機的智能空調(diào)遙控器。該遙控器采用
    發(fā)表于 10-16 11:11 ?17次下載
    智能學(xué)習(xí)型<b class='flag-5'>紅外</b><b class='flag-5'>空調(diào)</b><b class='flag-5'>遙控器</b>分析

    空調(diào)遙控器維修資料下載

    空調(diào)遙控器壞了怎么辦?空調(diào)遙控器哪里修?空調(diào)遙控器哪里買?
    發(fā)表于 05-13 10:13 ?18次下載
    <b class='flag-5'>空調(diào)</b><b class='flag-5'>遙控器</b>維修資料下載

    空調(diào)紅外遙控器的實現(xiàn)資料詳細說明

    為止。   3 把萬能遙控器的的模式選為“制冷”,風(fēng)量選為“自動”   4 8位拔碼開關(guān)來選擇“模式”,“開關(guān)”等
    發(fā)表于 08-04 08:00 ?5次下載
    <b class='flag-5'>空調(diào)</b><b class='flag-5'>紅外</b><b class='flag-5'>遙控器</b>的實現(xiàn)資料詳細說明

    STM32解析美的空調(diào)紅外遙控器

    STM32解析美的空調(diào)紅外遙控器1.紅外線簡介??在光譜中波長自760nm至400um的電磁波稱為紅外線,它是
    發(fā)表于 12-17 17:50 ?42次下載
    STM32解析美的<b class='flag-5'>空調(diào)</b><b class='flag-5'>紅外</b><b class='flag-5'>遙控器</b>

    如何構(gòu)建簡單的基于紅外的車門遙控器

    在這篇文章中,我們將學(xué)習(xí)如何構(gòu)建簡單但萬無失的基于紅外遙控器,該遙控器可用于通過個人
    的頭像 發(fā)表于 04-02 10:37 ?1151次閱讀
    如何構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的基于<b class='flag-5'>紅外</b>的車門<b class='flag-5'>遙控器</b>

    使用紅外發(fā)射模塊自制空調(diào)遙控器

    我們家里的空調(diào)、電視等,它們的遙控器都是通過紅外信號來控制的。其實,我們可以自己紅外發(fā)射模塊來做一個
    的頭像 發(fā)表于 05-23 15:43 ?3427次閱讀
    使用<b class='flag-5'>紅外</b>發(fā)射模塊自制<b class='flag-5'>空調(diào)</b><b class='flag-5'>遙控器</b>