最小物联网系统

xiaozhu12371237 2016-06-23 07:16:14
加精

最小物联网系统

因为是最小,BareMinimum,这也是为什么我没有改Arduino上面的工程名的原因,因为它是最小的,(PS:大家都懂的,如果玩硬件)。物联网,这个东西一直很复杂,也不是很复杂,只是从硬件到软件涉及到的东西过多了,不止一点点。当然写在本文的方案也有很多,不止这一个,只是这个算是基本的最小的,仅此而已。

我们要做的最小物联网系统其实也就相当于是一个平台。我们可以上传我们各种物体的信息,同时给予这些物体一些属性,我们也可以通过网络来控制这些物体,而他们之间也可以相互控制。因此,我们需要给他们提供一个网络,这就是RESTful的由来。所以我们也稍微了解一下RESTful吧。这也是所谓的基础。

RESTful

REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。

我们的世界是由资源来组成的,一个物体也就相当于是一个资源,以这种方式来构建我们的物联网系统,在目前来说是再好不过的一个方案了。

REST架构就是希望能够统一这一类的Hypermedia Controls, 赋予他们标准的, 高度可扩展的标准语义及表现形式, 使得甚至无人工干预的机器与机器间的通用交互协议边的可能。

这个也就是我们的目的了,物联网最后的核心就是使物体与物体之间的交互成为可能。

那么,这里也就解释了为什么我们要用RESTful来做这个最小系统的原因了。(ps:这个和单片机的最小系统可不一样)

最小系统中的RESTful
例如,一个简单的例子,列举所有物体状态:

GET http://localhost/athome

呈现某一特定状态,

GET http://localhost/athome/1/

剩下的部分这里就不多说了,多说无益,可以自己谷歌去。接着我们要讨论的就是系统框架:


什么是Raspberry PI.
Raspberry Pi在这里只是充当了数据的发送和接收,虽然我们可以直接将Raspberry PI作为控制的对象,但是将这个从中剥离来讲清楚系统的结构会更加简单。从而,可以让我们把核心注意力聚焦在要解决的问题上,也就是数据传送,每个部分都可以简单地从系统剥离出来,用另外的事物来替换。

为什么是Arduino.
这个问题的答案和上面是一样的,只是因为有些搞物联网是从软件过来的,对于他们来说去理解端口的难道可能有点大。所以,我们在简化系统设计的同时,也把系统的代码简化了。因为Arduino足够的简单,我们可以关心问题的本质,而不是如何去编程。

为什么是Ajax.
至于什么是Ajax,AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。
这里的目的只是在于演示如何运用这些数据,使它具有他应有的价值,而不在于技术本身。当然ajax不是必需的,如果你需要的只是用来控制这个灯。

为什么是Laravel.
只是因为个人喜爱,你也可以用Ruby On Rails来搭建这样一个功能,或者是Java。只不过PHP在我的服务器上运行得挺不错的,而且我又不需要重新去写配置那些配置。

同时Laravel可以简单的开发我们所需要的功能,换句话说他是PHP世界的Ruby On Rails。

关于项目

源码:https://github.com/gmszone/iot

首页:http://iot.phodal.com/

文档可能没有足够的详细,因为剩下的部分都可以Google到,这里就不写详细了。

框架:
•PHP Laravel
•jQuery (Javascript 主要用于Ajax)
•jQuery Mobile(可选)(我觉得我有点懒,于是从原来做的项目直接拿了出来)
•Bootstrap (可选) (其实没有多大实际用处,只是因为好看和jQuery Mobile一样)

语言:

•Processing/C/C++:Arduino用
•Python,如果你有Raspberry Pi或者与之相近的都可以,只要可以与Arduino串口通信
•PHP:我学得不是很好,因为Laravel没有让我学好,但是让我能做想做的事。

相关知识

搞硬件的同学需要重点了解的知识.
•RESTful
•Ajax
•JSON

搞软件的同学需要重要了解的知识.
•串口通信
•高低电平

关于服务器
•Nginx 需要配置,具体配置可以参照github上面的代码
•LNMP 直接用上面的会比较简单,但是可能也会遇到一些问题。
•Phpmyadmin 最好需要有这个,如果不是很精通MYSQL

注意

如何开始

git clone https://github.com/gmszone/iot.git
cp iot/rest PATH_OF_HTDOCS/

创建一个新的数据库,如iot,编辑 app/config/database.php
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'iot',
'username' => 'root',
'password' => ' ',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

配置Nginx,添加,详细可参考Nginx下面的配置
# include /etc/nginx/includes/enforce_non_www;
if ($host ~* ^www\.(.*))
{
set $host_without_www $1;
rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}
# Check if file exists
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}

测试
sudo python python/get.py

再根据需要修改端口,视真实的端口而修改。


...全文
4736 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinerise 2016-07-19
  • 打赏
  • 举报
回复
首先,你这个理念真的不错,解决通信双方对语义的理解便利性。 其次,物联网的终端特征,通常低数据量,低功耗。基于HTTP的通信,使的数据量和交互的运算复杂度都提高了,这就加重了对终端计算能力的要求,进而提高了系统的耗电需求。这好像是个矛盾,确实没有好的解决办法。我的想法其实是,让物联网的802.15的数据,能直接进802.11,在IPV6上,直接做socket层的通信。不涉及通信的标准和规约,来降低系统的功耗。感觉这是一个合适的路线。
moyijue 2016-07-15
  • 打赏
  • 举报
回复
很好,很强大
ELEMENT_BOY 2016-07-15
  • 打赏
  • 举报
回复
混个积分不容易。。。。
qq_35476767 2016-07-15
  • 打赏
  • 举报
回复
学习学习一下,呵呵
baidu_33738998 2016-07-15
  • 打赏
  • 举报
回复
感谢分享!!!谢谢
line_us 2016-07-15
  • 打赏
  • 举报
回复
可以上传我们各种物体的信息
qq_25553677 2016-07-15
  • 打赏
  • 举报
回复
nice 受用了!
qq_19687877 2016-07-15
  • 打赏
  • 举报
回复
666666666666666666666666666666666666666666666666666666666666666
qq_28162421 2016-07-15
  • 打赏
  • 举报
回复
学习了,受益匪浅
浮尘如空 2016-07-15
  • 打赏
  • 举报
回复
学习了,谢谢
qq_24537347 2016-07-15
  • 打赏
  • 举报
回复
混个积分不容易。。。。
DELLYONE 2016-07-15
  • 打赏
  • 举报
回复
混个积分不容易。。。。
yilonglucky 2016-07-14
  • 打赏
  • 举报
回复
树莓派不就是hardwar么?建议用peripheral。而且外围器件你还可以加好多,通讯方式也不局限于串口,BT,WiFi都可以考虑啊。目前这个demo已经完全完成了吗?
文档 一步步搭建物联网系统 HTTP vs CoAP 现有的这个版本是HTTP版,目前的CoAP版正在开发中,欢迎加入。 https://github.com/phodal/iot-coap Minimum Internet of Things A Minimum IOT with arduino and raspberry pi. 一个最小物联网系统设计方案及源码 android/ 一个最小的Android程序实例 rest/ PHP Laravel Framework to create RESTful API python/ 简单的pyhon示例 hardware/ 硬件串口通信收集 -/ arduino Arduino板 doc/ 文档 简介ppt nginx配置 系统框架图 dashboard/ 基于ruby框架dashing的dashboard 简要的初始化代码说明 代码中因为有两个子模块,即Android与REST,Android是一个简单的Android程序示例,REST作为子模块的原因是考虑到后期会用更简单的源码来替换。但是laravel作为一个运行环境,还是很理想的。 先clone git clone git@github.com:phodal/iot.git iot or git clone https://github.com/phodal/iot.git iot 子模块 git submodule init git submodule update 系统框架图 测试 1.将arduino/BareMinimum.ino 烧录到开发板上 2.执行get.py (ps:如果用的是Windows系统 需要将get.py中的 /dev/ttyACM0 改为 COM*.) sudo python python/get.py 3.打开 http://localhost/athome/create 创建一个数据。打开 http://localhost/athome/1/edit 编辑状态 4.测试网址: b.phodal.com 如何在Android手机上测试 1.下载安装 Stay at Home 交流 QQ群:348100589 中文文档 一个最小物联网系统设计方案及源码 最小物联网系统(一)——系统组成 最小物联网系统(二)——RESTful 最小物联网系统(三)——创建RESTful 最小物联网系统(四)——详解Laravel的RESTful 最小物联网系统(五)——Laravel RESTful模板化 最小物联网系统(六)——Ajax打造可视化 最小物联网系统(七)——与服务器通讯 最小物联网系统(八)——与单片机通讯 最小物联网系统(九)——Android客户端 最小物联网系统设计——给Laravel添加测试 最小物联网系统——Dashboard License © 2014 Phodal Huang. This code is distributed under the MIT license. 标签:物联网

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧