資料介紹
描述
到了我奶奶 90 歲生日的時候,我正在為送什么禮物給她而苦惱。她對我的生活產生了很大的影響,我想做一些事情來證明這一點。我知道我想以某種方式整合 Twilio,因為她年輕時是Bell Telephone的接線員。然后它像一大堆電話一樣擊中了我。我將創建一個帶有可編程 WirelessSIM和 Grove 按鈕的硬件設備。當奶奶按下 Grove 按鈕時,語音呼叫將被路由到她的電話,接線員將告訴她我有多愛她并祝她生日快樂。?
我需要什么來送一些生日愛
對于此項目,您將需要以下組件:
- Twilio SIM 卡
- Twilio 電話號碼
- TwiML 容器
- Seeed Studio 的 Wio LTE Cat.1 開發板
- LTE 天線
- 鋰電池
- 微型 USB 數據線
- Seeed Studio Grove 按鈕
- 開發環境
- Wio LTE Arduino 庫
這是如何運作的?
我想使用Wio LTE從我的Twilio SIM生成呼叫。Grove Button連接到 Wio LTE 并用于物理交互。單擊 Grove 按鈕時,它將在 Twilio 中觸發回調。要進行調用,我需要創建一些將響應回調的TwiML 。然后,當呼叫接通時,我需要另一塊 TwiML,它將使用Amazon Polly播放文本轉語音消息。由于我們將電路板上的 SIM 卡連接到真實設備,因此我們將使用一些變通方法來播放消息。通過在 ` 上包含 `url` 屬性` Twilio 會在接通電話之前向接聽電話的人播放 TwiML。這被稱為耳語。
購買 Twilio 號碼并注冊 Twilio SIM
首先,購買Twilio 電話號碼。此電話號碼將用于使用語音數據將呼叫從可編程無線SIM 路由到我祖母的電話。
從包裝中取出 Twilio SIM,注冊并激活您的 SIM 。
使用 Amazon Polly 創建文本轉語音 TwiML
我想使用TwiML創建文本轉語音消息。TwiML,或 Twilio 標記語言,是一種基于 XML 的語言,它指示 Twilio 如何處理各種事件,例如來電和去電、SMS 消息和 MMS 消息。在構建 Twilio 應用程序時,您將在將所需操作傳達給 Twilio 時使用 TwiML。TwiML Bin是一種無需自己創建和托管 Web 服務器即可與 TwiML 交互原型的方法。
為此,我使用了 TwiML 動詞來創建一條消息,當我的祖母接聽電話時,該消息將被口頭表達。為了讓它更逼真,我使用語音屬性選擇了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 創建可編程語音 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 現在配置為使用 Twilio 電話號碼路由傳出語音呼叫,并使用文本到語音轉換為我的祖母朗讀自定義消息。毫無疑問,那是一口蛋糕。接下來讓我們把它做成一個物理設備。
硬件設置
打開Wio LTE開發板的包裝箱,然后使用提供的 Micro-USB 數據線將開發板連接到計算機。根據操作系統的不同,可能需要USB 驅動程序才能連接到 Wio LTE。
將您注冊的Twilio SIM 卡插入開發板背面的 Wio LTE SIM 插槽中。
Wio LTE 盒子內有一根 LTE 天線。從包裝中取出 LTE 天線,將 LTE 天線連接到 Wio LTE 背面,上面寫著LTE main 。
現在從包裝中取出Grove Button ,然后將 Grove Button 連接到 Wio LTE 的 D38 插座。
軟件環境設置
接下來下載Arduino IDE 。這將用于編程和上傳代碼到 Wio LTE。安裝 Arduino IDE 后,從 GitHub 下載Wio LTE Arduino 庫并按照本指南安裝庫。該庫是STM32F4 芯片的包裝器,它利用Arduino 核心并添加了 Quectel EC21-A調制解調器功能。
接下來將 Wio LTE 置于引導加載程序模式。需要啟用此模式才能將代碼上傳到電路板。要啟用引導加載程序模式:
按住電路板下方的BOOT0按鈕
按下電路板頂部的RST
釋放 BOOT0 按鈕以啟用引導加載程序模式
創建代碼
創建一個新的 Arduino 草圖(文件 -> 新建)。
首先添加 Wio LTE 庫文件wio_tracker.h并在setup()函數上方為Grove Button定義一個全局變量。接下來使用變量wio創建WioTracker的實例并創建一個計數器變量。計數器將用于對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()函數中創建的。該函數持續監聽板的狀態變化。在這種情況下,它正在等待Grove Button 狀態改變。變量buttonState使用digitalRead()從板上的物理引腳讀取傳入的 Grove 按鈕狀態更改。
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 語句管理傳入的狀態更改。計數器用作消除Grove Button抖動的一種方式,因此只進行一次調用。如果沒有去抖動邏輯,程序將在按住 Grove 按鈕時繼續每 100 毫秒調用一次。
當 Grove 按鈕未被按下時,狀態“0”,計數器將重置為 0。
if (buttonState == 0) {
// Zero counter
counter = 0;
}
當按下 Grove 按鈕時,狀態“1”,計數器開始迭代。嵌套的 if 語句用于捕獲計數器創建的特定數字。當抓到數字 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 天線放在一個小盒子里,讓它更像樣。
思緒
創建這個項目后,我意識到這對可能相距很遠的個人很有用。并且可以使用音頻文件代替文本轉語音來發送個人消息,例如反向發送語音郵件。發送一封情書并提醒您關心的其他人很重要。您正在使用可編程無線構建什么類型的#TwilioIoT 項目?隨時在Twitter上發表您的評論、問題和項目。不要忘記查看我的GitHub 上的完整項目。網上見,乘風破浪。
?
- SG-8002CA可編程晶振
- 可編程控制器AC500用戶手冊 1次下載
- 可編程邏輯器件PLD課件下載 31次下載
- 基于可編程邏輯的SDRAM控制方法設計 8次下載
- 系統可編程閃存中的RISC微控制器LGT8XM 0次下載
- MAX3000A器件可編程邏輯設備系列 7次下載
- ADXL355低噪聲可編程文件下載 0次下載
- AC31可編程控制器硬件操作手冊 17次下載
- 三菱可編程邏輯控制器密碼破解軟件下載 6次下載
- 現場可編程門陣列簡介 76次下載
- 可編程邏輯陣列fpga和cpld說明 25次下載
- 通信保密中的可編程應用技術研究 4次下載
- 用可編程器件實現LED顯示屏的硬件掃描控制 21次下載
- 車載虛擬儀器可編程線控設備的設計與應用
- 將系統內編程(ISP)設備與一次可編程設備進行比較,說明IS
- 什么是現場可編程邏輯陣列?它有哪些特點和應用? 485次閱讀
- 可編程片上系統的基本特征和主要應用 403次閱讀
- 可編程片上系統是什么意思 399次閱讀
- 現場可編程門陣列的原理和應用 457次閱讀
- 現場可編程門陣列是什么 2217次閱讀
- 可編程器件的特點和發展歷程 671次閱讀
- 簡單認識現場可編程門陣列 681次閱讀
- 可編程邏輯器件測試方法 1160次閱讀
- 可編程電源的結構 可編程電源的使用事項 856次閱讀
- 可編程電源的原理 可編程電源的優缺點 2150次閱讀
- 可編程控制器的特點有哪些 8439次閱讀
- 可編程邏輯控制器是什么_可編程邏輯控制器原理 1w次閱讀
- 可編程電源應用與選型詳解 1.3w次閱讀
- 可編程控制器基本知識_可編程控制器原理及應用 5.8w次閱讀
- 可編程電源簡介 2067次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多