RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

ElfBoard ? 2024-02-21 13:42 ? 次閱讀

?

今天非常榮幸地向各位小伙伴展示并分享共創(chuàng)社中一位成員精心完成的項(xiàng)目成果,該項(xiàng)目依托ElfBoard開發(fā)板為核心硬件平臺(tái),采用Qt框架構(gòu)建了一套全面的智慧家庭控制中心系統(tǒng)。該系統(tǒng)由四大核心功能模塊整合而成:網(wǎng)絡(luò)通信接口、氣象信息展示、室內(nèi)環(huán)境監(jiān)控及家居智能管理。

網(wǎng)絡(luò)連接模塊負(fù)責(zé)自動(dòng)掃描并接入周邊可用的Wi-Fi網(wǎng)絡(luò),確保系統(tǒng)與外部數(shù)據(jù)源的穩(wěn)定互聯(lián)。

天氣預(yù)報(bào)模塊在成功建立網(wǎng)絡(luò)連接后,能夠?qū)崟r(shí)獲取并顯示指定地理位置的天氣狀況信息,為用戶提供便捷的氣象服務(wù)。

室內(nèi)環(huán)境監(jiān)測(cè)模塊借助集成的溫濕度傳感器設(shè)備,實(shí)現(xiàn)對(duì)居住空間內(nèi)部環(huán)境參數(shù)的實(shí)時(shí)監(jiān)測(cè)和精準(zhǔn)記錄,以維護(hù)理想的居住環(huán)境條件。

家居控制中心作為系統(tǒng)的核心交互部分,具備對(duì)諸如LED照明設(shè)備以及蜂鳴器等家居設(shè)施的智能化管控能力,用戶可通過(guò)該中心輕松實(shí)現(xiàn)遠(yuǎn)程操控與自動(dòng)化場(chǎng)景設(shè)定。

項(xiàng)目軟硬件需求

1、ELF 1開發(fā)板

2、4.3英寸電容

3、QT

4、實(shí)況天氣接口API開發(fā)指南 未來(lái)一天天氣預(yù)報(bào)api - 天氣API

5、Wi-Fi(RTL8723DU)

項(xiàng)目功能

1、網(wǎng)絡(luò)連接

網(wǎng)絡(luò)連接部分的UI如圖所示:

wKgaomXViFaAZQUlAABK7lvD7xM572.png

本項(xiàng)目使用wpa_supplicant工具連接Wi-Fi,該工具是ElfBorad開發(fā)板的操作系統(tǒng)自帶的。掃描附近的Wi-Fi,然后將數(shù)據(jù)存儲(chǔ)到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、天氣預(yù)報(bào)

該頁(yè)面的UI如圖所示:

wKgaomXViQ6AOsgJAAC72x-iRUk902.png

準(zhǔn)備工作

在實(shí)況天氣接口API開發(fā)指南 未來(lái)一天天氣預(yù)報(bào)api - 天氣API網(wǎng)站注冊(cè),注冊(cè)好后可以看到如下信息,每個(gè)郵箱號(hào)有3000次的免費(fèi)的請(qǐng)求機(jī)會(huì)。

wKgZomXViSKAZ--WAABlr88huvM037.png

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

?{ "cityid":"101271201", #城市編號(hào) "date":"2020-07-15", "week":"星期三", "update_time":"10:15", #更新時(shí)間 "city":"內(nèi)江", #城市名稱 "cityEn":"neijiang", "country":"中國(guó)", "countryEn":"China", "wea":"陰", #實(shí)時(shí)天氣情況 "wea_img":"yin", "tem":"25", #實(shí)時(shí)溫度 "tem1":"29", #高溫 "tem2":"23", #低溫 "win":"西風(fēng)", #風(fēng)向 "win_speed":"2級(jí)", #風(fēng)力等級(jí) "win_meter":"小于12km/h", #風(fēng)速 "humidity":"97%", #濕度 "visibility":"24.22km", #能見度 "pressure":"961", #氣壓 "uvIndex":"3", #紫外線等級(jí) "uvDescription": "中等",#紫外線描述 "air":"15", #空氣質(zhì)量 "air_pm25":"8", #pm2.5 "air_level":"優(yōu)", "air_tips":"空氣很好,可以外出活動(dòng),呼吸新鮮空氣,擁抱大自然!", "rain_pcpn":"2.5",#降雨量2.5mm "alarm":{ "alarm_type":"暴雨", #預(yù)警類型 "alarm_level":"橙色", #預(yù)警等級(jí) "alarm_content":"內(nèi)江市氣象臺(tái)7月15日5時(shí)23分發(fā)布第16號(hào)暴雨橙色預(yù)警信號(hào): 預(yù)計(jì)我市市中區(qū)部分地方3小時(shí)降雨量將達(dá)50毫米以上,并伴有雷電和陣性大風(fēng),請(qǐng)加強(qiáng)防范強(qiáng)降水、雷電和大風(fēng)等帶來(lái)的危害。 (預(yù)警信息來(lái)源:國(guó)家預(yù)警信息發(fā)布中心)" #預(yù)警描述 }, "aqi":{ #空氣質(zhì)量指數(shù)詳情 "air":"15", "air_level":"優(yōu)", "air_tips":"空氣很好,可以外出活動(dòng),呼吸新鮮空氣,擁抱大自然!", "pm25":"8", "pm25_desc":"優(yōu)", "pm10":"10", "pm10_desc":"優(yōu)", "o3":"47", "o3_desc":"優(yōu)", "no2":"12", "no2_desc":"優(yōu)", "so2":"8", "so2_desc":"優(yōu)", "co": "1", "co_desc": "優(yōu)", "kouzhao":"無(wú)需戴口罩", "waichu":"適宜外出", "yundong":"適宜運(yùn)動(dòng)", "kaichuang":"適宜開窗", "jinghuaqi":"關(guān)閉凈化器", "cityid":"101271201", "city":"內(nèi)江", "cityEn":"neijiang", "country":"中國(guó)", "countryEn":"China" } }

?

請(qǐng)求數(shù)據(jù)

請(qǐng)求天氣數(shù)據(jù)的代碼如下所示,appid后面的數(shù)字和appsecret是在注冊(cè)時(shí)網(wǎng)站給的密匙。

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); /*發(fā)送get網(wǎng)絡(luò)請(qǐng)求*/

我們?cè)诎l(fā)送完請(qǐng)求信息后,會(huì)獲得回復(fù)信息,信息是json格式,我們只需要解析該json數(shù)據(jù)就行。主要代碼如下所示。

QJsonDocument json_recv = QJsonDocument::fromJson(all.toUtf8(), &err);//解析json對(duì)象 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、室內(nèi)環(huán)境監(jiān)測(cè)

該部分的UI如圖所示:

wKgZomXVi7-AS8T5AAC-Mb3rGhE287.png

?

該部分的代碼比較簡(jiǎn)單,主要是新建立一個(gè)線程,然后不停的讀取傳感器的信息,然后將相關(guān)的信息展示即可。核心代碼如下:

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

該部分主要是利用為了充分的展示開發(fā)板上的硬件而制作,我們假設(shè)3個(gè)lLED燈就是我們家里的燈,蜂鳴器可以假設(shè)為報(bào)警器。本身而言沒(méi)什么。

軟件編譯

在ElfBoard的官方教程中有詳細(xì)介紹如何在ELF 1開發(fā)板上編譯QT程序。在這里需要強(qiáng)調(diào)一點(diǎn)的是,在使用arm-gcc編譯完成后的可執(zhí)行文件是不能在X86的電腦上運(yùn)行的,需要先在電腦上調(diào)試軟件,成功之后,再使用arm-gcc編譯,然后移植到ELF 1開發(fā)板上。

項(xiàng)目總結(jié)

這款智慧家庭的APP深度整合了ELF 1開發(fā)板硬件資源,包括Wi-Fi模塊、LED照明系統(tǒng)、溫濕度傳感器以及蜂鳴器等組件。項(xiàng)目構(gòu)建過(guò)程中巧妙的利用了Wi-Fi,特別定制了一個(gè)功能完備的天氣預(yù)報(bào)界面,用戶通過(guò)該界面能夠輕松獲取不同地區(qū)的實(shí)時(shí)天氣信息,從而將智慧佳通控制范圍拓展至環(huán)境監(jiān)測(cè)及在線信息服務(wù)領(lǐng)域。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304796
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    302

    瀏覽量

    37899
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    告別繁瑣!盾華物聯(lián)網(wǎng)智慧控制中心,讓中小型控制中心建設(shè)更簡(jiǎn)單!

    告別繁瑣!盾華物聯(lián)網(wǎng)智慧控制中心,讓中小型控制中心建設(shè)更簡(jiǎn)單!
    的頭像 發(fā)表于 11-29 09:41 ?132次閱讀
    告別繁瑣!盾華物聯(lián)網(wǎng)<b class='flag-5'>智慧</b><b class='flag-5'>控制中心</b>,讓中小型<b class='flag-5'>控制中心</b>建設(shè)更簡(jiǎn)單!

    開放式激光振鏡運(yùn)動(dòng)控制器在Ubuntu+Qt下CAD圖形標(biāo)刻

    開放式激光振鏡運(yùn)動(dòng)控制器再Ubuntu+Qt下CAD圖形標(biāo)刻
    的頭像 發(fā)表于 09-18 15:12 ?286次閱讀
    開放式激光振鏡運(yùn)動(dòng)<b class='flag-5'>控制</b>器在Ubuntu+<b class='flag-5'>Qt</b>下CAD圖形標(biāo)刻

    智慧部隊(duì)建設(shè)整體解決方案

    通常采用“一個(gè)中心、多個(gè)平臺(tái)、多個(gè)應(yīng)用”的體系架構(gòu)。其中,“一個(gè)中心”指的是智慧部隊(duì)指揮控制中心,作為整個(gè)系統(tǒng)的核心,負(fù)責(zé)數(shù)據(jù)的處理、分析和決策支持;“多個(gè)平臺(tái)”則包括各類信息化平臺(tái),
    的頭像 發(fā)表于 09-06 15:18 ?323次閱讀

    【Raspberry Pi 5開發(fā)板試用】樹莓派5---家庭多媒體和控制中心

    和便捷,也使得用戶能夠更加專注于創(chuàng)意實(shí)現(xiàn)和項(xiàng)目開發(fā),而不是網(wǎng)絡(luò)配置的繁瑣細(xì)節(jié)。對(duì)于許多用戶來(lái)說(shuō),這無(wú)疑是一個(gè)令人驚喜的發(fā)現(xiàn),極大地豐富了樹莓派的使用場(chǎng)景。 mobaxterm效果: 家庭多媒體和控制中心
    發(fā)表于 08-01 17:40

    智慧運(yùn)營(yíng)中心如何實(shí)現(xiàn)運(yùn)維管理?

    智慧運(yùn)營(yíng)中心 作為建筑物管理和運(yùn)營(yíng)的關(guān)鍵樞紐,通過(guò)整合先進(jìn)的技術(shù)和數(shù)據(jù)分析手段,實(shí)現(xiàn)了對(duì)建筑設(shè)備和環(huán)境的全面監(jiān)測(cè)和智能化控制。在實(shí)現(xiàn)運(yùn)維管理方面,智慧運(yùn)營(yíng)
    的頭像 發(fā)表于 06-24 15:29 ?438次閱讀
    <b class='flag-5'>智慧</b>運(yùn)營(yíng)<b class='flag-5'>中心</b>如何實(shí)現(xiàn)運(yùn)維管理?

    雷曼光電助力內(nèi)蒙古華電新能源智慧運(yùn)營(yíng)中心高效管理

    近日,在內(nèi)蒙古華電新能源智慧運(yùn)營(yíng)中心,由雷曼光電設(shè)計(jì)研發(fā)制造的超100㎡雷曼COB超高清節(jié)能冷屏正式投入使用,工作人員正通過(guò)LED大屏記錄運(yùn)行數(shù)據(jù)。內(nèi)蒙古華電新能源智慧運(yùn)營(yíng)中心位于和林
    的頭像 發(fā)表于 06-20 14:21 ?821次閱讀

    英威騰數(shù)據(jù)中心解決方案實(shí)現(xiàn)安全升級(jí)和高效運(yùn)轉(zhuǎn)

    ? ? 近日,英威騰的威智iWit系列中小型一體化數(shù)據(jù)中心解決方案成功應(yīng)用于江西省疾病預(yù)防控制中心,這一解決方案為江西省疾病預(yù)防控制中心的數(shù)字化機(jī)房提供了全方位的關(guān)鍵基礎(chǔ)設(shè)施支撐,實(shí)現(xiàn)了安全升級(jí)
    的頭像 發(fā)表于 06-17 17:09 ?667次閱讀

    什么是智慧運(yùn)營(yíng)中心IOC?功能有哪些?

    隨著智能時(shí)代的到來(lái),越來(lái)越多的行業(yè)管理者開始使用先進(jìn)的運(yùn)營(yíng)管理中心,以前的已經(jīng)不能夠滿足于需求了。那么,什么是智慧運(yùn)營(yíng)中心IOC?功能有哪些?想必很多人都還不太了解,今天古河云科技就來(lái)給大家聊一聊
    的頭像 發(fā)表于 05-23 14:35 ?829次閱讀
    什么是<b class='flag-5'>智慧</b>運(yùn)營(yíng)<b class='flag-5'>中心</b>IOC?功能有哪些?

    Qt上位機(jī)開發(fā)實(shí)戰(zhàn)案例

    Qt Creator是一個(gè)用于Qt開發(fā)的輕量級(jí)跨平臺(tái)集成開發(fā)環(huán)境。 Qt Creator可帶來(lái)兩大關(guān)鍵益處: 提供首個(gè)專為支持跨平臺(tái)開發(fā)而設(shè)計(jì)的集成開發(fā)環(huán)境 (IDE),并確保首次接觸
    的頭像 發(fā)表于 03-13 12:31 ?2466次閱讀
    <b class='flag-5'>Qt</b>上位機(jī)開發(fā)實(shí)戰(zhàn)案例

    3562-Qt工程編譯說(shuō)明

    本文檔主要說(shuō)明如何將已有 Qt 工程進(jìn)行編譯,生成可在評(píng)估板上正常運(yùn)行的 ARM 端 Qt 程序鏡像。 Qt 開發(fā)環(huán)境主要包括 Qt Creator 工具、X86 端
    的頭像 發(fā)表于 03-05 09:19 ?464次閱讀
    3562-<b class='flag-5'>Qt</b>工程編譯說(shuō)明

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

    我現(xiàn)在在用FX3 控制中心編程SPI FLASH(W25Q32JVSSIQ),但是一直停留在programing of spi flash in progress... ;當(dāng)我用邏輯分析儀抓取數(shù)據(jù)
    發(fā)表于 02-27 07:11

    在win10系統(tǒng)上,通過(guò)控制中心下載MDK編譯的.hex后,硬件能被識(shí)別,但讀寫無(wú)反應(yīng),usb不能工作的原因?

    在win10系統(tǒng)上,通過(guò)控制中心下載MDK編譯的.hex后,硬件能被識(shí)別,但讀寫無(wú)反應(yīng),usb不能工作;win7上操作正常,請(qǐng)問(wèn)這是什么問(wèn)題呢?
    發(fā)表于 02-27 06:48

    智能燈光控制系統(tǒng)怎么布線 智能燈光控制系統(tǒng)的組成

    智能燈光控制系統(tǒng)是一種應(yīng)用于家庭、辦公室、商業(yè)建筑等場(chǎng)所的智能化設(shè)備,能夠?qū)崿F(xiàn)燈光的智能控制和管理。在布線方面,智能燈光控制系統(tǒng)主要包括控制中心
    的頭像 發(fā)表于 01-22 11:28 ?2179次閱讀

    運(yùn)營(yíng)商如何引領(lǐng)智慧家庭市場(chǎng)潮頭?

    近幾年的智慧家庭市場(chǎng)發(fā)展較好,但在互聯(lián)互通的體驗(yàn)上仍是一盤散沙,大部分廠家都是各做各的智能單品研發(fā),盡管可用手機(jī)APP或語(yǔ)音助手來(lái)控制,但缺乏系統(tǒng)級(jí)場(chǎng)景聯(lián)動(dòng),而且市面較少看到可直接互聯(lián)其他品牌的系統(tǒng)的智能家居方案
    的頭像 發(fā)表于 01-17 16:21 ?777次閱讀

    QT串口通信的簡(jiǎn)單使用

    QT串口通信是上位機(jī)和下位機(jī)通信常用的通信方式, 也是學(xué)習(xí)QT必須學(xué)會(huì)的基礎(chǔ)知識(shí), 這篇就簡(jiǎn)單介紹一下QT串口通信的簡(jiǎn)單使用.
    的頭像 發(fā)表于 01-15 09:27 ?1969次閱讀
    <b class='flag-5'>QT</b>串口通信的簡(jiǎn)單使用
    RM新时代网站-首页