基于orangePi的智能家居系统

目录

 

 一.接线图

1.orangePi接线

2.继电器接线 

二.语音模块的配置

1.pin脚的配置

2.命令词自定义信息

 三.测试

1.通过gpio指令测试烟雾检测器是否正确连接

2.编写脚本测试其他模组接线是否正常

四.人脸识别方案

1.首先开通人脸搜索识别服务

2. 点击产品控制台,向人脸数据库中添加人脸样本数据

3.去香橙派终端执行此命令,下载阿里云SDK包

4.下载完成后,配置环境变量

5.切换至下列目录,点击人脸搜索示例代码

6.封装python代码为一个函数,并且取返回结果中最大的score值作为最终比对结果

7.C语言调用python阿里云接口

五.POSIX消息队列

1.基本API用法

 2. mq_notiy函数的使用

六.智能家居的实现

1.项目的整体框架大致如下:

2.整个项目开启4个监听线程,分别是:

3.项目结构大致如下

3.1首先,从香橙派上利用apt download下载依赖包的头文件和库文件,并拷贝到宿主机里:

3.2解压到/home/mi/Desktop/smarthome/3rd/下

3.3编写Makefile

3.4智能家居具体代码实现

face.py

face.c

face.h

msg_queue.c

msg_queue.h

myoled.c

myoled.h

socket.c

socket.h

control.c

control.h

gdevice.c

gdevice.h

global.h

voice_interface.c

voice_interface.h

smoke_interface.c

smoke_interface.h

socket_interface.c

socket_interface.h

receive_interface.c

receive_interface.h

4.inih解析库介绍

定义设备控制ini文件gdevice.ini

5.Makefile文件编写


 

 一.接线图

1.orangePi接线

815f75787ca443a5af343ef1e6f2333d.png

 

2.继电器接线 

8de56f3e0b654890a86f7b2ef4576871.png

 

二.语音模块的配置

进入语音模块官网  http://www.smartpi.cn/#/  ,配置词条和识别后的串口输出指令。

1.pin脚的配置


23b4d05d648242e38a70dea6678b8df1.png

 

2.命令词自定义信息

feb494c9e3254b41b7086069c6bbd95c.png

6174387c366c4d18adec27cbc022efbe.png

d68bfb8f9c484ed7b0a0eddf011deb0c.png

 

 三.测试

1.通过gpio指令测试烟雾检测器是否正确连接

sudo gpio mode 6 input   设置引脚6为输入状态

sudo gpio readall              查看引脚6为高电压(此时无烟)

sudo gpio readall              查看引脚6为变为了低电压(此时有烟)

 

2.编写脚本测试其他模组接线是否正常

gpio mode 2 out #卧室灯
gpio mode 5 out #课厅灯
gpio mode 7 out #电磁锁
gpio mode 8 out #风扇
gpio mode 9 out #蜂鸣器

#全部拉高,继电器断开
for i in 2 5 7 8 9
do
    gpio write $i 1
done

for i in 2 5 7 8 9
do
    gpio write $i 0
    sleep 3
    gpio write $i 1
done

 

四.人脸识别方案

这里采用的是阿里云的人脸识别方案通义实验室视觉智能开放平台

1.首先开通人脸搜索识别服务

26cbb50900c44a54be6aa1cefebda992.png

 

2. 点击产品控制台,向人脸数据库中添加人脸样本数据

1a183ab5947641d396206fba23c5e6a0.png

66c2b84c74cb4559969cddd86b2f6ac2.png

9ad0bbabdb394c7b99324bc44b232b70.png

 

3.去香橙派终端执行此命令,下载阿里云SDK包

c20e828ce2d04ec7ae72c0a56032a884.png

94036508fece4181954b55d863b59a3f.png

 

4.下载完成后,配置环境变量

~/.bashrc/etc/profile 的末尾输入下面俩行(替换为你自己的阿里云AccessKey)

export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>

 

5.切换至下列目录,点击人脸搜索示例代码

0560548d7c3d418f85a77943c78bf3a0.png

 528483daf46a4b29b208a3651f87a2ff.png

# -*- coding: utf-8 -*-
# 引入依赖包
# pip install alibabacloud_facebody20191230

import os
from alibabacloud_facebody20191230.models import SearchFaceRequest
from alibabacloud_tea_openapi.models import Config
from alibabacloud_facebody20191230.client import Client
from alibabacloud_tea_util.models import RuntimeOptions

config = Config(
    # 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html。
    # 如果您用的是RAM用户的AccessKey,还需要为RAM用户授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html。
    # 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    # 访问的域名
    endpoint='facebody.cn-shanghai.aliyuncs.com',
    # 访问的域名对应的region
    region_id='cn-shanghai'
)
runtime_option = RuntimeOptions()
search_face_request = SearchFaceRequest(
  db_name='Face1',
    image_url='http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/SearchFace/SearchFace1.png',
    limit=2
)
try:
  # 初始化Client
  client = Client(config)
  response = client.search_face_with_options(search_face_request, runtime_option)
  # 获取整体结果
  print(response.body)
except Exception as error:
  # 获取整体报错信息
  print(error)
  # 获取单个字段
  print(error.code)
  # tips: 可通过error.__dict__查看属性名称

 

6.封装python代码为一个函数,并且取返回结果中最大的score值作为最终比对结果

# -*- coding: utf-8 -*-
# 引入依赖包
# pip install alibabacloud_facebody20191230
# face.py

import os
import io
from urllib.request import urlopen
from alibabacloud_facebody20191230.client import Client
from alibabacloud_facebody20191230.models import SearchFaceAdvanceRequest
from alibabacloud_tea_openapi.models import Config
from alibabacloud_tea_util.models import RuntimeOptions

config = Config(
    # 创建AccessKey ID和AccessKey Secret,请参考https://help.aliyun.com/document_detail/175144.html。
    # 如果您用的是RAM用户的AccessKey,还需要为RAM用户授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html。
    # 从环境变量读取配置的AccessKey ID和AccessKey Secret。运行代码示例前必须先配置环境变量。
    access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    # 访问的域名
    endpoint='facebody.cn-shanghai.aliyuncs.com',
    # 访问的域名对应的region
    region_id='cn-shanghai'
)

def alibaba_face():
  search_face_request = SearchFaceAdvanceRequest()
  # 场景一:文件在本地
  stream0 = open(r'/tmp/SearchFace.jpg', 'rb')
  search_face_request.image_url_object = stream0

  #场景二:使用任意可访问的url
  #url = 'https://viapi-test-bj.oss-cn-beijing.aliy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@尘音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值