在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用Alexa和Arduino IoT Cloud完全控制您的電視

使用Alexa和Arduino IoT Cloud完全控制您的電視

2022-11-02 | zip | 0.19 MB | 次下載 | 免費

資料介紹

描述

注意:本教程可能已過時,請到此處獲取更新版本。

簡介:Arduino物聯網

Arduino IoT Cloud是一個平臺,可讓任何人輕松構建物聯網連接對象。為了使用 Alexa 控制我們的電視,我們還將使用官方 Arduino Alexa Skill

如果您是 Arduino IoT Cloud 的新手,我們建議您先看看這個介紹性項目,它將為您提供概述并指導您完成設置一個受支持的板、IoT Cloud ThingsProperties的過程,并幫助您在船上。

第 1 部分:如何控制電視機

控制任何類型的電視最簡單的方法就是把我們當成它自己的遙控紅外控制器為此,我們必須監聽遙控器將發送的信號,捕獲數據并使用我們的 Arduino 板模仿它。電路組裝好后,我們將把這個草圖上傳到我們的電路板上。它將遠程按鈕按下產生的 IR 信號突發轉換為無符號整數數組。讓我們將遙控器指向我們構建的 Arduino IR 接收器,然后按以下按鈕:

  • 從 1 到 9 的頻道
  • 提高音量
  • 音量減小
  • 沉默的
  • 頻道向上
  • 頻道向下

我們將看到來自串行監視器的值,報告為rawData現在讓我們將它們記錄到一個文本文件中,并為每個列表分配其自己的數組名稱(chan1等等chan2)。以下數值僅供參考,由三星電視遙控器生成。

CHANNEL 1
unsigned int chan1[67] = {4450,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550,1700, 500};
CHANNEL 2
unsigned int chan2[67] = {4500,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,550, 550,600, 500,600, 550,600, 500,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,650, 450,1700, 550,600, 500,1700, 550,1700, 500,1700, 550,1700, 550,1700, 500};
CHANNEL 3
unsigned int chan3[67] = {4500,4500, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 550,550, 550,550, 550,600, 550,550, 550,1700, 500,600, 550,550, 550,1700, 550,1650, 550,1700, 550,1700, 500,1700, 600};
CHANNEL 4
unsigned int chan4[67] = {4450,4450, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 600,550, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700, 550,1700, 500}; 
CHANNEL 5
unsigned int chan5[67] = {4500,4500, 500,1700, 550,1700, 550,1700, 550,550, 550,550, 550,550, 600,550, 550,550, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,1700, 500,600, 550,550, 550,600, 550,550, 550,550, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700, 550,1700, 500}; 
CHANNEL 6
unsigned int chan6[67] = {4500,4500, 550,1650, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 600,550, 500,600, 550,550, 600,550, 550,550, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,1650, 600,1650, 550,1700, 550,1650, 600}; 
CHANNEL 7
unsigned int chan7[67] = {4500,4500, 550,1700, 500,1700, 550,1750, 500,550, 550,600, 500,650, 500,550, 550,550, 550,1750, 500,1700, 500,1700, 550,650, 450,650, 500,550, 550,600, 500,650, 500,550, 550,600, 500,1700, 550,1750, 500,600, 500,550, 550,600, 500,650, 500,1750, 450,1700, 550,600, 500,650, 500,1700, 500,1700, 550,1750, 500,1700, 500}; 
CHANNEL 8
unsigned int chan8[67] = {4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,1700, 550,1700, 500,600, 550,550, 550,650, 450,600, 550,550, 550,1700, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550}; 
CHANNEL 9
unsigned int chan9[67] = {4450,4500, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,1700, 550,1700, 500,1700, 550,1700, 550}; 
VOLUME UP
unsigned int volUp[67] = {4500,4500, 550,1700, 500,1750, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,650, 450,600, 550,600, 500,650, 450,650, 500,1700, 500,1750, 500,1750, 500,550, 550,600, 500,650, 500,550, 550,600, 500,650, 500,600, 500,600, 500,1700, 550,1750, 450,1750, 500,1700, 550,1700, 500}; 
VOLUME DOWN
unsigned int volDown[67] = {4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,600, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,650, 500,1700, 500,650, 500,1700, 500,1750, 500,1700, 550,1700, 500}; 
CHANNEL UP
unsigned int chanUp[67] = {4500,4450, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 550,550, 550,550, 600,550, 550,1650, 550,1700, 550,1650, 600,550, 550,550, 550,600, 500,600, 550,550, 550,550, 550,1700, 550,550, 600,550, 550,1650, 550,600, 550,550, 550,550, 550,1700, 550,550, 550,1700, 550,1700, 550,550, 550,1650, 600,1650, 550,1700, 550}; 
CHANNEL DOWN
unsigned int chanDown[67] = {4500,4450, 600,1650, 550,1700, 550,1650, 550,600, 550,550, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 550,550, 550,550, 550,550, 600,550, 550,550, 550,600, 500,600, 550,1650, 600,550, 550,550, 550,550, 600,1650, 550,1700, 500,1700, 600,1650, 550,550, 600,1650, 550,1700, 500,1700, 550};

第 2 部分:Arduino 物聯網云

Arduino IoT Cloud主頁面中,我們將創建一個新事物并為其分配一個有意義的名稱。我們稱之為TVRemoteController 然后我們將選擇我們要使用的板。在本教程中,我們使用了 Arduino Nano 33 IoT,但如果您有另一個兼容的板也可以,請記住引腳分配和 IR 庫的行為可能會發生變化。如果此時您看不到您的電路板,您可能跳過了我們上面提到的入門過程,如果是這種情況,請返回該過程。

完成后,我們將向Thing添加一個屬性它將代表我們的電視機。Smart Home類別下,選擇“TV”作為 Property Type,將其設置為“Read & Write”,在“Update”下選擇“When the value changes”。

這就是我們的事物的屬性視圖在這一點上的樣子:

poYBAGNgvm6AO9rdAADW4Nh6aIY160.png
我們新創建的 Thing 的屬性視圖
?

第 3 部分:Arduino 網頁編輯器

是時候點擊“EDIT SKETCH”按鈕了,它將帶我們進入 Web Editor,我們可以在其中向 IoT Cloud 自動生成的 Sketch 添加一些自定義代碼。

我們必須包括的第一件事是由 Ken Shirriff 編寫的IR Remote庫。

#include 

然后我們必須為我們的通道設置一個二維數組,為我們需要的命令設置 6 個數組。如果您還記得,在第 1 部分中,我們捕獲了一些 IR 數據,我們現在將使用這些數據來填充我們的陣列

const unsigned int chan[9][67] = {
 {chan1},
 {chan2},
 {chan3},
 {chan4},
 {chan5},
 {chan6},
 {chan7},
 {chan8},
 {chan9}
};
const unsigned int volUp[67] = {...};  
const unsigned int volDown[67] = {...};
const unsigned int chanUp[67] = {...}; 
const unsigned int chanDown[67] = {...};
const unsigned int onoff[67] = {...};
const unsigned int mute[67] = {...};

然后讓我們設置 IR 庫和所需的頻率(對于這種應用程序,它始終是 38KHz)

IRsend irsend;
const int freq = 38;

我們還需要一個函數來發送 IR 命令并閃爍內置 LED(在此階段主要用于調試目的)。使用的延遲值將取決于電視的品牌和型號,因此如果事情沒有按預期工作(錯誤的命令或未收到命令),請隨意調整它。

void sendIR(const unsigned int buf[]) {
 digitalWrite(LED_BUILTIN, HIGH);
 irsend.sendRaw(buf, 67, freq);
 delay(300);
 digitalWrite(LED_BUILTIN, LOW);
}

最后一步是onTvChange()使用一些自定義代碼完成生成的回調,以便在 Alexa 命令更改 TV 屬性時發送 IR 命令。例如,如果音量增加,我們必須虛擬按下按鈕Volume Up,如果頻道設置為 7,我們必須發送頻道 7 按鈕的序列,依此類推。

void onTvChange() {
 Serial.println("==================");
 Serial.println("Switch:"+String(tv.getSwitch()));
 Serial.println("Volume:"+String(tv.getVolume()));
 Serial.println("Channel:"+String(tv.getChannel()));
 Serial.println("Mute:"+String(tv.getMute()));
 Serial.println("==================");
 if (first){
     prevSwitch = tv.getSwitch();
     prevVolume = tv.getVolume();
     prevChannel = tv.getChannel();
     prevMute = tv.getMute();
     first = false;
     return;
 } 
 // Volume changed
 if (tv.getVolume() > prevVolume) {
   tv.setMute(false);
   prevMute = false;
   for (int k = prevVolume + 1 ; k<=tv.getVolume(); k++) {
     sendIR(volUp);
     Serial.println("Volume requested:"+String(tv.getVolume())+" Set:"+String(k));  
   }
   prevVolume = tv.getVolume();
 }
 else if (tv.getVolume() < prevVolume) {
   tv.setMute(false);
   prevMute = false;
   for (int k = prevVolume - 1; k>=tv.getVolume(); k--) {
     sendIR(volDown);
     Serial.println("Volume changed:"+String(tv.getVolume())+" Set:"+String(k));  
   }
   prevVolume = tv.getVolume();
 }
 // Mute changed
 if (tv.getMute() != prevMute && tv.getMute()) {
   prevMute = tv.getMute();
   sendIR(mute);
   Serial.println("Mute changed:"+String(tv.getMute()));
 }
 else if (tv.getMute() != prevMute && !tv.getMute()) {
   prevMute = tv.getMute();
   sendIR(mute);
   Serial.println("Mute changed:"+String(tv.getMute()));
 }
 // Channel changed
 if (tv.getChannel() != prevChannel) {
   int newChannel = tv.getChannel();
   if (newChannel > 0 && newChannel < 10) {
     sendIR(chan[newChannel-1]);
   } else if (newChannel > 9) {
     if (newChannel > prevChannel) {
       for (int ch = prevChannel; ch < newChannel; ch++) {
         sendIR(chanUp);
         Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch));  
       }  
     } else if (newChannel < prevChannel) {
         for (int ch = prevChannel; ch > newChannel; ch--) {
           sendIR(chanDown);
           Serial.println("Chan requested:"+String(newChannel)+" Set:"+String(ch));  
         }
     }
   }
   prevChannel = newChannel;
   Serial.println("Channel changed:"+String(tv.getChannel()));
 }
 // On/Off changed
 if (tv.getSwitch() != prevSwitch) {
   prevSwitch = tv.getSwitch();
   if (tv.getSwitch()) {
     sendIR(chan[6]);
   } else {
     sendIR(onoff);
   }
   Serial.println("Switch changed:"+String(tv.getSwitch()));
 }

第 4 部分:亞馬遜 Alexa

我們現在需要可以從Apple App StoreGoogle Play Store下載Amazon Alexa 應用程序安裝后,使用您現有的帳戶登錄或創建一個新帳戶。

讓我們完成安裝 Arduino Alexa Skill 并對其進行配置以訪問和控制我們的電視的必要步驟。我們將按照下面的圖片順序查看所有必需的步驟。

?
?
?
poYBAGNgvnSAC-I8AAB1qTpB_zQ179.png
?
1 / 11 ? 1/11:點擊“設備”
?

我們完成了,現在是時候對我們的電視進行語音控制,詢問類似的問題

  • “Alexa,把電視音量調大。”
  • “Alexa,靜音電視”或“Alexa,取消靜音電視”。
  • “Alexa,電視上的下一個頻道。”

玩得開心,玩 Alexa 和 IoT Cloud。如果您有任何問題和/或構建此項目,請在下面的評論中告訴我們。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1使用單片機實現七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2聯想E46L DAOLL6筆記本電腦圖紙
  4. 1.10 MB   |  2次下載  |  5 積分
  5. 3MATLAB繪圖合集
  6. 27.12 MB   |  2次下載  |  5 積分
  7. 4PR735,使用UCC28060的600W交錯式PFC轉換器
  8. 540.03KB   |  1次下載  |  免費
  9. 5UCC38C42 30W同步降壓轉換器參考設計
  10. 428.07KB   |  1次下載  |  免費
  11. 6DV2004S1/ES1/HS1快速充電開發系統
  12. 2.08MB   |  1次下載  |  免費
  13. 7模態分解合集matlab代碼
  14. 3.03 MB   |  1次下載  |  2 積分
  15. 8美的電磁爐維修手冊大全
  16. 1.56 MB   |  1次下載  |  5 積分

本月

  1. 1使用單片機實現七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2UC3842/3/4/5電源管理芯片中文手冊
  4. 1.75 MB   |  15次下載  |  免費
  5. 3DMT0660數字萬用表產品說明書
  6. 0.70 MB   |  13次下載  |  免費
  7. 4TPS54202H降壓轉換器評估模塊用戶指南
  8. 1.02MB   |  8次下載  |  免費
  9. 5STM32F101x8/STM32F101xB手冊
  10. 1.69 MB   |  8次下載  |  1 積分
  11. 6HY12P65/HY12P66數字萬用表芯片規格書
  12. 0.69 MB   |  6次下載  |  免費
  13. 7華瑞昇CR216芯片數字萬用表規格書附原理圖及校正流程方法
  14. 0.74 MB   |  6次下載  |  3 積分
  15. 8華瑞昇CR215芯片數字萬用表原理圖
  16. 0.21 MB   |  5次下載  |  3 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分
主站蜘蛛池模板: 国产一卡二卡≡卡四卡无人| 五月婷婷网址| 免费一级特黄特色大片在线观看看| 久久影视免费体验区午夜啪啪| 一级毛片一级毛片一级毛片 | 色之综综| 日产精品卡二卡三卡四卡无卡乱码| 色偷偷免费视频| 亚洲午夜在线视频| 中文字幕色婷婷在线精品中| 色黄网站成年女人色毛片 | 五月天婷婷爱| 亚洲一区二区三区四| 日本wwww色| 天天射网| 短篇禁伦小说| 国产综合色在线视频区色吧图片| 国产成人综合亚洲怡春院| 亚洲福利在线视频| 99久久99久久精品免费看子伦| 欧美在线视频免费播放| 色丁香六月| 天天做天天操| 在线你懂的网址| 成人a毛片视频免费看| 一区二区三区四区视频在线 | 狠狠色综合网| 视频免费在线观看| 欧美一级三级在线观看| 欧美黄色片视频| 亚洲www色| 天天做天天爱天天做天天吃中| 免费视频黄| 高清欧美一级在线观看| 中文字幕一区二区三区在线观看| 欧美色图亚洲激情| 成人一级网站| 日本高清色图| 高清视频免费| 全黄毛片| 1000部禁片黄的免费看|