版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于树莓派语音识别智能家居控制系统的设计与实现目录摘要 摘要:本次毕业项目设计依托于树莓派作为主控芯片来开发的智能语音识别控制系统,一方面我们可以通过语音识别芯片语音模块来把识别的语音数据传输给树莓派的控制中心,然后树莓派依据语音发送的不同数据信息来控制不同的子系统,例如可以用语音来控制窗帘的开关、LED灯的开关等操作,另一方面我们可以通过无线WiFi的连接,通过手机APPP来控制继电器开关器件,同时该系统配置了火灾报警系统,保障智能生活的同时提高生活的安全性。关键词:树莓派语音识别语音控制智能家居1绪论1.1选题背景在科技飞速发展的当今社会,智能家居的各种产品普及到可以体现在很多的地方。比如7年前,也就是2014年被称为智能家电年。当时智能家电领域被大部分大型家电公司投资发展。只要有资本的投资,就会有产品的产出。经过各大企业专心一致的研究和制造,各种各样智能家居智能产品已经进入市场。然而,智能家居系统在中国的推广面临许多困难障碍,尤其是在现代中国的普通家庭中,并且没有得到快速的发展。智能家居系统大多不在普通中国家庭中使用,是因为使用它的成本太高了普通中国家庭使用的性价比极低。智能家居的设计与应用在现代这个智慧社会是有巨大需求的。智能家居产业依然有着强大的发展潜力。那么是因为什么使智能家居系统总是处于低速应用阶段呢?主要原因是市场上的智能家居产品过于昂贵,系统操作使用的工程过于复杂繁琐。市场上的智能家居智慧产品大多过于高端,其消费条件只能满足少数富裕家庭,用户使用过程及方法过于复杂。一些高端功能对于普通家庭用户来说是不必要的,实用性和性比价相对较低。因此,低成本、高实用性的低端智能家居产品拥有更大的消费市场,并且能够满足消费者的使用目的。社会生活的智能控制成为流行话题,智能化控制更是热点中的热点。语音控制的普及便利了人们吃、穿、住、行等多个方方面面,人们可以使用语音识别控制就能更加方便与快捷的辅助人们做最想要做的事情,可以说智能语音识别系统可以包含大部分传统的弱电行业,国内市场发展前景空间十分诱人。我的专业是电气工程及其自动化,具有一定的专业知识,学习过硬件和软件方面的相关知识,选择树莓派开发的设计,是想结合自己的所学知识去运用、解决问题,其次就是想挑战一下自己。1.2系统工作原理及目标本次毕业项目整体设计主要分为数据采集、数据对比处理及输出控制三个部分,数据采集部分有两部分组成:外界物理声音数据的监听与收集和客户端通过网络发送的数据;数据对比处理部分是在收集到外界的数据信息之后,外界的数据信息和我们的数据库中的数据进行比较处理,输出控制部分主要是在数据处理之后,根据处理后的信息来控制继电器的开关;我使用树莓派芯片作为这次设计的主控芯片主要是因为其性能丰富及扩展接口多,便于外设接口连接等优点。使用语音模块来建立外部语音声音识别系统,把外界识别的语音内容数据传输给树莓派中心,然后树莓派服务端数据中心接受到数据内容后,依据语音系统发送的特殊数据和树莓派内部的服务端基础数据内容相比较,判断是否为正确的指令操作,正确的指令能够来控制特定的子进程,来实现控制我们要实现的目的及目标。来达到设计的需求。本次设计的最终目标是:通过语音控制灯光和窗帘的启动和关闭,来实现对人们日常生活的舒适化、智能化,并且还可以通过网络的方式来控制灯光和窗帘的启动与关闭,使生活更加的方便和安全多性能。其次通过火焰传感器时刻保护,使居住时不受火灾危险的影响,能够提高居住的安全性。2开发工具及关键技术2.1开发工具介绍2.1.1FileZilla介绍 FileZilla软件是一个安全、可靠、方便的FTP服务器与客户端端开源程序,具有各种特性与直观的画面。一个可控的、有组织的界面,以及可以使用多个站点的快捷方式,使FileZilla成为一个操作方便简洁的文件传输客户端工具,图1是File
Zilla连接到树莓派的配置图,使用File
Zilla的优点如下:File
Zilla免费开源,下载、安装、使用都很方便快捷。File
Zilla可以双向传递数据,并且数据传递的十分迅速。File
Zilla能够允许多个窗口登录同一个IP地址。File
Zilla能够实现操作登录IP地址服务端的基础文件。删除、移动、复制等。File
Zilla对于传输的数据类型没有强制要求,传输条件实现简单。图1FileZilla关键项配置图2.1.2SourceInsight4.0介绍 SourceInsight软件是一个用于项目开发的代码浏览器与程序编辑器。SourceInsight可以分析源代码,并在工作时动态维护自己的符号数据库,并自动为您显示可用的信息。SourceInsight软件不仅是一个功能丰富的程序编写器,而且可以显示引用树、类继承图和调用树。SourceInsight软件为所有的程序编辑器的编写底层的源代码与源信息提供了最快的路径。SourceInsight给予了对底层源代码及源代码数据信息的快捷的访问与查询的功能。与其它编辑器产品不一样,Source
Insight可以一边编写你的代码一边分析你的代码,然后反馈可用的数据就可以马上进行处理分析。图2是Source
Insigh的工作界面图,Source
Insigh的优点如下:Source
Insigh支持几乎所有的语言,C,C++.Source
Insighd的下载安装快捷方便。Source
Insigh能够提供分析的信息十分全面。Source
Insigh添加保存工程操作简单。图2SourceInsight4.0界面图2.1.3SecureCRT介绍SecureCRT软件是一个终端仿真程序并且支持SSH的,就是Windows下登录UNIX或Linux服务器主机的APP。SecureCRT软件是能够实现联网运行包括:UNIX、Windows、VMS。加密文件的数据传输能够使用包括的VCP命令行程序。拥有大受喜爱的CRT客户端的大部分功能:自动脚本注册、颜色改变设置、可变屏幕尺寸大小和出众的VT102、VT220、VT100与ANSI竞赛等功能。可以在命令中工作运行及在浏览器运行工作。其余的功能包括:制作简单的文本脚本、方便大众使用的工具栏、能够创建独特的ANSI界面颜色等。SecureCRT软件的SSH协议支持RC4、DES、3DES三种密码协议,以及可以使用RSA的密码身份验证。图3和图4是SecureCRT登录树莓派的关键项配置图;SecureCRT的优点如下:SecureCRT安装快捷、方便,操作简单,上手简易。SecureCRT支持串口登录和网络登录两种方式,增添了使用的多样化。SecureCRT能够实现多个网络端口登录。图3SecureCRT网络登录关键项配置图图4SecureCRT串口登录关键项配置图2.1.4STC-ISP介绍 STC-ISP软件是一款整合了下载、编程与烧录程序和工程的工程软件,支持兼容的单片机设备也是多种多样,并且简洁的使用方式与方法,取得了普遍大众的应用。图5和图6分别是STC-ISP的烧录和串口通信图,STC-ISP的优点如下:STC-ISP的下载安装方便,操作简单。STC-ISP可以支持烧录和通信两个我需要的操作。STC-ISP可以支持多种芯片单片机。STC-ISP的数据传输速度快。图5STC烧录下载图图6STC串口调试图2.1.5KeiluVision4介绍 Keil系列软件是专门为单片机的开发设计的软件。它采用C语言开发设计,该软件可实现C语言的编译和连接,并具有在线仿真和调试功能。图7是KeiluVision4软件生成目标文件.hex后缀文件的关键配置图。图7KeiluVision4关键项配置图2.2关键技术2.2.1树莓派系统的搭建 本次毕业设计所采用的主控芯片为树莓派,但是树莓派只是一块硬件,但是要能真正的使用它,让它具有控制、分析、处理的作用,就必须为树莓派装上系统环境,就像我们的电脑只有装上系统才能去实现我们想要的功能。首先要准备一张空白的储存卡,将准备好的光盘映像系统文件2019-04-08-raspbian-stretch下载写入到储存卡中,然后将储存卡插入到树莓派的卡槽中,之后给树莓派通电就会自动启动,树莓派第一次登录只能采用串口登录和蓝牙登录。用SecureCRT串口软件可以对树莓派的系统环境进行操作,搭建我们后续的开发环境;首先将树莓派进行网络配置,要让树莓派和我们的网络建立连接通道,使用命令sudonano/etc/wpa_supplicant/wpa_supplicant.conf打开配置文件夹,在里面输入我们的WIFI名称和密码,使用基础指令sudoreboot重新打开树莓派之后,树莓派就会自动连接我们之前配置的WIFI,因为本次设计是针对家庭生活设计的,所以最好要把我们使用WIFI的IP地址固定,这样可以方便我们后面使用IP地址进行通讯,首先使用键入命令ifconfig就可以查看当前的IP地址,记住IP地址后,键入命令sudonano/etc/dhcpcd.conf打开文件夹,在里面键入固定IP地址的命令,保存之后使用命令sudoreboot重启树莓派,就像当前WIFI的IP地址就可以固定,但这种方法不支持手机热点作为WIFI连接树莓派(手机热点的IP地址每次开关之后会发送改变),上面的内容完成之后,就要进行VIM编辑器的搭建,虽然系统自带了VI编辑器,但是VI的编辑十分的麻烦,而且经作者亲测,VI编辑稳定性还有待深思。我们在窗口键入指令sudo
apt-get
install
vim,在保证有网络连接的前提下,指令被执行之后系统便开始自动进行VIM编辑器的下载及其安装,等安装完成后即可进行使用。我们采用VIM编辑器的还有一个原因是当我们在窗口的命令行模式下进行操作时,能够方便的对文档进行编辑,不必每次去文件目录进行查找待编辑文档。至此,树莓派的操作环境搭建完成。2.2.2TCP/IP通信技术 TCP/IP通信协议是现有协议中最完善、使用最普及大众的通信协议。它的优势在于能够使用在不同硬件结构中和在不同操作系统的计算机也能够进行相互通信。TCP/IP
协议不但可用于广域网还能够用于局域网,它是Intermnet/Intranet
的进行通信的基础,TCP/IP
通信协议属于SNMP
网络管理方式的必备协议,并且能够为使用的用户提供一个开发客户/服务器结构的应用程序的环境。本次设计所用到网络通信方式是采用WIFI网络的IP地址进行数据传输的。树莓派作终端为网络通信的服务端,通过绑定之前固定的WIFI网络IP地址,对该通道进行监听,客户端用户则需要输入正确的IP地址及端口号才能与服务端口建立有效的网络连接,这样才能使客户端和服务端之间建立数据通道控制数据传输和启动数据传输。采用WIFI通信是因为WIFI网络现在已经普及大众,几乎每个家庭都有WIFI网络,而采用WIFI网络可以使产品的受众面更广阔,更加普及,并且使用WIFI通信在成本上也是非常的实惠,可以扩大产品的利润。2.2.3C语言开发编程技术 只要人们提到面向过程的程序设计语言,大多就会想到C语言,它与c++等面向对象的电脑程序编写设计语言是不一样的。C编程语言创建的主旨是是提供一种新的编程设计语言,无需编译、处理基础内存、生成少许的二进制代码甚至无需执行环境支持即可轻松运行。C语言比汇编语言解决实际问题更快、工作更少、阅读方便、调试便捷、修改与移植,编写代码的质量和汇编语言编写的代码质量却相差无几。汇编语言生成的目标程序代码普遍比C语言生成的目标程序代码高1成到2成左右。因此,C语言设计能够更好写入系统软件。C语言之所以被定名为C是因为C语言起源于基础语言B语言,而B语言则起源于BCPL语言。二十世纪七十年代初,贝尔实验室的肯·汤普森在BCPL语言的基础上,设计了一款十分接近硬件的语言——B语言。而且他通过了B语言编写设计了第一个UNIX操作系统;1971年,丹尼斯M.里奇加入汤普森的开发设计的项目之中,共同研发UNIX操作系统。他的工作内容是改善B语言,让B语言脱胎换骨,逐渐成熟起来;1972年,D.M.Ritchie以B语言为开发语言,成功研发出的一种新的语言,他把BCPL的第二个字母作为这种语言的名称,最初的C语言就这样诞生了;1973年初,C语言大致部分完成。Thompson和Ritchie急不可待地重新使用C语言再次编写UNIX系统。但是编程所产生的快乐让他们已经忘记了他们的最初的目的,专注于UNIX系统的编写和C语言的开发研究。伴随UNIX系统的日益发展和逐渐成熟,C语言自身体系也更加成熟完善。直到现在,各种各样版本的UNIX内核与外围工具支持使用C语言作为最重要的开发编程语言,有大量代码出自了Thompson和Ritchie;整个开发过程中,他们还思索将UNIX移植到其他不同类型的电脑上运行使用。机器语言与汇编语言的不可移植性,对比C编程语言的可移植性使得C语言变得大受欢迎,并且在编写和使用过程更加方便快捷。C语言程序能够在不同架构的处理器上运行,仅仅需要架构的处理器有相关的C编程语言编译器和库,然后C源代码就可以编译成目标二进制文件之后再运行;1982年,C语言创建了一个标准,以使C语言持续茁壮发展。C语言作为本次项目编程设计的优点有:简洁的书写方式、紧凑的整体结构、编译运行方便、使用快捷。C语言仅有9个控制语句与32个关键字。C程序的编写规范是比较随意的,但是编写程序的时候,要特别注意区别英文字母的大小形式,这样可以把低级语言的实用性与高级语言的基本结构及语法整合到一起。丰富多元的运算符。C语言的运算符有34种,其涵盖范围广阔,C编程可以在一定情况下将赋值、括号、强制类型全部当作运算符来使用,不同情景使用不同的运算符就能实现高级语言不能完成的操作运算。数据类型很多。字符型、整型、实数型、结构型、指针型、数组型、公共体型等都是C程序语言的数据类型。它们可用于实现各种各样的数据结构操作。为了提高程序的效率,C语言定义了指针。方便实用的表达方法。C编程语言拥有许多操作符与表达式值的方式,能够给予不同方法获得实际问题的表达式,并且编写程序更加方便和快捷。它的语法自由,程序设计是免费的,较为大多数人可以使用。能够直接查询访问操作硬件与物理地址。因为C语言能够直接查询物理地址,也能够对硬件直接控制,所以C语言不但有低级语言的大部分特性,而且保留了高级语言的特性。可移植性很好。C编译器在不同机器上大部分的代码是通用的,因此C语言程序很容易被移植。在多种环境中可以共用一套C语言编写的程序代码,而不需要稍微改变。具有很强的表达能力。C语言拥有大量的数据结构与操作符。除此之外,它有丰富的图形处理与变换功能,兼容多种驱动器,并且计算、逻辑处理及判断分析功能丰富。3硬件设计3.1总体设计本次设计主要由语音模块、控制处理模块、控制模块、火焰监测模块和报警模块组成如表1所示。由以上模块组成的系统的总体结构框图如图8所示。图8系统总体结构框图表1项目总体硬件说明Pin名称数量注释1树莓派1个CPU2语音模块1个识别语音3456789104路5V继电器1路继电器火焰传感器蜂鸣器电机灯电源其他1个1个1个1个1个5个1个控制灯光和电机控制电机感受温度报警正反转动照明供电电线,外设等3.2语音模块设计该模块具有1个5VTTL串口和16个单片机输入输出端口引线,可以与外部单片机和控制继电器等设备进行通信信息交换。本模块的串口如下图9所示,表2是语音模块引脚说明:从下至上的5根针分别为GND、RXD、TXD、5V、3.3V,其中RXD和TXD为实际内部单片机的串口接收和发射端口,故与外部串口设备连接时要注意RXD接TXD的交叉接法。3.3V的口为输出口,可用于外部设备的供电利用,一般未用上直接忽略不用即可。如与其他单片机或者其他设备的连接时注意串口电平需要为5V,与语音模块电平一致,如电平不一致可加入串口电平转换模块否则将导致通信异常甚至损坏设备端口。表2语音模块引脚说明Pin名称注释1VCC供电3.3V(DC)2VCC供电5V(DC)345TXDRXDGND写数据线串口读数据线串口负极图9语音模块电路原理图图10LD3320芯片原理图3.3控制处理模块的设计本次设计的控制处理模块模块是本次设计的中心和关键,它的主要部分就是树莓派如图12所示,树莓派一共有40个引脚,本次毕业设计不会全部引脚都用,只会用到一部分。树莓派的8引脚和10引脚见图11分别是树莓派串口通信的TXD和RXD引脚,可以实现对外部数据的接受和发送数据到其他设备,本次设计用到的语音模块就是通过RXD和TXD引脚和树莓派的TXD和RDX相连的,就可以实现外部数据的接收与发送,收到信息后树莓派才能对数据进行与内部信息分析处理,根据处理结果从而执行特定子系统或者子程序。在使用树莓派时我一般采用SSH的无线连接模式登录,因为这样在使用的时候会更加的方便,便捷,串口连接登录要每次用杜邦线连接串口,导致操作太繁琐。但是在使用树莓派SSH登录方式之前要先对树莓派进行刷机操作,重置树莓派,这样可以避免在接下来的开发中出现不知的错误,刷机重置之后可以要先进行串口登录,在串口登录时,我们要用到“USB转TTL”接口”,如图5,这样才能使电脑和树莓派之间建立连接进行数据通信,才能把数据给到树莓派,之后树莓派才能登录,在串口登录然后才能进行网络地址的配置,这样才能用SSH网络登录。表3是树莓派3B和树莓派3B+基础性能的比较,其实他们的功能都相差无几,在主要配置上都是差不多的,比如CPU、蓝牙等等,但是在价格方面却差距较大,所以我本次项目的选择主要考虑成本较低的树莓派3B,采用树莓派3B就能实现目标功能,但是如果经济条件允许最好还是选择树莓派3B+,这样在后续的追加开发中存在更大的优势。表4是树莓派连接的引脚说明。图11是树莓派引脚与其他模块之间的连接图,其中引脚29,引脚31,引脚33,引脚35,引脚37与控制模块相连,引脚38与火焰监测模块相连,引脚40与防火报警模块相连。图11控制处理模块原理图表3树莓派3B与3B+对比说明名称Pi3BPi3B+SOCBCM2837BCM2837B0CPU64位1.4GH四核64位1.4GHZ四核蓝牙WIFI有线网络以太网Poe电源管理ICUSB口工作环境价格蓝牙4.1802.11n无线2.4GHZ10/100Mb/s以太网无SMSCLAN95144个USB2.0端口0-50摄氏度低蓝牙4.2802.11AC无线2.4GHZ/5HZ双频wifi前兆以太网通过额外的HAT供电MicrochipLAN75154个USB2.0端口0-50摄氏度高表4树莓派引脚说明Pin名称注释128VCCVCCTXD供电3.3V(语音模块)供电5V(继电器)写入数据91017GNDRXDVCC负极读取数据供电3.3V(火焰传感器)252931333537383940GNDOUT1OUT2OUT3OUT4OUT5IN1GNDOUT6负极控制K1端口(客厅灯)控制K2端口(卧室灯)控制K3端口(泳池灯)控制K4端口(电机)控制K5端口(电机)来自火焰传感器负极控制蜂鸣器图12树莓派详细接口图图13“USB转TTL接口”图图14树莓派引脚图3.4控制输出模块的设计本次设计项目的控制输出模块采用继电器控制,继电器简单来说就是一个具有安全保护的开关,一种电气控制装置的开关,当输入(励磁)的改变满足规定范围时,在电气输出电路中使受控量发生预定阶跃改变的一种器件。它能够反应控制系统与受控系统之间的相互影响。一般在自动控制电子电路中被普遍使用,事实上就是用一个小变量(一般为小电流)来控制一个大变量(一般为大电流)运行而形成的“自动开关”。就是因为这样,使用在电子电路中作用有:安全防护、自动转换电子电路和主动调节等功能。本次设计中采用的是4路5V继电器如图16所示为继电器控制连接图,继电器在IN侧接入电源和收入信号线之后,就可以根据输入信号的状态来控制K侧输出信号的状态,从而达到控制外接设备状态的功能。表5是4路5V继电器引脚说明:4路5V继电器的引脚从左到右分别是GND,IN1,IN2,IN3,IN4,VCC5个端口。图15是1路继电器电路原理图,4路继电器的电路原理图和一路继电器的原理图十分相似。表54路5V继电器引脚说明Pin名称注释1GND负极2IN1控制K1端口3456IN2IN3IN4VCC控制K2端口控制K3端口控制K4端口供电5V端口图151路继电器原理图图16继电器控制原理图3.5火焰监测模块的设计本次毕业设计中防火装置是由火焰传感器组成的。其火焰传感器的作用是检测室内是否失火或者发生火灾,如果发生火灾就会往树莓派中心发送数据,提醒树莓派做出反应,从而帮助人们得知已经发生火灾,注意避险。火焰监测模块里面的传感器是一种能监测760nm~1100nm范围内火焰或波长光源的器件。用打火机来检测火焰到水平距离通常是0.8m。打火机的火焰越大,实际检测的距离就应该越远,60度是它的最佳检测的角度。对火焰类型有着特别灵敏的检测效果,灵敏度能够改变(可通过图10中的蓝色数字电位器旋转调节)。其内部电路原理图如图18所示,表6火焰监测模块引脚说明Pin名称注释1DO数字信号端口2GND负极3VCC供电3.3V(DC)表6标明该模块有3个引脚,其中DO脚是火焰监测模块的关键,在平时DO脚是往树莓派发送“1”信号也就是保持高电平,但是当监测到周围环境有火焰时就会往树莓派发送“0”也就是低电平,触发报警模块动作。该模块与树莓派的连接如图17所示,图17火焰监测模块原理图图18火焰传感器电路原理图3.6防火报警模块的设计本次毕业设计中防火报警模块是由蜂鸣器(图20所示)组成的。其防火报警模块的作用是对失火状态发出警报,提醒居住的人们注意逃离避险。蜂鸣器模块由S8550三极管工作运行,3.3V到5V是其正常工作电压范围。树莓派接受到火灾数字信号之后,就会给防火报警模块传输报警的相关信息,我使用的防火报警模块是低电平触发报警的,表7是防火报警模块的引脚说明,其中当I/O端口输入低电平情况下,防火报警模块里面的蜂鸣器就会发出刺耳的响声,警示人们注意火灾的发生。图19是防火报警模块与树莓派模块的连接。表7蜂鸣器引脚说明Pin名称注释123VCCI/OGND供电3.3V(DC)数字信号端口负极图19报警模块原理图图20蜂鸣器电路原理图4软件设计4.1软件的安装及调试本次设计主要用到了5种软件如表7和图21所示:FileZilla、keil4、SecureCRT、SourceInsight4.0、STC-isp。其中keil4和SourceInsight4.0是编程软件,可以在上面进行C语言的编程,FileZilla是信息传输共享的媒介,在网络条件的允许之下可以把电脑的数据文件传输给树莓派,SecureCRT是树莓派显示窗口,在上面可以进行树莓派内部数据的调试,处理,STC-isp可以进行串口调试,在后期我们需要模拟相关的数据信息传输到树莓派进行调试,以此来验证程序是否正确,这款软件还能够把我们在编程软件上写好的程序烧录到单片机或者是树莓派。表8使用软件说明说明Pin名称注释1FileZilla数据传输2keil4编写编译345SecureCRTSourceInsight4.0STC-isp编译运行编写程序烧录调试图21软件图示图4.2主程序设计本次设计的主程序还是十分简易的如图22所示,整个设计完成后,在给树莓派通电后,就会执行程序,对相应的引脚进行初始化,如果接收到语音模块传输的数据,主程序就会把收到的数据和我们预定的数据进行对比,如果不符合预定,就会继续等待接受后面的数,如果符合预定,就会进入不同的子程序,实现不同的功能。图22主程序流程图4.3监听程序设计本次设计的监听程序如图23所示,指令程序设计的作用就是接受外界的声音信息。该程序设计采用的口令模式,意思是一共要喊出两级口令,首先要喊出一级口令,等识别成功之后才能说出下面一级的口令操作。口令模式可以防止误操作,可以提高一定的安全性和准确性。图23监听程序流程图4.4指令程序设计本次设计的指令程序如图24所示,指令程序设计的作用就是把监听程序输入的信息与我们刚开始录入树莓派的信息进行比较判断,然后根据程序做出相应的数据输出。图24指令程序流程图4.5火灾报警程序设计本次设计的火灾报警程序设计如图25所示,火灾报警程序设计的作用就是监测外界环境温度的变化(是否发生火灾),如果发生火灾,该程序就会接受到火焰传感器发出的动作信号,然后给相应的引脚输出相应的数据,蜂鸣器收到动作信号就会进入报警状态,发出刺耳的声音提醒人们注意身边的环境。图25火灾报警程序流程图4.6网络通信程序设计本次设计的网络通信程序设计如图26所示,网络通信程序设计的作用就是在支持语音通信的同时,能够同时支持网络通信,支持客户端的连接和控制。网络通信是建立在有网络数据连接的前提下的,首先要先给树莓派配置网络,使其连接上网络才能使用,之后把树莓派的IP地址固定,这样方便我们后续的客户端连接和测试。这里我们可以用手机作为我们的客户端去连接树莓派,在客户端根据IP地址连接树莓派之后,我们就可以往、树莓派发送数据,树莓派接收到数据信息之后,就会根据指令程序做出判断,如果合符,就会打开相应的引脚去实现相应的功能。如果不符合,就会停留在待接收状态,继续等待下次数据的到来。图26网络通信程序流程图5硬件测试本次设计的硬件测试主要包括硬件基础测试和硬件总体测试。硬件基础测试就是把硬件买回来之后我们进行的操作:查看硬件是否损坏,接通电源后查看是否通电,查看是否能够输入输出等等。硬件总体测试就是在软件完成后,把单独的硬件组合到一起查看是否通电、是否能够输入输出,查看总体目的是否达到等等。5.1硬件基础测试本次设计的硬件基础测试主要包括继电器的基础测试、树莓派的基础测试和LED灯测试、电机的正反转测试、蜂鸣器的响应测试、火焰传感器基础测试和语音模块模块测试等等。继电器的基础测试就是把继电器通上电源之后能够正常的使用:当信号发生改变,继电器能够改变它的开关状态;树莓派的基础测试:把树莓派通电之后,进行基础设置后,能够顺利的连接到网络,能够接收到输入信号,并且能够输出信号,能够使用操作库等;LED灯测试:通电之后能够正常工作(led灯能够正常工作);电机的正反转测试:电机通电之后能够转动起来,把电源线正负反接之后电机能够实现反向转动;蜂鸣器的基础测试:通电之后,在I/O口出输入低电平之后,蜂鸣器开始响应(报警),在I/O口输入高电平后,蜂鸣器停止响应(报警停止);火焰传感器基础测试:通电之后,正常情况下能够通过I/O口输出高电平,有火焰之后,能够通过I/O口输出低电平;语音模块基础测试:给语音模块通电之后,当外部口令输入时,能够正确的识别语音内容,并做出相应的数据输出,并且能够通过RXD和TXD引脚传输和写入数据。5.2硬件总体测试本次设计的硬件总体测试主要就是在软件调试完成之后,把所有是硬件装置组合成一个整体如图27,然后给整个整体装置通电之后,整个装置能够实现我们的期望和目的效果:当我们对着语音模块说出我们的正确口令时,树莓派能够打开对应的硬件设备;同时,我们能够通过手机APP里面的TCP连接和树莓派进行网络连接,连接之后进入开关界面就可以通过无线网络控制硬件开关。表9是通过语音测试控制硬件开灯、关灯、开窗、关窗的测试说明表,在通常情况下都能够正确识别语音并完成相关的操作,但是不能保证百分之一一百正确识别并操作。 表9语音控制硬件测试结果说明Pin语音名称测试结果1开客厅灯完成2关客厅灯完成345678开卧室灯关卧室灯开泳池灯关泳池灯开窗帘关窗帘完成完成完成完成完成完成6软件测试本次设计的硬件测试主要包括硬件基础测试和硬件总体测试。硬件基础测试就是把硬件买回来之后我们进行的操作:查看硬件是否损坏,接通电源后查看是否通电,查看是否能够输入输出等等。硬件总体测试就是在软件完成后,把单独的硬件组合到一起查看是否通电、是否能够输入输出,查看总体目的是否达到等等。6.1软件分模块程序测试本次设计的软件分模块程序测试主要包括:监听程序测试,火灾报警程序测试,指令程序测试,网络通信程序测试。监听程序测试:程序是否能够编译、执行,执行后是否能够实时监听YS-LDV7模块传输的数据,火灾报警程序测试:程序是否能够编译、执行,执行后是否能够实时检测火焰传感器的输入,并根据输入判断是否执行后续。指令程序设计测试:指令程序就是包含了输出的数据,程序是否能够编译、执行,执行后是否在输入数据之后进行比较,从而决定之后的输出。网络通信程序测试:程序是否能够编译、执行,执行后网络通信程序是否有客户端连接,客户端连接之后,是否有数据输入,是否能够操作控制硬件。6.2整合程序测试本次设计的整合程序设计就是把所有的子程序汇总在一起进行编译,执行。查看子程序之间是否存在问题,编译是否正确,如果不正确,该如何改正,执行是否成功,如果不成功,什么地方有错误,该怎么改正,执行是否达到期望效果,是否能够控制总体硬件工作,总体成功之后,查看有什么地方可以加以改进的,可以更加的简洁,更加的美观。我们可以使用手机APP如图27所示的TCP软件作为客户端连接,图28是主要的操作界面。表10是用TCP手机软件控制硬件的测试结果说明,能够完成对硬件的控制,并且手机软件控制的效果比语音控制的效果更好,出错率几乎为零。图27手机APP图标图图28连接APP开关控制界面 表10TCP手机软件控制硬件测试结果说明Pin操作名称测试结果1开客厅灯完成2关客厅灯完成345678开卧室灯关卧室灯开泳池灯关泳池灯开窗帘关窗帘完成完成完成完成完成完成7结果与总结本次设计已经基本完成了,在整个过程中,其实还是很辛苦的,虽然很辛苦,但是就目前的效果来看还是可以的。整个过程不乏出现烦躁的时候,你会因为软件的安装大费苦心,在网站上海量搜索软件安装的教程,并仔细阅读它,然后再去亲自尝试。你会因为程序的错误废寝忘食的调试,改正,只为找到错误,找到代码调试成功的喜悦感和成功感。你会因为硬件的连接错误,而找不到到底哪里出现错误,而产生心情烦躁。虽然整个过程是无聊、枯燥的,但是自己也在这个过程中学到许多东西,比如怎么去查找自己不懂知识,如何有效率的学习,怎么向别人请教问题,怎么保持自己的心态,还有怎么和比人讨论问题等等。在这期间我大致完成并且改善了通过语音控制灯光的开关与语音微控电机的正反转动来带动窗帘的开关,并且给整体项目配置了火光报警装置。参考文献[1]张永安.基于树莓派的智能家居系统[J].电子世界,2016.[2]马振,宋雅庆,王珂,等.低成本智能家居系统设计[J].自动化仪表,2015.[3]许亚迪,张凯,张兴.基于树莓派的简易电机控制系统设计[J].《电脑迷》2018.[4]崔阳,张维华,白云峰.一种基于Arduino的智能家居控制系统[J].电子技术应用,2014.[5]李社蕾,周磊,刘杰,等.基于物联网的智能家居系统[J].物联网技术,2014.[6]汪开元,胡大春.基于树莓派的智能家居语音控制系统[J].科技与创新,2017.[7]安莹,吴先梅,蓝俊欢,等.基于树莓派的智能语音控制系统的设计[J].电子世界.2018.[8]张伟.面向智能家居的嵌入式语音控制系统的研究[D].郑州大学,2015.[9]息晓静,林坤辉,周昌乐,等.语音识别关键技术研究[J].计算机工程与应用,2006.[10]苏祥林,陈文艺,闫洒洒.基于树莓派的物联网开放平台[J].电子科技,2015.[11]李文胜.基于树莓派的嵌入式Linux开发教学探索[J].电子技术与软件工程,2014.[12]靳祺桢.刍议树莓派在物联网技术中的应用[J].电子技术与软件工程,2016.[13]谢卫华,宋蛰存.家庭智能防火防盗系统[J].自动化仪表,2010.[14]SimonMonk著;姜斐祚译RaspberryPiPython编程入门科学出版社,2014.2.1.[15]MaikSchmidt著;王峰、王江伟、王汝波译RaspberryPi快速入门指南科学出版社,2014.1.[16]崔武子,付钪,鞠慧敏.C语言程序设计实践教程[M].清华大学出版社,2005
附录本次程序设计串口通信基本完成,准备开始语音识别代码的修改然后烧录到语音模块(这部分采用源码进行修改,使其识别后传输我想要的数据)和网络通信的编写。其他部分的代码有待完善,主函数代码如下:/*建立全局变量*/intc_fd;structEquip*tmp=NULL;structEquip*equiphead=NULL;structInputcommand*voicephead=NULL;structInputcommand*sockethand=NULL;structInputcommand*voicehand=NULL;主程序:intmain(){ pthread_tvoice_thread; pthread_tsocket_thread; pthread_tfire_thread; if(wiringPiSetup()==-1){ return-1; } //输入指令 voicephead=addvoicecontrol(voicephead); voicephead=addsocketcontrol(voicephead); //输出设备初始化 equiphead=addonelight(equiphead); equiphead=addtwolight(equiphead); equiphead=addwaterlight(equiphead); equiphead=adddianshan(equiphead); equiphead1=addfire(equiphead1); //语音线程的建立 pthread_create(&voice_thread,NULL,voicethread,NULL); //按键线程的建立 pthread_create(&socket_thread,NULL,socketthread,NULL); //防火报警线程的建立 pthread_create(&fire_thread,NULL,firethread,NULL); //等待线程指令结束 pthread_join(voice_thread,NULL); pthread_join(socket_thread,NULL); pthread_join(fire_thread,NULL); return0;}//防火报警程序模块:void*firethread(void*data){ equiphead1->equipInit(equiphead1->number); while(1){ if(digitalRead(equiphead1->number)==0){ equiphead1->equipInit1(equiphead1->number1); equiphead1->open(equiphead1->number1); }else{ equiphead1->equipInit1(equiphead1->number1); equiphead1->close(equiphead1->number1); } }}//语音控制程序模块:void*voicethread(void*data){ intnread; voicehand=findcommandname("voice",voicephead); if(voicehand==NULL){ printf("finderror\n"); pthread_exit(NULL); } else{ if(voicehand->Init(voicehand)==0){ printf("Initerror\n"); pthread_exit(NULL); } else{ printf("%svoicesuccess\n",voicehand->commandname); } while(1){ nread=voicehand->getcommand(voicehand); if(nread==0){ printf("nodatavoice\n"); }else{ printf("sh:%s\n",voicehand->command); tmp=findEquipname(voicehand->command,equiphead); if(tmp!=NULL){ if(strcmp(tmp->equipname1,voicehand->command)==0){ tmp->equipInit(tmp->number); tmp->open(tmp->number); if(tmp->equipInit1!=NULL){ tmp->equipInit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快递安检机操作安全规程
- 2026年农业种植技术员实操技能考核试卷及答案
- CRRT局部枸橼酸抗凝突发低钙急救共识
- 湿式除尘器安全操作规程
- PCB开料岗位技能考核试题(含详细答案)
- 职业性哮喘脱离接触后随访规范共识
- 2026年安全环保知识竞赛考试试题(附答案)
- 2026年广播电视播音员主持人资格(广播电视基础知识)自测试题及答案
- 全员安全生产责任清单落地方案
- NSATP网络安全从业人员能力测评模拟试题(含详细答案解析)
- 超星尔雅学习通《动手学AI:人工智能通识与实践(社科版)》2026章节测试及答案
- TCECS 1273-2023 冶炼渣骨料应用技术规程
- 二年级数学应用题题型及解答技巧
- 隧道开挖清包工合同协议
- 摩托三力测试试题及答案
- 第四十课-椭圆及其标准方程省公开课金奖全国赛课一等奖微课获奖课件
- 卡通小学生校园用电安全教育作品
- 中医中药辨识
- 我国牛病流行的现状及对策
- ifix培训教程课件
- 《新课程学习辅导》历史九下 统编版 答案
评论
0/150
提交评论