資料介紹
描述
到了我奶奶 90 歲生日的時候,我正在為送什么禮物給她而苦惱。她對我的生活產生了很大的影響,我想做一些事情來證明這一點。我知道我想以某種方式整合 Twilio,因為她年輕時是Bell Telephone的接線員。然后它像一大堆電話一樣擊中了我。我將創(chuàng)建一個帶有可編程 WirelessSIM和 Grove 按鈕的硬件設備。當奶奶按下 Grove 按鈕時,語音呼叫將被路由到她的電話,接線員將告訴她我有多愛她并祝她生日快樂。?
我需要什么來送一些生日愛
對于此項目,您將需要以下組件:
- Twilio SIM 卡
 - Twilio 電話號碼
 - TwiML 容器
 - Seeed Studio 的 Wio LTE Cat.1 開發(fā)板
 - LTE 天線
 - 鋰電池
 - 微型 USB 數據線
 - Seeed Studio Grove 按鈕
 - 開發(fā)環(huán)境
 - Wio LTE Arduino 庫
 
這是如何運作的?
我想使用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語音,聽起來更逼真。
- 在 Twilio 控制臺中導航到運行時
 - 單擊TwiML 容器
 - 單擊以添加新的 TwiML Bin
 - 新建一個新的 TwiML
 - 添加 動詞
 - 添加語音屬性以指定Amazon Polly語音
 - 使用language 屬性指定語言
 - 按保存
 
<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 上的完整項目。網上見,乘風破浪。
?
- 可編程按鈕、脈沖檢測器和脈沖發(fā)生器解決方案
 - 可編程控制器AC500用戶手冊 1次下載
 - 可編程邏輯器件PLD課件下載 31次下載
 - 基于可編程邏輯的SDRAM控制方法設計 8次下載
 - 系統(tǒng)可編程閃存中的RISC微控制器LGT8XM 0次下載
 - MAX3000A器件可編程邏輯設備系列 7次下載
 - ADXL355低噪聲可編程文件下載 0次下載
 - AC31可編程控制器硬件操作手冊 17次下載
 - 三菱可編程邏輯控制器密碼破解軟件下載 6次下載
 - 現(xiàn)場可編程門陣列簡介 77次下載
 - 可編程邏輯陣列fpga和cpld說明 25次下載
 - 通信保密中的可編程應用技術研究 4次下載
 - 用可編程器件實現(xiàn)LED顯示屏的硬件掃描控制 21次下載
 - 車載虛擬儀器可編程線控設備的設計與應用
 - 將系統(tǒng)內編程(ISP)設備與一次可編程設備進行比較,說明IS
 
- 可編程晶振的優(yōu)點和缺點 460次閱讀
 - 什么是現(xiàn)場可編程邏輯陣列?它有哪些特點和應用? 1054次閱讀
 - 可編程片上系統(tǒng)的基本特征和主要應用 674次閱讀
 - 可編程片上系統(tǒng)是什么意思 606次閱讀
 - 現(xiàn)場可編程門陣列的原理和應用 788次閱讀
 - 現(xiàn)場可編程門陣列是什么 2521次閱讀
 - 可編程器件的特點和發(fā)展歷程 916次閱讀
 - 簡單認識現(xiàn)場可編程門陣列 889次閱讀
 - 可編程邏輯器件測試方法 1575次閱讀
 - 可編程電源的原理 可編程電源的優(yōu)缺點 2458次閱讀
 - 可編程控制器的特點有哪些 8791次閱讀
 - 可編程邏輯控制器是什么_可編程邏輯控制器原理 1w次閱讀
 - 可編程電源應用與選型詳解 1.3w次閱讀
 - 可編程控制器基本知識_可編程控制器原理及應用 5.9w次閱讀
 - 可編程電源簡介 2186次閱讀
 
下載排行
本周
- 1PFC電路與BOOST電路設計實例分享
 - 1.83 MB | 12次下載 | 4 積分
 - 2世平基于靈動微 SPIN560C 的低壓無刷電機應用方案
 - 10.93 MB | 11次下載 | 免費
 - 3電源測試報告-基于 國民技術 N32L406 和杰華特 JW3376+3330 的 BMS 方案
 - 6.47 MB | 11次下載 | 免費
 - 4PWM控制器的控制方法
 - 0.39 MB | 3次下載 | 4 積分
 - 5電流檢測芯片F(xiàn)P135應用說明
 - 1.24 MB | 3次下載 | 免費
 - 6全面解讀被動式與主動式PFC電路
 - 1.27 MB | 1次下載 | 4 積分
 - 7HC88L051F4低功耗芯片規(guī)格書
 - 4.76 MB | 1次下載 | 免費
 - 8CIU32D655x5數據手冊
 - 2.14 MB | 1次下載 | 免費
 
本月
- 1常用電子元器件使用手冊
 - 2.40 MB | 52次下載 | 免費
 - 2高功率密度碳化硅MOSFET軟開關三相逆變器損耗分析
 - 2.27 MB | 33次下載 | 10 積分
 - 3PFC電路與BOOST電路設計實例分享
 - 1.83 MB | 12次下載 | 4 積分
 - 4世平基于靈動微 SPIN560C 的低壓無刷電機應用方案
 - 10.93 MB | 11次下載 | 免費
 - 5電源測試報告-基于 國民技術 N32L406 和杰華特 JW3376+3330 的 BMS 方案
 - 6.47 MB | 11次下載 | 免費
 - 6USB拓展塢PCB圖資料
 - 0.57 MB | 11次下載 | 免費
 - 7MS1826 HDMI 多功能視頻處理器數據手冊
 - 4.51 MB | 9次下載 | 免費
 - 8HAL9303線性霍爾效應傳感器技術手冊
 - 0.70 MB | 9次下載 | 免費
 
總榜
- 1matlab軟件下載入口
 - 未知 | 935134次下載 | 10 積分
 - 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
 - 1.48MB | 420064次下載 | 10 積分
 - 3Altium DXP2002下載入口
 - 未知 | 233089次下載 | 10 積分
 - 4電路仿真軟件multisim 10.0免費下載
 - 340992 | 191424次下載 | 10 積分
 - 5十天學會AVR單片機與C語言視頻教程 下載
 - 158M | 183352次下載 | 10 積分
 - 6labview8.5下載
 - 未知 | 81600次下載 | 10 積分
 - 7Keil工具MDK-Arm免費下載
 - 0.02 MB | 73818次下載 | 10 積分
 - 8LabVIEW 8.6下載
 - 未知 | 65991次下載 | 10 積分
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


創(chuàng)作
發(fā)文章
發(fā)帖  
提問  
發(fā)資料
發(fā)視頻
上傳資料賺積分
           
            
            
                
            
評論