色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友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山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 伊人久久丁香色婷婷啪啪| 国产日韩亚洲精品视频| 午夜国产精品视频在线| 久久在精品线影院精品国产| 成人区精品一区二区不卡AV免费| 亚洲免费在线播放| 日韩人妻精品久久日| 老头狠狠挺进小莹体内视频| 国产精品青草久久福利不卡| 99久久国产露脸精品麻豆| 亚洲精品无码国产爽快A片百度 | 午夜神器老司机高清无码| 奶水四溅54p| 久久国产欧美| 国产囗交10p| 福利社的阿姨| jlzzzjizzzjlzzz亚洲| 永久免费精品精品永久-夜色| 午夜福利视频极品国产83| 日韩中文亚洲欧美视频二| 美女爱爱网站| 久久 这里只精品 免费| 国产午夜精品理论片| 国产成人亚洲精品老王| xart欧美一区在线播放| 2021国产精品一卡2卡三卡4卡| 亚洲免费在线观看| 亚洲精品一二三区区别在哪| 污文乖不疼的| 视频一区视频二区在线观看| 日本xxxxx按摩19| 欧美黑大炮18p| 男人插曲女人身体视频| 麻豆国产96在线日韩麻豆| 久久综合色视频| 老司机午夜影院试看区| 久久re视频这里精品09首页| 激情A片久久久久久久| 好好的曰com久久| 黑人巨大交牲老太| 精品国产品在线18年|