亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

電子發(fā)燒友App

硬聲App

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

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>電子資料>帶有可編程WirelessSIM和Grove按鈕的硬件設備

帶有可編程WirelessSIM和Grove按鈕的硬件設備

2023-07-12 | zip | 1.61 MB | 次下載 | 免費

資料介紹

描述

到了我奶奶 90 歲生日的時候,我正在為送什么禮物給她而苦惱。她對我的生活產生了很大的影響,我想做一些事情來證明這一點。我知道我想以某種方式整合 Twilio,因為她年輕時是Bell Telephone的接線員。然后它像一大堆電話一樣擊中了我。我將創(chuàng)建一個帶有編程 WirelessSIM和 Grove 按鈕的硬件設備。當奶奶按下 Grove 按鈕時,語音呼叫將被路由到她的電話,接線員將告訴她我有多愛她并祝她生日快樂。?

我需要什么來送一些生日愛

對于此項目,您將需要以下組件:

這是如何運作的?

我想使用Wio LTE從我的Twilio SIM生成呼叫。Grove Button連接到 Wio LTE 并用于物理交互。單擊 Grove 按鈕時,它將在 Twilio 中觸發(fā)回調。要進行調用,我需要創(chuàng)建一些將響應回調的TwiML 。然后,當呼叫接通時,我需要另一塊 TwiML,它將使用Amazon Polly播放文本轉語音消息。由于我們將電路板上的 SIM 卡連接到真實設備,因此我們將使用一些變通方法來播放消息。通過在 ` 上包含 `url` 屬性` Twilio 會在接通電話之前向接聽電話的人播放 TwiML。這被稱為耳語。

購買 Twilio 號碼并注冊 Twilio SIM

首先,購買Twilio 電話號碼。此電話號碼將用于使用語音數據將呼叫從可編程無線SIM 路由到我祖母的電話。

從包裝中取出 Twilio SIM,注冊并激活您的 SIM 。

使用 Amazon Polly 創(chuàng)建文本轉語音 TwiML

我想使用TwiML創(chuàng)建文本轉語音消息。TwiML,或 Twilio 標記語言,是一種基于 XML 的語言,它指示 Twilio 如何處理各種事件,例如來電和去電、SMS 消息和 MMS 消息。在構建 Twilio 應用程序時,您將在將所需操作傳達給 Twilio 時使用 TwiML。TwiML Bin是一種無需自己創(chuàng)建和托管 Web 服務器即可與 TwiML 交互原型的方法。

為此,我使用了 TwiML 動詞來創(chuàng)建一條消息,當我的祖母接聽電話時,該消息將被口頭表達。為了讓它更逼真,我使用語音屬性選擇了Amazon Polly語音,聽起來更逼真。

?

<Response>
        <Say voice="Polly.Joey" language="en-US">Happy Birthday Gram! I love you.Say>
Response>

完成以下上述步驟后,您的 TwiML 應如下所示。保存 TwiML Bin 并確保復制 TwiML Bin 的 URL,它會立即使用。

為您的 SIM 創(chuàng)建可編程語音 URL TwiML

文本轉語音部分已準備就緒,接下來我需要使用 TwiML 從 SIM路由入站可編程語音呼叫。這些是設置它的步驟:

在 Programmable Voice & SMS 下,將Voice Url更改TwiML

  • 在 Twilio 控制臺中導航到可編程無線
  • Overview中,選擇新注冊的 SIM
  • 單擊可編程語音和短信選項卡
  • 將下面的 TwiML 粘貼到框中
  • 將您的 Twilio 電話號碼添加到Dial Verb的callerId屬性

將 TwiML Bin URL 粘貼到數字名詞的URL屬性中


<Response>
    <Dial callerId="YOUR_TWILIO_NUMBER">
        <Number url="TWIML_BIN_URL">{{To}}Number>
    Dial>
Response>

偉大的!SIM 現(xiàn)在配置為使用 Twilio 電話號碼路由傳出語音呼叫,并使用文本到語音轉換為我的祖母朗讀自定義消息。毫無疑問,那是一口蛋糕。接下來讓我們把它做成一個物理設備。

硬件設置

打開Wio LTE開發(fā)板的包裝箱,然后使用提供的 Micro-USB 數據線將開發(fā)板連接到計算機。根據操作系統(tǒng)的不同,可能需要USB 驅動程序才能連接到 Wio LTE。

將您注冊的Twilio SIM 卡插入開發(fā)板背面的 Wio LTE SIM 插槽中。

Wio LTE 盒子內有一根 LTE 天線。從包裝中取出 LTE 天線,將 LTE 天線連接到 Wio LTE 背面,上面寫著LTE main 。

現(xiàn)在從包裝中取出Grove Button ,然后將 Grove Button 連接到 Wio LTE 的 D38 插座。

軟件環(huán)境設置

接下來下載Arduino IDE 。這將用于編程和上傳代碼到 Wio LTE。安裝 Arduino IDE 后,從 GitHub 下載Wio LTE Arduino 庫并按照本指南安裝庫該庫是STM32F4 芯片的包裝器,它利用Arduino 核心并添加了 Quectel EC21-A調制解調器功能。

?
?

接下來將 Wio LTE 置于引導加載程序模式。需要啟用此模式才能將代碼上傳到電路板。要啟用引導加載程序模式:

按住電路板下方的BOOT0按鈕

按下電路板頂部的RST

釋放 BOOT0 按鈕以啟用引導加載程序模式

創(chuàng)建代碼

創(chuàng)建一個新的 Arduino 草圖(文件 -> 新建)。

首先添加 Wio LTE 庫文件wio_tracker.h并在setup()函數上方為Grove Button定義一個全局變量。接下來使用變量wio創(chuàng)建WioTracker的實例并創(chuàng)建一個計數器變量。計數器將用于對Grove Button 進行去抖動,因此我們可以更好地控制 Grove Button 的交互。

#include "wio_tracker.h"
#define BUTTON_PIN  (D38)
WioTracker wio = WioTracker();
int counter = 0;

setup()函數用于在啟動時初始化程序的各個方面。pinMode()用于設置 Grove Button 連接到的物理引腳以及板期望的功能類型。然后該板會運行其初始化過程并將 Twilio SIM 連接到蜂窩網絡

void setup()
{
  // Grove Button Setup
  pinMode(BUTTON_PIN, INPUT);
  // Wio LTE Power Up
  SerialUSB.println("Wait for power on...");
  wio.Power_On();
  SerialUSB.println("Power On O.K!");
  // Wio LTE Initialization
  while (!wio.init()) {
    delay(1000);
    SerialUSB.println("Accessing network...");
  }
  SerialUSB.println("Initialize done...");
  // Connect to the network
  bool ret = wio.waitForNetworkRegister();
  if (true == ret) {
    SerialUSB.println("Network accessed!");
  } else {
    SerialUSB.println("Network failed!");
    return;
  }
  SerialUSB.println("Ready!");
}

該程序的 Grove Button 邏輯是在loop()函數中創(chuàng)建的。該函數持續(xù)監(jiān)聽板的狀態(tài)變化。在這種情況下,它正在等待Grove Button 狀態(tài)改變。變量buttonState使用digitalRead()從板上的物理引腳讀取傳入的 Grove 按鈕狀態(tài)更改。

void loop()
{
  // Define Grove Button state
  int buttonState = digitalRead(BUTTON_PIN);
  // Define the counter functionality
  if (buttonState == 0) {
    // Zero counter
    counter = 0;
  } else {
    // Continue counter
    counter++;
    // Catch only 1 press, no duplicate calls
    if (counter == 1) {
      SerialUSB.println("Happy Birthday sent!");
      wio.callUp("GRANDMA_PHONE_NUMBER");
    }
  }
  // Restart
  delay(100);
}

主要的if 語句管理傳入的狀態(tài)更改。計數器用作消除Grove Button抖動的一種方式,因此只進行一次調用。如果沒有去抖動邏輯,程序將在按住 Grove 按鈕時繼續(xù)每 100 毫秒調用一次。

當 Grove 按鈕未被按下時,狀態(tài)“0”,計數器將重置為 0。

 if (buttonState == 0) {
    // Zero counter
    counter = 0;
  }

當按下 Grove 按鈕時,狀態(tài)“1”,計數器開始迭代。嵌套的 if 語句用于捕獲計數器創(chuàng)建的特定數字。當抓到數字 1 時,使用wio.callUp( "GRANDMA_PHONE_NUMBER") 向我的祖母撥打電話。 ?

 else {
    // Continue counter
    counter++;
    // Catch only 1 press, no duplicate calls
    if (counter == 1) {
      SerialUSB.println("Happy Birthday sent!");
      wio.callUp("GRANDMA_PHONE_NUMBER");
    }
  }

這就是我們需要的所有代碼,將其傳輸到 Wio LTE 板按上傳。

上傳完成后,斷開 Wio LTE 與 Micro-USB 數據線的連接。將鋰電池連接到板上。

代碼回顧

#include "wio_tracker.h"
#define BUTTON_PIN  (D38)
WioTracker wio = WioTracker();
int counter = 0;
void setup()
{
  // Grove Button Setup
  pinMode(BUTTON_PIN, INPUT);
  // Wio LTE Setup
  SerialUSB.println("Wait for power on...");
  wio.Power_On();
  SerialUSB.println("Power On O.K!");
  // Wio LTE Initialization
  while (!wio.init()) {
    delay(1000);
    SerialUSB.println("Accessing network...");
  }
  SerialUSB.println("Initialize done...");
  // Connect to the network
  bool ret = wio.waitForNetworkRegister();
  if (true == ret) {
    SerialUSB.println("Network accessed!");
  } else {
    SerialUSB.println("Network failed!");
    return;
  }
  SerialUSB.println("Ready!");
}
void loop()
{
  // Define Grove Button state
  int buttonState = digitalRead(BUTTON_PIN);
  // Define the counter functionality
  if (buttonState == 0) {
    // Zero counter
    counter = 0;
  } else {
    // Continue counter
    counter++;
    // Catch only 1 press, no duplicate calls
    if (counter == 1) {
      SerialUSB.println("Happy Birthday sent!");
      wio.callUp("GRANDMA_PHONE_NUMBER");
    }
  }
  delay(100);
}

把它裝箱

在派對上,我把電路板、電池和 LTE 天線放在一個小盒子里,讓它更像樣。

思緒

創(chuàng)建這個項目后,我意識到這對可能相距很遠的個人很有用。并且可以使用音頻文件代替文本轉語音來發(fā)送個人消息,例如反向發(fā)送語音郵件。發(fā)送一封情書并提醒您關心的其他人很重要。您正在使用可編程無線構建什么類型的#TwilioIoT 項目隨時在Twitter上發(fā)表您的評論、問題和項目。不要忘記查看我的GitHub 上的完整項目。網上見,乘風破浪。

?


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

評論

查看更多

下載排行

本周

  1. 1PFC電路與BOOST電路設計實例分享
  2. 1.83 MB   |  12次下載  |  4 積分
  3. 2世平基于靈動微 SPIN560C 的低壓無刷電機應用方案
  4. 10.93 MB  |  11次下載  |  免費
  5. 3電源測試報告-基于 國民技術 N32L406 和杰華特 JW3376+3330 的 BMS 方案
  6. 6.47 MB  |  11次下載  |  免費
  7. 4PWM控制器的控制方法
  8. 0.39 MB   |  3次下載  |  4 積分
  9. 5電流檢測芯片F(xiàn)P135應用說明
  10. 1.24 MB   |  3次下載  |  免費
  11. 6全面解讀被動式與主動式PFC電路
  12. 1.27 MB   |  1次下載  |  4 積分
  13. 7HC88L051F4低功耗芯片規(guī)格書
  14. 4.76 MB  |  1次下載  |  免費
  15. 8CIU32D655x5數據手冊
  16. 2.14 MB   |  1次下載  |  免費

本月

  1. 1常用電子元器件使用手冊
  2. 2.40 MB   |  52次下載  |  免費
  3. 2高功率密度碳化硅MOSFET軟開關三相逆變器損耗分析
  4. 2.27 MB   |  33次下載  |  10 積分
  5. 3PFC電路與BOOST電路設計實例分享
  6. 1.83 MB   |  12次下載  |  4 積分
  7. 4世平基于靈動微 SPIN560C 的低壓無刷電機應用方案
  8. 10.93 MB  |  11次下載  |  免費
  9. 5電源測試報告-基于 國民技術 N32L406 和杰華特 JW3376+3330 的 BMS 方案
  10. 6.47 MB  |  11次下載  |  免費
  11. 6USB拓展塢PCB圖資料
  12. 0.57 MB   |  11次下載  |  免費
  13. 7MS1826 HDMI 多功能視頻處理器數據手冊
  14. 4.51 MB   |  9次下載  |  免費
  15. 8HAL9303線性霍爾效應傳感器技術手冊
  16. 0.70 MB   |  9次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935134次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191424次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183352次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81600次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73818次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分