【RaspberryPi4】SmartMonitorMagicMirror
? 由人盯著監(jiān)視屏幕,人總有疲勞限度的。研究表明,監(jiān)控操作人員盯著電視墻屏幕超過10分鐘后將漏掉90%的視頻信息。由于人工篩選數(shù)據(jù)的低效率和低可靠性,視頻監(jiān)控系統(tǒng)不能局限于被動地提供視頻畫面,要求集成智能算法,能夠自動識別不同的物體,發(fā)現(xiàn)監(jiān)控畫面中的異常情況,實現(xiàn)不再要人去盯、用計算機代替人進行監(jiān)控,即實現(xiàn)“自動監(jiān)控”或“智能監(jiān)控”。智能視頻監(jiān)控是基于機器視覺對視頻信號進行處理、分析和理解,在不需要人工干預(yù)的情況下,通過對序列圖像自動分析對監(jiān)控場景中的變化進行定位、識別和跟蹤,并在此基礎(chǔ)上分析和判斷目標的行為,能在異常情況發(fā)生時及時發(fā)出警報或提供有用信息,從而有效地協(xié)助安全監(jiān)管人員處理危機,并最大限度地降低誤報和漏報現(xiàn)象,成為應(yīng)對突發(fā)事件的有力輔助工具。
0. 準備工作
- 樹莓派4b 單板2G 335
- 電源,外殼,HDMI線,散熱片,16GTF卡,讀卡器,小風(fēng)扇,網(wǎng)線,引腳尺,擴展板+銅柱,按鍵,點陣,LED,排線,點陣轉(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ū)動板:
? 基于樹莓派的智能魔鏡:音頻、人體感應(yīng)、屏幕開關(guān)、鏡前燈控件和控溫風(fēng)扇控件等模塊而設(shè)計,采用WM8960低功耗立體聲編解碼器,通過I2C接口控制,I2S接口傳輸音頻。板載兩個3P標準可錄立體有源硅麥接口,板載一個4P可接雙通道喇叭。
- 供電電壓:5V
- 邏輯電壓:3.3V
- 音頻編解碼芯片:WM8960
- 控制接口:I2C
- 音頻接口:I2S
- DAC信噪比:98dB
- ADC信噪比:94dB
- 揚聲器驅(qū)動: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秒鐘以上就即可進入配網(wǎng)模式(如果沒有觸摸按鈕也可以使用一根導(dǎo)線將P31與3V3引腳連接5秒鐘以上)
- 語音提示開始配網(wǎng),跳轉(zhuǎn)出下面的頁面,按提示操作
- 打開手機微信掃一掃功能,掃描屏幕上二維碼直接進入配網(wǎng)界面,如果沒有顯示器可在微信中搜索“自美系統(tǒng)”小程序,打開小程序在右下角“我”的選項里找到“設(shè)備配網(wǎng)”欄目,點擊進入
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ā)詞 | 功能 | 對應(yīng)插件 | 備注 |
|---|---|---|---|
| “用戶綁定”,“綁定用戶”,“綁定設(shè)備”,“設(shè)備綁定”,“我是誰” | 通過微信綁定機器 | user | |
| “IP地址”, “本機IP” | 播報ip地址 | SayIp | 基本參考格式 |
| [“播放本地歌曲”, “暫停歌曲”, “暫停播放”, “繼續(xù)播放”, “歌曲繼續(xù)”,"\b播放\S{0,4}\d","\b切換\S{0,4}\d", | 歌曲播放 | Music | 使用mplay開源軟件 |
| “打開燈”, “關(guān)閉燈” | 開關(guān)操作 | Light | 設(shè)置一個引腳input/output |
| “打開屏幕”, “打開顯示”, “關(guān)閉屏幕”, “關(guān)閉顯示”,“天氣地址”,“修改位置”,“聲音\S{2,}”, "音量\S{2,}"修改位置為銅陵市 | 設(shè)備操作 | Device | 調(diào)節(jié)音量和打開或關(guān)閉屏幕,修改天氣地址 |
2.5. 系統(tǒng)手動升級
sudo python3 /keyicx/update.py
# 若失敗手動恢復(fù)升級
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
啟動正常模式
/keyicx/python/run.py
啟動調(diào)試模式
/keyicx/python/run.py debug
停止關(guān)閉系統(tǒng)
/keyicx/python/run.py stop
2.6. 驅(qū)動安裝和升級
-
一鍵鏡像安裝自美系統(tǒng),會自動將本驅(qū)動板相應(yīng)的驅(qū)動安裝并已經(jīng)調(diào)試到最佳狀態(tài),本教程可跳過。
一鍵鏡像安裝自美系統(tǒng)請點擊這里 -
在線手動安裝驅(qū)動
手動安裝驅(qū)動,建議燒錄樹莓派官方系統(tǒng),因為咱們基本上都是在這個系統(tǒng)進行開發(fā)測試+調(diào)試的,其他系統(tǒng)沒有相應(yīng)的測試過,不保證一定能安裝成功。
第一步:首先將驅(qū)動板插到樹莓派開發(fā)板上,啟動樹莓派;
第二步:啟動樹莓派系統(tǒng),啟動終端(或用SSH連接到樹莓派設(shè)備)
#打開I2C 接口
sudo raspi-config
#選擇 5 Interfacing Options \→ P5 I2C \→ 是 啟動 i2C 內(nèi)核驅(qū)動
# 關(guān)閉樹莓派默認音頻驅(qū)動
sudo nano /boot/config.txt
#注: dtparam=audio=on 將這行注釋
sudo reboot
# 在線安裝驅(qū)動
git clone https://github.com/waveshare/WM8960-Audio-HAT
# 這里需要等待一定的時間
cd WM8960-Audio-HAT
sudo ./install.sh
sudo reboot
#測試驅(qū)動安裝
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
# 檢測聲卡
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
# 檢測錄音功能
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#錄音并播放測試
sudo arecord -f cd -Dhw:0 | aplay -Dhw:0
- 單錄音測試
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)采用多進程消息隊列管理模式運行,各模塊和插件均為獨立進程運行互不干擾。進程間采用消息通知方式通信。
系統(tǒng)結(jié)構(gòu)說明: 每一個模塊都可以獨立運行和協(xié)作運行,插件也可以理解為一個特有功能的模塊。除了一些特有功能模塊,系統(tǒng)自帶集合了幾大內(nèi)置功能,分別如下:
一、 語音喚醒模塊;
二、語音錄音模塊;
三、語音識別模塊;
四、語音合成模塊;
五、屏幕顯示模塊;
六、微信小程序通信模塊;
七、外設(shè)萬能開關(guān)通信模塊;
2.7.1. 插件結(jié)構(gòu)
一、插件位置:
自美插件位于當(dāng)前系統(tǒng)目錄:./python/plugin/目錄下,如果您采用鏡像安裝方式安裝的自美系統(tǒng),那么插件目錄就是:/keyicx/python/plugin/下,一個插件一個目錄,如:
/keyicx/python/plugin/Chat(聊天機器人插件)
/keyicx/python/plugin/Music(音樂插件)
二、插件組成:
自美系統(tǒng)是由*.py(插件入口文件) + config.json(插件配置文件)組成,如音樂插件是由:
/keyicx/python/plugin/Music/config.json (配置文件)
/keyicx/python/plugin/Music/Music.py (入口文件)
三、插件命名約定
插件命名約定可簡單說叫:四名一致
1、插件文件夾名稱;
2、config.json配置文件名中的name插件名稱鍵值;
3、插件入口文件.py(也可以叫插件基本文件)名;
4、插件入口文件中的起始類名:class 插件名稱
每一個插件必須保持以上四個位置處名稱一致并且在插件文夾中唯一,否則都會導(dǎo)致插件不能正常啟動和運行。
四、config.json 配置文件
{"name": "插件名","triggerwords": [], // 插件語音觸發(fā)詞數(shù)組"IsEnable": false, // 是否啟用"IsSystem": false, // 是否為系統(tǒng)插件,系統(tǒng)插件會保持后臺運行"AutoLoader": false, // 是否隨系統(tǒng)啟動自動裝載 "displayName": "", // 插件名稱(通常為中文簡稱)"description": "", // 插件簡介說明"icon":"0", // 插件默認圖標(默認選0就行)"version": "0.0.1", // 插件版本號"updateTime":"", // 插件最近一次更新時間"control":[], // 微信小程序控制端配置 "webAdminApi":"", // 插件管理配置文件接口"initControl": 0, // 插件被激活是否通知微信小程序控制端"repository": { // 插件版本管理配置"type": "git", // 插件通訊協(xié)議,分為:git 和 http 兩種,目前只支持git模式"url": "" // 插件版本維護地址}
}
2.7.2. 前端開發(fā)
前端文件目錄: /keyicx/python/webroot/desktop/mojing/
前端顯示與Python通訊方式
自美系統(tǒng)前端與后端Python通訊采用兩種方式,一種是被動顯示和主動請求:
- 被動顯示采用
websocket技術(shù),以達到實時性; - 主動請求,采用直接調(diào)用python文件方式,得到顯示結(jié)果(注:這種方式后期可能會廢棄)
被動顯示方式介紹
被動顯示即前端顯示一直處于等待顯示數(shù)據(jù)接收狀態(tài),我們采用的是NodeJS技術(shù)將前端設(shè)置為websocket服務(wù)器,Python通過socket技術(shù)向前端發(fā)送信息,具體代碼可參考:/keyicx/app/resources/app/control.js文件中:
start_websocket: function(){
...
}
project 1:https://www.youtube.com/watch?v=cVmDjJmcd2M
自定義功能:
- 添加按鍵觸摸打開監(jiān)控攝像頭
- 添加電子相冊
- 添加Monitor監(jiān)控模塊
3. Home Assistant 系統(tǒng)
HomeAssistant是構(gòu)建智慧空間的神器。是一個成熟完整的基于 Python 的智能家居系統(tǒng),設(shè)備支持度高,支持自動化(Automation)、群組化(Group)、UI 客制化(Theme) 等等高度定制化設(shè)置。同樣實現(xiàn)設(shè)備的 Siri 控制。基于HomeAssistant,可以方便地連接各種外部設(shè)備(智能設(shè)備、攝像頭、郵件、短消息、云服務(wù)等,成熟的可連接組件有近千種),手動或按照自己的需求自動化地聯(lián)動這些外部設(shè)備,構(gòu)建隨心所欲的智慧空間。HomeAssistant是開源的,它不屬于任何商業(yè)公司,用戶可以無償使用。
3.1. Home Assistant系統(tǒng)
- Home Control,收集組件的信息并對組件進行控制,同樣也接收來自用戶的控制并返回信息。
- Home Automation,根據(jù)用戶的配置,自動發(fā)送控制指令(通過用戶指導(dǎo)來替代用戶層的操作)。
- Smart Home,根據(jù)各種之前的控制行為與結(jié)果,自學(xué)習(xí)到下一次發(fā)送的控制指令(無需用戶指導(dǎo)而替代用戶層的操作)。
3.2. Installation
3.2.1 Hass.io
Hass.io是一個完整的UI管理的家庭自動化生態(tài)系統(tǒng),它運行Home Assistant,Hass.io Supervisor和附加組件。它預(yù)先安裝在HassOS上,但可以安裝在任何Linux系統(tǒng)上。它利用了由Hass.io Supervisor管理的Docker。
- Hass.io Supervisor:Hass.io Supervisor是管理Hass.io安裝的程序,負責(zé)安裝和更新Home Assistant,附加組件本身以及更新(如果使用的話)HassOS操作系統(tǒng)。
- HassOS:HassOS,家庭助理操作系統(tǒng),是一種嵌入式,簡約的操作系統(tǒng),旨在在單板計算機(如Raspberry Pi)或虛擬機上運行Hass.io生態(tài)系統(tǒng)。Hass.io Supervisor可以使其保持最新狀態(tài),從而無需管理操作系統(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, 注冊賬號進入主界面
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 倉庫鏡像
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 - 來自樹莓派官方的操作系統(tǒng),基于Debian,同時官方也提供了一個Raspbian的精簡版。
- Kali Linux - 為滲透測試和正義黑客準備的Linux發(fā)行版,運行在ARM設(shè)備上
- chilipie-kiosk - 可直接引導(dǎo)到全屏Chrome的鏡像,非常適合用于儀表板和構(gòu)建監(jiān)視器。
- DietPi - 為2G SD卡準備的最小鏡像, 帶有許多可配置項和腳本.
- Minibian - 最小的 Raspbian (比 Jessie Lite還要輕量).
- Fedora
- motionEyeOS - 將微型計算機打造為視頻監(jiān)控系統(tǒng)的Linux發(fā)行版。
5. 工具
- Etcher - 跨平臺的SD卡燒錄程序,使用簡單,易于擴展.
- OpenVPN-Setup - 用于將樹莓派設(shè)置為OpenVPN服務(wù)器的Shell腳本.
- Network Presence Detector - 配置Pi0,使其可以在wifi網(wǎng)絡(luò)里掃描,發(fā)現(xiàn)誰是"home"
- Pi Dashboard來監(jiān)控樹莓派狀態(tài)
6. 項目
- Mini OONTZ - 3D打印的迷你MIDI控制器
- Power Sniffing Strip - 藏在電源插座里的樹莓派, 用于嗅探網(wǎng)絡(luò)數(shù)據(jù).
- Raspberry Pi Erlang Cluster - 跑在樹莓派2代上的Erlang集群
- NTP driven Nixie Clock - 由樹莓派驅(qū)動的數(shù)碼管時鐘
- 40-node Raspberry Pi Cluster - 40個節(jié)點構(gòu)成的樹莓派集群
- Raspberry PI Hadoop Cluster - 跑在樹莓派上的大數(shù)據(jù)集群.
- Multi-Datacenter Cassandra on 32 Raspberry Pi’s - 32個節(jié)點的樹莓派cassandra數(shù)據(jù)庫集群.
- Building a Ceph Cluster on Raspberry Pi - 基于分布式對象存儲系統(tǒng)RADOS的高度冗、低功耗家庭存儲解決方案。
- Smart Mirror - 帶語音控制智能鏡子,集成物聯(lián)網(wǎng).
- Magic Mirror - 開源模塊化智能鏡子平臺.
- Door bot - 門衛(wèi)機器人,感知到門被打開時將給你發(fā)送信息.
- SecPi - 基于Raspberry Pi的家庭報警系統(tǒng).
- PiClock - 別致的時鐘
- Movel - 樹莓派車載電腦
- PiFanTuner - CPU風(fēng)扇控制程序
- Sonus - 開源、跨平臺的語音識別框架(Google Cloud Speech)
- Alexa AVS - 基于Java客戶端和Node.js服務(wù)端的 Alexa Voice Service 示例程序
- Harry Potter and the real life Daily Prophet - 通過RPi的7英寸顯示模擬哈利波特中的魔法報紙(動態(tài)頭條)
- Raspberry Pi login with SSH keys - ssh免密碼登錄樹莓派(使用SSH key)
- Use a Raspberry Pi with multiple WiFi networks - 將樹莓派接入多個無線網(wǎng)絡(luò)的教程.
- Raspberry Pi Media Server Guides - 用樹莓派搭建媒體服務(wù)器的教程(HTPC:Home Theater Personal Computer,即家庭影院電腦)
- OSMC: 家庭影院系統(tǒng)
- 樹莓派網(wǎng)易云音樂播放器
- 去碼云或者Github樹莓派倉庫尋覓有趣的項目
7. 未來
- 智能家居方面: 添加更多的功能
- 智能小車方面:學(xué)習(xí)使用ROS開源系統(tǒng),結(jié)合自己做學(xué)的定位與導(dǎo)航,自動智能化倉儲管理結(jié)合
- 原文鏈接: https://liudongdong1.github.io/2020/05/06/aiot/rpi/rpi-camera-monitor/
總結(jié)
以上是生活随笔為你收集整理的【RaspberryPi4】SmartMonitorMagicMirror的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盘点8个国内外知名表单软件平台,你知道几
- 下一篇: css选择器参考手册