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,特别定制了一个功能完备的天气预报界面,用户通过该界面能够轻松获取不同地区的实时天气信息,从而将智慧佳通控制范围拓展至环境监测及在线信息服务领域。

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

    关注

    5017

    文章

    18501

    浏览量

    293405
  • 开发板
    +关注

    关注

    25

    文章

    4613

    浏览量

    95152
  • Qt
    Qt
    +关注

    关注

    1

    文章

    299

    浏览量

    37467
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    Qt上位机开发实战案例

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

    3562-Qt工程编译说明

    本文档主要说明如何将已有 Qt 工程进行编译,生成可在评估板上正常运行的 ARM 端 Qt 程序镜像。 Qt 开发环境主要包括 Qt Creator 工具、X86 端
    的头像 发表于 03-05 09:19 237次阅读
    3562-<b class='flag-5'>Qt</b>工程编译说明

    使用USB控制中心固化FLASH卡住了的原因?

    我现在在用FX3 控制中心编程SPI FLASH(W25Q32JVSSIQ),但是一直停留在programing of spi flash in progress... ;当我用逻辑分析仪抓取数据
    发表于 02-27 07:11

    在win10系统上,通过控制中心下载MDK编译的.hex后,硬件能被识别,但读写无反应,usb不能工作的原因?

    在win10系统上,通过控制中心下载MDK编译的.hex后,硬件能被识别,但读写无反应,usb不能工作;win7上操作正常,请问这是什么问题呢?
    发表于 02-27 06:48

    智能灯光控制系统怎么布线 智能灯光控制系统的组成

    智能灯光控制系统是一种应用于家庭、办公室、商业建筑等场所的智能化设备,能够实现灯光的智能控制和管理。在布线方面,智能灯光控制系统主要包括控制中心
    的头像 发表于 01-22 11:28 1218次阅读

    运营商如何引领智慧家庭市场潮头?

    近几年的智慧家庭市场发展较好,但在互联互通的体验上仍是一盘散沙,大部分厂家都是各做各的智能单品研发,尽管可用手机APP或语音助手来控制,但缺乏系统级场景联动,而且市面较少看到可直接互联其他品牌的系统的智能家居方案
    的头像 发表于 01-17 16:21 532次阅读

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介绍一下QT串口通信的简单使用.
    的头像 发表于 01-15 09:27 930次阅读
    <b class='flag-5'>QT</b>串口通信的简单使用

    智控中心:智能工厂规划和建设的核心

    随着产业数字化转型的持续发展,数据成为关键的生产要素,而肩负着数据的计算、存储和转发的智慧数据控制中心,是智能工厂规划和建设的基础设施,是实现生产自动化、管理数字化、运营智能化、决策精准化的关键
    的头像 发表于 10-26 11:41 427次阅读
    智控<b class='flag-5'>中心</b>:智能工厂规划和建设的核心

    峰会回顾第29期 | Qt For OpenHarmony

    演讲嘉宾 | 蔡万苍 回顾整理 | 廖   涛 排版校对 | 李萍萍 嘉宾简介 蔡万苍,13年C++/Qt开发相关工作经验,曾任职Qt公司,担任技术支持、Qt咨询师,协助国内多家Qt
    的头像 发表于 09-07 08:45 754次阅读
    峰会回顾第29期 | <b class='flag-5'>Qt</b> For OpenHarmony

    会议控制中心解决方案

    “会议控制中心是政府主要领导人举行会议的主要场所,所以应满足各种会议活动是本方案最基本的思想,同时考虑到该会议室将作为重要会议地点。" 方案设计者:罗强 一、项目背景 会议控制中心是政府主要领导
    的头像 发表于 08-15 10:00 391次阅读
    会议<b class='flag-5'>控制中心</b>解决方案

    分布式可视化系统助力中国城市打造智慧城市控制中心

    随着城市化进程不断加快,全国城市的发展速度也在不断提高,但是城市的快速发展也给城市治理带来了巨大的挑战,为了应对各种城市治理的难题,特别是疫情等公共卫生事件对城市管理的冲击影响更为显著。"智慧城市
    的头像 发表于 08-02 10:19 290次阅读

    基于STM32单片机的家庭环境监测系统设计

    本次家庭环境监测系统的设计使用STM32单片机作为控制中心,通过ESP8266上传和下发数据,通过MQ-2测量室内烟雾浓度,通过DHT11测量温湿度,当温度超过极限时,通过继电器控制风扇实现降温,当
    的头像 发表于 07-25 11:08 1627次阅读
    基于STM32单片机的<b class='flag-5'>家庭</b>环境监测系统设计