0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于QT的智慧家庭控制中心

ElfBoard 2024-02-21 13:42 次阅读

今天非常荣幸地向各位小伙伴展示并分享共创社中一位成员精心完成的项目成果,该项目依托ElfBoard开发板为核心硬件平台,采用Qt框架构建了一套全面的智慧家庭控制中心系统。该系统由四大核心功能模块整合而成:网络通信接口、气象信息展示、室内环境监控及家居智能管理。

网络连接模块负责自动扫描并接入周边可用的Wi-Fi网络,确保系统与外部数据源的稳定互联。

天气预报模块在成功建立网络连接后,能够实时获取并显示指定地理位置的天气状况信息,为用户提供便捷的气象服务。

室内环境监测模块借助集成的温湿度传感器设备,实现对居住空间内部环境参数的实时监测和精准记录,以维护理想的居住环境条件。

家居控制中心作为系统的核心交互部分,具备对诸如LED照明设备以及蜂鸣器等家居设施的智能化管控能力,用户可通过该中心轻松实现远程操控与自动化场景设定。

项目软硬件需求

1、ELF 1开发板

2、4.3英寸电容

3、QT

4、实况天气接口API开发指南 未来一天天气预报api - 天气API

5、Wi-Fi(RTL8723DU)

项目功能

1、网络连接

网络连接部分的UI如图所示:

wKgaomXViFaAZQUlAABK7lvD7xM572.png

本项目使用wpa_supplicant工具连接Wi-Fi,该工具是ElfBorad开发板的操作系统自带的。扫描附近的Wi-Fi,然后将数据存储到wifiname.txt文件中,核心代码如下:

​ system("killall wpa_suppicant"); qDebug()<<"killall wpa_suppicant"; system("rm -rf /var/run/wpa_supplicant"); qDebug() << "rm /var/run/wpa_supplicant"; QThread::msleep(1000); system("killall udhcpc"); qDebug() << "killall udhcpc"; QThread::msleep(1000); system("wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B"); qDebug() << "wpa_supplicant"; QThread::msleep(1000); system("killall wpa_cli"); QThread::msleep(1000); system("wpa_cli -i wlan0 scan"); QThread::msleep(1000); system("wpa_cli -i wlan0 scan_results > ./wifilist"); QThread::msleep(1000); system("cat wifilist |awk -F'\t' '{print $5}'> wifiname.txt");

该部分的代码的作用是读取wifiname.txt文件,然后将信息更新到UI中。

while (j<=12) { j++; str = in.readLine(); qDebug()setVisible(true); ui->Wlan1->setText(str); break; case 2:ui->Wlan2->setVisible(true); ui->Wlan2->setText(str); break; case 3:ui->Wlan3->setVisible(true); ui->Wlan3->setText(str); break; case 4:ui->Wlan4->setVisible(true); ui->Wlan4->setText(str); break; case 5:ui->Wlan5->setVisible(true); ui->Wlan5->setText(str); break; case 6:ui->Wlan6->setVisible(true); ui->Wlan6->setText(str); break; case 7:ui->Wlan7->setVisible(true); ui->Wlan7->setText(str); break; case 8:ui->Wlan8->setVisible(true); ui->Wlan8->setText(str); break; case 9:ui->Wlan9->setVisible(true); ui->Wlan9->setText(str); break; case 10:ui->Wlan10->setVisible(true); ui->Wlan10->setText(str); break; case 11:ui->Wlan11->setVisible(true); ui->Wlan11->setText(str); break; case 12:ui->Wlan12->setVisible(true); ui->Wlan12->setText(str); break; default:break; } }

该部分代码的作用是在用户选择好连接的wifi并输入密码后连接Wi-Fi。

char set_ssid[64]; char set_password[64]; char select_wlan[64]; if (ui->wifimima->text().isEmpty()) { QMessageBox::warning(this,tr("Connect information"), tr("密码不能为空")); } else { int i =get_i(); sprintf(set_ssid,"wpa_cli -i wlan0 set_network %d ssid '"%s"'",i,wifiName.toLatin1().data()); sprintf(set_password, "wpa_cli -i wlan0 set_network %d psk '"%s"' ",i,ui->wifimima->text().toLatin1().data()); qDebug() << set_password; sprintf(select_wlan, "wpa_cli -i wlan0 select_network %d ",i); system(set_ssid); system(set_password); system("wpa_cli -i wlan0 list_network"); system(select_wlan); system("udhcpc -i wlan0 -B");

2、天气预报

该页面的UI如图所示:

wKgaomXViQ6AOsgJAAC72x-iRUk902.png

准备工作

在实况天气接口API开发指南 未来一天天气预报api - 天气API网站注册,注册好后可以看到如下信息,每个邮箱号有3000次的免费的请求机会。

wKgZomXViSKAZ--WAABlr88huvM037.png

这里使用的是V61接口,https://tianqiapi.com/index/doc?version=v61,该接口下的天气信息的JSON格式如下所示:

​{ "cityid":"101271201", #城市编号 "date":"2020-07-15", "week":"星期三", "update_time":"10:15", #更新时间 "city":"内江", #城市名称 "cityEn":"neijiang", "country":"中国", "countryEn":"China", "wea":"阴", #实时天气情况 "wea_img":"yin", "tem":"25", #实时温度 "tem1":"29", #高温 "tem2":"23", #低温 "win":"西风", #风向 "win_speed":"2级", #风力等级 "win_meter":"小于12km/h", #风速 "humidity":"97%", #湿度 "visibility":"24.22km", #能见度 "pressure":"961", #气压 "uvIndex":"3", #紫外线等级 "uvDescription": "中等",#紫外线描述 "air":"15", #空气质量 "air_pm25":"8", #pm2.5 "air_level":"优", "air_tips":"空气很好,可以外出活动,呼吸新鲜空气,拥抱大自然!", "rain_pcpn":"2.5",#降雨量2.5mm "alarm":{ "alarm_type":"暴雨", #预警类型 "alarm_level":"橙色", #预警等级 "alarm_content":"内江市气象台7月15日5时23分发布第16号暴雨橙色预警信号: 预计我市市中区部分地方3小时降雨量将达50毫米以上,并伴有雷电和阵性大风,请加强防范强降水、雷电和大风等带来的危害。 (预警信息来源:国家预警信息发布中心)" #预警描述 }, "aqi":{ #空气质量指数详情 "air":"15", "air_level":"优", "air_tips":"空气很好,可以外出活动,呼吸新鲜空气,拥抱大自然!", "pm25":"8", "pm25_desc":"优", "pm10":"10", "pm10_desc":"优", "o3":"47", "o3_desc":"优", "no2":"12", "no2_desc":"优", "so2":"8", "so2_desc":"优", "co": "1", "co_desc": "优", "kouzhao":"无需戴口罩", "waichu":"适宜外出", "yundong":"适宜运动", "kaichuang":"适宜开窗", "jinghuaqi":"关闭净化器", "cityid":"101271201", "city":"内江", "cityEn":"neijiang", "country":"中国", "countryEn":"China" } }

请求数据

请求天气数据的代码如下所示,appid后面的数字和appsecret是在注册时网站给的密匙。

char quest_array[256] = "http://v1.yiketianqi.com/api?unescape=1&version=v61&appid=19311841&appsecret=nAGo24xi&city="; QNetworkRequest quest; sprintf(quest_array, "%s%s", quest_array, cityStr.toUtf8().data()); quest.setUrl(QUrl(quest_array)); quest.setHeader(QNetworkRequest::UserAgentHeader, "RT-Thread ART"); manager->get(quest); /*发送get网络请求*/

我们在发送完请求信息后,会获得回复信息,信息是json格式,我们只需要解析该json数据就行。主要代码如下所示。

QJsonDocument json_recv = QJsonDocument::fromJson(all.toUtf8(), &err);//解析json对象 if (!json_recv.isNull() && err.error == QJsonParseError::NoError) { QJsonObject object = json_recv.object(); QStringList keys = object.keys(); foreach (const QString& key,keys){ qDebug() << "Key:" setText(weather_type); ui->label_temperature_2->setText(wendu); ui->label_wind_2->setText(fengli); ui->label_kongqizhiliang->setText(kongqizhiliang); ui->label_uv->setText(ziwaixian); ui->label_recommend_2->setText(tuijian); }

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

3、室内环境监测

该部分的UI如图所示:

wKgZomXVi7-AS8T5AAC-Mb3rGhE287.png

该部分的代码比较简单,主要是新建立一个线程,然后不停的读取传感器的信息,然后将相关的信息展示即可。核心代码如下:

void CollentdataThread::run() { int fd = aht20_init(); emit send(temp,hum); while (1) { /*read temp data*/ aht20_read(fd); emit send(temp,hum); sleep(2); } }

4、家居控制中心

该部分的UI如图所示:

wKgaomXVi-qAfLNGAAB0ULNczjE805.png

该部分主要是利用为了充分的展示开发板上的硬件而制作,我们假设3个lLED灯就是我们家里的灯,蜂鸣器可以假设为报警器。本身而言没什么。

软件编译

在ElfBoard的官方教程中有详细介绍如何在ELF 1开发板上编译QT程序。在这里需要强调一点的是,在使用arm-gcc编译完成后的可执行文件是不能在X86的电脑上运行的,需要先在电脑上调试软件,成功之后,再使用arm-gcc编译,然后移植到ELF 1开发板上。

项目总结

这款智慧家庭的APP深度整合了ELF 1开发板硬件资源,包括Wi-Fi模块、LED照明系统、温湿度传感器以及蜂鸣器等组件。项目构建过程中巧妙的利用了Wi-Fi,特别定制了一个功能完备的天气预报界面,用户通过该界面能够轻松获取不同地区的实时天气信息,从而将智慧佳通控制范围拓展至环境监测及在线信息服务领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5103

    文章

    19268

    浏览量

    309990
  • 开发板
    +关注

    关注

    25

    文章

    5210

    浏览量

    99117
  • Qt
    Qt
    +关注

    关注

    1

    文章

    310

    浏览量

    38275
收藏 人收藏

    评论

    相关推荐

    Qt Group发布Qt Accelerate,加速数字产品开发进程

    Qt Group近日正式推出了Qt Accelerate,这是一款专为快速构建数字应用而设计的解决方案,旨在满足工业制造、移动出行、消费类电子等多个领域的需求。 Qt Accelerate基于
    的头像 发表于 01-13 11:19 267次阅读

    告别繁琐!盾华物联网智慧控制中心,让中小型控制中心建设更简单!

    告别繁琐!盾华物联网智慧控制中心,让中小型控制中心建设更简单!
    的头像 发表于 11-29 09:41 281次阅读
    告别繁琐!盾华物联网<b class='flag-5'>智慧</b><b class='flag-5'>控制中心</b>,让中小型<b class='flag-5'>控制中心</b>建设更简单!

    开放式激光振镜运动控制器在Ubuntu+Qt下CAD图形标刻

    开放式激光振镜运动控制器再Ubuntu+Qt下CAD图形标刻
    的头像 发表于 09-18 15:12 438次阅读
    开放式激光振镜运动<b class='flag-5'>控制</b>器在Ubuntu+<b class='flag-5'>Qt</b>下CAD图形标刻

    智慧部队建设整体解决方案

    通常采用“一个中心、多个平台、多个应用”的体系架构。其中,“一个中心”指的是智慧部队指挥控制中心,作为整个系统的核心,负责数据的处理、分析和决策支持;“多个平台”则包括各类信息化平台,
    的头像 发表于 09-06 15:18 462次阅读

    Raspberry Pi 5开发实战:家庭多媒体和控制中心搭建

    自问世以来,树莓派(Raspberry Pi)已有超过十年的发展历程。它在中国拥有一个活跃的社区和成熟的生态系统。无论你想用树莓派实现何种创意,市面上都能找到丰富的配件。遇到难题时,网上的解答资源也十分充足。长期以来,树莓派一直是DIY爱好者、教育者和开发者的首选单板计算机。
    的头像 发表于 08-08 10:09 2932次阅读
    Raspberry Pi 5开发实战:<b class='flag-5'>家庭</b>多媒体和<b class='flag-5'>控制中心</b>搭建

    【Raspberry Pi 5开发板试用】树莓派5---家庭多媒体和控制中心

    和便捷,也使得用户能够更加专注于创意实现和项目开发,而不是网络配置的繁琐细节。对于许多用户来说,这无疑是一个令人惊喜的发现,极大地丰富了树莓派的使用场景。 mobaxterm效果: 家庭多媒体和控制中心
    发表于 08-01 17:40

    智慧运营中心如何实现运维管理?

    智慧运营中心 作为建筑物管理和运营的关键枢纽,通过整合先进的技术和数据分析手段,实现了对建筑设备和环境的全面监测和智能化控制。在实现运维管理方面,智慧运营
    的头像 发表于 06-24 15:29 579次阅读
    <b class='flag-5'>智慧</b>运营<b class='flag-5'>中心</b>如何实现运维管理?

    雷曼光电助力内蒙古华电新能源智慧运营中心高效管理

    近日,在内蒙古华电新能源智慧运营中心,由雷曼光电设计研发制造的超100㎡雷曼COB超高清节能冷屏正式投入使用,工作人员正通过LED大屏记录运行数据。内蒙古华电新能源智慧运营中心位于和林
    的头像 发表于 06-20 14:21 934次阅读

    英威腾数据中心解决方案实现安全升级和高效运转

        近日,英威腾的威智iWit系列中小型一体化数据中心解决方案成功应用于江西省疾病预防控制中心,这一解决方案为江西省疾病预防控制中心的数字化机房提供了全方位的关键基础设施支撑,实现了安全升级
    的头像 发表于 06-17 17:09 809次阅读

    什么是智慧运营中心IOC?功能有哪些?

    随着智能时代的到来,越来越多的行业管理者开始使用先进的运营管理中心,以前的已经不能够满足于需求了。那么,什么是智慧运营中心IOC?功能有哪些?想必很多人都还不太了解,今天古河云科技就来给大家聊一聊
    的头像 发表于 05-23 14:35 1158次阅读
    什么是<b class='flag-5'>智慧</b>运营<b class='flag-5'>中心</b>IOC?功能有哪些?

    导弹试射控制系统的故障特性及机理分析

    模块作为整个系统的管理和控制中心,是用户与模块之间的桥梁。它可以通过一系列不同级别的菜单和表格来实现。
    的头像 发表于 04-15 11:13 615次阅读
    导弹试射<b class='flag-5'>控制</b>系统的故障特性及机理分析

    智慧物流中心建设:讯维分布式智慧终端技术的核心作用

    智慧物流中心的建设中,讯维分布式终端技术发挥着核心作用,主要体现在以下几个方面: 首先,讯维分布式终端技术为智慧物流中心提供了高效、稳定的数据处理和分析能力。物流
    的头像 发表于 04-08 15:29 394次阅读

    智慧物流中心建设:分布式智慧终端技术的核心作用

    智慧物流中心的建设中,讯维分布式终端技术发挥着核心作用,主要体现在以下几个方面: 首先,讯维分布式终端技术为智慧物流中心提供了高效、稳定的数据处理和分析能力。物流
    的头像 发表于 04-07 15:29 418次阅读

    Qt上位机开发实战案例

    Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。 Qt Creator可带来两大关键益处: 提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触
    的头像 发表于 03-13 12:31 3051次阅读
    <b class='flag-5'>Qt</b>上位机开发实战案例

    浅谈物流中心园区智慧用电系统的设计

    浅谈物流中心园区智慧用电系统的设计 张颖姣 安科瑞电气股份有限公司 上海嘉定201801 摘 要:烟草物流配送中心储存的卷烟具有价值高、易燃等特点,因此加强烟草物流配送中心的防火是安防
    的头像 发表于 03-12 10:24 458次阅读
    浅谈物流<b class='flag-5'>中心</b>园区<b class='flag-5'>智慧</b>用电系统的设计