【導讀】樹莓派簡單易用,自發布以來已經被極客們DIY成各種應用了。最近一個外國小哥應用樹莓派DIY了一個魔鏡:會產生隨機問候語(如你今天好帥~)、會顯示日期和時間,還會告訴你天氣。最重要的是這個DIY還不難,周末被自己帥醒了,宅在家搗鼓兩天就可以完工了。溫馨提示:工具不齊請自行上X寶。
該魔鏡是一個雙面鏡,后面是一臺由樹莓派驅動的顯示器。你可以在黑色網頁上增加一些小組件,通過鏡面反射后看起來就像魔法一樣。目前版本支持的組件,可以顯示天氣預報和日期時間,以及一句隨機生成的問候語(比如,你今天太帥了)。你不需要底層硬件的黑客知識,只需要一些木工活和一些我已經整合好了的代碼。
所需材料:
一臺顯示器
一面和顯示器大小相匹配的雙面鏡
一些 2 x 4 大小的木條,用來包裹顯示器
一些細木用來搭建鏡子的框架,我用的是1/8 x 3的板子
一塊樹莓派以及相關組件,比如電源、HDMI 線、無線 USB 適配器、以及一個進行初始化設置的鍵盤。
常用的木工工具,比如鋸子、砂紙和螺絲刀
螺絲和液體釘(譯者注:液體釘是粘合力極強的多功能建筑結構強力膠。干后不會收縮下限,可填縫,可油漆。適合于:木材、石膏板等各種建材。)
選擇顯示器
鏡子的大小取決于你選擇顯示器的大小。我想要一個盡可能大的顯示器,而且有一個可以拆卸的支架,可以裝到一個外殼中。另一個重要的方面是要確保顯示器的輸入,在中間的位置而不是靠邊。
我盡量不去選擇輸入在頂部或者邊上的顯示器,因為那樣很難與邊框和樹莓派的 HDMI 線相匹配。我最終選擇了BenQ GL2760H,這臺27 英寸的顯示器。結果證明它是非常適合的。
準備鏡子
鏡子絕對是整個工作中最重要的部分。但是我之前并不知道,這些雙面鏡實際上透明又像塑料一樣。它們比實際的鏡子有更強的可塑性,你可以用多種不同的方式切割它們,以滿足你的需要。所以訂一個和你需要的尺寸相近的鏡子吧(這個尺寸僅指屏幕顯示部分,不要包括邊邊角角)。別擔心如果買大了怎么辦,你可以自己切割它。
我從 TAPPlastics.com 上訂購鏡子,你也可以從其他在線供應商那里訂購。
去掉顯示器的邊框(可選)
為了讓外殼更加貼合顯示器,我決定去掉顯示器的塑料邊框。這是個明智的決定,因為我一開始就沒有考慮盒子的厚度,用于容納所有的連線。我用一把刮漆鏟翹起顯示器的邊框并把它分離出來。
分離顯示器控制的時候千萬要小心。它們的電路非常薄,必須保證它完好無損,否則你就沒法打開和調整顯示屏了。
打造外殼
這個過程沒有什么特別的。我只是切割了 4 個 4 x 2 的邊條,來包裹新的 Jenny Craig’d 顯示器。接下來我用夾子固定住邊條的位置,用螺絲把他們擰在一起。這樣你就可以讓外殼和顯示器匹配,而且很容易把顯示器從外殼中取出來。
順便一提,我還在外殼的頂部和底部用螺絲打了孔。這樣是為了給樹莓派一點點空氣流動。你不會希望電腦在一個完全密閉的空間里把自己烤干的。
最后再提一句,記得在外殼底部弄一個大一點的洞以便電源線通過。當你為顯示器和樹莓派的電源布線的時候,就用得著了。我最終在外殼上用直鋸搗了個適合電線通過的洞。
制作鏡框
起先,我想要做一個酷炫的折角為 45 度圓弧的鏡框。注意關鍵詞:起先。還記得我說過我不是個專業的工匠嗎?是啊,這對我來說有那么一點點難度。我沒能成功做出圓弧的折角。相反,我記得說過我是個“極簡抽象派藝術家”,只想要做個 90 度的折角。
不過另一個障礙是,我原本打算使用kreig jeg(譯:不知道這個是神馬)鉆幾個小洞的,不過嘛,3/8 薄的木板,就像圣戰組織(jihadst應該是拼錯了,應該為jihadist)一樣,遇到一點點壓力就會膽怯而易碎。不過幸運的是,一個來自家得寶的工 程師告訴我有這么一個棒呆了的工具,幫了我大忙:
現在我可以使用一些液體釘來固定連接處了,這個工具可以幫助我把木頭固定住好幾個小時,以便讓液體釘變干。不需要螺絲啦。我唯一遺憾的是沒有買倆,這樣我在這部分的進度就可以加快一倍了。
連接鏡框和外殼
這部分是我考慮最少的,如果我再做一次的話,我一定會換個方式。基本上來說我遇到了一點小麻煩,因為鏡子和鏡框不匹配,導致外殼和鏡框之間有了間隙。幸運的是切割雙面鏡是件很容易的事情。你可以換著法子切割,TAPPlastics 上有全套教程。
我恰好有個帶鋸能用。這一步我唯一的建議來自『Will it Blend?』:“別把它吸進去” 。 我的意思是指那些塑料粉塵。
現在鏡框和外殼可以匹配了。
我犯的另一個錯誤是沒有把鏡子粘在鏡框和外殼中間之前,分別給鏡框和外殼著色。這里我沒拍照片,不過我最終使用膠帶覆蓋了鏡子并著色了邊緣。
但是天哪快看!一個可以發光的鏡子。目前這只是顯示器的自檢信息,不過這也是進步呀!
安裝樹莓派
現在有趣的部分來啦。理想的情況是只從外殼底部拉出來一根電源線。利用電子或焊接等其它手段,可以讓一根電源線供電……不過我的選擇很簡單,我買了個兩路電源分流器:
然后左右組件都用膠帶固定好:
現在你可以通過一根線同時給顯示器和樹莓派供電啦。簡單地把樹莓派連接到顯示器上,連上網。我不會很詳細地講解如何安裝 Raspian(樹莓派的官方 linux 發行版),否則這個指南就沒有用處了。
一旦你完成了 NOOBS 的安裝步驟,就可以看到樹莓派的啟動信息啦:
把樹莓派改為“ Kiosk ”
(譯者:Kiosk,一種面對系統管理員的全屏模式,是一種功能受限的瀏覽器模式,比如圖書館的電腦瀏覽器經常如此)
讓一個鏡子顯示樹莓派的桌面不太合適。有好幾種方法可以讓樹莓派工作起來像是“ Kiosk ”,不過我的做法如下。
安裝谷歌瀏覽器
如果 Raspblian 版本不對,那你可能會遇到麻煩,反正我是遇到了。這鏡子后面的樹莓派運行的是 Jessie 版 Raspblian 系統。很明顯它 對原始的 Raspblian 版本進行了一些改動,包括移除谷歌瀏覽器,用它可以很容易設置為 Kiosk 模式。
你可以自己谷歌一下,不過我通過以下命令成功安裝了它:
wget http://ftp.us.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u3_armhf.deb
wget http://launchpadlibrarian.net/218525709/chromium-browser_45.0.2454.85-0ubuntu0.14.04.1.1097_armhf.deb
wget http://launchpadlibrarian.net/218525711/chromium-codecs-ffmpeg-extra_45.0.2454.85-0ubuntu0.14.04.1.1097_armhf.deb
sudo dpkg -i libgcrypt11_1.5.0-5+deb7u3_armhf.deb
sudo dpkg -i chromium-codecs-ffmpeg-extra_45.0.2454.85-0ubuntu0.14.04.1.1097_armhf.deb
sudo dpkg -i chromium-browser_45.0.2454.85-0ubuntu0.14.04.1.1097_armhf.deb
開機運行谷歌瀏覽器
現在谷歌瀏覽器安裝好了,你可以把它設置為開機啟動并全屏:
打開開機啟動設置:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
注釋掉下面這行以關閉屏保:
@xscreensaver -no-splash
增加以下這幾行:
@xset s off @xset -dpms @xset s noblank /usr/bin/chromium --noerrdialogs --kiosk --incognito "http://localhost"
退出并保存。現在你關閉了屏保,關閉了電源管理設置,并且把谷歌瀏覽器設置為了開機啟動的本地 Kiosk 模式。
使用無線網絡
有很多教程教你怎么讓樹莓派連上無線網。這就像編輯你的 wpa_supplicant 文件一樣簡單:
sudo nano /etc/network/interfaces
然后編輯網絡設置:
network={ ssid="Network name here" psk="password" }
我確信你很聰明,也沒有使用古老又不安全的 WEP 路由協議。
現在用以下兩個命令重啟你的wifi:
ifdown wlan0 ifup wlan0
如果看到奇怪的報錯,別擔心,我也遇到過。你可以試試以下命令判斷你跑成功了沒:
ifconfig
如果你的 wlan0 設備分配到了一個 IP 地址,那你就可以斷開以太網鏈接并安裝鏡子背面了。我僅僅用了一些便宜的面板,用四根螺絲固定住而已。
設置網頁
現在我們有了個多功能 Kiosk 啦。就缺個真實的網頁了。我自己寫了個應用,你可以隨便修改或者直接用它。
我決定使用 PHP 的微架構 Lumen 以及一些 jQuery 和 MomentJs。
安裝網頁服務
要操作網頁你首先得安裝網頁服務,要跑 Lumen 你首先得安裝 php :
sudo apt-get update sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git
這需要一點時間,不過你需要知道 MirrorMirror 網頁安裝在哪里,以便配置 nginx :
sudo nano /etc/nginx/sites-available/mirror.conf
把以上配置復制到配置文件中:
server { listen 80; server_name localhost; root /home/pi/projects/MirrorMirror/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/myapp-error.log error;
sendfile off;
client_max_body_size 100m;
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /.ht {
deny all;
} }
然后激活這些配置:
sudo ln -s /etc/nginx/sites-available/mirror.conf /etc/nginx/sites-enabled/mirror.conf sudo service nginx reload
現在你的派里有了適用php的網頁服務了!
安裝 MirrorMirror
這是最后一步了,安裝真實的網頁。在 /home/pi 里建一個文件夾并進入:
mkdir /home/pi/projects cd /home/pi/projects
用下面的命令克隆 MirrorMirror 網頁應用:
git clone https://github.com/ctrlaltdylan/MirrorMirror.git
安裝配置器以便安裝 Lumen 的相關依賴:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
使用配置器安裝 Lumen 的依賴,啟動 MirrorMirror 并運行:
cd MirrorMirror composer install
進入 http://localhost 就可以看到你的 MirrorMirror 的版本以及運行結果啦!
目前的功能:
顯示天氣預報以及萌萌的氣象圖案。
顯示日期和時間。
顯示一句隨機的問候語,目前只有一句,不過計劃會加更多啦。
當然為了更簡單的安裝和定制化還需要更多的工作,不過我已經在思考怎么改善它了。希望你像我一樣享受建造和使用你自己的魔鏡。