目 录
摘 要 I
Abstract II
前 言 1

  1. 开发工具和技术简介 1
    1.1 硬件工具简介 1
    1.1.1树莓派2代B板简介 1
    1.1.2 其他硬件模块 1
    1.2 软件工具介绍 3
    1.2.1 Qt 3
    1.2.2 Espeak TTS 3
    1.2.3 WiringPi 3
    1.2.4 PuTTY 5
    1.2.5 Win32 Disk Imager 5
    1.2.6 SDFormatter4exe 5
    1.3 系统环境设置 5
    1.3.1 系统的下载和烧写 5
    1.3.2 系统的启动与连接 5
    1.3.3 树莓派的基本配置 7
    1.3.4 树莓派的网络配置 7
    1.4 系统硬件连接图 8
    2.系统可行性分析 9
    2.1 市场可行性分析 9
    2.2 技术可行性分析 10
    2.3 经济可行性分析 10
  2. 系统的概要设计 11
    3.1 系统总体设计 11
    3.1.1 总体设计要求 11
    3.1.2 系统的构成与功能 11
    3.2 客户端设计 11
    3.3 服务器设计 12
  3. 系统功能模块的实现 14
    4.1客户端控制器模块 14
    4.1.1用户主控界面设计 14
    4.1.2主控界面主要代码 14
    4.1.3登录界面设计 18
    4.1.4登录模块主要代码 18
    4.2服务器总控模块设计 21
    4.2.1 总控线程模块 21
    4.2.2 温度检测模块 27
    4.2.3 入侵检测模块 30
    4.2.4 土壤湿度检测模块 31
    4.2.5 降雨检测模块 34
    4.2.6 光控开关模块 35
    4.2.7 Makefile 文件的编写 36
  4. 系统整体环境的搭建 38
    结束语 39
    参考文献 40
    致 谢 41
    3.系统的概要设计
    3.1 系统总体设计
    3.1.1 总体设计要求
    本系统采用的是传统的C/S结构,在个人PC上安装客户端,然后完成注册,每次输入密码登陆完成对树莓派服务器各个功能模块的开启/关闭。整个系统以家庭路由器作为网络传输点,在相同网段内实现TCP通信传输机制,然后在服务器根据客户端的不同指令,完成各个独立模块相应的线程控制,独立线程控制独立的模块,开关灵活方便,而且,还可以根据PC或者红外遥控等不同的信号机制作出灵活的控制端的变换。
    3.1.2 系统的构成与功能
    客户端:Qt编写的界面,用户名、密码登陆,利用QTCP的网络通信方式,根据按钮的事件对服务端发送相应的编码指令。
    服务器:利用Linux下的TCP通信技术,接收客户端的指令,然后开启/关闭相应的功能线程函数完成相应的控制。还根据传感器采集的数据,对各个功能模块作出相应的反馈。完成比较有趣的功能。
    3.2客户端设计
    客户端在此处相当于一个网络遥控器,控制服务器的模块功能。
    客户端的业务结构图:
/* 各个模块线程函数的接口 */
void *temperature_thread(){voice_deal();
}
void *invade_thread(){invade_deal();
}
void *soil_thread(){soil_deal();
}
void *light_thread(){light_deal();
}
void *rain_thread(){rain_deal();
}
void process_info(int s)
{int recv_num;int send_num;char recv_buf[5];char send_buf[5];
/* 各个模块的线程ID */pthread_t temperature_pid;pthread_t soil_pid;pthread_t invade_pid;pthread_t light_pid;pthread_t rain_pid;int temperature_ret;int soil_ret;int invade_ret;int light_ret;int rain_ret;int *thread_ret = NULL;/* 主线程接收网络指令模块 */while(1){printf("begin recv:\n");recv_num = recv(s,recv_buf,sizeof(recv_buf),0);if(recv_num <0){perror("recv");exit(1);} else {recv_buf[recv_num] = '\0';printf("recv sucessful:%s\n",recv_buf);}if(!strcmp(recv_buf, temperatureOn)){     //温度相关模块操作temperature_ret = pthread_create(&temperature_pid,
NULL, (void*)temperature_thread, NULL);   if(temperature_ret != 0){printf("tempetature create pthread error\n");return ;}printf("temperature pthread success\n");}else if(!strcmp(recv_buf, temperatureOff)){printf("temperature end work!\n");if(0 != pthread_cancel(temperature_pid)){printf("temperature cancel failed!\n");}}else if(!strcmp(recv_buf, invadeOn)){            //入侵检测模块操作printf("invade on!\n");invade_ret = pthread_create(&invade_pid, NULL,(void *)invade_thread, NULL);if(invade_ret != 0){printf("create invade pthread error\n");return ;}printf("invade pthread success\n");}else if(!strcmp(recv_buf, invadeOff)){printf("invade off!\n");if(0 != pthread_cancel(invade_pid)){printf("invade cancel failed!\n");}printf("invade cancel success!\n");}else if(!strcmp(recv_buf, soilOn)){            //土壤湿度检测模块操作printf("soil on!\n");soil_ret = pthread_create(&soil_pid, NULL, (void *)soil_thread, NULL);if(soil_ret != 0){printf("create soil pthread error!\n");return ;}printf("soil pthread success!\n");}else if(!strcmp(recv_buf, soilOff)){printf("soil off!\n");if(0 != pthread_cancel(soil_pid)){printf("soil canael failed!");}printf("soil cancel success!\n");}else if(!strcmp(recv_buf, rainOn)){             //降雨检测模块操作printf("rain on!\n");rain_ret = pthread_create(&rain_pid, NULL, (void *)rain_thread, NULL);if(rain_ret != 0){printf("create rain pthread error\n");return ;}printf("rain pthread success\n");}else if(!strcmp(recv_buf, rainOff)){printf("rain off!\n");if(0 != pthread_cancel(rain_pid)){printf("rain cancel failed\n");return ;}printf("rain cancel success\n");}else if(!strcmp(recv_buf, lightVoiceOn)){           //光控开关模块操作printf("light vodice on!\n");light_ret = pthread_create(&light_pid, NULL,
(void *)light_thread, NULL);if(light_ret != 0){printf("create light pthread error\n");return ;}printf("light pthread success\n");}else if(!strcmp(recv_buf, lightVoiceOff)){printf("light voice off!\n");if(0 != pthread_cancel(light_pid)){printf("light cancel failed\n");return ;}printf("light cancel success\n");}else{    continue;}}
}



基于树莓派开发板的智能家居系统的设计和实现相关推荐

  1. osgi框架 android,基于Android的OSGi框架智能家居系统的设计与实现

    摘要: 随着科技和经济的发展,人们开始追求安全舒适,信息化程度高,节能智能的家居环境.智能家居系统正是利用计算机,嵌入式,传感器,网络通信以及自动控制等技术集成家居设备,提供安全,智能以及舒适的家居环 ...

  2. 基于ARM开发板的智能家居控制系统设计

    本文章设计流程可以作为视频讲解的补充 视频链接:智能家居控制系统 一.硬件介绍: 1.ARM A53开发板 2.显示触摸屏(800 X 480) 3.蓝牙模块(HC-08,串口通信) 4.电话模块(G ...

  3. python与室内设计_基于树莓派和Python的智能家居系统设计

    基于树莓派和 Python 的智能家居系统设计 许礼捷 葛华 陈红 [摘 要] 介绍树莓派第 3 代开发平台,融合 Python 开发技术和 OneNET 云 平台通信技术等先进技术,设计一款智能化的 ...

  4. 智能家居系统的设计与实现

    摘自:http://www.csmayi.cn/yjzc/hyzc/201103/127410.html 论文关键词:智能家居 嵌入式系统 Windows CE Visual C++ Delphi 论 ...

  5. 专题五 在Cisco Packet Tracer中设计基于 PT 和 OneNet 的智能家居系统

    摘    要 智能家居是物联网在家庭中的基础应用,随着宽带业务的普及,智能家居产品涉及到方方面面. 家中无人,可利用手机等产品客户端远程操作智能空调,调节室温,甚者还可以学习用户的使用习惯,从而实现全 ...

  6. 基于机智云平台的智能家居系统

    摘要:随着社会的发展,人们对于生活质量的要求越来越高,智能家居作为能够大幅提升人们生活舒适度的一部分,得到了越来越多的人关注,更多方便.实用的智能家居系统急需被提出. 本文设计了一种基于机智云物联网云 ...

  7. 基于Arduino+nodemcu+blink的智能家居系统

    基于Arduino+nodemcu+blink的智能家居系统 #此篇为代码部分,实物视频演示在下面这个链接https://www.bilibili.com/video/BV1iA411v7qt/ 链接 ...

  8. 基于STM32的语言控制智能家居系统

    承接单片机定做 文章目录 前言 一.设计目标及内容: 二.框架思路 三.实现 喜欢请点赞哦! 前言 基于STM32的语言控制智能家居系统,主控使用STM32F103(正点原子战舰板子) 一.设计目标及 ...

  9. 基于ZigBee和STM32的智能家居控制系统的设计与实现(五)--终结篇

    基于ZigBee和STM32的智能家居控制系统的设计与实现(五)–终结篇 说明 首先祝贺自己顺利的完成了毕业答辩工作,想起整个过程还是挺让自己感动的.最后还被评为优秀毕业设计,虽然并没有什么luan用 ...

最新文章

  1. Ultra-QuickSort POJ 2299(归并排序)
  2. 最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?
  3. 《MySQL——关于grant赋权以及flush privileges》
  4. 深入了解java虚拟机(JVM) 第四章 对象的创建
  5. jQuery的无new实例化
  6. Partition分析
  7. jenkinsapi操作Jenkins,提示:No valid crumb was included in the request
  8. 多线程蜂鸣器研究,友善之臂Smart210开发版
  9. ofo 回应甩卖办公桌;华为与袁隆平合作;罗永浩 1 亿股权遭冻结 | 极客头条
  10. 【Spring Boot】RestTemplate使用总结
  11. Windows下载安装kafka
  12. 人体时钟android,人体时钟屏保-不一样的阿拉伯数字时钟
  13. Spyder设置字体
  14. Admob的PIN码接收教程
  15. java date the type is ambiguous_一个java ambiguous method 的问题
  16. Dev-C++ 一直提示源文件未编译,原因及解决办法
  17. python习题练习1224
  18. python如何进行双色球抽奖_Python趣味实例,实现一个简单的抽奖刮刮卡
  19. read.html5.qq.com,如何通过第三方QQ登录网站首页
  20. Django项目QQ登录后端接口实现

热门文章

  1. Omron(欧姆龙)安全继电器G9SE-201的实例测试
  2. 在MAUI中使用Masa Blazor
  3. 车载诊断协议——ECU刷写(Software Update)那回事
  4. Python numpy.vander函数方法的使用
  5. 旅通旅游管理系统对旅行社发展的必要性!
  6. 细数iOS上那些你绝对不会注意到的神细节
  7. Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  8. AbutionGraph诸神图实现
  9. systemui 重启失败导致keygurd为true 导致的ANR
  10. 2020_9_7 每日一题 前 K 个高频元素