1.      经过陆陆续续的几个双休日和考试周里的空闲时间里的编写和调试,终于于2015/12/26今天晚上大体完成了智能家居的调试工作!总算是没有半途而废,耐心也受到挑战。

2.      几个比较复杂的重要的模块,前面已经做过总结,这里不再赘述,配合起来使用,还是会存在一些延时导致的时差问题,会使得项目的工作不是很流畅,特别是加了温湿度模块以后,会在执行几次后,出现长时间的等待,然而在独立的模块调试的时候,是正常的,这真是费解。解决方法下面详述。

3.      因为是基于NRF模块的,所以,无线控制是这个智能家居的特点,2.4GHz也是这么来的,这个项目不能实现大量数据的实时传输,因为数据长度有限,还有51单片机的处理速度的限制,所以,只用NRF做发送和接收命令使用,也是很有用的一款模块,还可以扩展到其他项目上去,如遥控小车,无线四轴飞行器等等。这次能够调通,我也是花了一番精力和耐心的,当然,在前人的调试经验上,再去调试,简直事半功倍!NRF的程序虽然是我在参照别人代码的基础上写出来的,但是我自己写的每一行代码,我都能理解,并且做出相应的修改,使得收发一体,而不是简单的测试通不通。

4.      主数据接收端(普中的51开发板):这个单片机是我以前自学的时候买的,总体上说功能挺全,这次用来作为数据的总接收端,对采集机发送过来的四个字节的数据进行辨析,做出相应的现实,使用到的有,LCD12864,矩阵键盘,NRF24L01模块。最后经过处理的数据在LCD12864上显示出来,作为交互界面。

5.      主数据接收端:这里的主要思路是,首先做各种初始化,然后循环设置本机为接收模式,然后实时接收数据。由于程序中,我找不出为什么在接收了四个字节的数据包以后,本机就一直循环的,不停的接收这个包的最后一个字节,完全停不下来,所以,为了避免这个错误,我对采集的数据进行分析,要是四个数据相同,那么就作废,因为正确的数据包四个字节数据相同的概率很小。当然,为了辨清是本机上循环误读还是采集端上发来的数据,就需要在采集端上,做数据清空的时候,把原始包中的数据就置为不一样,这样才能在本机中辨识出来!

if((Rx[0] == Rx[1]) && (Rx[1] == Rx[2]) && (Rx[2] ==Rx[3]))//主机判断字节,要是相等,则作废

{

memset(Rx,0xff,4*sizeof(unsigned char));

}

//采集端的清空操作,实际上就是把包内数据变得不一样

void init_Tx()

{

Tx[0]= 0x01;

Tx[1]= 0x02;

Tx[2]= 0x03;

Tx[3]= 0x04;

}

6.      主数据接收端:还有一提的就是,千万要注意LCD12864使用的默认引脚,虽然不需要你接很方便,但是不接就会出现不小心重复使用某些引脚,导致错误,每次使用前,查询原理图很有必要!

7.      采集端(德飞莱开发板):这款开发板是我在苏嵌培训使用的一块板子,板子总体上来说很优秀,使用也很方便,所以,被我用来作为数据的采集和发送端,简称采集端。

8.      采集端:我这次加了的模块有,人体红外感应模块(有人时输出高电平),烟雾报警模块(有烟雾时输出低电平),温湿度传感器(湿度整数+湿度小数+温度整数+温度小数+总校验字,总校验字 = (取低八位)(湿度整数+湿度小数+温度整数+温度小数)),直流电机(模仿空调),步进电机(模拟窗帘或者窗户),NRF模块。

9.      采集端:从使用上来说,人体红外感应模块和烟雾报警器最最简单,也最容易上手,所以加进去基本没什么问题,就是人体红外感应模块在上电以后的一分钟内需要预热,所以调试的时候要耐心等待。

10.  采集端:直流电机和步进电机也并不难,在自学了以后就用起来了,简单的。有点问题的就是我最上面说的温湿度模块的问题。因为它在读取数据的时候,是单总线操作,其中需要延时等操作,虽然单独的模块调试的时候没有问题,但是在加入到整个项目中,想要整合的时候却出现了问题,采集温度的时候,最多能采集五次,最少两次,就在温湿度模块函数中的一个地方死循环了,可能是因为我用了while来滤过某个电平,但是也不至于前几次可以,后面就不行了吧?一旦停下来,整个项目就不工作了,这是我后期主要解决的问题。解决方案是,让采集端先只采集一次,采集完将数据放在本地的全局变量中就不再采集了,这样我就可以最起码有一次是正确的温湿度,发送的时候我让包的最后两个字节保存了温度的整数部分和湿度的整数部分,发送到主接收端同样也本地保存。然后,设置一个按键,按下就通知采集端采集一次温度,这样就避免了连续采集温度导致的程序死循环的问题,其实是很差的出错处理,但是我知道想要改出来难度很大,因为程序中延时用的很多,比较难以控制。

11.  采集端:采集端在加入温湿度模块以后,还会影响数据的发送速度,设置为一秒发一次,但是最长的有十二秒以后我才收到,我也是无语的,可能是我程序中还存在不完善,这是有待我改进的。

12.  采集端:步进电机和直流电机中,直流电机比较简单,开就是开,关就是关,需要说明的是步进电机。因为是模拟窗帘或者窗户的开端,但是也不能无限制的开或者关,所以我设置了开关限度的全局变量,不能使得它不停的往一个方向不停转动,要有限度。

正转:

step_num ++;//全局变量

if(step_num < 8)

{

control_StepMotor(0);

}

if(step_num>= 8)//大于8了就不再做了,保持8,作为反相的初始值

{

step_num= 8;

}

反转类似如此。

13.  采集端:项目还差的就是光照感应模块,及其模块控制的LED灯环节,这个因为项目验收时间有限,我也是一人之力,所以不打算加入这个模块了。

14.  项目BUG:存在问题有(1)本来要数据采集端开始时采集一次温湿度的,但是还是不能实现,只能通过手动发送命令,要采集端对温湿度模块进行采集。(2)加入温湿度模块以后,发送最新数据包的周期明显变长而且不稳定。(3)人体感应模块会偶尔在没人的时候也检测到,我觉得应该是干扰,这个问题解决也比较茫然。(4)使用电机来模拟空调以后,会明显的拉长数据收集的周期,偶尔会出现死循环,这是我这个项目里最头疼的地方了。

15.在前期做完的基础上,解决了两款单片机之间传输数据慢,延时长,时效性不高的问题。

解决:采用外部中断解决,将耗时函数,例如采集温湿度,放在中断服务函数中完成,进入外部中断时,整个程序都停止,这样就不会出现项目发送间隔不定,或者过长的问题。

同时也解决了14所列的问题,温度采集可以连续采集了,人体感应换了一个模块以后也稳定了。采集时间的话,频率加快了,虽然还是不是很稳定,但是时效性比加入中断方式前好了很多。

电机部分也能够正常工作,就是发出命令以后,还是要一定的时间才能恢复正常的通信,但是是能够接受的。

至此单片机项目--智能家居项目基本完成,准备开始做wifi视频小车!---------------------2016/1/16

16.  总结:总的来说,也没白花费我这么长时间的编程和调试,也算是小有成果吧,下午刚刚完成微处理器比赛,晚上这个花了好长时间的项目也接近尾声,算是我给自己的一个交代,在这个NRF模块使用成果的基础上,我后续还要尝试其他项目,我想肯定是减轻了不少的负担。

基于2.4GHz射频NRF24L01模块的智能家居项目总结相关推荐

  1. 低功耗蓝牙onscanresult 出来名字为空_浅析BLE5.0蓝牙模块在智能家居的运用

    随着物联网渗透到各个行业领域,也使得各个领域对无线模块BLE蓝牙模块的需求激增.BLE蓝牙模块作为无线通信模块的一种,目前在智能家居.智能穿戴.智慧医疗.蓝牙室内定位等领域已经得到广泛应用.今天,小编 ...

  2. 基于stm32的智能家居项目

    基于stm32的智能家居 具体教程可以看文中的B站链接,上面有手把手教程 本人其他项目链接基于linux的智能仓储项目 基于Qt的人脸识别 移植人脸识别到Linux开发板上 基于正点原子的IMX6UL ...

  3. 详解Wifi模块对智能家居行业产生的影响

    核心提示:对于WiFi我们并不陌生,只要我们上网,我们基本上就离不开WiFi.那么,WiFi模块在智能家居行业行得通吗?将会对智能家居行业产生怎样的影响? 随着传统家电厂商转型跨界物联网智能家居行业, ...

  4. 基于树莓派+传感器+阿里云IoT的智能家居管理(代码实现)

    视频教程已经放在B站 请大家狠狠地三连我 虽然我没有稚晖君那么强 教程!基于树莓派+传感器+阿里云IoT的智能家居管理(2) 主文件 #!/usr/bin/python3import aliLink, ...

  5. 智能家居项目开发: 设计模式(工厂模式)+ 线程池 + Socket (持续更新中)

    智能家居项目开发 一.智能家居功能细节拆分 控制区: 外设区: 面向对象类和对象的概念 结构体新玩法 二.工厂模式 1. 工厂模式的概念 2. 工厂模式的实现 3. 工厂模式使用及功能验证 三.智能家 ...

  6. 智能家居项目(三)之框架设计及框架代码文件工程建立

    目录 一.智能家居项目框架设计草图 二.框架代码文件工程建立 三.添加声音识别模块的串口读取功能 一.智能家居项目框架设计草图 代码思路讲解: 1.一个指令工厂,一个控制工厂,实际上就是通过链表链起来 ...

  7. 嵌入式智能家居项目视频监控_智能化您的视频嵌入

    嵌入式智能家居项目视频监控 Video content is taking over the Internet. The trend began long ago and the most recen ...

  8. 智能家居项目开发(一):简单工厂设计模式引入

    智能家居项目开发 一.智能家居功能细节拆分 二.设计模式概念的引入 三.类与对象 四.结构体新玩法 五.工厂模式 一.智能家居功能细节拆分 1.控制区 我们会用到之前学过的: 语音识别模块 socke ...

  9. 视频教程-5G物联网云平台智能家居项目30天搞定-物联网技术

    5G物联网云平台智能家居项目30天搞定 我叫连志安,现任职广东长虹技术研究所(国企).之前在康佳集团(国企).CVTE(上市公司)等公司任职.负责过Android TV.智能网关.路由器.智能家居.安 ...

最新文章

  1. 前端——解决微信网页清除缓存的方法
  2. 朱俊彦团队提出GAN压缩算法:计算量减少20倍,生成效果不变,GPU、CPU统统能加速...
  3. mysql dml_详解MySQL---DDL语句、DML语句与DCL语句
  4. Sql2008的行列转换之行转列
  5. C语言再学习 -- 关键字struct(转)
  6. go io.reader 多次读取_你应该掌握的 Go 高级并发模式:计时器
  7. matlab中circle函数_JavaScript碎片——函数闭包(模拟面向对象)
  8. jQuery第六章课后作业
  9. js实现,同域名下pc,移动网站模板切换跳转
  10. 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览
  11. 万用表怎么测电池内阻_万用表怎么测量电阻
  12. 设置Mysql数据库的默认编码为utf8
  13. 六西格玛dfss_实施六西格玛设计(DFSS)的主要工具有哪些?
  14. Mac系统开发常见问题-Mac登录界面多了一个其他账户选项
  15. c语言解除宏定义_C语言宏定义 define,及一些陷阱!
  16. CSS 3之图文混排效果
  17. Ubuntu 10.4 .安装Cairo-dock
  18. excel poi 加背景图_java 在Excel中插入图片 POI实现
  19. Mac无法打开应用,安装来源不明,不受信任的一种解决方法
  20. 落球法测量液体粘滞系数

热门文章

  1. java.sql.SQLException: 无法转换为内部表示原因及解决办法
  2. 【除夕特辑】爱心代码python(程序员的浪漫)
  3. IGMP Snooping协议技术总结
  4. steam游戏上架流程二:steamworks SDK API steamworks.net 对接 unity
  5. PAT乙级真题全集-PAT (Basic Level) Practise (中文)
  6. 怎么获得积分啊,急!!!!急!!!!急!!!!急!!!!
  7. PMP可以自学报考吗
  8. 二手书交易平台备受资本青睐 打造小而美的市场会不会一帆风顺?
  9. NFC OMA 访问
  10. 关于微信小程序常见的运算符