`
252190908
  • 浏览: 245492 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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


关于

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

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

框架:

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

语言:

Processing/C/C++ Arduino用

Python 如果你有Raspberry Pi或者与之相近的都可以,只要可以与Arduino串口通信

PHP 我学得不是很好,因为Laravel没有让我学好,但是让我能做想做的事。

相关文章及专栏

  1. Laravel RESTful快速部署指南(一)
  2. Laravel RESTful快速部署指南(二)
  3. Laravel RESTful快速部署指南(三)
  4. 一个最小的物联网系统设计方案及源码
  5. 最小物联网系统(一)——系统组成
  6. 最小物联网系统(二)——RESTful

专栏

Laravel

相关知识

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

  • RESTful
  • Ajax
  • JSON

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

  • 串口通信
  • 高低电平

关于服务器

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

补充说明

Arduino不是必需的,只要你懂得如何用你的芯片进行串口通信。

考虑到Raspberry PI的成本可能会有点高,你可以试着用OpenWRT Linux,主要用在路由器用的,上面可以跑Python。或者等等过些时候的小米路由器,可以加这个在上面。

如果你没有服务器没有Raspberry PI,那就找个路由器来当服务器吧,相关文章如下

Openwrt python,openwrt上使用Python
对了,如果你觉得哪里有问题记得在GITHUB上提出来,而不是在原文。

注意

!请尽可能少我的用我的网站做测试


设计方案

系统框架图


如何开始

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。

分享到:
评论

相关推荐

    开源IOT最小物联网系统.zip

    一个最小的物联网系统设计方案及源码 android/ 一个最小的Android程序实例 rest/ PHP Laravel Framework to create RESTful API python/ 简单的pyhon示例 hardware/ 硬件串口通信收集 -/ arduino Arduino板 doc/ ...

    基于Arduino的硬件监视器_智能家居物联网开发PCB设计方案.rar

    标题中的“基于Arduino的硬件监视器_智能家居物联网开发PCB设计方案”揭示了这个项目的核心——设计一个使用Arduino作为核心处理器的硬件监控系统,该系统专为智能家居物联网(IoT)应用而构建。Arduino是一种开源电子...

    基于RT-Thread的CAN数据采集终端_智能家居物联网开发PCB设计方案.rar

    本方案聚焦于一个关键组件——基于RT-Thread操作系统的CAN数据采集终端,它在物联网设备间的数据传输与交互中扮演着重要角色。RT-Thread是一个开源、实时操作系统,以其轻量级、高可靠性和可扩展性,成为嵌入式系统...

    模拟手臂的外骨骼设计_智能家居物联网开发PCB设计方案.rar

    标题中的“模拟手臂的外骨骼设计”涉及到的是机器人技术领域中的一个重要分支——外骨骼机器人,这种设备通常用于增强人类身体的能力或辅助康复治疗。外骨骼机器人通过传感器和执行器模仿人体关节的动作,允许穿戴者...

    基于ECharts物联网大数据统计平台可视化大屏源码.rar

    本资源——"基于ECharts物联网大数据统计平台可视化大屏源码",正是这样一个能够帮助开发者实现数据可视化的强大工具。本文将详细解析这一源码的核心技术和应用要点。 首先,ECharts是百度推出的一款开源的...

    IoTClient 物联网设备通讯协议实现客户端 v0.4.0.zip

    在现代信息技术领域,物联网(Internet of Things, IoT)已经成为一个至关重要的部分,它连接着各种物理设备,实现了数据的实时传输和智能处理。在这个背景下,IoTClient作为一款物联网设备通讯协议的实现客户端,...

    安卓Android源码——基于MQTT的安卓消息推送php服务端源码+安卓端源码.zip

    这份资源包含的是一个基于MQTT协议的安卓(Android)消息推送系统,其中涵盖了PHP服务端源码和安卓客户端源码。MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息传输协议,常用于物联网(IoT...

    基于stm32+FreeRTOS+ESP8266的实时天气系统源码+项目说明.zip

    FreeRTOS是一个开源的实时操作系统,专为嵌入式系统设计,具有高度可定制性。在实时天气系统中,FreeRTOS负责管理STM32的多任务调度,确保系统能够高效、稳定地运行。通过将不同的功能模块化为独立的任务,FreeRTOS...

    Apollo服务器及MQTT功能实现源码

    在大型分布式系统中,由于服务数量众多,配置的管理和更新成为了一个挑战,Apollo提供了一种解决方案。而MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,常用于物联网(IoT)领域,以低开销、...

    microPython 小爱同学(1)_python小爱_micropython_esp8266_源码.zip

    本项目通过MicroPython和ESP8266展示了如何利用开源硬件和编程语言实现一个简单的智能家居语音助手。通过学习和实践,你可以了解到MicroPython在物联网项目中的应用,以及如何与云服务集成,实现智能设备的远程控制...

    arduino+android制作的智能家居系统(含源码、文档)

    本项目为一个由Arduino与Android技术相结合开发的智能家居系统,包含了完整的源代码和相关开发文档。通过这一系统的开发,我们可以深入了解和学习如何将Arduino微控制器与Android移动设备结合起来,实现家居智能化。...

    fish-letter:鱼书——一款开源通信框架

    总之,“鱼书”作为一个致力于简化网络通信的Java框架,它的设计和实现充分体现了现代软件工程的理念,为开发者带来了便捷和高效。随着项目的不断迭代和社区的支持,鱼书有望成为Java通信框架领域的一颗璀璨明星。

    两种不错的操作系统

    标题中的“两种不错的操作系统”可能指的是两种开源或者轻量级的操作系统,这在嵌入式系统和物联网(IoT)领域非常常见。嵌入式操作系统通常是为了满足特定硬件平台的需求而设计,它们需要低功耗、高效能以及小巧的...

    开源项目-jeffail-benthos.zip

    总之,Benthos 是一个功能强大且灵活的流处理工具,适合处理实时数据流的场景,如物联网(IoT)数据、日志分析、实时告警等。通过深入了解其工作原理和实践应用,你将能够构建出高效、可靠的实时数据处理系统。

    基于Arduino Uno的以太网控制器源码.zip

    Arduino Uno是一个广泛使用的开源电子原型平台,它基于Atmel AVR系列的微控制器——ATmega328P。这款开发板以其简单易用的特性,深受DIY爱好者和初学者的喜爱。在物联网(IoT)领域,将Arduino Uno与以太网模块结合,...

    8266-IR_IR_红外控制_esp8266_ESP8266红外_8266_源码

    标题中的“8266-IR_IR_红外控制_esp8266_ESP8266红外_8266_源码”表明这是一个关于使用ESP8266微控制器进行红外(IR)控制的项目,其中包含了相关的源代码。ESP8266是一款经济实惠、功能强大的Wi-Fi芯片,常用于...

    开源项目-nats-io-gnatsd.zip

    NATS (Network Attached Storage Transport) 是一个开源的、高性能、高可扩展性的消息中间件系统,主要用于构建实时、分布式和云原生的应用程序。在这个"开源项目-nats-io-gnatsd.zip"压缩包中,包含的是NATS服务器...

    自己的毕业设计,基于树莓派的寝室小监控系统.zip

    本文将深入探讨一个毕业设计项目——基于树莓派的寝室小监控系统,该系统集成了硬件和软件技术,实现了对寝室环境的实时监控与远程控制。 【描述】毕业设计文件及源码 这个毕业设计项目包含了完整的源代码和相关...

    beaglebone做图像识别——buildroot-2016.05-rc2.0.tar.gz

    它允许开发者自定义要包含的软件包,从而创建一个最小化但功能完备的系统。对于BeagleBone这样的硬件平台,使用buildroot可以优化资源利用,确保系统运行高效。 在buildroot-2016.05-rc2.0版本中,我们可以找到以下...

    面向RISC-V AIoT操作系统聚元PolyOS-果壳适配层

    【标题】:“面向RISC-V AIoT操作系统聚元PolyOS-果壳适配层”指的是一款专门针对RISC-V架构的物联网(IoT)操作系统——聚元PolyOS,与果壳硬件平台进行适配的软件层。RISC-V是一种开放源代码指令集架构,因其高...

Global site tag (gtag.js) - Google Analytics