基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机APP交互、温湿度/新闻热点/日期显示等

article/2025/1/13 13:40:19

目录

功能清单

界面演示

系统框图

设计方案

整体结构

网站设计

 app设计

 魔镜界面设计

 温湿度传感器

 光电传感器

相关教程

第三方库的安装

安装库

换源

安装mqtt

安装Qt5

git clone提速

安装Adafruit_DHT

opencv安装

安装字体

安装portaudio

安装snowboy

安装Gst(playsound用到)

安装nginx

其他库

框图与界面绘制

服务器部署

web环境

第1步:安装Apache

第2步:安装MySQL(Ubuntu)

第2步:安装MySQL(Raspbian)

第3步:安装PHP

第4步:重新启动apache以使所有更改生效

第5步:安装phpmyadmin

网站部署

放置页面

测试是否能上传图片成功

MQTT环境

Mosquitto安装

启动服务端

异常情况

人脸识别

流程图

情感检测API



Bilibili视频教程:使用树莓派4 DIY智能魔镜_哔哩哔哩_bilibili

Github源码:基于树莓派的智能魔镜


功能清单

  •  硬件组装
  •  系统唤醒与亮屏
  •  获取传感器信息并显示
  •  获取天气、新闻等信息并显示
  •  UI界面绘制魔镜界面绘制
  •  安卓APP
  •  获取备忘录信息并显示
  •  推送使用情况到APP(能推,但不知道推啥)
  •  内容整合
  •  人脸识别
  •  情感监测
  •  语音对话

界面演示

系统框图

设计方案

整体结构

网站设计

 app设计

 魔镜界面设计

 温湿度传感器

 光电传感器

 

相关教程

第三方库的安装

安装库

import paho.mqtt.client as pahomqtt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from bs4 import BeautifulSoup
import Adafruit_DHT
from aip import AipSpeech
from aip import AipFace
from playsound import playsound
import pyaudio
import requests
import cv2
import snowboydecoderfrom mirrorUI import Ui_MainWindow
from face import FaceFunction
from speech import SpeechFunctionimport sys, os
import time
import string
import random
import hashlib
import base64
import signal
import RPi.GPIO as GPIO
import json
import wave
import urllib
import urllib3
import re
import threading

换源

sudo nano /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contribsudo vim /etc/apt/sources.list.d/raspi.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main uisudo apt-get update
sudo apt-get upgradesudo mkdir ~/.pip
sudo vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

安装mqtt

pip3 -V
pip3 install paho-mqtt

安装Qt5

sudo apt-get install python3-pyqt5 -y

git clone提速

git config --global http.postBuffer 524288000

安装Adafruit_DHT

sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python3 setup.py install

opencv安装

sudo apt-get install libhdf5-dev libhdf5-serial-dev -y
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 -y
sudo apt-get install libatlas-base-dev -y
sudo apt-get install libjasper-dev -ypip3 install opencv_python

安装字体

复制到/usr/share/fonts/

安装portaudio

下载portaudio库http://portaudio.com/download.html
sudo apt install libasound-dev # 一定要有这一句
sudo ./configure
sudo make
sudo make install
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
sudo ldconfig

安装snowboy

sudo apt-get install pulseaudio -y
sudo apt-get install sox -y
sox -d -d  # 测试
sudo apt-get install python3-pyaudio -y
sudo apt-get install swig -y
sudo apt-get install libatlas-base-dev -y
git clone https://github.com/Kitt-AI/snowboy.git
cd snowboy/swig/Python3 && make// snowboydecoder将第 5 行代码 from * import snowboydetect 改为 import snowboydetect 即可直接运行
// 具体用法可参考链接:https://www.jianshu.com/p/a1c06020f5fd

安装Gst(playsound用到)

sudo apt-get install gir1.2-gst-plugins-base-1.0 -y

安装nginx

1、安装nginx  web服务器
sudo apt-get install nginx -y
2、启动nginx
sudo /etc/init.d/nginx start
nginx的www根目录默认在 /usr/share/nginx/html中
3、修改nginx的配置文件
sudo vim /etc/nginx/sites-available/defaultlisten   8080;## listen for ipv4; this line is default and implied
//监听的端口号,如果与其它软件冲突,可以在这里更改
root /usr/share/nginx/www;
//nginx 默认路径html所在路径
index index.html index.htm index.php;
//nginx默认寻找的网页类型,可以增加一个index.php

其他库

pip3 install bs4 requests playsound baidu-aip pyaudio lxml

框图与界面绘制

1、安装Qt

​ Index of /archive/qt/5.9/5.9.3

下载exe:qt-opensource-windows-x86-5.9.3.exe

2、使用下载工具IDM,100M宽带下载速度能达到12M/s

3、下载过程中,先去注册一个Qt账号

Qt Account Login

4、.ui转.py

pyuic5 -o mirrorUI.py mirrorUI.ui

5、mirrorUI.py添加启动语句

import sys
if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)   # 定义Qt应用MainWindow = QtWidgets.QMainWindow()     # 窗口实例ui = Ui_MainWindow()                     # 界面UI实例ui.setupUi(MainWindow)                   # 绘制界面MainWindow.show()                        # 显示窗口sys.exit(app.exec_())                    # 应用关闭

6、界面label对应表

label_temperature 温度
label_humidity 湿度 
label_weather 天气 
label_weathertips 天气助手 
label_weathericon 天气图标 
label_time 时间 
label_date 日期 
label_week 星期 
label_historyhead 历史上的今天 
label_historymsg 历史上的今天 的内容 
label_communicate 文字交互区 
label_todohead 今日事项 
label_todomsg 今日事项 的内容 
label_headlineshead 今天头条 
label_headlinesmsg 今日头条 的内容 
label_gif 洛天依gif图

7、信号与槽函数

# 继承QObject
class MQTT(QObject):  
# 创建信号量,传字符串
mqttSignal = pyqtSignal(object) 
# 连接信号与槽函数
mqtt.mqttSignal.connect(ui.updateCommunicate)
# 发送信号量
self.mqttSignal.emit("qwe")

8、mirrorUI.ui路径:

mirrorUI.ui

服务器部署

pictureViewer.zip下载链接:pictureViewer图片上传并显示网页-Web开发文档类资源-CSDN下载

web环境

搭建Linux+Apache+MySQL+PHP环境。

第1步:安装Apache

Apache是一个免费开源软件,可运行世界上50%的Web服务器。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2
sudo /etc/init.d/apache2 restart

要检查是否安装了Apache,请将浏览器指向您服务器的IP地址(例如http://127.0.0.1)。

可以运行以下命令来显示你的服务器的IP地址:

ifconfig | grep inet | awk '{ print $2 }'

第2步:安装MySQL(Ubuntu)

MySQL是一个强大的数据库管理系统,用于组织和检索数据。

sudo apt-get install mysql-server mysql-client

查看端口:

sudo netstat -tap | grep mysql

用命令激活它:

sudo mysql_install_db

通过运行MySQL设置脚本完成:

sudo /usr/bin/mysql_secure_installation
Would you like to setup VALIDATE PASSWORD plugin? => y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1 => 0
New password: => xxxxxxxx
Re-enter new password:  => xxxxxxxx
Remove anonymous users?: => y
Disallow root login remotely?: => y
Remove test database and access to it?: => y
Reload privilege tables now?: => y

第2步:安装MySQL(Raspbian)

sudo apt-get install mariadb-server mariadb-client

用命令激活它:

sudo mysql_install_db

启动服务

/usr/bin/mysqld_safe --datadir='/var/lib/mysql'
sudo service mysql start

通过运行MySQL设置脚本完成:

sudo /usr/bin/mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

第3步:安装PHP

PHP是一种开源的Web脚本语言,广泛用于构建动态网页。

sudo apt install php7.2-mysql php7.2-curl php7.2-json php7.2-cgi php7.2 libapache2-mod-php7.2

测试PHP:

查看版本:
php --version输出phpinfo:
sudo vim /var/www/html/phpinfo.php
写入如下内容:
<?php echo phpinfo();?>
浏览器输入:
http://127.0.0.1/phpinfo.php

第4步:重新启动apache以使所有更改生效

sudo service apache2 restart

第5步:安装phpmyadmin

sudo apt install php-mbstring php7.2-mbstring php-gettext -y
sudo systemctl restart apache2.service
sudo apt install phpmyadmin -y

安装过程中的选项:

  • 选择 Apache2 并点击确定
  • 选择 Yes来配置 phpMyAdmin 管理的数据库
  • 输入刚设置的数据库密码
  • 若报错,可以选择ignore

安装完成后需要将phpmyadmin的文件夹复制到www/html文件夹下进行管理

sudo cp -Rf /usr/share/phpmyadmin /var/www/html/

打开浏览器并输入http://127.0.0.1/phpmyadmin

输入用户名、密码后登陆

网站部署

放置页面

pictureViewer文件夹整个放到/var/www/html/路径下:

复制:sudo cp -r pictureViewer /var/www/html
或
移动:sudo mv pictureViewer /var/www/html

修改权限:

sudo chmod 777 /var/www/html/pictureViewer/*

将文件夹名pictureViewer修改为MagicMirror

sudo mv /var/www/html/pictureViewer /var/www/html/MagicMirror

浏览器输入http://127.0.0.1/MagicMirror即可

测试是否能上传图片成功

打开并修改文件夹下的testUpload.py:

vim /var/www/html/MagicMirror/testUpload.py
url = 'http://127.0.0.1/MagicMirror/upload_file.php'

运行Python:

cd /var/www/html/MagicMirror/
python3 testUpload.py

若提示缺少库,则先安装:

pip3 install requests

上传成功后,刷新浏览器界面,会多一张图片。

MQTT环境

Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1。

Mosquitto安装

添加存储库(Raspbian可跳过):

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

更新软件包:

sudo apt-get update

安装:

sudo apt-get install mosquitto -y

安装命令行客户端:

sudo apt-get install mosquitto-clients -y

默认情况下,Ubuntu将在安装后启动Mosquitto服务。

在新终端中,使用mosquitto_sub订阅测试主题:

mosquitto_sub -h localhost -t test

新开一个其他终端并发布消息:

mosquitto_pub -h localhost -t test -m "hello world"

启动服务端

#-c:指定特定配置文件启动
#-d:后台运行 
mosquitto -c /etc/mosquitto/mosquitto.conf -d

异常情况

如果遇到Unable to acquire the dpkg frontend lock这个问题

首先检查是否在运行apt,apt-get相关的进程:

ps aux | grep -i apt

如果存在与apt相关的正在运行的进程,kill掉进程:

sudo kill -9 <process id>

继续上一次的配置:

sudo dpkg --configure -a

或者直接简单粗暴的:

sudo killall apt apt-get 

之后可以新的apt操作

人脸识别

流程图

情感检测API

百度AI平台:百度智能云控制台-管理中心


原创内容,转载请注明来源!


http://chatgpt.dhexx.cn/article/yH11II3N.shtml

相关文章

将Linux可执行文件变成可执行命令

查看PATH环境变量 echo $PATH 或 env | grep PATH 添加路径到PATH export PATH/usr/test:$PATH 临时改变&#xff0c;只能在当前的终端窗口中有效&#xff0c;当前窗口关闭后就会恢#复原有的path配置&#xff0c;通过修改.bashrc文件可以永久保存。 vim ~/.bashrc export PA…

linux执行软件,软件可执行文件 linux 可执行文件

如何制作exe程序可执行文件 Java制作成exe的安装文件真是太复杂了&#xff0c;有几种打包软件&#xff0c;比如InstallAnyWere等&#xff0c;可以打包成你想要的安装文件&#xff0c;但那个软件是英文版的&#xff0c;功能也挺大的&#xff0c;我也没找到相关的资料&#xff0c…

linux 如何运行一个可执行文件

本文只为整理思路&#xff0c;供自己日后参考。现在就从从一个执行文件a.out的运行开始&#xff0c;自上而下地分析linux是如何运行一个执行文件的。 1、首先&#xff0c;需要了解一下a.out这个目标文件。a.out在linux下是ELF&#xff08;Executable Linkable Format&#xff…

浅析linux可执行文件

程序是以可执行文件的形式存放在磁盘上的,可执行文件既包括目标代码也包括数据。我们一般所使用的库函数可以被静态的拷贝到可执行文件中,也可以运行时动态链接。 可执行文件是一个普通文件,它描述了如何初始化一个新的执行上下文,也就是如何开始一个新的计算。当进程开始执…

python打包为linux可执行文件

1、将python文件打包后&#xff08;dist及log文件不需要打包&#xff09;上传至linux服务器&#xff0c;同一目录下 注&#xff1a;不要打包成zip格式&#xff0c;zip从windos上传至linux解压后会存在编码格式不一致的问题 2、安装pyinstaller打包库 pip installer pyinsta…

Linux 可执行文件结构与进程结构

Linux可执行文件结构 在 Linux 下&#xff0c;程序是一个普通的可执行文件&#xff0c;以下列出一个二进制可执行文件的基本情况&#xff1a; 可以看出&#xff0c;此可执行文件在存储时&#xff08;没有调入到内存前&#xff09;分为代码区&#xff08;text&#xff09;、数据…

Linux可执行文件与进程的虚拟地址空间

作者简介&#xff1a; 本文由西邮陈莉君教授研一学生贺东升编辑&#xff0c;梁金荣、张孝家校对 建议结合之前的《linux的内存寻址方式》看。 Linux可执行文件与进程的虚拟地址空间 一个可执行文件被执行的同时也伴随着一个新的进程的创建。Linux会为这个进程创建一个新的虚拟地…

linux 可执行文件启动流程

linux ELF文件启动流程 一、背景 ​ 最近看了《linkers and loader》和以前学习《程序员的自我修养》&#xff0c;但是看了理解不是特别透&#xff0c;所以就想通过一个实际的案例来把了解到知识串起来&#xff0c;因此就想到把linux 识别和启动elf可执行文件流程梳理下&…

Linux可执行文件制作

Linux可执行文件制作 背景 测试过程中&#xff0c;需要针对不同的Linux系统、核心服务版本进行验证&#xff0c;各种环境依赖的python版本以及已安装的库存在较大差异&#xff0c;考虑到实际测试需求以及出差现场使用的要求&#xff0c;需要将测试脚本打包为可执行文件&#xf…

如何将Python程序打包成linux可执行文件

如何将Python程序打包成linux可执行文件 方法1.安装环境2.打包程序3.执行文件 方法 前段时间尝试使用Python的tkinter制作了一个简单的丑丑的图形化界面&#xff0c;现在想把它打包成Linux可执行文件&#xff0c;具体步骤如下&#xff1a; 1.安装环境 使用的工具是pyinstall…

linux 运行可执行文件

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。 1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format)文件格式,该目标文件由一个文件头、代码段、数据段…

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境&#xff1a;Ubuntu 20.04、gcc-9.4.0 代码仓库&#xff1a;https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载&#xff08;不能直接编译&#xff0c;需进行修改&#xff09; 本章目标 本章会加载并运行…

Linux可执行文件

文章目录 1. 什么是可执行文件2. 可执行文件的区别./ 表示什么?为什么是/usr/bin?总结 1. 什么是可执行文件 可执行文件指的是这个文件可以被运行.这个文件可以是一个代码文件,也可以是一个二进制文件 Linux文件系统中只有文件和目录(一切皆文件). 在Linux中,运行一个文件的…

技术人员如何创业(1)---产品及想法

不得不说这是个浮躁的社会&#xff0c;人人在这个社会都想暴富或者成名。在这些引诱的驱使下很多人都脱离了原来的稳定工作创业。前几天看了《中国合伙人》&#xff0c;故事讲到了几个大学生从校园到工作、再到创办了一个伟大的企业&#xff0c;这个故事更加激励了创业大军的壮…

蓝河科技10个月创立3.05亿美元的农业机器人公司

从创业构想到模式验证&#xff0c;仅10个月如何做到&#xff1f; 蓝河科技&#xff08;Blue River Technology&#xff09;是一家成立于2011年的农业机器人公司&#xff0c;总部位于硅谷&#xff0c;主营业务为设计、生产和销售农业机器人&#xff0c;农业机器人租赁业务和相关…

重新理解创业:一个创业者的途中思考

内容简介 易到用车创始人/顺为资本投资合伙人周航&#xff0c;首度复盘20年创业经历&#xff0c;全方位坦陈创业得与失。这不是一本创业成功手册&#xff0c;却是思想的一次出走。20年创业经历的咀嚼与反思&#xff0c;从战略、品牌、竞争&#xff0c;到流量、领导力、团队管理…

创业案例|10个月$3亿市值的农业智能科技如何实现

如何在10个月内快是实现创业从构想到模式验证&#xff0c;6年后以3个多亿美元成功被收购。本文是蓝河科技创始人Jorge和Lee自述&#xff0c;如何通过精益创业的关键三个阶段&#xff1a;客户问题匹配、问题方案匹配、方案市场匹配&#xff0c;实现了本成本试错、高效率推进的从…

计算机毕设题目推荐

计算机软件的朋友们不知道选什么题目的看过来啦&#x1f448; 图片中都是做过的毕设供大家参考&#xff0c;有源码的哦 ps&#xff1a;有新颖想法的宝子们也可以留言分享一下呢 #Java毕业设计 #计算机毕业设计 #计算机毕业设计怎么做

计算机毕设题目设计与实现(论文+源码)_kaic

毕业设计(论文)题目 高校图书馆座位预约选座微信小程序设计与实现 基于防火墙的访问控制系统的设计与实现 基于区块链的农产品追溯系统设计与实现 学生公寓楼改造布线系统规划与设计 智能家居网络设计与实现“互联网”农村精准扶贫共享平台的设计与实现“智慧健康少儿成长平台”…

计算机毕设选题推荐 40个高质量项目分享【源码+论文】(二)ssm+vue

文章目录 前言 课题1 : 基于SSM与VUE的房屋出租出售系统 <br /> 课题2 :基于SSM与VUE的租房信息管理系统 <br /> 课题3 : 基于SSM与VUE的个人健康信息管理系统 <br /> 课题4 : 基于SSM与VUE的共享充电宝管理系统 <br /> 课题5 : 基于SSM的健身运动平台…