跳到主要内容

使用手册

如何使用​

在树莓派原始镜像上配置环境运行程序

1. 安装树莓派镜像​

如果需要配置好的镜像,请稍等,目前正在配置

  1. 将树莓派镜像写入到 TF 卡中,在 TF 卡根目录下新建一个名为 SSH 的空白文件开启 SSH, 编辑 TF 卡根目录下的 config.txt 文件设置屏幕分辨率。在 config.txt 文件末尾添加:

    hdmi_group=2
    hdmi_mode=82
    hdmi_cvt 1920 1080 60 6 0 0 0

    必须确保等号两边没有空格。

  2. 保存并将 TF 卡插入树莓派,Magic Mirror 接上网线,树莓派上电后正常等待几秒后可正常显示。

  3. 树莓派正常启动后可以通过鼠标键盘操作,也可以通过 SSH 或 VNC 操作。

2. 检查 USB 声卡驱动​

检测声卡

  • 检查播放:aplay -l
  • 检查录音:arecord -l

3. 安装 Magic Mirror​

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
git clone https://github.com/MichMich/MagicMirror
cd MagicMirror/
npm install

安装成功后运行如下命令显示

DISPLAY=:0 npm start

屏幕显示如图

MgicMirror-1

添加 MMM-VoiceAssistant 模块

cd ~/MagicMirror/modules
git clone https://github.com/waveshare/MMM-VoiceAssistant.git
cd MMM-VoiceAssistant
cp config/config.js.en ~/MagicMirror/config/config.js #显示英文
#cp config/config.js.cn ~/MagicMirror/config/config.js #显示中文
cd ~/MagicMirror
DISPLAY=:0 npm start

屏幕显示如图

MgicMirror-2

4. 安装 Python3 虚拟环境​

sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate

注意:之后的所有操作都是在虚拟环境中进行,重新打开终端需运行如下命令进入到虚拟环境中。

source ~/env/bin/activate

5.snowboy 安装​

安装依赖库

sudo apt-get install swig
sudo apt-get install libatlas-base-dev
sudo apt-get install portaudio19-dev
sudo apt-get install flac
pip3 install PyAudio
pip3 install SpeechRecognition

下载编译 snowboy

git clone https://github.com/Kitt-AI/snowboy.git
cd snowboy/swig/Python3
make
cd ../../examples/Python3

修改 snowboydecoder.py 文件,将 from . import snowboydetect 改为 import snowboydetect,去掉 from . 测试 snowboy 唤醒

cd ~/snowboy/examples/Python3
python3 demo.py resources/models/smart_mirror.umdl

说 smart_mirror,如果有检测到则会显示类似这样的信息,同时会响 ding 的一声

INFO:snowboy:Keyword 1 detected at time: 2019-12-03 11:30:16

6.Google Assistant Service 安装​

提示

注意:在中国,无法直接使用 Google 的服务。需要科学上网,必须搭建可以访问 google 的路由器,然后树莓派连接到路由器。 注意:自 2019 年 6 月 28 日起,不再支持 Python 的 Google Assistant Library 。只能用 Google Assistant Service。

在主目录 (/home/pi) 中新建 .asoundrc 文件,确保 Google Assistant 可以使用正确的麦克风和扬声器。

nano .asoundrc

新建 .asoundrc 文件,将以下配置添加到文件中保存。

pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:0,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:0,0"
}
}

在开始使用 Google Assistant 之前,需要将 Google Assistant Service 安装到树莓派中。以下是 Google 官方指导的链接。
https://developers.google.com/assistant/sdk/guides/service/python
请根据指南第三步,配置开发人员项目和配置账户,并创建一个 OAuth Client ID JSON 文件。 不要忘记将 JSON 文件复制到您的 Raspberry Pi。
请根据指南第四步,注册设备模型。

安装 Google Assistant SDK

(env) $ sudo apt-get install portaudio19-dev libffi-dev libssl-dev
(env) $ python -m pip install --upgrade google-assistant-sdk[samples]

授权 Google Assistant SDK 安装或更新授权工具

(env) $ python -m pip install --upgrade google-auth-oauthlib[tool]

生成凭据以运行示例代码和工具。将下载的 JSON 文件复制到设备,不要重命名文件。将以下命令中的 /path/to/client_secret_CLIENT_ID.json 替换为该文件的实际完整路径,保留路径两侧的双引号。

(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets "/path/to/client_secret_CLIENT_ID.json"

可以在终端中看到一个 URL:

Please visit this URL to authorize this application: https://...

复制 URL 并将其粘贴到浏览器中(可以在任何计算机上完成)。该页面将要求您登录您的 Google 帐户。登录到上一步中创建开发人员项目的 Google 帐户 。 从 API 批准许可请求后,浏览器中将显示一个代码,例如“ 4 / XXXX”。将此代码复制并粘贴到终端中:

Please go to this URL: https://...
Enter the authorization code:

如果授权成功,您将看到类似于以下的响应。如果您看到 InvalidGrantError,则输入了无效的代码。请重试,请小心复制并粘贴整个代码。

credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json

运行如下命令测试 my-dev-project 为创建的 Actions Console 项目的 Google Cloud Platform 项目 ID。要在 Actions Console 中找到项目 ID 、 my-model 为在上一步中注册设备模型的名称。

googlesamples-assistant-pushtotalk --project-id my-dev-project --device-model-id my-model

按 Enter 键,然后尝试以下一些查询 Who am I? What time is it? 正常情况 Google Assitant 会回应。

7. 设置开机启动​

安装 PM2

sudo npm install -g pm2

设置 PM2 开机启动

pm2 startup

运行此命令后会显示一个类似如下的命令,复制此命令到终端运行。

[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

使用 PM2 启动 MagicMirror

cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start mm.sh

使用 PM2 启动 snowboy 语音助手程序

cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start snowboy.sh

设置开机启动 PM2 脚本

pm2 save

可以运行下面语句关闭对应的脚本服务。注意,需要使用 Pi 用户,不能使用管理员用户。

pm2 stop mm
pm2 stop snowboy

8. 设置屏幕常亮​

打开 lightdm.conf

sudo vi /etc/lightdm/lightdm.conf

修改 lightdm.conf 找到 [SeatDefaults] 段下的’xserver-command’, 取消注释,修改为如下:

#xserver-command=X

修改为

xserver-command=X -s 0 -dpms
  • -s # –设置屏幕保护不启用
  • dpms 关闭电源节能管理

重启

sudo reboot

注意事项​

  1. 程序中唤醒词采用的是公有模型,理论上对所有人都有效,但是如果实际不能唤醒可以到 snowboy 官方注册账号训练自己的模型或者更改其他唤醒词。

    登录 snowboy:https://snowboy.kitt.ai 网站,找到需要设置的唤醒词,或者添加新的唤醒词。

    MgicMirror-3

    点击录音和下载图标录音声音,录制三次然后最后检测声音模型是否可用。

    MgicMirror-4

    下载生成的私有模型,.pmdl 后缀的文件,例如 Alexa.pmdl. 将文件复制到~/MagicMirror/modules/MMM-VoiceAssistant/pi 目录下。注意文件名要用英文,如果不是英文则修改文件名。 打开启动脚本文件修改。

    vi snowboy.sh

    替换脚本中的文件名,其中第一个 smart_mirror.umdl 为中文唤醒,第二个 snowboy.umdl 为引文唤醒词。

    cd ~/MagicMirror/modules/MMM-VoiceAssistant/pi
    ~/env/bin/python3 demo.py smart_mirror.umdl snowboy.umdl
  2. 国内用户不能显示新闻,一直显示 loading
    系统默认英文显示,国内需要科学上网才能显示,更改配置显示中文即可以显示。

    cd ~/MagicMirror/modules/MMM-VoiceAssistant/config
    cp config.js.cn ~/MagicMirror/config/config.js #显示中文
    #cp config.js.en ~/MagicMirror/config/config.js #显示英文
    sudo reboot #重启
  3. 科大讯飞服务每天只有 500 次申请次数,超过将不再响应。可申请账户,修改程序 ID 和 KEY。

程序中用到语音合成 tts 和 aiui 两种服务。打开~/MagicMirror/modules/MMM-VoiceAssistant/pi/aiui.py。可以看到如下程序

500

修改对应的值替换账户,注释中有文档中心连接。

  1. Google Assistant Service 每天只有 500 次申请次数,超过将不再响应。可申请账户,修改程序 ID。

打开~/MagicMirror/modules/MMM-VoiceAssistant/pi/audiofileinput.py。可以如下代码

600

按照前面 6.Google Assistant Service 安装部分操作,注册账户,设备模型,安装授权。
最后将程序中的 DEVICE_ID,DEVICE_MODEL_ID 替换为对应的值

RS232​

在/boot/config.txt 添加 dtoverlay=uart3

sudo nano /boot/config.txt
dtoverlay=uart3
#设备号 /dev/ttyAMA1

RS485​

打开树莓派终端,输入以下指令进入配置界面

sudo raspi-config
#选择 Interfacing Options -> Serial,关闭 shell 访问,打开硬件串口
#设备号 /dev/ttyS0

L76X GPS Module rpi serial