原标题:看过来!智能家居4大模块详解

关注我们 做新生代程序员!

(一)什么是智能家居:

智能家居可以理解为一个控制系统,通过物联网将家里的智能设备连接起来,通过手机控制,远程控制,自动控制,语音控制等多种控制方式,组成对家庭的一个智能系统,通过一台智能手机或者是一个智能平板,或者语音设备就可以控制家里的所有智能设备。

(二)智能家居的四大模块(APP模块,服务器模块,MO模块,ZigBee模块)

1.APP模块框架

如下图1-1所示:

图1-1APP框架图

APP实现的功能是通过连接网络,从而达到控制智能设备的目的,可以通过APP来控制LED灯的亮灭、风扇的开关、门的开关、蜂鸣器的开关等等,同时也能够实时获取家中的温湿度光、照等等。下面是我们在课程中实现的APP界面(APP采用QT编写的客户端),界面如下图所示,登录界面(1-2)

图1-2 APP登录界面

2.服务器模块

服务器的运行环境我们在虚拟机下进行(Ubuntu),服务器的主要功能是接收客户端的请求,同时连接下位机(M0开发板)。比如客户端发送一个开灯的命令,服务器收到命令之后,会发送一个请求到下位机,告诉它需要开灯,下位机收到命令之后就会执行该操作,同时下位机也会返回数据(温湿度,光照等)到服务器,服务器接收到之后再发送给客户端。

服务器涉及到的知识点比较多,华清远见嵌入式课程中,我们用到了sqlite3数据库(用来保存用户的用户名,密码和手机号),线程池,json数据库,串口方面的知识等等,该文章重点介绍串口部分的应用。

服务器最关键的,我觉得不在于代码本身,你首先需要调通串口,因为你只有调通串口才能实现其他的功能,因为开发板(M0)是通过串口和服务器相连的,一旦串口不能收发数据,一切都是白谈。我们一般将串口连接在电脑上的时候,都是和windows系统连的,可以通过打开串口调试助手来进行调试(包括收发数据),但是现在我们的串口是连接在虚拟机上的,要和服务器相同,我们要保证串口和虚拟机是相同的,我们将串口插上电脑之后,打开虚拟机,在最上面一行找的虚拟机三个字,单击然后有一个可移动设备,点击它找到一个usb-serial的图标点击连接就ok了,具体的操作图如图2-1。

图2-1

为了确保串口已经连接到虚拟机上了,我们可以通过命令来查看(进入vim命令,输入 ls /dev/ttyUSB0)一般都是ttyUSB0,但是也有特殊情况,有的可能是ttyUSB1,所以我们可以输入 ls /dev/ttyUSB* 。具体的如图2-2所示(出现下面黄色字体的样式表示接入串口成功)。

图2-2

接入串口成功之后,我们然后开始进行代码的编写,我们需要在虚拟机下写一个串口的代码来充当串口调试助手,从而进行串口数据的调试。我选择的是以文件 通过这些函数,我们可以实现串口的初始化(比如设置波特率,奇偶检验位,停止位等等),可以进行数据的收发等等。

3.M0模块

华清远见智能家居项目采用的是ARM-CortexM0(LPC11C14开发板),服务器(可以将服务器移植到A9开发板上进行操作,我这里没有进行移植,所以直接在服务器上运行)发送操作请求数据包到MO来完成相应的用户希望完成的操作,同时M0给服务器回复相应的确认包,表示M0已经完成了这项操作,这样就可以完成一次交互。

M0的框架设计如图3-1所示

图3-1 M0框架图

MO的开发板上,我们需要先实现点亮led灯的操作,蜂鸣器,风扇等等。完成了这些基础实验之后,在加入通信协议,比如我上位机发送open就表示请求开灯。

4.ZigBee模块

ZigBee 是为低数据速率、短距离无线网络通信定义的一系列通信协议标准。服务器与M0之间是用ZigBee来进行数据的传输。ZigBee有两个模块,一个是协调器,它与服务器通过串口相连,另一个是终端,它与M0也是通过串口相连。所以我们可以通过读和写串口的API,就可以得到我们想要的数据包,具体的还需要参考通信协议说明。

上面大约介绍了华清远见智能家居系统学习的几大模块,并就每个模块的实现及技术进行了大概的介绍,希望能给致力于从事智能家居系统学习的爱好者们有所帮助。更多更细节的技术内容学习,可以加入华清远见嵌入式课程的学习,这里有我们自主研发的智能家居系统,全套的硬件实训支持,非常适合学习。

嵌入式、JavaEE、HTML5......多种课程免费试听!

立即加入,

免费试听!

2、点击文末“阅读原文”

华清远见成都中心

高端IT就业培训专家

责任编辑:

Linux智能家居m0代码,看过来!智能家居4大模块详解相关推荐

  1. linux调度周期systick怎么看,Cortex-M0系统滴答定时器Systick详解

    上图是LPC1114系统滴答定时器(SysTick)的结构图.系统滴答定时器位于Cortex-M0内核中,也就是说,不论是LPC1114,还是其他的Cortex-M0内核单片机,都有这个系统定时器.其 ...

  2. python ssl模块用法详解_一看就懂,Python 日志模块详解及应用!

    日志概述 百度百科的日志概述: Windows网络操作系统都设计有各种各样的日志文件,如应用程序日志,安全日志.系统日志.Scheduler服务日志.FTP日志.WWW日志.DNS服务器日志等等,这些 ...

  3. Linux系统与网络、磁盘参数和日志监控等命令详解二

    创作人QQ:851301776,邮箱:lfr890207@163.com, 欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点! 个人座右铭: 1.没有横空出世,只要厚积一定发. ...

  4. linux 666权限,linux主机555、644、666、755、777权限详解

    linux主机555.644.666.755.777权限详解 发表时间:2014-06-03 05:07 来源:未知 分类:其它代码 作者:岑溪网站开发 点击:次 linux主机555.644.666 ...

  5. java同步方法完成案例_Java同步代码块和同步方法原理与应用案例详解

    本文实例讲述了java同步代码块和同步方法.分享给大家供大家参考,具体如下: 一 点睛 所谓原子性WOmoad:一段代码要么执行,要么不执行,不存在执行一部分被中断的情况.言外之意是这段代码就像原子一 ...

  6. 绿建科技加密图纸查看器安装_施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚...

    施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚 只要是对建筑行业,有所了解的朋友都清楚,钢筋施工图纸对于建筑物,有着举足轻重的地位!一点都不得马虎大意,接触建筑行业,第一步还是需 ...

  7. ajax异步同步加载PHP代码,jquery中的ajax同步和异步详解

    jquery ajax同步的意思是当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出现了假死状态,当这个ajax执行完毕后才会继续运行其他的代码假死状态解除.而异步的意思是这个aj ...

  8. 转载:linux驱动层到应用层的重要接口sys文件系统---/sys目录详解

    linux驱动层到应用层的重要接口sys文件系统---/sys目录详解 Linux2.6内核中引入了sysfs文件系统.sysfs文件系统整理的设备驱动的相关文件节点,被视为dev文件系统的替代者.同 ...

  9. java 同步块原理_Java同步代码块和同步方法原理与应用案例详解

    Java同步代码块和同步方法原理与应用案例详解 发布于 2020-8-7| 复制链接 摘记: 本文实例讲述了Java同步代码块和同步方法.分享给大家供大家参考,具体如下:一 点睛所谓原子性:一段代码要 ...

最新文章

  1. php 网站内容采集器 Snoopy
  2. 大宗商品(Bulk Stock)交易
  3. 教程 | Caffe在Windows10系统上安装与配置
  4. 极力推荐python初学者使用wingIDE
  5. C API向MySQL插入批量数据的快速方法——关于mysql_autocommit
  6. Linux(Ubuntu)下嵌入式gdb调试环境
  7. C语言实现阿姆斯特朗数armstrong number算法(附完整源码)
  8. java自定义键值对_KV键值对数据类型
  9. zkui - Zookeeper的Web UI界面 windows环境
  10. mongo:(2)mongoDB简介
  11. 使用批处理build vs2005的工程
  12. layui监听radio点击事件
  13. 如何用python写一个答题程序_python练习题库
  14. java如何让坦克动起来_[笔记]基于java的坦克大战游戏实现思路
  15. 使用Python的tenacity库实现异常重试机制
  16. 桌面的文件不见了怎么找出来
  17. 每周一品 · 永磁电机中的磁性材料
  18. 学习笔记:12864液晶模块的…
  19. wireshark数据包过滤
  20. 计算机是如何工作的? ----李泽源

热门文章

  1. sql---多表联查
  2. android 旋钮控件,Android自定义控件 温度旋转按钮
  3. mysql批量删除重复数据库_建站经验:sql语句快速删除重复内容之我见
  4. linux升级gcc没成功,gcc升级到4.5.2,到make操作时,失败了
  5. 【原创】MacOS 上使用 Vagrant + VirtualBox 安装 Ubuntu 18.04
  6. 判断网络问题的几种方法
  7. 《Adversarial Training for Relation Extraction》浅析
  8. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第03章 加工原料文本
  9. 数据可视化项目【一】基础配置
  10. 计算机操作系统学习(五)文件管理