2020-3-13 18:41:52 [显示全部楼层]
18701浏览
查看: 18701|回复: 30

[案例教程] 【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘

[复制链接]
这次项目我们将用TinkerNode物联网开发板,制作一个家用的WiFi物联网窗帘,来帮助大家熟悉TinkerNode的使用,了解更多TinkerNode的功能。

项目背景

拉窗帘一直是我们生活中,必不可少而且十分频繁的一个动作。比如我,在公司坐在一个朝西的窗边,在有太阳的日子里每天下午都能享受到午后阳光的温暖。可惜坐在我对面的同事们就没有那么幸福了,每天下午都会受到刺眼阳光的照射,每天我都会在他们的声讨下,频繁的进行拉窗帘的操作。为了减少我起身拉窗帘的次数(我就是懒),我开发了这个WiFi物联网窗帘控制器,可以让我用遥控器远程控制窗帘的升降,并且在阿里云平台上开发了可视化控制界面,让我对面的同事们可以通过控制界面,远程的控制窗帘的升降。很好,我再也不用转身拉窗帘了。

项目照片

在教程开始前,先让大家看一下最终的成品图片。

WiFi窗帘控制器
【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图12
安装位置和使用效果图
【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图13

项目的主要目的:
①熟悉阿里云IoT平台的使用方法
②熟悉TinkerNode的基本功能

项目视频


为了方便大家进行学习,我们为大家提供了视频版本的项目教程。



元器件清单


TinkerNode NB-IoT开发板 x1
TinkerNode Gravity IO扩展板 x1
数字继电器模块 (Arduino和树莓派兼容) x1
DC-DC可调升压模块 3.7~34V x1
混合式步进电机-42BYGH40-1.8-22A x1
DRV8825步进电机驱动 x1
步进电机驱动扩展板 x1
3-50cm 红外数字避障传感器 x1
7.4V锂电池 x1
7.4V锂电池USB充电模块 x1
太阳能板5V 2A x1


项目逻辑
在开始制作前,我用流程图梳理了一下设备控制流程。如下图所示,大家可以参考一下,方便大家了解项目和代码的制作逻辑。在项目中,我创建了一个用于储存步进电机步数的变量,以下降的最低点为0点,以确定窗帘的实时位置。另外,我还使用了红外传感器监测窗帘的下边沿,以确定窗帘下降的最低点位置,并在每次下降到最低点时,都进行0点校准,保证窗帘不会因为电机丢步和结构打滑导致控制失准的情况。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图16

1.项目相关功能介绍

首先,我们先来了解一下本次项目中使用到TinkerNode的功能。

I/O口
TinkerNode带有5个数字口D0~D4和2个模拟口A0~A1,以及SCL,SDA,MISO,MOSI,SCK,TXD,RXD接口均可作为通用IO进行调用。需要注意的是,除了D0~D4外的IO口在作为通用IO调用时,只能使用物理管脚号进行调用。与Arduino不同的是,这些IO口均具有PWM功能。

模拟输入
TinkerNode带有两个模拟口A0 & A1,ADC位数为12位,分辨率为1/4096。另外,两个模拟口A0 & A1作为通用IO调用时,仅能作为输入,不能作为输出。

2.阿里云平台配置

与入门教程相同,我们首先需要在阿里云平台中新建一个项目,然后为项目创建产品和设备,配置产品自定义功能(物模型)。
在物联网平台的页面左侧,选择IoT Studio -> 项目管理,点击新建项目,新建一个空白项目,项目名称为“物联网窗帘”,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图8

创建完成后,我们会进入“物联网窗帘”项目的管理页面,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图10

新建产品

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

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图1

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

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图6

完成后点击保存,此时已经在项目下创建了一个名为“WiFi物联网窗帘”的新产品。

功能定义

接下来,我们需要为产品添加功能,也叫作定义产品的“物模型”,物模型创建的过程就是通过协议描述产品的功能,定义产品有几组传感器数据,有什么控制功能,数据的类型是什么。
点击“WiFi物联网窗帘”产品后的查看,进入该产品的管理页面,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图14

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

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图3

在“WiFi物联网窗帘”产品中,我们需要控制窗帘的上升、下降、暂停和复位,共四种控制方式。所以我们将数据类型定义为int32(整数型),标识符设定为“Curtain_Control”取值范围设定为0~3,步长为1,对应了四种控制方式。这样我们就可以通过阿里云平台,向控制设备发送指令。功能定义配置如下图所示:

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图7

新增设备

完成了产品的功能定义之后,接下来我们为产品建立一个设备,这样我们就可以将由TinkerNode搭建的窗帘控制设备连接到阿里云平台,从而实现云端控制了。
在项目管理页面左侧的功能栏点击设备,在弹出的设备页面中选择新增设备,如下图所示。


【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图9

弹出的窗口中,产品选择“WiFi物联网窗帘”,添加方式选择自动生成,设备数量填写1,点击提交,创建完成后如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图4

3.硬件相关配置

结构安装

项目中使用的外壳结构均为激光切割件,大家可以在附件中自行下载,进行切割。
项目中还使用了一个3D打印的联轴器,可以

硬件连接

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图11

按照上图进行硬件连接。
如果该图看不清楚,可以到帖子最下方下载附件查看。Ps:项目中所使用到的DRV8825步进电机驱动及扩展板,为X宝产品,大家可以自行购买,可参考下图。


【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图22【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图23

代码调试

下载附件中的库文件,安装至Aruidno IDE中。点击查看如何安装库文件?
下载附件NB_WiFiCurtain.ino,打开项目代码,修改代码中对应的参数。

①WiFi名称和密码的设置

将设备所需要连接的WiFi名称和密码,填写在代码中WiFi_SSID和WiFi_PASSWORD变量值的双引号内,即下列代码所示:

//设置WIFI 名称和密码
const char* WIFI_SSID       = "YOUR_WIFI_SSID";
const char* WIFI_PASSWORD   = "YOUR_WIFI_PASSWORD";


②阿里云相关配置
我们需要根据阿里云平台的配置信息,在项目代码中做对应的修改。

在设备页面查看设备证书信息,填写在代码中对应位置。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图5

  1. //配置证书信息
  2. String ProductKey = "Your_Product_Key";
  3. String ClientId = "12345";
  4. String DeviceName = "Your_Device_Name";
  5. String DeviceSecret = "Your_Device_Secret";
复制代码

在产品页面查看产品的功能标识符,填写在代码中对应位置。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图2

  1. //配置产品标识符
  2. String Identifier = "Your_Identifier";
复制代码


在设备管理页面,查看物模型Tpoic信息,填写在代码中对应位置。物模型Topic是阿里云平台自动生成的,服务端和设备端通过Topic来实现消息通信。


【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图15


  1. //需要发布和订阅的Topic
  2. const char * subTopic = "Your_sub_Topic";//****set
  3. const char * pubTopic = "Your_pub_Topic";//******post
复制代码

③上升步数配置
通过代码中设定上升步数,可以调整窗帘上升的最高点,大家可以自行调试确定合适的最高点参数,该行代码的位置如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图17

  1. #define LOCATION_UPPER_STOP     41300     //定义上升步数
复制代码

④红外传感器检测距离调整
项目所使用的红外传感器可以通过旋转传感器上的螺丝,调整传感器的检测距离,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图18

全部配置完成后,将代码上传至TinkerNode主控板。待代码上传完成后,就可以通过遥控器或者阿里云平台对窗帘控制器进行控制了。

云平台调试
待代码上传完成后,进入物联网窗帘设备页面,可以看到设备已经是在线状态,点击查看,进入该设备的管理页面,如下图所示。


【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图19

进入设备页面后,点击在线调试,选择调试真实设备 - > 属性调试调试功能选择我们设置的自定义功能“窗帘控制(Cutrain_Control)”,方法选择“设置”,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图20

接下来我们就可以在属性调试栏中,对设备进行远程控制了。修改该属性调试栏中的参数,即可对设备进行控制,从而代替遥控器的功能。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图21

代码中对应的操作参数可以参考下表,点击发送指令即可实现对应的控制功能。

控制操作 云平台自定义功能参数
暂停
0
上升
1
下降2
复位3

4.可视化页面制作

使用了一段时间之后,我发现每天在我凌乱的桌子上找遥控器是一件十分痛苦的事情,所以我决定为这个项目增加一个可视化控制页面。
点击主页,新建一个Web应用。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图24

名称填写“窗帘控制界面”,点击确认,进入可视化开发界面。
在右侧菜单栏选择组件,拖出四个按钮组件到画布上。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图25

在左侧的配置栏,将四个按钮的名字修改为暂停、上升、下降和复位,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图29

点击其中一个按钮,在左侧的配置栏选择交互,点击新增交互,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图26

事件选择“点击”,动作选择“设置设备属性”,如下图所示。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图27

点击配置设备,选择对应的产品、设备以及属性(自定义功能),根据按钮的控制功能,填写对应的自定义功能参数,例如下图,我们配置的是“暂停”按钮,设置值的位置就填写“0”。

【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图28

四个按钮全部配置完成后,点击右上角的发布就可以使用可视化页面,控制窗帘了。

Ps:如果想要其他人使用你的可视化控制页面,需要将项目的域名绑定到一个外部域名。具体的方法可以在阿里云平台上查看。
【NB-IoT 物联网开发板 TinkerNode】WiFi物联网窗帘图30

项目拓展


大家做完项目之后,可以尝试在项目的基础上做一些小拓展,比如可以尝试将代码中的“窗帘位置变量”上传到云平台,并且尝试在可视化页面中体现出来,这样就可以在云平台上实时的查看窗帘的高度了。



WiFi物联网窗帘外壳.zip

35.72 KB, 下载次数: 8799

NB_WiFiCurtain.ino

6.19 KB, 下载次数: 8748

DFRobot_IRremote.zip

387.62 KB, 下载次数: 8727

碧海  见习技师

发表于 2020-3-15 20:57:32

回帖奖励 +2 创造力

很好的例子,赞一个,不知道以后能不能有手机APP的用法
回复

使用道具 举报

rzyzzxw  版主

发表于 2020-3-14 17:35:54

回帖奖励 +2 创造力

哇哦,好厉害又实用的作品啊,学习了。
回复

使用道具 举报

Clay_Wang  学徒

发表于 2020-4-23 11:27:18

连线图已上传。
代码上传成功之后 tinkernode指示灯工作正常。
串口没有信息返回 但是阿里云显示设备在线 可以下发命令 也可以收到回复;
但是电机不工作 麻烦大佬帮忙看一下是不是电机这里连线有问题 还是电机驱动这里连线有问题 对照了连线图检查 也看了电机的设备图 自己修改了线的连接 麻烦看一下问题在哪 谢谢
202004236871..png
202004233516..png
202004239557..png
202004236130..png
回复

使用道具 举报

DFHk-0ykaN8  见习技师

发表于 2020-3-17 08:35:08

回帖奖励 +2 创造力

好厉害又实用的作品啊,学习了好厉害又实用的作品啊,学习了
回复

使用道具 举报

DFSH_Faith  NPC
 楼主|

发表于 2020-3-17 10:03:23

碧海 发表于 2020-3-15 12:57
很好的例子,赞一个,不知道以后能不能有手机APP的用法

如果是使用阿里云平台的话,后续应该是会推出APP的功能,和Web开发类似
回复

使用道具 举报

秋枫1  初级技师

发表于 2020-3-20 10:47:40

回帖奖励 +2 创造力

学习了,很好很好
回复

使用道具 举报

chenhanzhong  初级技匠

发表于 2020-3-24 09:47:38

回帖奖励 +2 创造力

很不错哦
回复

使用道具 举报

wangyirun  初级技匠

发表于 2020-4-1 11:43:55

回帖奖励 +2 创造力

为了懒一下也是拼了~
回复

使用道具 举报

DFr18f9QI4U  见习技师

发表于 2020-4-2 12:42:10

回帖奖励 +2 创造力

回复

使用道具 举报

从前有只小瑛瑛  见习技师

发表于 2020-4-2 12:53:00

回帖奖励 +2 创造力

厉害了~
回复

使用道具 举报

常州-杨华  初级技师

发表于 2020-4-5 17:56:26

回帖奖励 +2 创造力

物联网窗帘,创意思路可以直接借鉴到其他控制芯片,结构再优化就更好了
回复

使用道具 举报

zsqzsqzs  见习技师

发表于 2020-4-9 13:05:08

回帖奖励 +2 创造力

学习学习,谢谢
回复

使用道具 举报

Clay_Wang  学徒

发表于 2020-4-13 14:03:27

回帖奖励 +2 创造力

楼主可以给个联系方式吗 咨询个问题
回复

使用道具 举报

DFSH_Faith  NPC
 楼主|

发表于 2020-4-14 10:35:40

Clay_Wang 发表于 2020-4-13 06:03
楼主可以给个联系方式吗 咨询个问题

直接在帖子里面回复提问就好啦
回复

使用道具 举报

QAQ  初级技师

发表于 2020-4-16 16:26:30

回帖奖励 +2 创造力

nice 优秀
回复

使用道具 举报

1528  见习技师 来自手机

发表于 2020-4-19 12:56:22

回帖奖励 +2 创造力

DFSH_Faith 发表于 2020-3-13 18:41
hello,大家好。通过入门教程的学习,相信大家已经对阿里云的使用方法以及TinkerNode物联网开发板有了初步 ...

哇哦,好厉害又实用的作品啊,学习了。
回复

使用道具 举报

DFSH_Faith  NPC
 楼主|

发表于 2020-4-24 15:20:18

Clay_Wang 发表于 2020-4-23 03:27
连线图已上传。
代码上传成功之后 tinkernode指示灯工作正常。
串口没有信息返回 但是阿里云显示设备在线  ...

你修改了哪一部分的接线?
回复

使用道具 举报

DFHJM_IpFmV  中级技师

发表于 2020-4-26 12:35:39

回帖奖励 +2 创造力

这也是生活中的“助手”呢
回复

使用道具 举报

Clay_Wang  学徒

发表于 2020-5-11 03:03:25

DFSH_Faith 发表于 2020-4-24 15:20
你修改了哪一部分的接线?

作者您好 能给我一下您的联系方式吗 有特别着急的问题请教
回复

使用道具 举报

Clay_Wang  学徒

发表于 2020-5-11 03:41:13

DFSH_Faith 发表于 2020-4-24 15:20
你修改了哪一部分的接线?

12号要演示了 拜托作者给个微信啥的联系方式 帮我解决一下问题吧  救救孩子
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail