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