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

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

3天內不再提示

基于物聯網的語音控制智能火箭點火器

科技觀察員 ? 來源:circuitdigest ? 作者:Debashis Das ? 2022-08-05 16:47 ? 次閱讀

隨著冬季的臨近;每年慶祝燈節的時候到了 。是的,我們談論的是排燈節,這是一個真正的印度節日,在全球范圍內慶祝。 今年排燈節已經結束,看到人們放鞭炮,我想出了一個 基于 Alexa 的語音控制火箭發射器或點火器的想法,它可以通過語音命令發射火箭,對孩子們來說非常安全和有趣。

需要說明的是,我不是來鼓勵人們在排燈節放鞭炮的,印度政府已經對鞭炮實施了限制以遏制污染,我們有責任遵守它。這里的想法是,與其花一整天的時間發射餅干,不如讓我們構建一個很酷的語音控制的 Arduino 火箭點火器并以風格發射一些火箭。我認為這是雙贏的。

這個Arduino 火箭發射器將與其他火箭發射器大不相同。它有一個由膠合板制成的非常堅固的底盤,一個可靠的基于繼電器的控制機構,以及一個非常獨特的發射和重新裝載火箭的機構,所以事不宜遲,讓我們直接進入構建過程。

poYBAGLs2LmALjEuAAisScJWJsY245.png

基于 Alexa 的語音控制火箭發射器 - 工作

電路的工作原理很簡單,負責發射火箭的主要部件是鎳鉻合金線,它以加熱線圈的形式出現。這種鎳鉻合金線將充當火箭點火器。如何?我稍后會告訴你。

pYYBAGLs2LSAXUW8AAVTChdessg872.png

正如您在上圖中看到的,鎳鉻合金線以加熱線圈的形式出現,對我來說,這是最簡單的方法。我們必須將其拉直并彎曲以形成如下圖所示的形狀。

pYYBAGLs2K2AfoCAAAUSJMbVyyo963.png

完成此操作后,我們將使用 12V 鉛酸電池為其供電,它會發出紅光。這足以點燃火箭內部的黑色火藥,它的作用就像正常的引信劑量一樣。請注意,這是一個大功率火箭發射控制器,使電線紅熱所需的電流很高。在大電流下工作時請遵循安全建議。

pYYBAGLs2KmAA5sfAAQzivDTvSI221.png

測試完成后,唯一剩下的就是控制過程,我們將在本文中繼續進行時執行此操作。

我們的 NodeMCU Rocket Launch 控制器的 Launchpad

對于這個構建,讓我們制作一個啟動板。完成啟動板后,我們可以輕松地重新加載一些破解程序并非常輕松地啟動它們。我已經構建了一個啟動板,如下圖所示。

pYYBAGLs2KSAEM-WAApQTt3pywY305.png

讓我們逐步了解構建啟動板的過程。對于框架的兩側,我使用了兩塊(25X3X1.5)英寸長的膠合板。對于頂部,我使用了 (20X3X1.5) 英寸長的膠合板部分,對于底座,我使用了 (20X6X1.5) 英寸長的膠合板,這將使其更加穩定。下面的圖片會給你一個清晰的想法。

poYBAGLs2KGATNPTAAAjAZWJ3tI184.png

現在,是時候制造鎳鉻合金絲了,它可以作為我們火箭的保險絲。為此,我買了一個 1000W 的鎳鉻合金線底座加熱線圈,將其拉直,制成如下圖所示的結構。我必須使用兩個鉗子和側刀來塑造鎳鉻合金線,如下所示。

pYYBAGLs2J2AcgO8AAgR9HzNiOg207.png

完成此操作后,我將 20 英寸的膠合板塊分成七塊測量它,并鉆孔以放入鎳鉻合金線基細絲,一旦完成,它看起來像下面的圖像。

poYBAGLs2JiAEcy7AAUCJDZsjPY712.png

但在放置燈絲之前,我在每個端子上連接了 1 平方毫米厚的銅線并將它們穿過孔,一旦一切完成,它看起來像下圖。

pYYBAGLs2JKAC3biAAV1DwsR82Y492.png

如您所見,我還加入了雙組分粘合劑以將電線和細絲固定到位。完成后,我們的啟動板就完成了。正如您從本節的第一張圖片中看到的那樣,我將燈絲線直接連接到 PCB,因為我們正在處理非常高的電流,所以我沒有費心放置螺絲端子,這標志著我們機箱的末端建設過程。

poYBAGLs2I-AC0nzAAUnzt0G9dg340.png

Alexa 控制的火箭發射器所需的組件

對于硬件方面,我們使用了非常通用的部件,您可以從當地的愛好商店輕松獲得,下面給出了完整的物品清單。

12V-繼電器 - 3

BD139 晶體管 - 3

1N4004 二極管 - 3

5.08 毫米螺絲端子 - 1

LM7805 - 穩壓器 - 1

100uF去耦電容 - 2

5.1V 穩壓二極管 - 1

NodeMCU (ESP8266-12E) 開發板 - 1

虛線性能板 - ?

連接線 - 10

Arduino火箭發射器電路圖

下面給出了Alexa 控制的火箭發射器的完整示意圖。我使用標簽將一個引腳連接到另一個引腳。如果你看得足夠近,解釋原理圖應該不難。

poYBAGLs2IeATsKnAAgEZRhvnyo078.png

電路結構非常簡單,所以我不會詳細介紹。

首先,我們有 IC1,它是一個 LM7805 穩壓器,其 100uF 去耦電容由 C1 和 C2 表示。之后,我們有了項目的核心,即 NodeMCU 板,其中包含 ESP-12E 模塊。由于我們使用的是 12V 鉛酸電池為整個電路供電,這就是為什么我們必須先使用 LM7805 將其轉換為 12V 到 5V 來為 NodeMCU 板供電。我們這樣做是因為板載 AMS1117 穩壓器不足以將 12V 直接轉換為 3.3V,這就是需要 7805 的原因。

繼續前進,我們有三個 12V 繼電器,在這個演示中,我們使用了三個繼電器,但正如我們之前提到的,發射臺有一個用于 7 枚火箭的占位符。您可以稍微調整一下代碼,然后將所有七枚火箭一起發射。三個繼電器由三個NPN晶體管T1、T2、T3驅動,足以驅動一個real的負載。最后,我們有三個續流二極管,用于保護電路免受繼電器產生的高壓尖峰的影響。

在 PerfBoard 上構建電路

從主圖中可以看出,我們的想法是制作一個可以在短時間內處理大量電流的簡單電路,根據我們的測試,800 毫秒足以點亮一張紙。因此,我們在一塊穿孔板上構建電路,并用 1 平方毫米厚的銅線連接所有主要連接。在我們完成焊接板之后。一旦我們完成,它看起來像下面顯示的東西。

poYBAGLs1UCAIiURAAJu7VS-GHs190.png

為 Alexa 控制的火箭發射器編程 NodeMCU

現在硬件已經準備就緒,是時候開始為我們基于 Alexa 的語音控制火箭發射器編寫代碼了。完整的代碼可以在本頁末尾找到,但在我們開始之前,將所需的庫添加到您的 Arduino IDE 非常重要。確保從下面給出的鏈接中添加正確的庫,否則代碼在編譯時會拋出錯誤。

下載 Espalexa 庫

添加所需庫后,您可以直接上傳本頁底部給出的代碼,以檢查電路是否正常工作。如果您想知道代碼是如何工作的,請繼續閱讀。

像往常一樣,我們通過添加所需的頭文件并為我們的熱點定義引腳名稱和憑據來開始程序。

#include 
#include 
//定義與Relays連接的GPIO
#define ROCKET_1_PIN 4
#define ROCKET_2_PIN 13
#define ROCKET_3_PIN 15
// WiFi 憑證
const char* ssid = "deba_2.4";
const char* 密碼 = "il2ww*ee";

繼續我們的代碼,我們有我們的函數原型和回調函數定義。

函數connectToWiFi()用于連接 Wi-Fi 網絡,當 Wi-Fi 連接成功時該函數返回 true。

接下來,我們有我們的回調函數,當我們向 Alexa 發出命令時會調用這個函數,espalexa API 會處理這些函數

void allrockets(uint8_t 亮度);
void firstrocket(uint8_t 亮度);
void secondrocket(uint8_t 亮度);
無效第三火箭(uint8_t亮度);

接下來,我們定義設備名稱。這些定義的設備名稱將反映在 Alexa 應用程序上,當我們說出命令時,Alexa 將通過這些名稱識別設備。所以這些名字非常重要。

// 設備名稱
String First_Device_Name = "所有火箭";
String Second_Device_Name = "火箭一號";
String Third_Device_Name = "火箭二號";
String Forth_Device_Name = "三號火箭";

接下來,我們定義一個布爾變量wifiStatus,它將保存 Wi-Fi 的連接狀態。最后,我們創建一個 Espalexa 對象 espalexa。我們將使用這個對象來配置 NodeMCU。

// wifi狀態檢查
布爾 wifiStatus = 假;
// Espalexa 對象
埃斯帕萊克斯帕萊克斯;

接下來,我們有我們的void setup()部分。在本節中,我們使用Serial.begin()函數初始化串行通信以進行調試。我們使用pinMode()函數將之前定義的所有引腳設置為輸出,接下來我們調用connectToWiFi()函數,它會嘗試連接到 Wi-Fi 15 次,如果連接成功,則返回 true連接起來,它將返回 false 并且代碼將永遠執行while()循環。如果 Wi-Fi 連接成功,我們使用espalexa.addDevice()函數將之前定義的設備添加到 Alexa 對象中。這個函數有兩個參數,第一個是設備名稱,第二個是回調函數的名稱,當我們向 Alexa 發出命令時,會調用相鄰的函數。一旦我們完成了所有四個設備的操作,我們調用 espalexa 對象的begin()方法。

無效設置(){
  序列號.開始(115200);// 啟用串行調試消息
  pinMode(ROCKET_1_PIN,輸出);//設置ESP引腳作為輸出
  pinMode(ROCKET_2_PIN,輸出);//設置ESP引腳作為輸出
  pinMode(ROCKET_3_PIN,輸出);//設置ESP引腳作為輸出
  wifiStatus = connectToWiFi(); // 連接到本地 Wi-Fi 網絡
    if (wifiStatus) {// 設置所有 espalexa 設備
    // 在此處定義您的設備。
    espalexa.addDevice(First_Device_Name, allrockets); //最簡單的定義,默認狀態關閉
    espalexa.addDevice(Secound_Device_Name, firstrocket);
    espalexa.addDevice(Third_Device_Name, secondrocket);
    espalexa.addDevice(Forth_Device_Name, thirdrocket);
    espalexa.begin();
  }
  別的 {
    而(1){
      串行。println("無法連接WiFi。請檢查數據并重置ESP。");
      延遲(2500);
    }
  }
}

在循環部分,我們調用 espalexa 對象的loop()方法,該方法將始終檢查任何傳入的命令,如果發現為真,則調用回調函數。

無效循環(){
  espalexa.loop();
  延遲(1);
}

接下來,我們定義所有回調函數,在本節中,我們將定義調用此回調函數時會發生什么。當調用 allrockets()函數時,所有火箭將一起發射。為此,我們將打開繼電器 00 毫秒,然后關閉繼電器。在我的測試中,我發現對于指定長度的鎳鉻合金線,我需要 800 毫秒的延遲才能完全加熱線,這對你來說可能是這樣,也可能不是。所以相應地選擇延遲。

void allrockets(uint8_t 亮度)
{
  如果(亮度 == 255)
  {
    數字寫入(ROCKET_1_PIN,高);
    數字寫入(ROCKET_2_PIN,高);
    數字寫入(ROCKET_3_PIN,高);
    延遲(800);
    數字寫入(ROCKET_1_PIN,低);
    數字寫入(ROCKET_2_PIN,低);
    數字寫入(ROCKET_3_PIN,低);
    Serial.println("所有火箭發射");
  }
}

接下來,我們有我們的第一個 rocket(),當我們調用 Alexa 并說 tie 命令發射第一顆火箭時,它會被調用。過程很相似,我們開啟繼電器800ms再關閉。

void firstrocket(uint8_t 亮度){
   如果(亮度 == 255)
  {
    數字寫入(ROCKET_1_PIN,高);
    延遲(800);
    數字寫入(ROCKET_1_PIN,低);
    Serial.println("第一枚火箭發射");
  }
}

最后,我們有了connectToWiFi()函數。這個函數非常通用且不言自明,所以我不會詳細介紹這個函數。該函數將 ESP 連接到 Wi-Fi 并返回連接狀態。

布爾連接到WiFi()
{
  布爾狀態 = 真;
  詮釋 i = 0;
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, 密碼);
  序列號.println("");
  Serial.println("連接到 WiFi");
  // 等待連接
  Serial.print("正在連接...");
  而(WiFi.status()!= WL_CONNECTED){
    延遲(500);
    Serial.print(".");
    如果 (i > 15) {
      狀態=假;休息;
    }
    我++;
  }
  序列號.println("");
  如果(狀態){
    Serial.print("連接到");
    序列號.println(ssid);
    Serial.print("IP地址:");
    Serial.println(WiFi.localIP());
  }
  別的 {
    Serial.println("連接失敗。");
  }
  返回狀態;
}

定義的這個函數標志著編碼部分的結束。

使用 Alexa Android 應用程序配置 Alexa

當且僅當 Alexa 識別 esp8866 設備時,它才會接受命令。為此,我們需要借助 Android 上的 Alexa 應用程序來配置 Alexa。在我們繼續之前要做的一件重要的事情是,我們需要確保 Alexa 配置了我們的 android 應用程序。

為此,請轉到 Alexa 應用程序的更多部分,然后單擊“添加設備”選項,單擊“燈光”, 然后在頁面底部向下滾動并單擊“其他” 。

pYYBAGLs2HeAHogIAAGyLm2aLbs261.png

接下來,單擊DISCOVER DEVICE并 等待片刻,然后 Alexa 將找到新設備。一旦 Alexa 找到設備,您需要單擊它們并將它們添加到各自的位置/類別中,然后您就完成了。

pYYBAGLs2HOABSNSAAIXxpddJWw978.png

Alexa 控制的火箭發射器 - 測試

pYYBAGLs2G-ATqe_AAucREM_iEE965.png

在測試過程中,我去了我的花園,把火箭上的所有保險絲都拔了出來,放在各自的地方,然后我喊著 Alexa……!打開所有的火箭,我的手指交叉。所有的火箭都將我的努力標記為巨大的成功。它看起來像這樣。

poYBAGLs2GuAau8WAAquEKzcZxg768.png

最后,我再次說 Alexa……!打開所有火箭,以獲得您可以在下面看到的細絲的史詩般的圖片。

pYYBAGLs2GeAQn8pAAhiJ5x0_vM703.png

/************************************************* ************************************
TITLE: Alexa control 3 通道 Rocket Launcher 可以很容易地升級到 7 通道
作者:Debashis Das(技術研究單元)
下載 Espalexa 庫:
https://github.com/Aircoookie/Espalexa
****************************************************** ************************************/
#include
#include
//定義與Relays連接的GPIO
#define ROCKET_1_PIN 4
#define ROCKET_2_PIN 13
#define ROCKET_3_PIN 15
// WiFi 憑證
const char* ssid = "deba_2.4";
const char* 密碼 = "il2ww*ee";
// 原型
布爾連接到WiFi();
//回調函數
void allrockets(uint8_t 亮度);
void firstrocket(uint8_t 亮度);
void secondrocket(uint8_t 亮度);
無效第三火箭(uint8_t亮度);
// 設備名稱
String First_Device_Name = "所有火箭";
String Second_Device_Name = "火箭一號";
String Third_Device_Name = "火箭二號";
String Forth_Device_Name = "三號火箭";
// wifi狀態檢查
布爾 wifiStatus = 假;
// Espalexa 對象
埃斯帕萊克斯帕萊克斯;
無效設置()
{
// 啟用串行調試消息
序列號.開始(115200);
//設置ESP引腳作為輸出
pinMode(ROCKET_1_PIN,輸出);
pinMode(ROCKET_2_PIN,輸出);
pinMode(ROCKET_3_PIN,輸出);
// 連接到本地 Wi-Fi 網絡
wifiStatus = connectToWiFi();
// 如果 Wi-Fi 連接設置所有 espalexa 設備
如果(wifi狀態)
{
// 在此處定義您的設備。
espalexa.addDevice(First_Device_Name, allrockets); //最簡單的定義,默認狀態關閉
espalexa.addDevice(Secound_Device_Name, firstrocket);
espalexa.addDevice(Third_Device_Name, secondrocket);
espalexa.addDevice(Forth_Device_Name, thirdrocket);
espalexa.begin();
}
別的
{
而 (1)
{
Serial.println("無法連接WiFi。請檢查數據并重置ESP。");
延遲(2500);
}
}
}
無效循環()
{
espalexa.loop();
延遲(1);
}
//回調函數
void allrockets(uint8_t 亮度)
{
如果(亮度 == 255)
{
數字寫入(ROCKET_1_PIN,高);
數字寫入(ROCKET_2_PIN,高);
數字寫入(ROCKET_3_PIN,高);
延遲(800);
數字寫入(ROCKET_1_PIN,低);
數字寫入(ROCKET_2_PIN,低);
數字寫入(ROCKET_3_PIN,低);
Serial.println("所有火箭發射");
}
}
void firstrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
數字寫入(ROCKET_1_PIN,高);
延遲(800);
數字寫入(ROCKET_1_PIN,低);
Serial.println("第一枚火箭發射");
}
}
void secondrocket(uint8_t 亮度)
{
如果(亮度 == 255)
{
數字寫入(ROCKET_2_PIN,高);
延遲(800);
數字寫入(ROCKET_2_PIN,低);
Serial.println("第二枚火箭發射");
}
}
無效第三火箭(uint8_t 亮度)
{
如果(亮度 == 255)
{
數字寫入(ROCKET_3_PIN,高);
延遲(800);
數字寫入(ROCKET_3_PIN,低);
Serial.println("第三枚火箭發射");
}
}
// 連接本地 Wi-Fi - 如果成功則返回 true,否則返回 false
布爾連接到WiFi()
{
布爾狀態 = 真;
詮釋 i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, 密碼);
序列號.println("");
Serial.println("連接到 WiFi");
// 等待連接
Serial.print("正在連接...");
而(WiFi.status()!= WL_CONNECTED){
延遲(500);
Serial.print(".");
如果(我> 20){
狀態=假;休息;
}
我++;
}
序列號.println("");
如果(狀態){
Serial.print("連接到");
序列號.println(ssid);
Serial.print("IP地址:");
Serial.println(WiFi.localIP());
}
別的 {
Serial.println("連接失敗。");
}
返回狀態;
}

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

    關注

    2878

    文章

    41999

    瀏覽量

    360111
  • 點火器
    +關注

    關注

    6

    文章

    56

    瀏覽量

    35674
  • 語音控制
    +關注

    關注

    5

    文章

    464

    瀏覽量

    28103
  • Alexa
    +關注

    關注

    2

    文章

    195

    瀏覽量

    23177
收藏 人收藏

    評論

    相關推薦

    燃氣點火器電路圖

    燃氣點火器電路圖 該燃氣點火器是用高壓放電產生火花使氣體燃燒,電路圖所示,
    發表于 12-18 22:37 ?9271次閱讀
    燃氣<b class='flag-5'>點火器</b>電路圖

    脈沖點火器的原理是什么?

    脈沖點火器是由電子元器件組成的一個脈沖高頻振蕩器,由振蕩器所產生的高頻電壓經升壓變壓器升成15KV的高電壓,進行尖端放電,由放電的火花引燃燃燒器上的燃氣。這種點火器點火率高,可連續放電。按下旋鈕,脈沖
    發表于 10-30 09:11

    放電式點火器

    放電式點火器
    發表于 01-10 08:34 ?1013次閱讀
    放電式<b class='flag-5'>點火器</b>

    王字牌電子點火器原理圖

    王字牌電子點火器原理圖
    發表于 02-15 13:11 ?4495次閱讀
    王字牌電子<b class='flag-5'>點火器</b>原理圖

    點火器電路設計原理

      某些不可撤消的操作(比如釋放降落傘、切斷繩子或啟動固體易燃導彈發動機)可以由煙火點火器執行。這種裝置通常由一個電控點火器、一些用于點火后產生高壓氣體的化學物
    發表于 10-09 11:26 ?5580次閱讀
    <b class='flag-5'>點火器</b>電路設計原理

    點火器線路原理圖

    下圖為點火器線路原理圖: 圖 點火器線路原理圖
    發表于 05-28 09:18 ?1.8w次閱讀
    <b class='flag-5'>點火器</b>線路原理圖

    電感儲能式汽油機點火器總成技術條件

    電感儲能式汽油機點火器總成技術條件電感儲能式汽油機點火器總成技術條件電感儲能式汽油機點火器總成技術條件電感儲能式汽油機點火器總成技術條件
    發表于 03-24 14:21 ?5次下載

    高能點火器原理圖及結構_高能點火器廠家介紹

    本文主要介紹了點火器的概念與組成,高能點火器的分類和工作原理、高能點火器的使用方法和應用。其次詳細的介紹了高能點火器四大廠家。
    發表于 12-21 11:03 ?3.5w次閱讀
    高能<b class='flag-5'>點火器</b>原理圖及結構_高能<b class='flag-5'>點火器</b>廠家介紹

    摩托直流點火器的好處_摩托車直流點火器和交流點火器有什么區別

    本文首先介紹了摩托車點火器由什么組成,其次介紹了摩托直流點火器的好處,最后闡述了摩托車直流點火器和交流點火器有什么區別以及如何判斷摩托車點火器
    的頭像 發表于 05-09 14:14 ?6.1w次閱讀

    脈沖點火器故障_脈沖點火器工作原理

    本文主要闡述了脈沖點火器故障及脈沖點火器工作原理。
    的頭像 發表于 01-10 10:28 ?3w次閱讀

    脈沖點火器的特點及用途

    本文首先介紹了脈沖點火器的概念,其次介紹了脈沖點火器的特點,最后介紹了脈沖點火器用途。
    的頭像 發表于 01-10 10:35 ?1.1w次閱讀

    高能點火器工作原理_高能點火器不打火原因及解決

    本文首先闡述了高能點火器工作原理,其次分析了高能點火器不打火原因及解決,最后介紹了高能點火器使用注意事項。
    發表于 04-15 10:05 ?9265次閱讀

    高能點火器的參數_高能點火器安裝使用

    本文首先介紹了高能點火器的參數,其次闡述了高能點火器的安裝,最后介紹了高能點火器的使用和操作。
    發表于 04-15 10:13 ?4530次閱讀

    高能點火器故障現象及解決_高能點火器應用

    本文主要介紹了高能點火器故障現象及解決方法,另外還介紹了高能點火器的優勢及應用。
    發表于 04-15 10:19 ?3428次閱讀

    電子點火器電路圖(燃氣熱水器電子點火器電路/汽車電子點火器電路/電子點火器電路)

    電子點火器由集成電路、大功率開關三極管及相應的電路構成,電子點火器基本電路內部主要是一個晶體管開關電路。由磁電線圈、霍爾傳感器、或者電腦ECU的IGT信號去觸發其導通或截止,從而控制點火線圈初級電流的通斷,實現高壓
    發表于 11-03 17:52 ?1.1w次閱讀
    電子<b class='flag-5'>點火器</b>電路圖(燃氣熱水器電子<b class='flag-5'>點火器</b>電路/汽車電子<b class='flag-5'>點火器</b>電路/電子<b class='flag-5'>點火器</b>電路)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>