【RaspberryPi4】SmartMonitorMagicMirror
? 由人盯著監(jiān)視屏幕,人總有疲勞限度的。研究表明,監(jiān)控操作人員盯著電視墻屏幕超過(guò)10分鐘后將漏掉90%的視頻信息。由于人工篩選數(shù)據(jù)的低效率和低可靠性,視頻監(jiān)控系統(tǒng)不能局限于被動(dòng)地提供視頻畫面,要求集成智能算法,能夠自動(dòng)識(shí)別不同的物體,發(fā)現(xiàn)監(jiān)控畫面中的異常情況,實(shí)現(xiàn)不再要人去盯、用計(jì)算機(jī)代替人進(jìn)行監(jiān)控,即實(shí)現(xiàn)“自動(dòng)監(jiān)控”或“智能監(jiān)控”。智能視頻監(jiān)控是基于機(jī)器視覺(jué)對(duì)視頻信號(hào)進(jìn)行處理、分析和理解,在不需要人工干預(yù)的情況下,通過(guò)對(duì)序列圖像自動(dòng)分析對(duì)監(jiān)控場(chǎng)景中的變化進(jìn)行定位、識(shí)別和跟蹤,并在此基礎(chǔ)上分析和判斷目標(biāo)的行為,能在異常情況發(fā)生時(shí)及時(shí)發(fā)出警報(bào)或提供有用信息,從而有效地協(xié)助安全監(jiān)管人員處理危機(jī),并最大限度地降低誤報(bào)和漏報(bào)現(xiàn)象,成為應(yīng)對(duì)突發(fā)事件的有力輔助工具。
0. 準(zhǔn)備工作
- 樹莓派4b 單板2G 335
- 電源,外殼,HDMI線,散熱片,16GTF卡,讀卡器,小風(fēng)扇,網(wǎng)線,引腳尺,擴(kuò)展板+銅柱,按鍵,點(diǎn)陣,LED,排線,點(diǎn)陣轉(zhuǎn)接板 60
- 顯示屏: 7寸 ultra-thin TFT LCD color monitor 180
- 攝像頭: 魚眼廣角夜視500w 視角130度 咸魚 89
1. Magic Mirrors
MagicMirror2 is an open source modular smart mirror platform. With a growing list of installable modules, the MagicMirror2 allows you to convert your hallway or bathroom mirror into your personal assistant
1.1 Installation Manually
- Download and install the latest Node.js version:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -sudo apt install -y nodejs
- Clone the repository and check out the master branch:
git clone https://github.com/MichMich/MagicMirror - Enter the repository:
cd MagicMirror/ - Install the application:
npm install - Make a copy of the config sample file:
cp config/config.js.sample config/config.js - Start the application:
npm run start
For Server Only use:npm run server.
1.2 Alternative Installation
- Docker Image
- MagicMirrorOs
1.3 Configuration
- check your configuration running
npm run config:checkin/home/pi/MagicMirror
Model 官方模塊包括: Alert, Calendar, Clock, Current Weather, Hello world, News Feed, Update Notification, Weather Module, Weather Forecast
FileStructure:
- modulename/modulename.js - This is your core module script.
- modulename/node_helper.js - This is an optional helper that will be loaded by the node script. The node helper and module script can communicate with each other using an integrated socket system.
- modulename/public - Any files in this folder can be accessed via the browser on
/modulename/filename.ext. - modulename/anyfileorfolder Any other file or folder in the module folder can be used by the core module script. For example: modulename/css/modulename.css would be a good path for your additional module styles.
2. 自美系統(tǒng)
硬件清單:https://shop418091054.taobao.com/
自美驅(qū)動(dòng)板:
? 基于樹莓派的智能魔鏡:音頻、人體感應(yīng)、屏幕開關(guān)、鏡前燈控件和控溫風(fēng)扇控件等模塊而設(shè)計(jì),采用WM8960低功耗立體聲編解碼器,通過(guò)I2C接口控制,I2S接口傳輸音頻。板載兩個(gè)3P標(biāo)準(zhǔn)可錄立體有源硅麥接口,板載一個(gè)4P可接雙通道喇叭。
- 供電電壓:5V
- 邏輯電壓:3.3V
- 音頻編解碼芯片:WM8960
- 控制接口:I2C
- 音頻接口:I2S
- DAC信噪比:98dB
- ADC信噪比:94dB
- 揚(yáng)聲器驅(qū)動(dòng):1W per channel (8Ω BTL)
#布置環(huán)境 一鍵安裝全部環(huán)境
sudo curl -sSL http://a.16302.com/init | sh
#系統(tǒng)安裝
sudo curl -sSL http://a.16302.com/install | sudo python3
2.1. 配網(wǎng)方法
- 如下圖所示,將觸摸配網(wǎng)按鈕插入“按鍵”插口,手指輕觸按鈕 (TOUCH) 指示位置5秒鐘以上就即可進(jìn)入配網(wǎng)模式(如果沒(méi)有觸摸按鈕也可以使用一根導(dǎo)線將P31與3V3引腳連接5秒鐘以上)
- 語(yǔ)音提示開始配網(wǎng),跳轉(zhuǎn)出下面的頁(yè)面,按提示操作
- 打開手機(jī)微信掃一掃功能,掃描屏幕上二維碼直接進(jìn)入配網(wǎng)界面,如果沒(méi)有顯示器可在微信中搜索“自美系統(tǒng)”小程序,打開小程序在右下角“我”的選項(xiàng)里找到“設(shè)備配網(wǎng)”欄目,點(diǎn)擊進(jìn)入
2.2. 喚醒詞
- 鏈接網(wǎng)址: https://snowboy.kitt.ai/
- 設(shè)備要求: 電腦上需要麥克風(fēng)才能完成
- 使用文檔:http://docs.16302.com/1144911
2.3. 微信綁定
- 掃描二維碼,綁定設(shè)備
2.4. 系統(tǒng)內(nèi)置插件
| 觸發(fā)詞 | 功能 | 對(duì)應(yīng)插件 | 備注 |
|---|---|---|---|
| “用戶綁定”,“綁定用戶”,“綁定設(shè)備”,“設(shè)備綁定”,“我是誰(shuí)” | 通過(guò)微信綁定機(jī)器 | user | |
| “IP地址”, “本機(jī)IP” | 播報(bào)ip地址 | SayIp | 基本參考格式 |
| [“播放本地歌曲”, “暫停歌曲”, “暫停播放”, “繼續(xù)播放”, “歌曲繼續(xù)”,"\b播放\S{0,4}\d","\b切換\S{0,4}\d", | 歌曲播放 | Music | 使用mplay開源軟件 |
| “打開燈”, “關(guān)閉燈” | 開關(guān)操作 | Light | 設(shè)置一個(gè)引腳input/output |
| “打開屏幕”, “打開顯示”, “關(guān)閉屏幕”, “關(guān)閉顯示”,“天氣地址”,“修改位置”,“聲音\S{2,}”, "音量\S{2,}"修改位置為銅陵市 | 設(shè)備操作 | Device | 調(diào)節(jié)音量和打開或關(guān)閉屏幕,修改天氣地址 |
2.5. 系統(tǒng)手動(dòng)升級(jí)
sudo python3 /keyicx/update.py
# 若失敗手動(dòng)恢復(fù)升級(jí)
sudo curl -sSL http://a.16302.com/update | sudo python3
開發(fā)者模式(推薦使用)
sudo curl -sSL http://a.16302.com/initdev | sh
自美智能系統(tǒng)桌面任務(wù)欄
sudo mv /home/pi/.config/lxpanel/LXDE-pi/panels/panel /home/pi/.config/lxpanel/LXDE-pi/
sudo reboot
啟動(dòng)正常模式
/keyicx/python/run.py
啟動(dòng)調(diào)試模式
/keyicx/python/run.py debug
停止關(guān)閉系統(tǒng)
/keyicx/python/run.py stop
2.6. 驅(qū)動(dòng)安裝和升級(jí)
-
一鍵鏡像安裝自美系統(tǒng),會(huì)自動(dòng)將本驅(qū)動(dòng)板相應(yīng)的驅(qū)動(dòng)安裝并已經(jīng)調(diào)試到最佳狀態(tài),本教程可跳過(guò)。
一鍵鏡像安裝自美系統(tǒng)請(qǐng)點(diǎn)擊這里 -
在線手動(dòng)安裝驅(qū)動(dòng)
手動(dòng)安裝驅(qū)動(dòng),建議燒錄樹莓派官方系統(tǒng),因?yàn)樵蹅兓旧隙际窃谶@個(gè)系統(tǒng)進(jìn)行開發(fā)測(cè)試+調(diào)試的,其他系統(tǒng)沒(méi)有相應(yīng)的測(cè)試過(guò),不保證一定能安裝成功。
第一步:首先將驅(qū)動(dòng)板插到樹莓派開發(fā)板上,啟動(dòng)樹莓派;
第二步:啟動(dòng)樹莓派系統(tǒng),啟動(dòng)終端(或用SSH連接到樹莓派設(shè)備)
#打開I2C 接口
sudo raspi-config
#選擇 5 Interfacing Options \→ P5 I2C \→ 是 啟動(dòng) i2C 內(nèi)核驅(qū)動(dòng)
# 關(guān)閉樹莓派默認(rèn)音頻驅(qū)動(dòng)
sudo nano /boot/config.txt
#注: dtparam=audio=on 將這行注釋
sudo reboot
# 在線安裝驅(qū)動(dòng)
git clone https://github.com/waveshare/WM8960-Audio-HAT
# 這里需要等待一定的時(shí)間
cd WM8960-Audio-HAT
sudo ./install.sh
sudo reboot
#測(cè)試驅(qū)動(dòng)安裝
sudo dkms status
#wm8960-soundcard, 1.0, 4.19.58+, armv7l: installed
#wm8960-soundcard, 1.0, 4.19.58-v7+, armv7l: installed
#wm8960-soundcard, 1.0, 4.19.58-v7l+, armv7l: installed
# 檢測(cè)聲卡
root@raspberrypi:~ # aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []Subdevices: 1/1Subdevice #0: subdevice #0
# 檢測(cè)錄音功能
root@raspberrypi:~ # arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []Subdevices: 0/1Subdevice #0: subdevice #0#錄音并播放測(cè)試
sudo arecord -f cd -Dhw:0 | aplay -Dhw:0
- 單錄音測(cè)試
sudo arecord -D hw:0,0 -f S32_LE -r 16000 -c 2 test.wav
test.wav是錄制生成的文件名。
- 播放錄音(播放剛剛錄制的音頻)
sudo aplay -Dhw:0 test.wav
- 安裝mpg123播放器
sudo apt-get install mpg123
- 播放MP3
sudo mpg123 ***.mp3
2.7. 插件開發(fā)
原理:自美系統(tǒng)采用多進(jìn)程消息隊(duì)列管理模式運(yùn)行,各模塊和插件均為獨(dú)立進(jìn)程運(yùn)行互不干擾。進(jìn)程間采用消息通知方式通信。
系統(tǒng)結(jié)構(gòu)說(shuō)明: 每一個(gè)模塊都可以獨(dú)立運(yùn)行和協(xié)作運(yùn)行,插件也可以理解為一個(gè)特有功能的模塊。除了一些特有功能模塊,系統(tǒng)自帶集合了幾大內(nèi)置功能,分別如下:
一、 語(yǔ)音喚醒模塊;
二、語(yǔ)音錄音模塊;
三、語(yǔ)音識(shí)別模塊;
四、語(yǔ)音合成模塊;
五、屏幕顯示模塊;
六、微信小程序通信模塊;
七、外設(shè)萬(wàn)能開關(guān)通信模塊;
2.7.1. 插件結(jié)構(gòu)
一、插件位置:
自美插件位于當(dāng)前系統(tǒng)目錄:./python/plugin/目錄下,如果您采用鏡像安裝方式安裝的自美系統(tǒng),那么插件目錄就是:/keyicx/python/plugin/下,一個(gè)插件一個(gè)目錄,如:
/keyicx/python/plugin/Chat(聊天機(jī)器人插件)
/keyicx/python/plugin/Music(音樂(lè)插件)
二、插件組成:
自美系統(tǒng)是由*.py(插件入口文件) + config.json(插件配置文件)組成,如音樂(lè)插件是由:
/keyicx/python/plugin/Music/config.json (配置文件)
/keyicx/python/plugin/Music/Music.py (入口文件)
三、插件命名約定
插件命名約定可簡(jiǎn)單說(shuō)叫:四名一致
1、插件文件夾名稱;
2、config.json配置文件名中的name插件名稱鍵值;
3、插件入口文件.py(也可以叫插件基本文件)名;
4、插件入口文件中的起始類名:class 插件名稱
每一個(gè)插件必須保持以上四個(gè)位置處名稱一致并且在插件文夾中唯一,否則都會(huì)導(dǎo)致插件不能正常啟動(dòng)和運(yùn)行。
四、config.json 配置文件
{"name": "插件名","triggerwords": [], // 插件語(yǔ)音觸發(fā)詞數(shù)組"IsEnable": false, // 是否啟用"IsSystem": false, // 是否為系統(tǒng)插件,系統(tǒng)插件會(huì)保持后臺(tái)運(yùn)行"AutoLoader": false, // 是否隨系統(tǒng)啟動(dòng)自動(dòng)裝載 "displayName": "", // 插件名稱(通常為中文簡(jiǎn)稱)"description": "", // 插件簡(jiǎn)介說(shuō)明"icon":"0", // 插件默認(rèn)圖標(biāo)(默認(rèn)選0就行)"version": "0.0.1", // 插件版本號(hào)"updateTime":"", // 插件最近一次更新時(shí)間"control":[], // 微信小程序控制端配置 "webAdminApi":"", // 插件管理配置文件接口"initControl": 0, // 插件被激活是否通知微信小程序控制端"repository": { // 插件版本管理配置"type": "git", // 插件通訊協(xié)議,分為:git 和 http 兩種,目前只支持git模式"url": "" // 插件版本維護(hù)地址}
}
2.7.2. 前端開發(fā)
前端文件目錄: /keyicx/python/webroot/desktop/mojing/
前端顯示與Python通訊方式
自美系統(tǒng)前端與后端Python通訊采用兩種方式,一種是被動(dòng)顯示和主動(dòng)請(qǐng)求:
- 被動(dòng)顯示采用
websocket技術(shù),以達(dá)到實(shí)時(shí)性; - 主動(dòng)請(qǐng)求,采用直接調(diào)用python文件方式,得到顯示結(jié)果(注:這種方式后期可能會(huì)廢棄)
被動(dòng)顯示方式介紹
被動(dòng)顯示即前端顯示一直處于等待顯示數(shù)據(jù)接收狀態(tài),我們采用的是NodeJS技術(shù)將前端設(shè)置為websocket服務(wù)器,Python通過(guò)socket技術(shù)向前端發(fā)送信息,具體代碼可參考:/keyicx/app/resources/app/control.js文件中:
start_websocket: function(){
...
}
project 1:https://www.youtube.com/watch?v=cVmDjJmcd2M
自定義功能:
- 添加按鍵觸摸打開監(jiān)控?cái)z像頭
- 添加電子相冊(cè)
- 添加Monitor監(jiān)控模塊
3. Home Assistant 系統(tǒng)
HomeAssistant是構(gòu)建智慧空間的神器。是一個(gè)成熟完整的基于 Python 的智能家居系統(tǒng),設(shè)備支持度高,支持自動(dòng)化(Automation)、群組化(Group)、UI 客制化(Theme) 等等高度定制化設(shè)置。同樣實(shí)現(xiàn)設(shè)備的 Siri 控制?;贖omeAssistant,可以方便地連接各種外部設(shè)備(智能設(shè)備、攝像頭、郵件、短消息、云服務(wù)等,成熟的可連接組件有近千種),手動(dòng)或按照自己的需求自動(dòng)化地聯(lián)動(dòng)這些外部設(shè)備,構(gòu)建隨心所欲的智慧空間。HomeAssistant是開源的,它不屬于任何商業(yè)公司,用戶可以無(wú)償使用。
3.1. Home Assistant系統(tǒng)
- Home Control,收集組件的信息并對(duì)組件進(jìn)行控制,同樣也接收來(lái)自用戶的控制并返回信息。
- Home Automation,根據(jù)用戶的配置,自動(dòng)發(fā)送控制指令(通過(guò)用戶指導(dǎo)來(lái)替代用戶層的操作)。
- Smart Home,根據(jù)各種之前的控制行為與結(jié)果,自學(xué)習(xí)到下一次發(fā)送的控制指令(無(wú)需用戶指導(dǎo)而替代用戶層的操作)。
3.2. Installation
3.2.1 Hass.io
Hass.io是一個(gè)完整的UI管理的家庭自動(dòng)化生態(tài)系統(tǒng),它運(yùn)行Home Assistant,Hass.io Supervisor和附加組件。它預(yù)先安裝在HassOS上,但可以安裝在任何Linux系統(tǒng)上。它利用了由Hass.io Supervisor管理的Docker。
- Hass.io Supervisor:Hass.io Supervisor是管理Hass.io安裝的程序,負(fù)責(zé)安裝和更新Home Assistant,附加組件本身以及更新(如果使用的話)HassOS操作系統(tǒng)。
- HassOS:HassOS,家庭助理操作系統(tǒng),是一種嵌入式,簡(jiǎn)約的操作系統(tǒng),旨在在單板計(jì)算機(jī)(如Raspberry Pi)或虛擬機(jī)上運(yùn)行Hass.io生態(tài)系統(tǒng)。Hass.io Supervisor可以使其保持最新?tīng)顟B(tài),從而無(wú)需管理操作系統(tǒng)
Installing using a Docker managed environment (recommended method).
- Download and extract the Home Assistant image for your device
- Download balenaEtcher to write the image to an SD card
- http://X.X.X.X:8123 to see the home page
Docker - Installing on Docker.
3.2.2 Manually
Manual installation using a Python virtual environment.
pip3 install homeassistant
hass
# open localhost:8123, 注冊(cè)賬號(hào)進(jìn)入主界面
3.2.3 docker install
sudo nano /etc/apt/sources.list.d/raspi.list
sudo apt-get update
#docker 安裝
#1. docker apt 源
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common
# GPG密鑰
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
#2. 添加docker ce
echo "deb [arch=armhf] https://download.docker.com/linux/debian \$(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list
#3. 安裝docker ce
sudo apt-get update
sudo apt-get install docker-ce
#4. 創(chuàng)建docker 倉(cāng)庫(kù)鏡像
sudo nano /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
docker pull hello-world
docker run hello-world
# 安裝圖形化界面工具
docker pull portainer/portainer:latest
docker run -d -p 9000:9000 --name portainer --restart=always -e TZ="Asia/Shanghai" -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
4. 系統(tǒng)鏡像
- Raspbian - 來(lái)自樹莓派官方的操作系統(tǒng),基于Debian,同時(shí)官方也提供了一個(gè)Raspbian的精簡(jiǎn)版。
- Kali Linux - 為滲透測(cè)試和正義黑客準(zhǔn)備的Linux發(fā)行版,運(yùn)行在ARM設(shè)備上
- chilipie-kiosk - 可直接引導(dǎo)到全屏Chrome的鏡像,非常適合用于儀表板和構(gòu)建監(jiān)視器。
- DietPi - 為2G SD卡準(zhǔn)備的最小鏡像, 帶有許多可配置項(xiàng)和腳本.
- Minibian - 最小的 Raspbian (比 Jessie Lite還要輕量).
- Fedora
- motionEyeOS - 將微型計(jì)算機(jī)打造為視頻監(jiān)控系統(tǒng)的Linux發(fā)行版。
5. 工具
- Etcher - 跨平臺(tái)的SD卡燒錄程序,使用簡(jiǎn)單,易于擴(kuò)展.
- OpenVPN-Setup - 用于將樹莓派設(shè)置為OpenVPN服務(wù)器的Shell腳本.
- Network Presence Detector - 配置Pi0,使其可以在wifi網(wǎng)絡(luò)里掃描,發(fā)現(xiàn)誰(shuí)是"home"
- Pi Dashboard來(lái)監(jiān)控樹莓派狀態(tài)
6. 項(xiàng)目
- Mini OONTZ - 3D打印的迷你MIDI控制器
- Power Sniffing Strip - 藏在電源插座里的樹莓派, 用于嗅探網(wǎng)絡(luò)數(shù)據(jù).
- Raspberry Pi Erlang Cluster - 跑在樹莓派2代上的Erlang集群
- NTP driven Nixie Clock - 由樹莓派驅(qū)動(dòng)的數(shù)碼管時(shí)鐘
- 40-node Raspberry Pi Cluster - 40個(gè)節(jié)點(diǎn)構(gòu)成的樹莓派集群
- Raspberry PI Hadoop Cluster - 跑在樹莓派上的大數(shù)據(jù)集群.
- Multi-Datacenter Cassandra on 32 Raspberry Pi’s - 32個(gè)節(jié)點(diǎn)的樹莓派cassandra數(shù)據(jù)庫(kù)集群.
- Building a Ceph Cluster on Raspberry Pi - 基于分布式對(duì)象存儲(chǔ)系統(tǒng)RADOS的高度冗、低功耗家庭存儲(chǔ)解決方案。
- Smart Mirror - 帶語(yǔ)音控制智能鏡子,集成物聯(lián)網(wǎng).
- Magic Mirror - 開源模塊化智能鏡子平臺(tái).
- Door bot - 門衛(wèi)機(jī)器人,感知到門被打開時(shí)將給你發(fā)送信息.
- SecPi - 基于Raspberry Pi的家庭報(bào)警系統(tǒng).
- PiClock - 別致的時(shí)鐘
- Movel - 樹莓派車載電腦
- PiFanTuner - CPU風(fēng)扇控制程序
- Sonus - 開源、跨平臺(tái)的語(yǔ)音識(shí)別框架(Google Cloud Speech)
- Alexa AVS - 基于Java客戶端和Node.js服務(wù)端的 Alexa Voice Service 示例程序
- Harry Potter and the real life Daily Prophet - 通過(guò)RPi的7英寸顯示模擬哈利波特中的魔法報(bào)紙(動(dòng)態(tài)頭條)
- Raspberry Pi login with SSH keys - ssh免密碼登錄樹莓派(使用SSH key)
- Use a Raspberry Pi with multiple WiFi networks - 將樹莓派接入多個(gè)無(wú)線網(wǎng)絡(luò)的教程.
- Raspberry Pi Media Server Guides - 用樹莓派搭建媒體服務(wù)器的教程(HTPC:Home Theater Personal Computer,即家庭影院電腦)
- OSMC: 家庭影院系統(tǒng)
- 樹莓派網(wǎng)易云音樂(lè)播放器
- 去碼云或者Github樹莓派倉(cāng)庫(kù)尋覓有趣的項(xiàng)目
7. 未來(lái)
- 智能家居方面: 添加更多的功能
- 智能小車方面:學(xué)習(xí)使用ROS開源系統(tǒng),結(jié)合自己做學(xué)的定位與導(dǎo)航,自動(dòng)智能化倉(cāng)儲(chǔ)管理結(jié)合
- 原文鏈接: https://liudongdong1.github.io/2020/05/06/aiot/rpi/rpi-camera-monitor/
總結(jié)
以上是生活随笔為你收集整理的【RaspberryPi4】SmartMonitorMagicMirror的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 盘点8个国内外知名表单软件平台,你知道几
- 下一篇: css选择器参考手册