开源IOT——一个最小的物联网系统设计方案及源码

物联网 同时被 3 个专栏收录
19 篇文章 0 订阅
52 篇文章 0 订阅

或许这个可以当成是你的毕业设计又或者你可以用它来控制你想控制的东西,总之你可以用它来做一个最小的物联网系统。

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


关于

源码: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没有让我学好,但是让我能做想做的事。

相关文章

  1. 一个最小的物联网系统设计方案及源码
  2. 最小物联网系统(一)——系统组成
  3. 最小物联网系统(二)——RESTful
  4. 最小物联网系统(三)——创建RESTful
  5. 最小物联网系统(四)——详解Laravel的RESTful
  6. 最小物联网系统(五)——Laravel RESTful模板化
  7. 最小物联网系统(六)——Ajax打造可视化
  8. 最小物联网系统(七)——与服务器通讯
  9. 最小物联网系统(八)——与单片机通讯
  10. 最小物联网系统(九)——Android客户端

相关知识

搞硬件的同学需要重点了解的知识

  • 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 

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

关于物联网

物联网(Internet of Things,缩写IOT)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。
物联网一般为无线网,由于每个人周围的设备可以达到一千至五千个,所以物联网可能要包含500万亿至一千万亿个物体,在物联网上,每个人都可以应用电子标签将真实的物体上网联结,在物联网上都可以查找出它们的具体位置。通过物联网可以用中心计算机对机器、设备、人员进行集中管理、控制,也可以对家庭设备、汽车进行遥控,以及搜寻位置、防止物品被盗等各种应用。
简单的来说

Internet是一个由计算机组成的网络,那么物联网就是一个由物体(Things)组成的网络,只不过其依赖于Internet,是Internet的一部分。

最小物联网系统

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

所以我们也稍微了解一下RESTful吧。

RESTful

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

我们的世界是由资源来组成的,一个物体也就相当于是一个资源,以这种方式来构建我们的物联网系统,在目前来说是再好不过的一个方案了。
REST架构就是希望能够统一这一类的Hypermedia Controls, 赋予他们标准的, 高度可扩展的标准语义及表现形式, 使得甚至无人工干预的机器与机器间的通用交互协议边的可能.
这个也就是我们的目的了,物联网最后的核心就是使物体与物体之间的交互成为可能。
那么,这里也就解释了为什么我们要用RESTful来做这个最小系统的原因了。

最小系统中的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。


讨论空间

QQ群:348100589

BBS: http://bbs.phodal.com

相关推荐
文档 一步步搭建物联网系统 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框架dashingdashboard 简要初始化代码说明 代码中因为有两个子模块,即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 最小物联网系统(四)——详解LaravelRESTful 最小物联网系统(五)——Laravel RESTful模板化 最小物联网系统(六)——Ajax打造可视化 最小物联网系统(七)——与服务器通讯 最小物联网系统(八)——与单片机通讯 最小物联网系统(九)——Android客户端 最小物联网系统设计——给Laravel添加测试 最小物联网系统——Dashboard License © 2014 Phodal Huang. This code is distributed under the MIT license. 标签:物联网
<p style="font-size:14px;"> <span style="font-size:small;">随着国内IT事业兴起,越来越多小伙伴也投身到了开发这个相对高薪行业来。很多同学进入方式都是零基础通过培训或者看视频自学,在工作一两年后,发现由于自己基础太薄弱,想进一步提高自己能力变得非常 困难。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">现在市面上视频教程,主要有一下两类:第一类是纯理论,比如框架、算法、虚拟机等;另一类是Demo级别项目,如各大培训机构项目课程。从业这么多年,学习了大量视频教程,也跟很多毕业三年左右程序员做过交流,但一直没发现一套特别好教程,能让小伙伴们从零基础一直到高级进阶,持续得到学习。在工作中,他们也反馈,视频教程各种高大上技术堆砌,而在实际开发中呢,大部分技术都没有用到,就算是用,也完全不是像教程中那么用。在面试中,你跟夸夸其谈十分钟,面试官一句,请问你在项目中是怎么用这个技术,在使用时候有什么问题?遇到这样问题,大部分同学们都直接熄火,完全不知所措,为啥呢,因为他在项目中根本没有用过这个技术,只是看了文档、视频,只是跟着教程做了Demo。而技术跟业务如何结合,这应该是大部分同学在工作中最薄弱环节。甚至,有些同学会唯技术论,面对公司业务,会去抱怨公司用技术不新,认为业务不重要。但我要纠正是,技术出现本来就是为业务服务,离开业务谈技术那就是耍流氓。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">早在两年前,我就萌生了这样想法,既然国内环境造成了面试修地球,上班拧螺丝情况,那么我能不能结合我自己做真实项目,脱敏后给大家分享出来,让各位同学能有一个真实项目环境去边学边提高,所以,也就有了《从0开始用Java做"智慧农业物联网"》课程诞生。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">学习本课程基本要求:有Java基础,学习过Spring,SpringMVC,Mybatis框架,做过简单项目以上同学均可学习。但并不代表,本课程就是个入门教程,对于有开发经验同学们,物联网这个行业是个朝阳产业,也可以说是未来十年发展蓝海。那我相信,有实体经济支撑行业绝不会像互联网行业有那样大泡沫,也绝不会让你工作没有安全感。对于有志于从事物联网相关工作同学,对于想从各方面提升自己各位同学们来说,本课程也非常适合你们去学习。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">我从12年就开始接触物联网项目,做过智慧猪场、智慧农场、猪联网、云医疗等相关项目,也做过互联网行业,兜兜转转一圈下来,自认为还是积累了很多经验和教训,那我都会在我课程中对这样知识有所分享。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">同时,在这个课程中,我既是产品,又是设计,还是开发,还是运维,也是客户,我会从一个项目全生命周期给大家进行介绍,并且都有相关落地方案。这样,同学们眼光就会有所延展,不会仅仅局限在开发这一亩三分地上。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">本课程亮点:我只能说,亮点很多,很多。。。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">核心如下:产品经理眼中产品、数据库设计、如何把一个需求变成代码、如何跟物联网设备交互、如何上线一个项目、在需求变更后如何做到不跟产品撕逼。。。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">看到了吧,我不会只让你知道那些高大上技术点,我向你们学会是如何做一个完美产品!</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">在这个课程中,你会看到太多太多跟其他教程不同地方,你看到不是Demo级别案例,你看到绝对是一个工业级别实现方案。我也希望通过这个课程,同学们能进一步升华自己视界,你所站高度,你看问题不同角度,将决定未来你成长上限。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">对于本课程成长忠告:本课程录制会持续很长时间,是,你没看错,是很长时间,目前我预期,起码是在年底之前不会结束,为什么要这样安排,因为我想要分享内容实在太多,我也不想对课程进行拆分,也不想草草结束,所以,你所能得到收获一定会足够大,他没有终点。。。</span> </p> <p style="font-size:14px;"> <span style="font-size:small;">最终达到效果:在业务中学技术点,通过技术点让业务变得更优美!</span> </p>
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值