查看: 3066|回复: 9

[案例教程] 【NB-IoT 物联网开发板 TinkerNode】 智能家居入门教程

[复制链接]
本帖最后由 DFSH_Faith 于 2020-9-30 08:31 编辑

Hello,大家好。本次我将给大家带来TinkerNode NB-IoT物联网开发板的第一个项目教程,也是入门教程。项目将会使用TinkerNode的板载LED灯,在阿里云平台上,借助阿里云的IoT Studio WEB可视化开发功能,搭建一个远程控制灯的开关以及亮度的系统,这也是智能家居系统中一个典型的远程开关控制场景。
项目的主要目的:
①初步了解阿里云平台的使用方法
②了解TinkerNode NB-IoT物联网开发板的功能,熟悉使用过程。

视频教程

为了方便大家的学习,除了文字教程外,我们还制作了视频教程供大家参阅。



文字教程

1. 阿里云IoT注册与产品创建

本次项目选择的是阿里云IoT作为项目的云平台,所以需要大家注册一个阿里云IoT平台的账号,并跟随接下来的教程,熟悉阿里云IoT平台的使用方法。

注册新用户

首先,打开阿里云IoT的首页 https://iot.aliyun.com/ 。点击右上角的免费注册,创建一个阿里云IoT的账号。

202003016103..png

开通物联网平台

登录阿里云平台,点击右上角的工作台,即可进入阿里云控制台首页。
在左上角的工具栏中,选择产品与服务,在列表中找到物联网平台,点击进入物联网平台。
注意:如果是第一次使用物联网平台,需要开通物联网平台的服务,这个服务在数据量不多或者不进行商用时是免费的。

202003013292..png

接下来,我们就进入了物联网平台的主页面,可以看到在页面的左侧是物联网平台的功能菜单,如下图所示。

202003014000..png

而在本次的智能家居项目中,我们主要会用到设备管理监控运维以及IoT Studio三个菜单中的功能。

阿里云平台管理体系

在开始制作项目之前,我们需要先来了解一下阿里云IoT平台中的设备管理体系,如下图所示。

202003015444..png

在阿里云的物联网平台中,有项目、产品和设备三种概念,它们是一种从属关系。在物联网平台中可以创建多个项目;一个物联网项目可以包含多个产品;一个物联网产品也可以包含多个设备。在这其中,每一个项目、产品以及设备,都有自己独立的管理界面,方便我们进行调试和数据的查询。另外,需要注意的一点是,在阿里云IoT平台中,同一个设备可以从属于多个不同的产品,同一个产品也可以从属于多个不同的项目,这一点在我们进行多项目开发时,是十分便利的。
了解完阿里云平台的体系之后,接下来我们就可以开始项目的制作了。

新建项目

在物联网平台的页面左侧,选择IoT Studio -> 项目管理,点击新建项目,新建一个空白项目,如下图所示。

202003011195..png

项目的名称,我们可以填写“智能家居”,如下图所示。

202003013827..png

创建完成后,我们会进入“智能家居”项目的管理页面,如下图所示。

202003016736..png

此时,我们就已经创建好了项目,接下来我们需要为这个项目添加产品和设备。

新建产品

在项目管理页面左侧的功能栏点击产品,在弹出的产品页面中选择新建产品,如下图所示。

202003019472..png

产品的名称填写“物联网灯控”,所属品类选择“自定义品类”,其他选项默认,如下图所示。

202003011715..png

完成后点击保存,此时我们已经在“智能家居”项目下创建了一个名为“物联网灯控”的新产品,如下图所示。

202003015319..png

功能定义

接下来,我们需要对产品进行功能定义,这一步也叫作定义产品的“物模型”,物模型创建的过程就是通过协议描述产品的功能,定义产品有几组传感器数据,有什么控制功能,数据的类型是什么。
在产品页面,点击“物联网灯控”产品后的查看,如下图所示。

202003019970..png

选择功能定义 -> 自定义功能 -> 添加自定义功能 ,如下图所示

202003018340..png

由于本次项目需要实现的目标是,通过云平台实现LED灯的开关,所以我们需要创建一个数据类型为bool类型的自定义功能(物模型)。
Ps:bool(布尔型)式编程语言的一种变量类型,布尔型变量的值只有两个,False(假)和True(真),即0和1。
所以在创建自定义功能时,我们的功能名称填写“灯工作状态”,标识符填写“LightStatus”,数据类型选择“bool(布尔型)”,布尔值0为关灯,1为开灯,读写类型选“读写”,如下图所示。

202003013240..png

创建完成后,效果如下图所示。
202003012299..png

新增设备

完成了产品的功能定义之后,我们需要为“物联网灯控”产品,建立一个设备,这样我们就要可以将TinkerNode 物联网开发板连接到阿里云平台了。
在项目管理页面左侧的功能栏点击设备,在弹出的设备页面中选择新增设备,如下图所示。

202003013364..png

在弹出的窗口中,产品选择“物联网灯控”,添加方式选择自动生成,设备数量填写1,如下图所示。

202003011563..png

到此,我们已经在阿里云平台上创建好了项目、产品和设备。

2. 硬件设备调试

驱动安装

TinkerNode NB-IoT 物联网开发板需要专用驱动程序,否则无法上传程序(无串口)或弹出微型U盘。目前仅支持Windows系统(Win7、Win10)。点击下载专用驱动程序,解压缩压缩包,双击驱动安装包341dz_sign.exe,如下图点击安装即可。

202003016097..png

若安装驱动后,设备管理器中提示Windows无法验证此设备所需的驱动程序的数字签名,点击查看解决方案

驱动安装好后,开发板会弹出一个容量未知的U盘,我们需要对该U盘进行格式化才能使用。如下图,右击该U盘,在弹出的菜单中单击格式化

202003017002..png

在弹出的窗口中,保持默认配置,卷标可以按照自己的喜好进行配置,点击开始进行格式化,整个过程大约需要20s。

202003019632..png

格式化完毕后,可以看到一个大小约8MB的U盘,如下图所示。

202003011783..png

安装板卡

TinkerNode NB-IoT 物联网开发板的官方开发环境为Arduino,所以我们需要在Arduino IDE中安装TinkerNode 开发板的板卡驱动包。
首先,我们需要在电脑中安装Arduino IDE,点击进入Arduino IDE官方下载链接

安装完成后,打开Arduino IDE,添加开发板驱动的下载地址。在菜单栏中选择File -> Preferences,如下图所示。

202003018916..png

点击Additional Boards Managers URLs右边的小图标,如下图所示。

202003015387..png

在弹出窗口的最后一行,复制粘贴开发板的驱动地址:http://download.dfrobot.top/Tink ... e-NB-IoT_index.json,如下图所示。

202003014453..png

分别在Additional Boards Managers URLsPreferences窗口点击OK进行确认
在菜单栏中选择Tools -> Board -> Boards Manager...,如下图所示。

202003015340..png

弹出Boards Manager开发板管理器窗口,管理器会自动更新板卡信息。在更新完毕后,搜索栏中输入TinkerNode,选择TinkerNode_NB-IoT,选择最新版本的开发板驱动,点击Install安装驱动,如下图所示。

202003011815..png

成功安装完成后,会显示“INSTALLED”,如下图所示。安装完成后,关闭该窗口即可。

202003027262..png

此时我们可以在IDE的菜单栏中选择Tools -> Board -> TinkerNode NB-IoT(CH),选择对应的串口后,就可以向开发板烧录程序,或者查看通过串口打印的数据了。

202003028118..png

代码调试

在Arduino IDE中,点击文件->示例->DFRobot_IoT->Bedroom_Light,如下图所示。

202003023842..png

在样例中,我们需要进行修改的有以下四个部分:
① WiFi名称和密码的设置
将当前设备所连接的WiFi名称和密码,填写在代码中的WIFI_SSID、WIFI_PASSWORD变量值的双引号内,即下列代码所示:

[C++] 纯文本查看 复制代码
/*Set WIFI name and password*/
const char* WIFI_SSID       = "YOUR_WIFI_SSID";
const char* WIFI_PASSWORD   = "YOUR_WIFI_PASSWORD";


② 产品标识符设置
是用户在配置产品功能的过程中,自行设置的用以标识产品的名称或符号。
进入智能家居项目,在做左侧导航栏选择产品,在产品列表中找到名为智能灯光的产品,点击查看,复制我们刚刚设置的产品标识符,如下图所示:

202003024899..png

将该产品的产品标识符复制到代码中的Identifier变量值的双引号内,即下列代码所示:
[C] 纯文本查看 复制代码
/*Product identifier that needs to be operated*/
String Identifier = "Your_Identifier";


③ 设备证书信息设置
设备证书信息,包含阿里云IoT平台分配的ProductKey、DeviceSecret,以及DeviceName。
进入智能家居项目,在做左侧导航栏选择设备,在设备列表中找到刚刚创建的设备,点击查看,可以从设备管理页面查看该设备的设备证书信息,如下图所示:

202003014472..png

将该设备的设备证书信息分别复制粘贴到代码中ProductKey、DeviceName、DeviceSecret变量值的双引号内,即下列代码所示:

[C] 纯文本查看 复制代码
/*Configure device certificate information*/
String ProductKey = "Your_Product_Key";
String ClientId = "12345";/*Custom id*/
String DeviceName = "Your_Device_Name";
String DeviceSecret = "Your_Device_Secret";


④ 发布和订阅Topic设置
是用户完成设备配置后,在阿里云IoT平台上进行发布和订阅所需要的Topic信息。
可以从设备的Topic列表中查看设备发布和订阅的Topic信息,如下图所示:

202003013016..png

将发布和订阅的Topic信息填写在代码中对应位置,如下列代码所示:
[C] 纯文本查看 复制代码
/*TOPIC that need to be published and subscribed*/
const char * subTopic = "Your_sub_Topic";//****/set
const char * pubTopic = "Your_pub_Topic";//******/post


至此,Arduino程序已经修改完成了,可以将代码上传至TinkerNode NB-IoT物联网开发板。
代码上传完成后,打开Arduino串口监视器,波特率设置为115200,可以看到WiFi和MQTT分别连接成功,如下图所示:

202003011786..png

MQTT连接完成后,可以在设备管理界面看到设备显示在线,如下图所示:

202003025548..png

至此,我们可以在阿里云IoT平台上对该设备进行在线调试。

在线调试

在设备管理界面选择在线调试,在调试设备栏选择调试真实设备,功能选择为“灯工作状态(LightStatus)”,方法选择为“设置”。在代码框中通过修改LightStatus的值为1,并点击发送指令,即可以实现控制TinkerNode板载LED开关的功能,如下图所示:

202003021587..png

同时我们可以在Arduino IDE的串口监视器中看到TinkerNode收到阿里云iot平台发送的调试信息,如下图所示:

202003027417..png

同时可以看到TinkerNode板载LED,随着LightStatus状态标识符的改变而变化。
202003029779..png

至此,我们已经建立了TinkerNode与云平台的连接,并且可以通过云平台控制TinkerNode 物联网开发板上LED的开关状态。

3. IoT Studio Web可视化页面开发

在阿里云平台中,可以进行Web可视化页面的开发,这也是IoT Studio的核心功能,我们可以通过Web可视化页面开发,开发个性化的设备控制页面。接下来,就让我们为刚刚制作的智能家居项目,创建一个Web可视化页面吧!

在智能家居的项目管理页面,在左侧的功能菜单栏选择主页,在项目开发中选择Web应用,点击新建,如下图所示。

202003027491..png

在弹出的窗口中,可以给新建的Web应用命名,这里我们命名为“智能家居控制页面”,如下图所示。

202003026602..png

点击确认后,进入Web可视化开发的页面,我们可以看到,上方是基础的菜单栏,左侧为功能区,中间是可视化开发的画布,右侧是属性配置区,如下图所示。

202003026915..png

在左侧的菜单栏,选择组件,如下图所示。

202003025873..png

选择组件后,我们可以看到出现很多功能各异的组件,有指示灯、开关、按钮、仪表盘、时钟等,在这里阿里云还专门区分出了基础和工业组件,以及更细化的变配电组件。而工业组件相比基础组件,带有了更丰富的显示功能。如果是对工业场景有一定了解的朋友,这时候应该已经大概了解了可视化页面的功能,他与PLC中的组态是十分类似的。
Ps:如果有兴趣的话,可以点击查看组态的概念。在这次的项目中,我们需要用到开关和指示灯两个组件,通过开关控制LED灯的状态,并通过指示灯显示出来。
将开关和指示灯两个组件从左侧的组件栏拖到中间的画布中,如下图所示。

202003026184..png

点击指示灯组件,在右侧的配置栏点击配置数据源,如下图所示。

202003024452..png

选择我们创建的“物联网灯控”产品,点击确定,如下图所示。

202003028248..png

在设备的选项中,选择指定设备,在弹出的窗口中选择我们刚刚创建的设备,点击确定,如下图所示。

202003028885..png

在属性选项,点击选择属性,在弹出的窗口中选择我们在产品中定义的功能(物模型)“灯工作状态”,点击确定,如下图所示。

202003021267..png

此时我们可以点击验证数据格式,如果配置正确,系统会提示数据格式验证成功,如下图所示。

202003023945..png

最后点击确定,完成指示灯的数据源配置。
此时我们可以在右侧的配置栏看到“已配置数据源”的提示,并且我们可以修改指示灯的展示样式,可以是颜色或者图片,这里我们选择颜色。同时,我们可以在配置栏中自行配置开关灯时,指示灯的颜色,这里我们使用默认的颜色,大家可以根据自己的习惯修改。
到此我们已经完成了指示灯的相关配置。
接下来我们要进行开关的配置,同样的点击开关组件,在右侧的配置栏点击配置数据源,执行与配置指示灯相同的操作,如下图所示。

202003022375..png

全部完成后点击确认,完成开关组件的配置。
Ps: 开关组件也可以自行配置颜色。
至此,我们已经完成了可视化页面的开发。我们点击右上角菜单栏的预览按钮,就可以预览我们制作的可视化页面功能,进行功能调试。点击预览页面中的开关,就可以看到TinkerNode主控板上的LED和页面中的指示灯先后亮起。调试完成后,回到Web可视化开发界面,点击右上角菜单栏中的发布,如下图所示。

202003026847..png

发布后,我们回到IoT Studio的主页,此时我们可以看到页面中多了一个名为“智能家居控制页面”的Web应用,并且发布状态已经变为“已发布”,此时我们可以点击右侧的发布地址,既可以进入该Web控制页面。

202003021484..png

打开这个网址,我们就可以在电脑上,通过浏览器访问这个Web页面并控制TinkerNode物联网开发板上的LED灯了,最终发布页面的效果如下图所示。


202003027780..png

另外,阿里云中也可以自行添加图片背景,大家可以自行尝试。




1.智能家居入门教程大纲.pdf

286.58 KB, 下载次数: 107

红通通  中级技师

发表于 2020-3-3 10:25:57

好帖,学习学习。
回复

使用道具 举报

想成为蟑螂恶霸  见习技师

发表于 2020-3-3 11:40:29

很详细
回复

使用道具 举报

碧海  见习技师

发表于 2020-3-3 22:58:43

真牛,期待更多帖子
回复

使用道具 举报

DFHk-0ykaN8  见习技师

发表于 2020-3-11 13:32:22


很详细
回复

使用道具 举报

DFHk-0ykaN8  见习技师

发表于 2020-3-11 13:35:52

好帖,学习学习。
回复

使用道具 举报

从前有只小瑛瑛  见习技师

发表于 2020-3-24 21:27:21

学习学习
回复

使用道具 举报

幻想家  学徒

发表于 2020-5-3 14:00:39

前辈,那个 ClientId是啥呀,您写的是“12345”
回复

使用道具 举报

DFSH_Faith  NPC
 楼主|

发表于 2020-5-9 18:28:24

幻想家 发表于 2020-5-3 06:00
前辈,那个 ClientId是啥呀,您写的是“12345”

这个无所谓的,随便填写就可以了
回复

使用道具 举报

Richard_King  见习技师

发表于 前天 00:53

想着简单,实际做起来各种问题不断,搞了2天,幸好看到此贴,比较详细,终于成功,谢谢!只是阿里云没有免费选项,这个对开发者不友好,唉
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail