你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

开发人员套件——先锋NB-IoT与Twilio的Alfa

[复制链接]
点点&木木 发布时间:2019-3-16 12:23
本帖最后由 点点&木木 于 2019-4-12 20:18 编辑

通过Twilio的Alfa Developer Kit在T-Mobile的网络上发送命令,成为NB-IoT的先驱。

1.jpg



硬件组件   
Twilio可编程无线  ×  1      
Twilio Alfa开发人员套件     × 1      


介绍
NB-IoT,也称为Narrowband-IoT ,是一种新的蜂窝技术,承诺低成本,低功耗,广域覆盖和长电池寿命。这些特性有助于实现“ 智能设备”。
T-Mobile 已 在美国部署NB-IoT覆盖范围,Twilio是第一家提供NB-IoT开发套件的公司。Twilio的Alfa Developer Kit 具有与SeeedStudio合作开发的开发板。开发板可以使用Twilio窄带SIM(套件中附带)访问T-Mobile NB-IoT网络  。一旦进入网络,开发人员可以使用TwilioBreakout SDK在多个NB-IoT套件之间交换数据。

这篇文章演示了如何使用Twilio的Developer Kit连接到T-Mobile的NB-IoT网络。连接后,我们将使用Breakout SDK通过网络发送“hello world”消息。您还可以在TwilioIoT下的GitHub上找到已完成的项目。


硬件要求
适用于T-Mobile窄带的Twilio开发人员套件
Twilio窄带SIM卡
LTE天线
Micro USB线
锂电池



软件要求
Arduino IDE
SDK
浏览开发人员工具包
开发人员套件附带一个开发板,专门用于连接T-Mobile的NB-IoT网络。还包括Seeed Studio的几个硬件附件,可用于开发NB-IoT“智能设备”。


打开开发人员工具包框。该套件包含:
一套格罗夫传感器
按钮
超声波模块
温度/湿度
Twilio窄带SIM(全尺寸,迷你,微型和纳米)
开发板
LTE天线
GPS天线
锂电池
Micro-USB线
额外的布线
2.jpg
设置Twilio窄带SIM卡
3.jpg
从开发工具包中删除Twilio窄带SIM卡。接下来,在Twilio控制台中注册并激活您的窄带SIM卡。窄带SIM的过程遵循与Twilio可编程无线SIM相同的过程。


连接器件
从Twilio SIM卡中分离Nano SIM(最小尺寸)。
4.png


从Developer Kit中删除开发板。
5.png


将Twilio窄带SIM插入电路板下方的SIM插槽。
6.jpg


接下来,将LTE天线连接到电路板。
7.jpg


连接电池锂电池。建议始终插入锂电池,因为USB电源无法为电路板提供足够的峰值电源。
8.jpg
使用提供的Micro-USB电缆将开发板连接到计算机。您已准备好连接到网络。


配置NB-IoT套件固件
在我们开始编程电路板之前,我们需要更新电路板的固件。要在Macintosh上执行此操作,我们需要Homebrew 来安装dfu-util。
如果尚未安装,请打开终端并粘贴以下内容以安装Homebrew。
安装完成后,安装dfu-util 软件包。该软件包用于从USB连接设备下载和上载固件。
brew install dfu-util libusb
对于Windows用户,需要一组不同的USB驱动程序 。

设置软件环境
开发板使用Arduino IDE 对微控制器进行编程。Twilio开发了一种名为Breakout的NB-IoT专用软件开发套件  。该SDK使设备可以通过T-Mobile NB-IoT网络发送M2M命令。Breakout SDK可以在GitHub上找到。
9.png
从GitHub 下载Breakout_Arduino_Library.zip 。打开Arduino IDE并将.zip添加到Arduino IDE库中。

转到Sketch>Include Library> Add.ZIP库 并选择Breakout_Arduino_Library.zip 。
10.jpg
安装.zip文件后,我们需要安装一组板芯。开发板基于STM32F4 芯片组。要在板上开发,我们需要在Arduino IDE中下载STM32F4内核。
转到Arduino>首选项。将以下URL复制到AdditionalBoards Manager URL字段:
http://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json
11.png
单击确定。

STM32F4板现在可以在ArduinoIDE 板卡管理器中使用。接下来打开Boards Manager  以安装STM32F4板芯。
12.png
在Boards Manager中 搜索“Seeed”。找到并选择“Seeed STM32F4 Boards”版本“1.2.3+”并单击“安装”。
13.png
重新启动Arduino IDE。

安装STM32F4内核后,开发板即可进行编程。接下来选择电路板和电路板端口。
单击工具>板> Wio Tracker LTE
14.jpg
单击工具>端口> {您的调制解调器端口}
OSX:/dev/{cu|tty}.usbmodem{XXXX}
Linux:/ dev / ttyACM{X}
Windows:COM {X}
15.png

配置HelloWorld.ino文件
打开Arduino IDE中Breakout SDK提供的Hello World示例。
单击文件>示例>突破Arduino库> HelloWorld
16.jpg
在HelloWorld.ino中,我们需要进行一些修改,以便我们可以连接到T-Mobile NB-IoT网络。在“HelloWorld.ino”文件中找到psk_key 。
17.jpg


每个开发板都有一个独特的SIM ICCID和预共享密钥(psk )。我们正在使用的电路板的psk需要复制到HelloWorld.ino草图中。需要此密钥才能连接到T-Mobile窄带网络。

在BreakoutSDK 选项卡下 找到Credentials
导航到Twilio控制台中的可编程无线
单击SIM卡
找到以前注册的窄带SIM卡
如果它显示预共享密钥(psk),请单击眼睛徽标以显示密钥
复制psk
将您的psk粘贴到上面代码中的HelloWorld.ino文件中
18.jpg
设置psk后,让我们更改setPollingInterval。这决定了BreakoutSDK  为新命令轮询的频率。找到line breakout->setPollingInterval。
30.jpg

将'setPollingInterval'间隔从  10 更改为1. 这会将轮询 时间从10分钟更改为1分钟。
breakout->setPollingInterval(1 * 60);
下面是完整的Arduino草图。有关如何在GitHub上找到Breakout SDK的更多细节。
#include <Seeed_ws2812.h>
#include <BreakoutSDK.h>
static const char *device_purpose = "Dev-Kit";
static const char *psk_key = "YOUR_PSK";
Breakout *breakout = &Breakout::getInstance();
WS2812 strip = WS2812(1, RGB_LED_PIN);
void enableLed() {
  pinMode(RGB_LED_PWR_PIN, OUTPUT);
  digitalWrite(RGB_LED_PWR_PIN, HIGH);
  strip.begin();
  strip.brightness = 5;
}
void setup() {
  owl_log_set_level(L_INFO);
  LOG(L_WARN, "Arduino setup() starting up\r\n");
  enableLed();
  strip.WS2812SetRGB(0, 0x20, 0x20, 0x00);
  strip.WS2812Send();
  breakout->setPurpose(device_purpose);
  breakout->setPSKKey(psk_key);
  breakout->setPollingInterval(1 * 60);  // Optional, set to 1 minute
  // Powering the modem and starting up the SDK
  LOG(L_WARN, "Powering on module and registering...");
  breakout->powerModuleOn();
  const char command[] = "Hello World from BreakoutSDK test app";
  if (breakout->sendTextCommand(command) == COMMAND_STATUS_OK) {
    LOG(L_INFO, "Tx-Command [%s]\r\n", command);
  } else {
    LOG(L_INFO, "Tx-Command ERROR\r\n");
  }
  // Set RGB-LED to green
  strip.WS2812SetRGB(0, 0x00, 0x40, 0x00);
  strip.WS2812Send();
  LOG(L_WARN, "... done powering on and registering.\r\n");
  LOG(L_WARN, "Arduino loop() starting up\r\n");
}
void your_application_example() {
  if (breakout->hasWaitingCommand()) {
    char command[141];
    size_t commandLen = 0;
    bool isBinary     = false;
    command_status_code_e code = breakout->receiveCommand(140, command, &commandLen, &isBinary);
    switch (code) {
      case COMMAND_STATUS_OK:
        LOG(L_INFO, "Rx-Command [%.*s]\r\n", commandLen, command);
        break;
      case COMMAND_STATUS_ERROR:
        LOG(L_INFO, "Rx-Command ERROR\r\n");
        break;
      case COMMAND_STATUS_BUFFER_TOO_SMALL:
        LOG(L_INFO, "Rx-Command BUFFER_TOO_SMALL\r\n");
        break;
      case COMMAND_STATUS_NO_COMMAND_WAITING:
        LOG(L_INFO, "Rx-Command NO_COMMAND_WAITING\r\n");        break;      default:        LOG(L_INFO, "Rx-Command ERROR %d\r\n", code);    }
  }
}
void loop() {
  your_application_example();
  breakout->spin();
  delay(50);
}

进入Bootloader模式
要将代码上传到开发板,需要将设备置于Bootloader模式。
按住Developer Board下方的BOOT0按钮。
20.jpg
按住开发板顶部的RST。
21.jpg
释放开发板顶部的RST按键。
释放BOOT0按钮以启用Bootloader模式。
在Arduino IDE中按Upload。
22.jpg

将代码上传到开发板后,按RST按钮。这将使主板退出Bootloader模式。完成的代码可以在TwilioIoTGitHub上找到。

连接到网络并发送命令
重置电路板后,启动NB-IoT网络注册过程。这将在网络上注册板并为设备分配带宽。在此过程中,网络连接LED将呈橙色亮起。
23.png


打开串行监视器以观察电路板注册和连接到网络。
24.jpg
当开发板成功注册到NB-IoT网络时,网络连接LED将呈蓝色亮起。连接稳定时,以下消息将显示在Arduino串行监视器中:
25.jpg
当电路板成功连接到NB-IoT网络时,将初始化Breakout SDK。
26.jpg
这是Breakout SDK将命令发送到Twilio时的串行监视器输出。
27.jpg
将记录Breakout SDK发送和接收的每个命令。通过NB-IoT网络发送的命令可以在可编程无线下的Twilio控制台中找到。
导航到Twilio控制台中的可编程无线
单击SIM卡
找到以前注册的窄带SIM卡
单击“命令”选项卡
28.jpg
使用Breakout SDK接收命令
Breakout SDK将每分钟轮询一个新命令。使用cURL,您可以使用Sim唯一名称将命令发送到NB-IoT板。
curl -X POST http://wireless.twilio.com/v1/Commands \ --data-urlencode "Sim=Breakout" \ --data-urlencode "Command=this is a test" \ -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

观看Arduino IDE串行监视器以查看收到的命令:
29.jpg
成为NB-IoT的首批先驱之一感觉如何?
使用NB-IoT的“事物”的未来
这是硬件和软件方面物联网开发的特殊时期。许多流程正在变得优化......许多流程仍然笼罩在神秘之中。
这些“事物”影响着我们的日常生活 - 往往没有我们意识到它。从踏板车到家庭自动化的每个部分现在都具有一些互连元素。
NB-IoT更进一步。Narrowband的低成本,低功耗,广域覆盖和长电池寿命使“智能设备”更加智能化。成为TwilioNarrowband的物联网先锋。让我们一起建立梦想。

原理图
NB-IoT板设置
30.png


代码
这是Breakout SDK HelloWorld.ino文件的修改版本。

#include <Seeed_ws2812.h>
#include <BreakoutSDK.h>

static const char *device_purpose = "Dev-Kit";
static const char *psk_key = "YOUR_PSK";

Breakout *breakout = &Breakout::getInstance();

WS2812 strip = WS2812(1, RGB_LED_PIN);

void enableLed() {
pinMode(RGB_LED_PWR_PIN,OUTPUT);
digitalWrite(RGB_LED_PWR_PIN, HIGH);
strip.begin();
strip.brightness = 5;
}

void setup() {
owl_log_set_level(L_INFO);
  LOG(L_WARN, "Arduino setup() starting up\r\n");

enableLed();
strip.WS2812SetRGB(0, 0x20, 0x20, 0x00);
strip.WS2812Send();

breakout->setPurpose(device_purpose);
breakout->setPSKKey(psk_key);
breakout->setPollingInterval(1 * 60);  // Optional, set to 1 minute

  //Powering the modem and starting up the SDK
  LOG(L_WARN, "Powering on module and registering...");
breakout->powerModuleOn();

const char command[] = "Hello World fromBreakoutSDK test app";

  if (breakout->sendTextCommand(command) == COMMAND_STATUS_OK) {
   LOG(L_INFO, "Tx-Command [%s]\r\n", command);
  } else {
   LOG(L_INFO, "Tx-Command ERROR\r\n");
  }

  //Set RGB-LED to green
strip.WS2812SetRGB(0, 0x00, 0x40, 0x00);
strip.WS2812Send();

  LOG(L_WARN, "... done powering on and registering.\r\n");
  LOG(L_WARN, "Arduino loop() starting up\r\n");
}

void your_application_example() {
  if (breakout->hasWaitingCommand()) {
   char command[141];
   size_t commandLen = 0;
   bool isBinary     = false;
   command_status_code_e code = breakout->receiveCommand(140, command, &commandLen, &isBinary);
   switch (code) {
     case COMMAND_STATUS_OK:
       LOG(L_INFO, "Rx-Command [%.*s]\r\n", commandLen, command);
       break;
     case COMMAND_STATUS_ERROR:
       LOG(L_INFO, "Rx-Command ERROR\r\n");
       break;
     case COMMAND_STATUS_BUFFER_TOO_SMALL:
       LOG(L_INFO, "Rx-Command BUFFER_TOO_SMALL\r\n");
       break;
     case COMMAND_STATUS_NO_COMMAND_WAITING:
       LOG(L_INFO, "Rx-Command NO_COMMAND_WAITING\r\n");
       break;
     default:
       LOG(L_INFO, "Rx-Command ERROR %d\r\n", code);
    }
  }
}

void loop() {
your_application_example();
breakout->spin();
delay(50);
}



19.jpg
收藏 评论0 发布时间:2019-3-16 12:23

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版