概述
由于阿里云悬殊的男女比例,以及厕所占地面积的限制,各位男同胞每天都要在特殊味道的包围下等待有限的坑位。我们在想能不能利用物联网技术做一个低成本的解决方案,让男同胞们不需要亲自去现场的情况下也能得知坑位的空余情况(像停车场一样),基于我们IoT事业部的一站式开发平台——Link Develop,做一个IoT的智能厕所。
技术架构
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/bdaa6dcbbda62b1bc227a5c975c16620.jpeg)
前期准备
硬件
NodeMCU x9,PIR传感器 x9,1800mAh LiPo电池 x9,防水盒子 x9,usb mini 连接线 x1
软件
Arduino IDE
平台
阿里云账号,Link Develop平台权限开通
具体实施
建立设备模型
设备模型可以理解为一个类,或者一个模板。它规定了某种设备下的共有属性,并且允许你批量实例化设备。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/6f7b34ac7bfce4778ec7e78be3e04933.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/12dad03eb064012f06f6557cb12f6ad8.jpeg)
进入Link Develop平台,跟其他云产品一样,需要先完成基本的入驻信息填写。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/85f1acde83a02c835516fd5c56bea525.png)
接下来我们会进入到一个项目空页面,我们需要在页面顶部点击“新建设备模型”。打开设备模型弹窗,输入名称以及定义类别,这里我们选择“自定义类型”即可。然后进入到设备模型的详情页之后,添加标准功能——输入红外——选择红外检测状态。我们就完成了一个可以上报红外检测数据的设备模型了。这个模型已经满足我们的需求。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b752488db130ca54ef57a925ed077e71.png)
然后我们需要实例化我们的厕所监控设备,在设备模型详情页里点击“测试设备”tab。然后依次创建9个不同设备名称(deviceName)的测试设备。每个设备建立完成后都有一个ProductKey,DeviceName和DeviceSecret,我们简称为“三元组”,接下来我们还会用到这个。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/69b2e8c8cb2866a606dea8ab825afb3f.png)
做完这些步骤之后,设备模型的建立与实例化就OK了。接下来我们进入Arduino代码编写。
硬件开发
PIR只有三个口,分别是VCC,GND和输出口。接线方法如下(NodeMCU的D7相当于arduino里的Pin 13)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2e358f8daffbe1a46f0671b99736926f.jpeg)
然后接上usb线。打开arduino IDE。复制以下代码:
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/915275d2a6ebe0403d12a837c97e3f94.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/ee5847691146fcbdf39fd9140f1fbcb3.jpeg)
这里有几段代码需要解释一下:
引用库
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/ffc8b1dee55e758d1fadd946a18e160a.png)
如果之前没有使用过arduino,这些库不是arduino自带的,需要去import一下。以ArduinoJson为例,具体操作方法见下图:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b2484a9053bb572202592f2132827a85.jpeg)
修改WiFi
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/e66af80b55b598bfd8d1731948843228.png)
这里要输入你家的wifi SSID(即wifi名称)和密码。如下图红框内wifi,SSID即“TOM”(注意大小写),密码是“123456”
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/36ceacd54111a317468da54b820eff33.jpeg)
修改三元组
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/feecd0a5af0e9fa761f2559041b9a74f.png)
这里就是之前说的三元组,把不同设备的对应三元组填入即可。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/c911065c252bbc894d8864900f016060.jpeg)
修改HashMAC密钥
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/39a958de38645010c8f25eacf4e2e785.jpeg)
Link Develop平台为了保证安全性,设备上传数据的时候需要验证身份。因此需要为每个设备配置不同的Hmac值。方法是先组合一段字段:
"clientIdtestdeviceName"+设备名称+"productKey"+设备模型标识+“timestamp123456789”
例如刚才截图的三元组,字段是
clientIdtestdeviceNamehuman01productKeya1rezUVs103timestamp123456789
写完这个字段之后,前往这里进行加密。选择HmacSHA1方法,以上面的字段为明文,deviceSecret为密钥。见下图:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/459eb59359685ceeda54dcac9bf290ec.png)
可以得到如下的密文:
e30657f36e7ded9a2781bba97b0dee79e8fa31b6
然后替换掉MQTT_PASSWD原来的字段即可。
完成代码编译之后,选择好对应的开发板和烧录线即可进行上传。通电之后可以查看串口以及Link Develop上的测试设备列表看看有否成功上线。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/f3b5f112e1377bf1032903a1f2a9bcc8.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/57dfea59940611ffb33aaf16bab1bc55.jpeg)
应用开发
点击左侧栏的Web应用开发,选择“可视化应用”并输入名称。然后就进入可视化开发Web应用的工作台了。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/156389c0c947f684e69eb11d9a6a0e1c.png)
然后我们需要文字组件用来表示标题等。需要指示灯用来表示当前坑位有没有人的状态。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/555fc07da31f242f6b96dfaf3d7aba83.png)
接下来以坑位1为例举例如何将组件绑定设备。点击右侧面板的“数据”,选择关联设备。这里会显示出所有已经创建的测试设备。选择对应坑位的传感器,之后选择展示的数据(布尔型的红外监测状态)。这样就完成了绑定数据了。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/db447295b36845c5741b5050681caab3.png)
可以通过模拟上线看看是否成功关联。另外有一些个性化的样式也可以自己配置。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2d103dae29a302d2c487f9f32220df8c.png)
接下来就是发挥创造力的时候了。可以上传各种背景图,加各种小样式,做成如图的看板。最后点击右上角预览即可。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b013a769c650414355e29415accd79df.jpeg)
这样就完成了一个看板了!不用忍气吞声,直接查看厕所有没有空余坑位!
钉钉推送的教程后续会跟进同步~
部署
这是实体装机的盒子。为了更好的用户体验,我们在盒子上加了一个字条“只检测有人,没有摄像头”,以免用户产生隐私方面的担忧。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/bf6b2046726794aad125a46465e35f8a.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/0a0eb51e4fe72a35b23088e1ab3cc3af.jpeg)
部署的时候用了树莓派+显示屏。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/3f1038098d46cd7bf11df51fcc65c4e8.jpeg)
造福90%飞天园区一号楼四楼员工的智能厕所解决方案,完成!
欢迎使用Link Develop
Link Develop(物联网开发平台)是阿里云针对物联网领域提供的端到端一站式开发服务平台,可覆盖各个物联网行业应用场景,主要解决物联网开发领域开发链路长、技术栈复杂、协同成本高、方案移植困难的问题,提供了从硬件开发、服务编排、Web应用开发到移动APP开发全链路的开发流程、框架/引擎和调试工具,并可将成熟的开发产出物对接阿里云云市场进行售卖,为开发者实现商业收益。
这篇文章的两个作者,一位是学法律出身的运营同学,一位是学设计出身的UED同学,两位都不是专业的工程师,却能在短短一天之内基于Link Develop完成整个智能厕所的解决方案搭建。相信大家认识到了Link Develop平台的开发能力之后,会有更多更新奇的idea出现,并且借助Link Develop快速实现物联网应用开发!
欢迎访问:
end
更多精彩