首页 > 其他分享 >玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制

时间:2022-12-27 12:04:12浏览次数:59  
标签:小灯 OpenHarmony 树莓 led 智能家居 PN532 LED controller NFC


一、简介

“碰一碰”设备控制,依托NFC短距通信协议,通过碰一碰的交互方式,将OpenAtom OpenHarmony(简称“OpenHarmony”)标准系统设备和全场景设备连接起来,解决了应用与设备之间接续慢、传输难的问题,实现一碰拉起应用,为用户带来无缝切换的流畅体验。

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制_树莓派

二、“碰一碰”设备控制场景

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制_开发板_02

(1)使用效果

当树莓派开发板靠近小熊派开发板,树莓派中应用程序被拉起,进入LED小灯控制界面。然后,控制端和设备端完成配网通信连接,点击打开小熊派LED小灯点亮,点击关闭LED小灯熄灭。

(2)操作流程

• 在小熊派的NFC被动贴片中写入控制端应用信息

• 将树莓派的PN532主动板靠近小熊派NFC贴片,读取贴片中的应用信息,拉起对应的小灯控制应用

• 控制端和设备端完成配网通信连接

• 点击打开小熊派LED小灯点亮,点击关闭LED小灯熄灭

三、NFC拉起应用功能实现

近场通信(Near Field Communication,简称NFC),是一种新兴的技术,使用了NFC技术的设备可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID)演变而来。NFC技术在现实场景中被广泛使用,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、门禁、移动身份识别、防伪等应用。NFC的点对点模式需要主动板和被动板两个模块,该案例中树莓派的PN532模块是主动板用于读取信息,小熊派开发板的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("开始调起应用\r\n");
pthread_t id1;
int ret = pthread_create(&id1, NULL, (void *)mythread1, NULL);
if (ret) {
HILOGE("创建线程失败\r\n");
}

sleep(4);
}
}
/*
*拉起设备控制应用的线程
*/
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功能的实现需要调用驱动文件中相应的接口函数。I2C_Init函数实现树莓派PN532模块的初始化。PN532_ReadPassiveTarget函数用于实现循环读取NFC贴片的UID信息,当读到小熊派NFC贴片信息时,创建新的线程拉起对应的LED灯应用。

四、LED小灯应用功能实现

该案例中LED小灯应用,主要基于TCP通信协议实现对小熊派LED小灯的打开和关闭控制。

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制_OpenHarmony_03

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: "网络断开",
});
}
}).catch(err => {
console.log("[led Controller]" + err)
})
},
ledOpen() {
this.tcpSend("1")
},
changeText() {
prompt.showToast({
message: "配网成功",
});
},
ledClose() {
this.tcpSend("0")
}
}

上述代码中,通过import led_controller from '@ohos.led_controller'引入NAPI动态库,led_controller动态库中封装TCP通信相关的接口函数。

五、总结

本文介绍了如何使用NFC实现OpenHarmony“碰一碰”设备控制。首先,需要基于树莓派PN532模块驱动开发NFC智能感知的应用,实现设备间碰一碰发现的功能。然后,基于NAPI开发设备间的TCP通信业务,并在应用层调用接口函数实现LED小灯的开闭。除了文中分享的样例,开发者还可以通过拓展其他相关的属性和方法,实现更多好玩的、高性能的样例。

代码地址:

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

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

参考地址

设备端源码

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

应用端源码

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

知识体系

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

标签:小灯,OpenHarmony,树莓,led,智能家居,PN532,LED,controller,NFC
From: https://blog.51cto.com/OpenHarmony/5971890

相关文章

  • 玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制
     一、简介“碰一碰”设备控制,依托NFC短距通信协议,通过碰一碰的交互方式,将OpenAtomOpenHarmony(简称“OpenHarmony”)标准系统设备和全场景设备连接起来,解决了应用与设......
  • OpenHarmony使用Stage模型和FA模型开发分布式应用时的差别
    前言笔者这两个月一直在折腾分布式应用,并且分别基于API8的FA模型以及API9的Stage模型进行了开发,这两天总算是基本开发完了,闲下来总结下这两者的区别,顺便跟大家唠唠开发时踩......
  • 树莓派 python 直接控制sg90舵机
     必须是sg90s金属齿轮的 塑料sg90不知道为什么不行 importRPi.GPIOasGPIOimporttimeservoPIN=17#GPIO口GPIO.setmode(GPIO.BCM)GPIO.setup(servoPIN,......
  • 树莓派利用摄像头实现web在线监控
    1、https://shumeipai.nxez.com/2021/10/21/raspberry-pi-usb-camera-to-realize-remote-network-monitoring.html2、上个链接执行到第六步时,可以采用下面的方法:2.1若使......
  • 带你玩转OpenHarmony AI:打造智能语音子系统
    简介AI时代,智者当先,判断一个终端设备是否智能,语音能力是必不可缺的。智能家居、智慧厨房、智能汽车等等,一切衣食住行都在往智能方向发展,那我们该如何在OpenAtomOpenHarmony......
  • 带你玩转OpenHarmony AI:打造智能语音子系统
     简介AI时代,智者当先,判断一个终端设备是否智能,语音能力是必不可缺的。智能家居、智慧厨房、智能汽车等等,一切衣食住行都在往智能方向发展,那我们该如何在OpenAtomOpen......
  • #盲盒+码# 一站式集成Cocos&OpenHarmony/HarmonyOS开发环境
    本文正在参加「盲盒」+码有奖征文活动沉潜学业许久,终于有时间来更新博客了。早在2021年Cocos游戏引擎已支持导出HarmonyOS工程,在11月份Cocos又继续推出了OpenHarmony版本......
  • 树莓派4b无鼠标键盘SSH登录
    1、树莓派操作系统的烧录见https://www.cnblogs.com/clayyjh/p/14456372.html2、由于树莓派4为了安全起见,删除了默认账户pi,因此需要按照这个帖子https://www.raspberrypi.......
  • openharmony 游戏开发探索之军棋翻翻棋实现
    openharmony游戏开发探索之军棋翻翻棋实现一,引言大家也经常看到市面上有斗地主,麻将,飞行棋等不是很复杂的棋类游戏;然后作为没有开发过游戏的我,在思考一款游戏是如何开发的......
  • 带你玩转OpenHarmony AI:基于Seetaface2的人脸识别
     简介随着时代的进步,全民刷脸已经成为一种新型的生活方式,这也是全球科技进步的又一阶梯,人脸识别技术已经成为一种大趋势,无论在智慧出行、智能家居、智慧办公等场景均......