风筝
发表于: 2018-12-21 07:41:47 | 显示全部楼层

新的MKR系列Arduino板将改变快速原型物联网解决方案的前景。对于希望使用蜂窝连接扩展其物联网项目范围的任何人来说,Arduino MKR GSM 1400都是一个很好的解决方案。通过将调制解调器与微控制器集成,新的一体化通信解决方案已经开始出现。这与Twilio可编程无线SIM配合使用,可以使用机器对机器命令在全球范围内进行通信。现在可以通过WiFi或蓝牙以前所未有的方式连接“事物”。


本篇文章演示了如何将机器到机器命令从Arduino MKR GSM 1400发送到用Go编写的服务器。当在服务器端接收到机器到机器命令时,音频文件将播放.mp3,表示“你好”。如果你想跳过,可以在TwilioIoT GitHub上找到已完成的项目。


什么是Arduino MKR GSM 1400?

Arduino MKR GSM 1400是一款开发板,它将Arduino Zero的功能与使用u-blox SARAU201调制解调器的全球GSM连接相结合。传统上使用AT命令使用单独的模块与调制解调器通信。该模型板附带了一个库,通过函数调用可以更方便地访问AT命令。


硬件要求

●    Twilio可编程无线SIM卡

●    Arduino MKR GSM 1400

●    GSM天线

●    Micro USB线

软件要求

●    Arduino IDE

●    Go

●    Go的Beep库

●    ngrok


设置Twilio SIM卡

TwilioSIM.width-500.png

从包装中取出Twilio SIM卡。接下来在Twilio控制台中注册并激活您的SIM卡


软件方面的事情

在对硬件进行编程之前,我们需要安装一些软件才能使其正常工作。为了能够使用板载调制解调器发送M2M命令,我们需要MKRGSM库


打开Arduino IDE并转到Sketch> Manage Libraries。这是Arduino和第三方库可以安装到Arduino IDE中的地方。

arduinogsm-managerlibrary.width-800.png

弹出“库管理器”窗口时,搜索MKRGSM库并按“安装”。 MKRGSM库将AT命令包装到函数中,使其更容易与调制解调器通信。

arduinogsm-librarymanager.width-800.png

安装库后,我们需要安装Arduino MKR GSM 1400板核心组。 Arduino MKR GSM 1400采用与使用AVR ATmega芯片组的传统Arduinos不同的芯片组。该板使用SAMD21 Cortex-M0 +,它需要一组不同的内核。这些内核不随Arduino IDE一起提供,计算机在连接​​时需要识别它们。


Tools > Board > Board Manager下找到板管理器。

Screen_Shot_2018-11-16_at_10.40.44_AM.width-800.png

出现Board Manager窗口时,搜索Arduino SAMD板并安装核心。

arduinogsm-boardmanager.width-800.png

重新启动Arduino IDE以完成安装。


很不错!是时候进入硬件设置了。


硬件方面的事情

要通过网络发送M2M命令,我们需要安装Twilio SIM。 从Twilio SIM卡中取出Micro SIM卡

arduinogsm-SimSize.width-500.png

将Twilio SIM插入电路板下方的SIM插槽。

arduinogsm-sim.width-500.jpg

接下来,将GSM天线连接到电路板。

arduinogsm-antenna.width-500.jpg

使用Micro-USB电缆将电路板连接到计算机,您就可以连接到网络了。

跳转到指定楼层
回复

使用道具 举报

风筝
发表于: 2018-12-21 19:41:45 | 显示全部楼层

创建Arduino草图

在Arduino IDE中创建一个新的Arduino草图(File> New)。模板看起来像这样。

  1. void setup(){

  2. }

  3. void loop(){

  4. }
复制代码

为所有GSM功能实例化基类GSM。为了发送和接收SMS消息,还需要实例化GSM SMS类。这需要在setup()函数之前配置。

  1. #include <MKRGSM.h>

  2. GSM gsmAccess;
  3. GSM_SMS sms;
复制代码

setup()函数中,创建一个波特率为115200的串行连接。波特率决定特定通信通道上的数据速度。

  1. Serial.begin(115200);
复制代码

使用gsmAccess.begin()函数连接到Twilio SIM上标识的蜂窝网络。

  1. gsmAccess.begin();
  2. Serial.println("GSM initialized");
复制代码

loop()函数中,使用beginSMS函数定义将发送M2M命令的电话号码。我们将使用的数字是“2936”。这是一个特殊的Twilio短代码,保留用于在Twilio SIM之间交换M2M命令。它使用SMS传输通过蜂窝网络发送M2M命令。当Twilio SIM创建M2M命令时会生成Webhook,我们将很快讨论。

  1. sms.beginSMS("2936");
复制代码

将char数组传递给函数sms.print()以创建要排队的新消息。

  1. sms.print("hello world");
  2. Serial.println(“Sending M2M Command”);
复制代码

创建消息并排队后,使用endSMS()函数告诉调制解调器该过程已完成。一旦发生这种情况,将发送“hello world”消息。

  1. sms.endSMS();
  2. Serial.println("M2M Command Sent!");
复制代码

最后一段代码是一个while循环,它将捕获程序并将其置于无限循环中。这样做的目的是确保仅发送一次M2M命令。

  1. while(1) {
  2.     delay(4000);
  3. }
复制代码

完整的Arduino草图程序如下:

  1. #include <MKRGSM.h>

  2. GSM gsmAccess;
  3. GSM_SMS sms;

  4. void setup(){
  5.     Serial.begin(115200);

  6.     gsmAccess.begin();
  7.     Serial.println("GSM initialized");
  8. }

  9. void loop(){
  10.     sms.beginSMS("2936");

  11.         sms.print("hello world");
  12.         Serial.println(“Sending M2M Command”);

  13.        sms.endSMS();
  14.        Serial.println("M2M Command Sent!");

  15.        while(1) {
  16.                delay(4000);
  17.        }  
  18. }
复制代码

仔细检查是否已在Tools > Board下选择了该板。如果未选中,编译器将在您尝试上载代码时抛出错误。

arduinogsm-selectboard.width-800.png


将新草图另存为“SayHelloArduinoGSM.ino”。在将新草图上传到电路板之前,让我们创建一个服务器,使用Go接收M2M命令。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-26 03:02 , Processed in 0.052410 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表