一、引言

1.项目设计需求

       智能家居系统是利用先进的计算机技术、网络通讯技术、智能云端控制、,融合个性需求,将与家居有关的各个子系统如安防、灯光控制风扇控制、场景联动、采暖、健康保健、卫生防疫、等有机地结合在一起,通过网络化综合智能控制和管理

1.1项目设计的背景

       人工智能技术的迅猛发展在很大程度上改变和影响着社会各个领域的形态与进步。随着互联网的发展,大数据、云计算和物联网等相关技术会陆续普及应用,在这个大背景下,智能化必然是发展趋势之一近年来,中国人工智能产业发展迅速,语音识别和计算机视觉成为国内人工智能市场最成熟的两个领域。自2015年开始,中国人工智能产业规模逐年上升,据中国信通院数据,2015年到2018年复合平均增长率为54.6%,高于全球平均水平(约36%)。2018年,我国人工智能产业市场规模已达到415.5亿元。随着人工智能专用芯片的突破、人工智能应用范围的不断扩大,以及众多人工智能创业公司的诞生和成长,2019年我国人工智能产业规模持续增长,2019年市场规模达到554亿元。

1.2 项目设计目的

        通过本次课程设计,希望能了解本专业的发展前景,加深对本专业的理解。了解编程的发展前景。学习到一定的编程能力,拓展思维,提高对本专业的兴趣。了解未来的前进方向,发展方向。明确自己的目标。

2.项目功能要求

       本次智能家居项目要求利用互联网技术,实现远程监控家里情况。能够对家里的温度、湿度进行监控。能够远程控制家内电器。

2.1 远程监控

       要求实现远程监控功能,在家里安装摄像头,通过手机app能够远程实时监控家里情况,并且能够实时拍照远程报警功能。

2.2 控制家里电器、检测温度

       要求能实现远程控制家里电器,能够开关电灯。在手机app上控制电器。实时检测温度,温度过高会自动报警。及时防止安全隐患。

二、项目方案设计

1. 开发平台

本次设计基于虚拟机上的Linux系统和QT平台。

1.1 虚拟机上的Linux系统

        Linux系统全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统Linux系统,本次实验用于主要系统代码的开发。

1.2 QT软件

        Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,Qt是面向对象的框架,使用特殊的代码生成扩展以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

本次实验我们用QT软件实现ui界面的设计。

2. 开发语言

C语言和C++语言

2.1 C语言

        Linux操作系统是用C语言、汇编语言编写的。但这次在Linux上编程我们使用c语言进行。C语言更适合Linux,它是Linux的“母语”,这也是Linux这个开源环境和本身机制所导致的。

2.2 C++语言

      C++语言是C语言的继承,这次设计少量使用c语言,大部分时候使用C++语言。相比于C语言,C++更加方便,可以调用很多函数,不需要每个都我们自己编写。调用别人的函数可以让我们站的更高,也更加方便我们的设计。

3 .硬件开发平台

计算机和嵌入式开发箱

3.1 计算机

      开发中我们使用计算机中的VMware软件模拟Linux系统进行基本的编程调试,其后用计算机中的QT软件编写ui界面,对app界面进行美化设计。

3.2 嵌入式开发箱

       开发箱中有带相机的机械臂、小风扇、继电器、蜂鸣器、温度传感器等硬件。用嵌入式人工智能箱可以模拟家里情况,把程序添加到开发箱中以模拟智能家居实现情况。机械臂模拟家里的摄像头,风扇模拟家里电器,继电器模拟家里电灯,温度传感器可以检测温度,蜂鸣器模拟家里报警器。

4.设计实现方案

4.1 视频监控

       通过嵌入式开发箱中的机械臂模拟家里安装的摄像头,通过程序编写控制摄像头的开关,拍照。并且能传输到开发的app上实现远程监控功能。

4.2 温度检测及报警

通过嵌入式开发箱中的温度传感器实现温度检测,温度过高实时报警。

5.软件流程图

流程图如下:

三、项目设计实现

3.1 主程序设计

QT       += core gui
QT       += multimedia
QT       += multimediawidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    camera.cpp \
    insert_id.cpp \
    main.cpp \
    login_dialog.cpp \
    mainwindow.cpp \
    mythread.cpp \
    player.cpp \
    slide.cpp \
    picture_mainwindow.cpp \
    http.cpp \
    image.cpp \
    audio.cpp \
    _http.cpp \
    speechsend.cpp \
    image_.cpp \
    face.cpp

HEADERS += \
    camera.h \
    insert_id.h \
    login_dialog.h \
    mainwindow.h \
    mythread.h \
    player.h \
    slide.h \
    picture_mainwindow.h \
    http.h \
    image.h \
    audio.h \
    _http.h \
    speechsend.h \
    image_.h \
    face.h

FORMS += \
    camera.ui \
    insert_id.ui \
    login_dialog.ui \
    mainwindow.ui \
    picture_mainwindow.ui \
    face.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    image.qrc

3.2 模块设计

3.2.1摄像头模块:

while(1)
{
ret = camera dqbuf(fd, (void **)&jpeg_ ptr, &size, &index);
if(ret== -1)
return -1;
printf("taking one!: %d\n", size);
char buf[10]= {0};
sprintf(buf, "%d", size);
write(clientfd, buf, 10);
write(clientfd, jpeg. _ptr, size);

四、总结

Logo

鸿蒙生态一站式服务平台。

更多推荐