这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 【原创】[1.07更新云端交互]一次有遗憾的物联网DIY小样(“微信和传感器的激

共16条 1/2 1 2 跳转至

【原创】[1.07更新云端交互]一次有遗憾的物联网DIY小样(“微信和传感器的激情故事)

高工
2014-08-08 16:34:44     打赏

前段时间在论坛上积分兑换了一个Arduino UNO和Ethernet叠加件

拿到手上耍了几天,还觉得不过瘾,正好手上有块ATMEL的B1-Xplained评估板

集成了不少传感器

就想着物联网不是很流行嘛

动手组装一个环境

给个文艺点的名字叫:“微信和传感器的鸡情故事"

来完成一个物联网的原型(只是撸主自己理解的物联网,也不知道是不是正确)

一路下来,累得够呛

撸主这人就是有点偏执,总是想办法要完成预定功能

所以这次捯饬爆发出了很多奇葩的思路

最终基本上完成了这个原型,但是也留下了许多遗憾

譬如远程控制,还达不到彻底通畅

这里只是贴出这次经历和想法

如果对有兴趣的筒子能够提供一些灵感,那自然是极好

目前这个主题主要是想分为三个模块:硬件篇、网络篇和编程篇

看情况进行调整吧


先说说为什么把这个贴子发到综合技术板块

撸主一路折腾下来,发现结合真实世界的需求

真正要做完一个物联网原型,其实涉及的领域会比较广泛

粗略一想,需要C、PHP、GET、POST、数据通信网、MySQL、webserver等等方面的常识

还是撸到这个版块吧


先放出些看得到摸得着的东西

传感器Yeelink数据界面:http://www.yeelink.net/devices/13082【失效】

Arduino数据界面:http://liaojingjing.3322.org:12580 【失效】(谁叫移不动每月收我们流量钱,还不给累积到下月,大家把流量戳回来)

微信:扫描关注,或者 搜索公众号   IoT实验室 【有效】。

 

基本上设备都会挂在公网上,但是不排除服务器宕机(比如昨晚至今早,yeelink估计在升级)

可能偶尔会设备断电,大部分时间应该都在。



参加了坛子里其他活动,更新可能会比较慢,但是一定会有个结果

就不占坑了,欢迎各位强力插入


序号 内容 传送门
1 制作综述
http://forum.eepw.com.cn/thread/259380/1#8
2 硬件篇 http://forum.eepw.com.cn/thread/259380/1#10
3 网络篇(一)数据的发布 http://forum.eepw.com.cn/thread/259380/3#21
4 网络篇(二)2个服务器
http://forum.eepw.com.cn/thread/259380/3#29
5       和云端的交互                       http://forum.eepw.com.cn/thread/259380/4#34


高工
2014-08-08 16:36:31     打赏
2楼
沙发自留

高工
2014-08-09 19:46:00     打赏
3楼

老王赶紧的

让积分、射精、上首页啥的来得更猛烈些吧


高工
2014-08-09 20:01:32     打赏
4楼

综述篇


最近物联网火得一逼

似乎什么小东西小制作小项目

只要扯上物联网,瞬间高大上

撸主按捺不住了

到底啥是物联网

光听人忽悠怎么能行

自己动手做一个



先上一个目前实现了的整体信号链拓扑:


这个拓扑结构基本上标清了撸主这个物联网小样的数据流向


绿色一组箭头表示B1-Xplained、Arduino UNO和Ethernet Shield所组成的数据采集终端(本帖以后简称采集终端)与安装有微信的用户终端进行数据交互的流程

通过Arduino建立本地web服务器,并通过3322.org动态域名,将B1-Xplained数据以网页形式发布到互联网
国内服务商互联互通做得真的很差劲,建议使用Yaler(无意广告,表打脸)
Sina SAE上调用PHP脚本,对Arduino发布的网页内容进行抓取
通过正则表达式匹配出其中传感器的数据,并保存
Tencent公众平台访问SAE,并获取这些数据,返回给终端设备并进行交互。


黄色一组箭头则是表示采集终端与用户终端通过Yeelink的数据交互流程

通过Arduino建立本地web服务器,并将B1板采集到的数据发送至Yeelink,同时yeelink对数据进行统计作图

并以网页的形式发布到互联网

用户终端则可以采用网页或移动智能终端APP的形式,通过yeelink与采集终端进行数据通信。


这次制作的小样,这两种数据管道同时使用

撸个视频,有动作有真相


视频地址:http://player.youku.com/player.php/sid/XNzUzMzk2NjQw/v.swf


高工
2014-08-11 12:19:13     打赏
5楼

看样子大家伙都不是很关注这个啊

求喷


高工
2014-08-12 22:23:48     打赏
6楼

硬件篇

今天来聊聊硬件

其实这个小样涉及的硬件实在是没啥好说道的

做个简单的介绍吧


目前的硬件主要分为两块:数据采集板和web服务器板

先说数据采集板

就是这货:



上传感器部分原理图


原理图上其实可以看出来

说是传感器,其实并不是

主要是利用ATMEL单片机AD外设,来获取温敏电阻(温度)、光敏三极管(光线)和可调电阻(电压),分压的AD值

再通过查表,显示对应的物理值

譬如NTC温敏电阻


再来看web服务器板

其实就是一块Arduino Uno R3和W5100叠加模块


先看Arduino Uno R3:

很便宜,40块的样子吧


W5100模块:

W5100值得说道说道

这货硬件集成TCP/IP协议栈

换句话说,使用它接入网络,可以不用了解TCP/IP的内容

只需要调用官方库函数即可

还记得大名鼎鼎的ENC28J60吗

想跑起它,还得让MCU开销协议栈

而W5100直接可以看做外部RAM

初始化、配置寄存器

立马就能使用

遗憾是自己不带MAC,要手动设定(真不知道能不能打上入网许可证)


看张合体



ok,数据采集终端的板子就是这么些了


他们是如何工作的呢?

先上个板卡级合体图:

熟悉Arduino Uno的筒子,应该一眼就能看出通信方式

没错,就是UART

考虑到B1-Xplained的采集速度灰常快,ms级

而Arduino Uno响应和发出互联网请求都是5s级

所以

通信协议设计得灰常简单,没加过多的考虑,连简单的校验都没有做

B1-Xplained完成一次数据采集,就发送7个字节的数据

第一个字节为字母S

接下来5个字节分别是 光照数据(2字节)、温度数据(1字节)、电压数据(2字节)

最后一个字节以字母E作为结尾

不断的循环发送

而Arduino在响应和发送互联网请求的间歇期

才会判读第一个字节是否为字母S,根据判读结果

决定存储还是丢弃接下来的5个字节

最后再把数据发布出去


这里值得注意的是

Arduino会在cleint和server之间进行切换

切换成cleint是为了和Yeelink进行数据交互:http://www.yeelink.net/devices/13082

而切换成server是为了在本地创建一个网页:http://liaojingjing.3322.org:12580



高工
2014-08-13 22:31:05     打赏
7楼
是不是赶脚被忽悠了?

高工
2014-08-13 22:55:37     打赏
8楼
必须滴

高工
2014-08-16 23:18:48     打赏
9楼

网络篇(一)如何发布数据到互联网

前面介绍了采集终端的硬件组成

其实原意耐心把这个帖子看完的筒子

应该对于硬件篇介绍的底层硬件可以信手拈来

所谓物联网,就是把万物接入互联网(局域网?)

各种传感器也不例外

传感器硬件拼接好了

接下来就是如何将传感器的数据发布到互联网上去



撸主最早的想法很傻很天真

是这样的:

用Uno建立一个本地轻型web服务器,不就能发不了么?

事实上没那么简单

大家应该都知道web访问端口一般是80或者8080

目前,国内互联网是不允许个人用户通过80端口发布web信息的

除非向xx组织申请端口开发,并备案

当然,你可以通过路由器的端口映射或者UNO的编程,改变服务器的端口

但是考虑到UNO这个玩具的处理能力,经受得住互联网浪潮的冲击么?

最终放弃这个方案



后来方案发生了微小的变化:

不错,借用网络服务提供商3322,来将自己的web数据发布到互联网

本来想着这个办法应该不错了吧

却发生了更奇葩的事件

外网能够访问UNO了

但是Sina SAE和3322之间似乎又不太和谐

在Sina SAE上运行PHP脚本

跳出来网页直接提示 502 Bad Gateway

个人理解,应该是3322和Sina SAE之间互联互通有问题(有没有更坑的?)

但是要通过微信访问硬件,必须使用Sina SAE呀



冥思苦想了一个小时,方案再次发生变更:

这个是最终定型的数据流拓扑(大神们就不要吐槽了,DIY屁民一个,没那么多资源)

数据采集终端将数据通过Yeelink进行发布

Yeelink以网页形式发布

Sina SAE的PHP脚本获取网页内容

并与疼讯微信公众平台交互

其实Sina SAE可以通过POST和GET与Yeelink交互数据

这里撸主还是采用获取网页信息的形式

不要问为什么,哥只是为了好玩


再来聊聊这几个货:

这部分基本上和底层硬件没啥联系了

完完全全的高级语言,高级的无处安放(为毛这么吐槽?后面的编程篇会有解释

疼讯微信公众平台会有一个开发者模式

可以发布或者接受关注用户的信息

微信公众平台开发者模式本身无法运行定制的代码,只是提供了一些API接口供开发者们使用

而Sina SAE则是一个云开发环境,支持Python、PHP、.NET等等一些常见的高级语言或架构

甚至可以在上面建立数据库,是为数不多、功能比较齐全的免费云开发平台

但是提供的代码空间、数据库空间必然是小小

虽然使用要消耗云豆,但是注册实名就送,也够用了


看上去我还能用56年啊,O(∩_∩)O~。


不知道大家伙对Sina SAE和疼讯公众平台开发者模式有没有过了解

如果需要的话,再发帖写写这两个服务器的使用方法

上一个Sina SAE抓取的网页:


左下角就是从这个网页获取的传感器数据

并打印在网页上了


今天就先到这儿吧……


高工
2014-08-16 23:46:20     打赏
10楼

帅得影响网速啊

跪了......


共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]