資料介紹
描述
新的MKR 系列Arduino 板將改變快速原型設計物聯(lián)網解決方案的格局。Arduino MKR GSM 1400對于希望使用蜂窩連接擴展其物聯(lián)網項目范圍的任何人來說都是一個很好的解決方案。通過將調制解調器與微控制器集成,一種新的一體式通信解決方案已經開始出現(xiàn)。這與Twilio 可編程無線 SIM相結合,可以使用機器對機器命令在全球范圍內進行通信。“事物”現(xiàn)在可以通過 WiFi 或藍牙以前無法實現(xiàn)的方式連接。
本教程演示了如何將機器到機器的命令從Arduino MKR GSM 1400發(fā)送到用 Go 編寫的服務器。當服務器端接收到機器對機器命令時,音頻文件將播放 .mp3 說“你好”。如果你想跳到前面,可以在?TwilioIoT GitHub 上找到已完成的項目。
什么是 Arduino MKR GSM 1400?
Arduino MKR GSM 1400 是一款開發(fā)板,它使用u-blox SARAU201 調制解調器將Arduino Zero的功能與全球GSM連接相結合。傳統(tǒng)上,與調制解調器的通信是使用單獨模塊使用AT 命令完成的。該模型板附帶一個庫,可以通過函數(shù)調用更輕松地訪問 AT 命令。
硬件要求
- Twilio 可編程無線 SIM
- Arduino MKR GSM 1400
- GSM 天線
- 微型 USB 數(shù)據(jù)線
軟件要求
設置 Twilio SIM
從包裝中取出 Twilio SIM。接下來在 Twilio 控制臺中注冊并激活您的 SIM 。
軟件方面的事情
在對硬件進行編程之前,我們需要安裝一些軟件才能使其正常工作。為了能夠使用板載調制解調器發(fā)送 M2M 命令,我們需要MKRGSM庫。
打開 Arduino IDE 并轉到 Sketch > Manage Libraries。這是可以將 Arduino 和第 3 方庫安裝到 Arduino IDE 中的地方。
當庫管理器窗口彈出時,搜索MKRGSM庫并按安裝。MKRGSM庫將AT 命令包裝到函數(shù)中,使其更容易與調制解調器通信。這是phonetabulous相信我。
安裝庫后,我們需要安裝 Arduino MKR GSM 1400 板核。Arduino MKR GSM 1400 使用與使用AVR ATmega芯片組的傳統(tǒng) Arduino 不同的芯片組。該板使用SAMD21 Cortex-M0+ ,它需要一組不同的內核。Arduino IDE 不附帶內核,計算機需要它們才能在連接時識別電路板。
在工具 > 開發(fā)板 > 開發(fā)板管理器下找到開發(fā)板管理器。
當 Board Manager 窗口出現(xiàn)時,搜索 Arduino SAMD Boards 并安裝內核。 ?
重新啟動 Arduino IDE 以完成安裝。
偉大的!是時候繼續(xù)進行硬件設置了。
硬件方面
要通過網絡發(fā)送 M2M 命令,我們需要安裝 Twilio SIM。從 Twilio SIM 卡中取出 Micro SIM
將 Twilio SIM 插入電路板下方的 SIM 插槽。
接下來,將 GSM 天線連接到板上。
使用 Micro-USB 電纜將電路板連接到計算機,您就可以連接到網絡了。
創(chuàng)建 Arduino 草圖
在 Arduino IDE 中創(chuàng)建一個新的 Arduino 草圖(文件 > 新建)。提供了一個看起來像這樣的模板。
void setup(){
}
void loop(){
}
為所有 GSM 函數(shù)實例化基類GSM 。要發(fā)送和接收 SMS 消息,還需要實例化GSM SMS類。這發(fā)生在 setup() 函數(shù)之前。
#include
GSM gsmAccess;
GSM_SMS sms;
在 setup() 函數(shù)中創(chuàng)建波特率為115200 的串行連接。波特率決定了特定通信通道上的數(shù)據(jù)速度。
Serial.begin(115200);
使用gsmAccess.begin()函數(shù)連接到 Twilio SIM 上識別的蜂窩網絡。
gsmAccess.begin();
Serial.println("GSM initialized");
在 loop() 函數(shù)中定義將使用beginSMS函數(shù)發(fā)送 M2M 命令的電話號碼。我們將使用的數(shù)字是“ 2936 ”。這是一個特殊的 Twilio 短代碼,保留用于在 Twilio SIM 之間交換 M2M 命令。它使用 SMS 傳輸通過蜂窩網絡發(fā)送 M2M 命令。當 Twilio SIM 創(chuàng)建 M2M 命令時,會生成一個 Webhook,我們將很快討論這個問題。
sms.beginSMS("2936");
將char 數(shù)組傳遞給函數(shù)sms.print()以創(chuàng)建要排隊的新消息。
sms.print("hello world");
Serial.println(“Sending M2M Command”);
創(chuàng)建消息并排隊后,使用endSMS()函數(shù)告訴調制解調器該過程已完成。一旦發(fā)生這種情況,將發(fā)送“hello world”消息。
sms.endSMS();
Serial.println("M2M Command Sent!");
最后一段代碼是一個 while 循環(huán),它將捕獲程序并將其置于無限循環(huán)中。這樣做的目的是確保 M2M 命令只發(fā)送一次。
while(1) {
delay(4000);
}
完整的 Arduino 草圖:
#include
GSM gsmAccess;
GSM_SMS sms;
void setup(){
Serial.begin(115200);
gsmAccess.begin();
Serial.println("GSM initialized");
}
void loop(){
sms.beginSMS("2936");
sms.print("hello world");
Serial.println(“Sending M2M Command”);
sms.endSMS();
Serial.println("M2M Command Sent!");
while(1) {
delay(4000);
}
}
仔細檢查是否已在“工具”>“電路板”下選擇了電路板。如果未選中,編譯器將在您嘗試上傳代碼時拋出錯誤。
將新草圖另存為“SayHelloArduinoGSM.ino”。在將新草圖上傳到電路板之前,讓我們創(chuàng)建一個服務器來使用 Go 接收 M2M 命令。
使用 Go 和 Beep 啟動音頻響應服務器
使用下面的模板創(chuàng)建一個名為“SayHelloArduinoGSM.go”的新 Go 程序。
package main
import (
)
func main(){
}
接下來將以下庫添加到導入部分。這是您將Beep等外部庫鏈接到 Go 程序的地方。如果你還沒有安裝 Go,現(xiàn)在就使用Homebrew安裝吧
package main
import (
"fmt"
"github.com/faiface/beep"
"github.com/faiface/beep/mp3"
"github.com/faiface/beep/speaker"
"log"
"net/http"
"os"
"time"
)
在main函數(shù)中使用net/http庫中的HandleFunc()創(chuàng)建一個新的服務器路由。這將生成一個新的服務器端路由(“ /helloworld” ),用于從“2936”簡碼接收 M2M 命令。當收到 M2M 命令時,它將被傳送到helloworld函數(shù)。在端口 9999 上使用ListenAndServe()函數(shù)打開一個端口并監(jiān)聽傳入的連接。
func main(){
http.HandleFunc("/helloworld", helloworld)
http.ListenAndServe(":9999", nil)
}
極好的。現(xiàn)在我們必須創(chuàng)建helloworld函數(shù)。此函數(shù)接收到的 HTTP 請求將由http.Request類型表示。
func helloworld(w http.ResponseWriter, r *http.Request) {
}
當收到請求時,需要解析 M2M 命令。使用ParseForm()函數(shù)將請求正文解析為表單。
if err := r.ParseForm(); err != nil {
log.Printf("Error parsing form: %s", err)
return
}
可以使用PostFormValue()函數(shù)通過向其傳遞一個鍵來提取正文中的數(shù)據(jù)。該鍵將為您提供與 JSON 響應中命名組件關聯(lián)的值。在這種情況下,我們正在尋找“Command”鍵的值。
pwCommand := r.PostFormValue("Command")
fmt.Println("pwCommand : ", pwCommand)
為了添加一點趣味,讓我們在命令成功到達服務器時通過系統(tǒng)的音頻播放一些嗶聲代碼來播放音頻文件。
f, err := os.Open("helloworld.mp3")
if err != nil {
log.Fatal(err)
}
s, format, _ := mp3.Decode(f)
speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
playing := make(chan struct{})
speaker.Play(beep.Seq(s, beep.Callback(func() {
close(playing)
})))
<-playing
完整的 Go 程序:
package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
"github.com/faiface/beep"
"github.com/faiface/beep/mp3"
"github.com/faiface/beep/speaker"
)
func main() {
http.HandleFunc("/helloworld", helloworld)
http.ListenAndServe(":9999", nil)
}
func helloworld(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
log.Printf("Error parsing form: %s", err)
return
}
pwCommand := r.PostFormValue("Command")
fmt.Println("incoming Command from Arduino MKR GSM 1400 : ", pwCommand)
fmt.Println("Playing audio file!")
f, err := os.Open("helloworld.mp3")
if err != nil {
log.Fatal(err)
}
s, format, _ := mp3.Decode(f)
speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
playing := make(chan struct{})
speaker.Play(beep.Seq(s, beep.Callback(func() {
close(playing)
})))
<-playing
}
啟動服務器。
go run SayHelloArduinoGSM.go
使用 ngrok 構建橋梁
目前,硬件和軟件部分單獨存在。ngrok 將用于彌合差距。
當 SIM 向 Twilio 發(fā)送 M2M 命令時,Webhook 會發(fā)送到一個名為Commands Callback Url的用戶定義的 url 。我們將使用 ngrok 接收此 Webhook,然后將其路由到運行在我們自己機器上的服務器。要建立連接,請在服務器運行的同一端口上啟動一個新的 ngrok 實例。
ngrok http 9999
復制使用 ngrok ( http://xxxxxxxx.ngrok.io )創(chuàng)建的轉發(fā)url
在 Twilio 控制臺中導航到Programmable Wireless 。找到您之前在 SIM 下注冊的SIM 。在Configure選項卡下,您將找到Commands Callback Url 。將 ngrok轉發(fā)地址粘貼到文本框中,并將之前創(chuàng)建的服務器路由添加到 url 的末尾。
按保存。
通過天空發(fā)送消息
返回 Arduino IDE 并按上傳。
上傳后,仔細檢查命令是否使用串行監(jiān)視器正確發(fā)送。
- 導航到工具 > 串行監(jiān)視器
一旦從“2936”短代碼發(fā)送了 M2M 命令,它就會被路由到 ngrok 并使用命令回調 Url進入 go 應用程序。
最后 M2M 命令到達服務器和“helloworld.mp3”
細胞觸覺!
繼續(xù)連接東西
您剛剛使用魔法發(fā)送了您的第一個 M2M 命令。
此 M2M 命令模型是如何使用 Twilio 從遠程硬件設備發(fā)送 M2M 命令的基礎部分。Arduino MKR GSM 1400 具有集成的調制解調器和用于發(fā)送 AT 命令功能的軟件,因此成為任何物聯(lián)網原型設計套件的理想之選。
如果您有興趣了解可以發(fā)送 M2M 命令的其他硬件,請查看無線機器到機器快速入門。該項目以及其他項目可以在TwilioIoT GitHub 上找到。
如有任何問題或好奇,請隨時與我們聯(lián)系。如果您有任何已經構建或正在計劃構建的很酷的物聯(lián)網項目,請給我留言。
- 電子郵件:ckonopka@twilio.com
- Github:cskonopka
- 推特:@cskonopka
作者
- 克里斯托弗·科諾普卡
- 阿杜諾
- Arduino 和 Sim800 蜂窩機器到機器命令快速入門
- 黑客萬圣節(jié):使用 Arduino 和 Twilio 構建交互式鬼屋
- 在 LinkIt ONE 上開始使用 Twilio 可編程無線
- 使用 Twilio、PowerSwitch、Arduino 和 Pusher DIY 家庭自動化
請啟用 JavaScript 以查看
- 如何安全地將Arduino MKR GSM 1400板與GCP IoT Core結合使用
- 如何使用Arduino MKR GSM 1400的蜂窩定位
- Arduino之基于網絡的MP3播放器
- Arduino MKR GSM 1400:蜂窩物聯(lián)網數(shù)據(jù)可視化
- 如何使用Arduino和DFPlayer Mini制作帶LCD的MP3播放器
- Arduino MKR GSM 1400和DTMF開源
- stm32的MP3播放器 56次下載
- 基于DSP的MP3播放器的設計 16次下載
- C#教程之播放Mp3 8次下載
- 基于Cortex-M3的MP3播放器設計 0次下載
- 怎樣實現(xiàn)車載DVD或MP3的連續(xù)播放 33次下載
- MP3播放器原理圖
- 諾基亞手機MP3播放器下載
- nokia手機mp3播放軟件下載
- qd手機mp3播放器下載
- 基于功能一體化LSI—BU9435芯片實現(xiàn)MP3播放模塊的設計 3183次閱讀
- 微雪電子VS1003B MP3 Board簡介 3277次閱讀
- 微雪電子Arduino 音頻播放擴展板簡介 2128次閱讀
- MP3播放器的工作原理及工作電路的作用分析 1.3w次閱讀
- MP3播放器的基本原理及電路組成 2w次閱讀
- AT89C51單片機對MP3播放器硬件系統(tǒng)的設計 3104次閱讀
- 怎么鑒別MP3的無損音樂格式,你會了? 1.4w次閱讀
- 探析提升MP3芯片音質的3個小技巧 6856次閱讀
- 簡評FPGA——Arduino MKR Vidor 4000 6977次閱讀
- 耳機MP3音響PCB圖詳細資料分享 5717次閱讀
- 基于AT89C51SND1C單片機的MP3播放器的設計方案 6712次閱讀
- 基于51單片機的多功能MP3設計實現(xiàn) 1.3w次閱讀
- C51內核單片機的MP3播放器設計 5907次閱讀
- 新型嵌入式MP3播放器設計方案 5027次閱讀
- 汽車音響MP3發(fā)射器電路 2547次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網絡安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論