基于语音控制的智能家居实现

前言:因为大三的时候需要交一个物联网通信以及Zigbee的俩门课设,所以花了半天的时间做了一个基于语音控制的智能家居,在这里记录一下以及分享给一些在校学生作为分享,因为那段时间忙着比赛所以花了很短的时间,写的比较简单,现在也忙着工作上班所以没啥时间对代码进行优化调整。

系统介绍

1、系统介绍

到目前为止,我实现的版本有挺多,分别是:
	(1)cc2530作为终端节点通过zigbee协议实现每个传感器以及模块的组网、在通过串口与esp32进行通信,es32作为网关通过mqtt编程转发到mosquitto(MQTT的代理服务器)然后安卓订阅或者推送与底层实现通信。
	(2)esp32对传感器以及模块进行数据采集、模块驱动然后作为网关通过mqtt的推送以及订阅到mosquitto在与android进行通信
	(3)使用protues仿真通过Arduino对模块和传感器进行驱动和数据采集在通过串口模块与linux网关(linuxc 进行MQTT编程、串口编程、数据库编程等)把数据转发到mosquitto中,然后与Android进行通信。

因为先介绍最简单的,所以这里先介绍通过ESP32作为终端节点对传感器和模块进行数据采集和模块驱动以及网关的实现对数据进行转发以及接收。这里有个当时拍的视频分享给大家看看:

基于语音控制的智能家居

2、功能需求分析

1)室内温湿度显示
       使用DHT11模块采集室内温湿度,使用ESP32开发板通过MQTT协议推送到MQTT代理服务器,安卓通过MQTT编程订阅推送的主题,使用多线程更新界面UI后将收到的温湿度显示在Textview中。

                                      图2-1温湿度显示流程图

2)鱼缸水位测量
       使用水位测量模块通过模数转换采集鱼缸中的水位高度, ESP32开发板通过MQTT协议推送到MQTT代理服务器,安卓通过MQTT编程订阅推送的主题,然后将收到的水位数据通过线性算法,选取模块测量最大值与模块水位测量最小值进行数学公式推算,使水位与输出值呈线性关系,使用多线程更新界面UI。
在这里插入图片描述
                                      图2-2鱼缸水位高度显示流程图

3)模块控制
       软件层使用Android进行MQTT网络编程向MQTT服务器推送控制底层的指令,esp32订阅跟Android端推送相同的主题后接收相应的指令然后对模块进行驱动。
在这里插入图片描述
                                      图2-3模块控制图

3、系统总体结构

在这里插入图片描述
       系统通过DHT11模块、水位测量模块分别将室内的温湿度、鱼缸中水位高度采集数据到esp32中,在通过esp32中进行MQTT网络编程,通过mqtt协议以及主题为’home’发送到Mosquitto服务器中,安卓同样进行MQTT网络编程通过订阅与esp32 publish相同的主题home‘’后,在进行多线程的编程将收到的温湿度、以及水位高度更新在UI界面。
       安卓通过publish通过主题’control’将控制底层模块的命令推送到服务器Mosquitto中,在通过esp32订阅主题’control’将收到控制底层的命令进行模块驱动。
       这是系统大概的实现,作为简单的版本还是比较容易实现的,当时大概花了半天不到就实现了整个系统。

4、系统实现介绍

(1)编译工具以及环境介绍

1)硬件部分:

      基于mircopython开发的IDE:uPyCraft_v1.1
      esp32-01s mircopython固件:esp32-micropython
      连接esp32的电脑驱动:CP210x_Windows10_Drivers
      通信猫串口以及网络调试助手:可以在Android端没有实现之前使用此软件对订阅以及推送相同主题的开发板进行网络测试。下载地址

2)服务器部分:

      因为需要对底层推送的消息以及订阅软件层消息进行转发所以需要用到mosquitto代理服务器。mosquitto此开源的,有linux版本,winddows版本,可以搭建在自己的电脑端,或者阿里云等云服务器上。如果搭建在自己的电脑的话就需要Android、esp32、mosquitto同时运行在一个局域网上面了。搭建在阿里云的话就无需要考虑运行场景了有网络就行。具体搭建方法我之前写了一篇博客:阿里云ubuntu系统搭建MQTT服务器代理Mosquitto

3)软件部分:

      Android开发环境:AndroidStudio 3.2
android3.0以上的版本好像是自带JDK的,所以无需重新配置JAVA环境。
      Android调试:因为使用了语音软件,可能虚拟机就实现不了模拟了需要用到android真机来实现,我记得代码里面是没有实现动态权限申请的,那么就需要各位使用Android 6.0系统以下的,或者自行加入动态权限申请,否则会闪退。

5、总结

本编文章就介绍到这里,因为要分享三个版本所以可能会陆续的分开几篇文章来写,但是Android端的实现可能就只有一遍,因为都是通过mqtt协议进行通信,所以没啥好更改的,只需要推送和订阅的主题与底层订阅和推送的主题相同即可。大概未来的文章会以下面的形式进行介绍:

基于语音控制的智能家居esp32篇(1)–ESP32的实现

基于语音控制的智能家居esp32篇(2)–Android的实现

基于语音控制的智能家居Arduino篇(3)–Arduino在protues的仿真实现

基于语音控制的智能家居Arduino篇(4)–Linux C网关的实现

基于语音控制的智能家居Zigee篇(5)–cc2530的实现

基于语音控制的智能家居Zigee篇(6)–esp32的实现

 
 
 
 
        可能大概就是这几篇了,之所以把Zigbee版本的实现放到最后是因为我觉得,Zigbee的实现算是有难度了,我当时也没玩明白,不能深入的理解。而且现在使用Zigbee协议进行组网通信也不会特别多,大概会在几个星期内分享完几篇文章,因为平时要上班所以时间不能控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值