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

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

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

玩轉(zhuǎn)OpenHarmony智能家居:如何實現(xiàn)樹莓派“碰一碰”設(shè)備控制

OpenAtom OpenHarmony ? 來源:未知 ? 2022-12-26 23:05 ? 次閱讀

開源項目 OpenHarmony是每個人的 OpenHarmony 828fa8c6-852d-11ed-bfe3-dac502259ad0.jpg

賈振興

中國科學(xué)院軟件研究所

OpenHarmony知識體系工作組

以下內(nèi)容來自嘉賓分享,不代表開放原子開源基金會觀點

一、簡介

“碰一碰”設(shè)備控制,依托NFC短距通信協(xié)議,通過碰一碰的交互方式,將OpenAtom OpenHarmony(簡稱“OpenHarmony”)標(biāo)準(zhǔn)系統(tǒng)設(shè)備和全場景設(shè)備連接起來,解決了應(yīng)用與設(shè)備之間接續(xù)慢、傳輸難的問題,實現(xiàn)一碰拉起應(yīng)用,為用戶帶來無縫切換的流暢體驗。

二、“碰一碰”設(shè)備控制場景

82a30416-852d-11ed-bfe3-dac502259ad0.png (1)使用效果 當(dāng)樹莓派開發(fā)板靠近小熊派開發(fā)板,樹莓派中應(yīng)用程序被拉起,進(jìn)入LED小燈控制界面。然后,控制端和設(shè)備端完成配網(wǎng)通信連接,點擊打開小熊派LED小燈點亮,點擊關(guān)閉LED小燈熄滅。 (2)操作流程 ??在小熊派的NFC被動貼片中寫入控制端應(yīng)用信息 ??將樹莓派的PN532主動板靠近小熊派NFC貼片,讀取貼片中的應(yīng)用信息,拉起對應(yīng)的小燈控制應(yīng)用 ??控制端和設(shè)備端完成配網(wǎng)通信連接 ??點擊打開小熊派LED小燈點亮,點擊關(guān)閉LED小燈熄滅 ?

三、NFC拉起應(yīng)用功能實現(xiàn)

近場通信(Near Field Communication,簡稱NFC),是一種新興的技術(shù),使用了NFC技術(shù)的設(shè)備可以在彼此靠近的情況下進(jìn)行數(shù)據(jù)交換,是由非接觸式射頻識別(RFID)演變而來。NFC技術(shù)在現(xiàn)實場景中被廣泛使用,通過在單一芯片上集成感應(yīng)式讀卡器、感應(yīng)式卡片和點對點通信的功能,利用移動終端實現(xiàn)移動支付、門禁、移動身份識別、防偽等應(yīng)用。NFC的點對點模式需要主動板和被動板兩個模塊,該案例中樹莓派的PN532模塊是主動板用于讀取信息,小熊派開發(fā)板的NFC貼片是被動板用于保存信息。
int main(int argc, char **argv) {
  uint8_t buff[255];
  uint8_t uid[MIFARE_UID_MAX_LENGTH];
  int32_t uid_len = 0;
  PN532 pn532;
  PN532_I2C_Init(&pn532);
  if (PN532_GetFirmwareVersion(&pn532, buff) == PN532_STATUS_ERROR) {
    return -1;
  }
  PN532_SamConfiguration(&pn532);
  while (1) {
    while (1) {
      // 判斷NFC模塊是否靠近
      if (PN532_ReadPassiveTarget(&pn532, uid, PN532_MIFARE_ISO14443A, 1000) != PN532_STATUS_ERROR) {
        break;
      }
      usleep(100);
    }


    HILOGI("開始調(diào)起應(yīng)用
");
    pthread_t id1;
    int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL);
    if (ret) {
      HILOGE("創(chuàng)建線程失敗
");
    }


    sleep(4);
  }
}
/*
*拉起設(shè)備控制應(yīng)用的線程
*/
void *mythread1(void) {
  char arg[500] = "aa start -d 1 -a com.huawei.ohos_car_controller.default -b ohos.samples.jshelloworld";
  system(arg);
  return NULL;
}
上述代碼中,NFC功能的實現(xiàn)需要調(diào)用驅(qū)動文件中相應(yīng)的接口函數(shù)。I2C_Init函數(shù)實現(xiàn)樹莓派PN532模塊的初始化。PN532_ReadPassiveTarget函數(shù)用于實現(xiàn)循環(huán)讀取NFC貼片的UID信息,當(dāng)讀到小熊派NFC貼片信息時,創(chuàng)建新的線程拉起對應(yīng)的LED燈應(yīng)用。

四、LED小燈應(yīng)用功能實現(xiàn)

該案例中LED小燈應(yīng)用,主要基于TCP通信協(xié)議實現(xiàn)對小熊派LED小燈的打開和關(guān)閉控制。 82b4d358-852d-11ed-bfe3-dac502259ad0.png ?
import led_controller from '@ohos.led_controller';
export default {
    onShow() {
        this.tcpConnect();
    },
    onDestroy() {
        this.tcpDistroy();
    },
    tcpConnect() {
        let promise_connect = led_controller.Connect();
        promise_connect.then((results) => {
            setTimeout(this.changeText(), 9000);
        }).catch(err => {
            console.log('[led Controller]' + err)
        })
    },
    tcpSend(message) {
        let promise_send = led_controller.Send({
            data: message
        })
        promise_send.then((results) => {
            if (results.send_status == 1) {
                console.log("[led Controller] send success")
            }
        }).catch(err => {
            console.log("[led Controller]" + err)
        })
    },
    tcpDistroy() {
        let promise_disconnect = led_controller.Close()
        promise_disconnect.then((results) => {
            if (results.close_status == 1) {
                ConnectionStatus = 0
                prompt.showToast({
                    message: "網(wǎng)絡(luò)斷開",
                });
            }
        }).catch(err => {
            console.log("[led Controller]" + err)
        })
    },
    ledOpen() {
       this.tcpSend("1")
    },
    changeText() {
        prompt.showToast({
            message: "配網(wǎng)成功",
        });
    },
    ledClose() {
        this.tcpSend("0")
    }
}
上述代碼中,通過import led_controller from '@ohos.led_controller'引入NAPI動態(tài)庫,led_controller動態(tài)庫中封裝TCP通信相關(guān)的接口函數(shù)。

五、總結(jié)

本文介紹了如何使用NFC實現(xiàn)OpenHarmony“碰一碰”設(shè)備控制。首先,需要基于樹莓派PN532模塊驅(qū)動開發(fā)NFC智能感知的應(yīng)用,實現(xiàn)設(shè)備間碰一碰發(fā)現(xiàn)的功能。然后,基于NAPI開發(fā)設(shè)備間的TCP通信業(yè)務(wù),并在應(yīng)用層調(diào)用接口函數(shù)實現(xiàn)LED小燈的開閉。除了文中分享的樣例,開發(fā)者還可以通過拓展其他相關(guān)的屬性和方法,實現(xiàn)更多好玩的、高性能的樣例。

代碼地址:

https://gitee.com/isrc_ohos/led-contrller-device

https://gitee.com/isrc_ohos/led-controller-application

參考地址

設(shè)備端源碼

https://gitee.com/isrc_ohos/led-contrller-device

應(yīng)用端源碼

https://gitee.com/isrc_ohos/led-controller-application

知識體系

https://gitee.com/openharmony-sig/knowledge


原文標(biāo)題:玩轉(zhuǎn)OpenHarmony智能家居:如何實現(xiàn)樹莓派“碰一碰”設(shè)備控制

文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    57

    文章

    2365

    瀏覽量

    42893
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3726

    瀏覽量

    16379

原文標(biāo)題:玩轉(zhuǎn)OpenHarmony智能家居:如何實現(xiàn)樹莓派“碰一碰”設(shè)備控制

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    下”支付背后的4G技術(shù)

    不知道你是否有留意,近期,在線下支付場景中,多了個支付寶“下”支付的設(shè)備,只需要“解鎖手機(jī)—
    的頭像 發(fā)表于 01-03 16:27 ?305次閱讀

    基于語音識別技術(shù)的智能家居控制系統(tǒng)

    于語音識別的智能控制系統(tǒng)是智能家居的重要組成部分,相比傳統(tǒng)的遙控或觸控方式,基于語音識別控制智能家居系統(tǒng)通過人機(jī)語音交互的方式,
    的頭像 發(fā)表于 11-19 17:25 ?582次閱讀
    基于語音識別技術(shù)的<b class='flag-5'>智能家居</b><b class='flag-5'>控制</b>系統(tǒng)

    使用樹莓實現(xiàn)遠(yuǎn)程控制的技巧

    樹莓款功能強大的微型計算機(jī),其體積小巧、價格低廉,非常適合用于各種DIY項目。其中,遠(yuǎn)程控制樹莓
    的頭像 發(fā)表于 11-11 11:37 ?523次閱讀

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓提供的組可編程的引腳,是樹莓與外部世界進(jìn)行交互的重要橋梁。通過GPIO,用戶可以
    的頭像 發(fā)表于 10-22 18:09 ?948次閱讀

    人工智能如何強化智能家居設(shè)備的功能

    智能家居設(shè)備已經(jīng)成為改善人類居家生活便利性的重要工具,但是早期的智能家居設(shè)備往往只能被動地接受用戶設(shè)定的指令運作,仍然不夠聰明。隨著人工智能
    的頭像 發(fā)表于 08-27 10:46 ?910次閱讀
    人工<b class='flag-5'>智能</b>如何強化<b class='flag-5'>智能家居</b><b class='flag-5'>設(shè)備</b>的功能

    智能家居控制系統(tǒng)如何設(shè)計

    智能家居控制系統(tǒng)設(shè)計是個復(fù)雜而細(xì)致的過程,它涉及到多個方面的考慮,包括需求分析、設(shè)備選型、系統(tǒng)架構(gòu)設(shè)計、網(wǎng)絡(luò)安全、用戶交互以及后期維護(hù)等。以下是對
    的頭像 發(fā)表于 07-23 14:45 ?1584次閱讀

    歡創(chuàng)播報 支付寶“下”正式發(fā)布

    1 支付寶“下”正式發(fā)布 近日,在支付寶開放日上,支付寶宣布升級條碼支付體驗,推出“支付寶下”,用戶無需展示付款碼,解鎖手機(jī)
    的頭像 發(fā)表于 07-11 11:32 ?902次閱讀
    歡創(chuàng)播報  支付寶“<b class='flag-5'>碰</b><b class='flag-5'>一</b>下”正式發(fā)布

    Hailo聯(lián)手樹莓,開創(chuàng)人工智能新紀(jì)元

    近日,人工智能處理器領(lǐng)導(dǎo)品牌Hailo正式宣布與樹莓展開深度合作。Hailo將為樹莓推出專用AI套件,支持
    的頭像 發(fā)表于 06-06 16:08 ?756次閱讀

    復(fù)位管腳的上拉電阻會引起復(fù)位,為什么?

    我發(fā)現(xiàn)個很奇怪的現(xiàn)象,每當(dāng)我用萬用表的其中個表筆去觸復(fù)位管腳10K的上拉電阻,觸端在5V的電源端那邊,單片機(jī)就復(fù)位。而靠近管腳端卻不會。不知這種現(xiàn)象正不正常。
    發(fā)表于 05-08 06:47

    智能家居燈光控制系統(tǒng)功能特點

    ,為環(huán)保事業(yè)做出貢獻(xiàn)。 智能家居燈光控制系統(tǒng)解決方案,基于物聯(lián)網(wǎng)通信技術(shù),使用智能照明控制終端等智能硬件,
    的頭像 發(fā)表于 04-25 16:21 ?1284次閱讀

    【Longan Pi 3H 開發(fā)板試用連載體驗】基于 Longan Pi 3H 開發(fā)板完成智能家居控制小型項目

    和存儲空間顯示為4GB+32G,如圖 三、項目計劃 我的試用項目是基于 Longan Pi 3H 開發(fā)板完成智能家居控制小型項目目標(biāo)如下: 通過 Longan Pi 3H 開發(fā)板實現(xiàn)模擬家庭
    發(fā)表于 04-02 22:37

    智能家居控制方案功能與應(yīng)用

    是以物聯(lián)網(wǎng)作為核心技術(shù)支撐,利用網(wǎng)絡(luò)通信手段,實現(xiàn)對住宅中各種設(shè)備與建筑設(shè)施進(jìn)行自動控制與管理。集成開發(fā)智能家居控制方案,快速啟動、多種人機(jī)
    的頭像 發(fā)表于 02-29 16:18 ?838次閱讀

    集中電源控制器在智能家居中的應(yīng)用

    集中電源控制器在智能家居中也有廣泛的應(yīng)用。隨著智能家居的普及,各種家電設(shè)備、照明系統(tǒng)、安防系統(tǒng)等都需要電源支持,而集中電源控制器可以提供集中
    的頭像 發(fā)表于 01-30 15:05 ?788次閱讀
    集中電源<b class='flag-5'>控制</b>器在<b class='flag-5'>智能家居</b>中的應(yīng)用

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來越廣泛的應(yīng)用。本文將詳細(xì)介紹Python智能家居
    的頭像 發(fā)表于 01-25 09:46 ?1391次閱讀

    智能家居控制系統(tǒng)原理與應(yīng)用

    智能家居控制系統(tǒng)是指利用先進(jìn)的計算機(jī)科學(xué)和通信技術(shù),將各種家居設(shè)備和系統(tǒng)進(jìn)行連接和集成,實現(xiàn)智能
    的頭像 發(fā)表于 01-10 11:44 ?2950次閱讀