- 打開一個終端機:Ctrl + Alt + T
- 打開系統選單:Ctrl + Esc
- 打開程式選單:Alt + Space
- 切換程式:Alt + Tab
- 最大化當前的視窗:Alt + F11
- 最小化全部視窗 (顯示桌面):Ctrl + Alt + D
分類彙整: Raspberry Pi
用 Raspberry Pi 打造一台 Spotify 播放器 – Part 2
延續上一篇的內容,要接著說明控制端的 GUI app 如何編譯執行。
在開始之前,先用 ssh 連到 Raspberry Pi,然後安裝 mDNS 的套件包與修改主機名稱。
$ ssh pi@<Raspberry Pi's IP address>
$ sudo apt -y install avahi-daemon
$ sudo raspi-config
執行 sudo raspi-config 後,會看到一個文字介面的選單,選擇 System Options => Hostname,然後把 Hostname 改成 spotifypi (或是你喜歡的名字)。改完後請重新開幾。
Raspberry Pi 開啟 mDNS 的服務後,我們就可以透過 <hostname>.local 這個網址來取代 IP 位址,例如:假設 Raspberry Pi 的 IP 位址是 192.168.1.110,那我們透過 WebSocket 去控制時的 URL 是 ws://192.168.1.110:9487,現在有了 mDNS,可以把 URL 改成 ws://spotifypi.local:9487。
閱讀全文用 Raspberry Pi 打造一台 Spotify 播放器 – Part 1
最近把 Raspberry Pi 4B 改成 Spotify 播放器,想把製作方式記錄下來。
以前要在 Raspberry Pi OS 的 Chromium 上執行 Spotify Web Player,會因為缺少 Widevine DRM 支持的關係而無法播放。約在今年三月時,Raspberry Pi OS 正式提供了 Widevine DRM 的支持,所以現在只要在 Raspberry Pi OS 上安裝 Widevine DRM 的套件包即可用 Chromium 播放 Spotify!
在 Raspberry Pi OS 上開啟終端機,執行:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libwidevinecdm0
$ sudo reboot
然後用 Chromium 打開 https://open.spotify.com,就可以開始使用 Spotify 了。
不過我想把 Raspberry Pi 改成 Spotify 專屬播放機,所以接下來就來說明如何設定吧。
閱讀全文老 MacBook 裝 x86 Raspbian
最近把老舊的 MacBook 2010 的 RAM 加到 8GB,然後把作業系統改裝 Raspberry Pi Desktop (x86 Raspbian),有這台機器又活起來的感覺!嗯…也許是我還蠻習慣 Raspbian 的關係吧 (?
不過因為 MacBook 的螢幕太亮,而 LXDE 沒有內建調整螢幕亮度的軟體,所以需要自己手動更改螢幕亮度值,螢幕亮度的設定檔通常會放在 /sys/class/backlight/{顯卡類型之類的}/ 目錄裡面,例如我的 MacBook 2010 的螢幕亮度設定檔就放在 /sys/class/backlight/nv_backlight/ 裡,設定檔名稱通常是叫做 brightness,同個目錄下還會有一個叫做 max_brightness 的檔案,這個檔案可以看亮度最大值是多少,像我的 max_brightness 裡的數值是 100,所以我在修改 /sys/class/backlight/nv_backlight/brightness 的數值時,範圍就是 0 ~ 100。
要更改螢幕亮度時,用 nano 或是 vim 開啟設定檔,然後修改數值即可:
$ sudo nano /sys/class/backlight/nv_backlight/brightness
不過每次這樣改好像有點不直覺 (其實是我都會忘記設定檔的目錄路徑 XD),所以我寫了一個 GUI 小程式,用來調整我的 MacBook 2010 的螢幕亮度:https://github.com/kyumdbot/rpd-brightness
試玩 Coral USB Accelerator
我不久前買了 Google 出的 Edge TPU 裝置:Coral USB Accelerator 來玩玩看,覺得這玩意非常不錯,台幣兩千多元,可以跑 TensorFlow Lite 格式的模型,我個人是覺得還蠻划算的。
我先用 Raspberry Pi 3 Model B+ 來測試 Pose Detection 模型,一開始使用預設的解析度:640×480,繪製的速度不是很理想,影片如下:
測試 Pose Detection pic.twitter.com/xbujQPy6p8
— 甘苦•柴犬圖靈機•求職中 (@riddle_ling) August 3, 2019
然後我把解析度設定成:480×360,繪製的速度有加快,但還是不盡理想,所以後來我改用一台 2013 年買的小筆電來跑,這次繪製的速度就相當不錯了,影片如下:
在一台 2013 年買的小筆電上測試,TrueFPS 大約在 22.x 左右,比 pi 快太多了吧!
— 甘苦•柴犬圖靈機•求職中 (@riddle_ling) August 6, 2019
———
這台小筆電的 CPU 是 Intel Celeron(R) CPU 847 @ 1.10GHz,記憶體 4GB,作業系統是 Debian 10 (buster) amd64 版 pic.twitter.com/JzWB3FK7eN
這台小筆電的規格為:CPU 是 Intel Celeron(R) CPU 847 @ 1.10GHz,記憶體 4GB,作業系統是 Debian 10 (buster) amd64 版,且有 USB 3 的插孔。
Raspberry Pi 3 Model B+ 除了 CPU 速度較慢之外,也沒有 USB 3 的插孔,所以整體上慢了一大截。但是前陣子出的 Raspberry Pi 4 Model B 有 USB 3 插孔,我已經訂了一台 Pi 4,等收到貨後再測試看看繪製速度是否有提升。
# 2019 年 11月 3 日補充: 我在 Raspberry Pi 4 (4GB 記憶體版本) 上測試了 Coral PoseNet,測試結果請看以下影片,TrueFPS 維持在 20.x 以上:
另一段在 Raspberry Pi 4 上的測試影片,FPS 也有維持在 20.x 以上: pic.twitter.com/BugOphajN6
— 灰袍編程精靈•甘苦夫 (@riddle_ling) November 3, 2019
然後我還有嘗試 Object detection 與 MiniGo 圍棋:
按照範例教學裝了 MiniGo 來玩,不過我完全不懂圍棋,所以都亂下 XD,有空時再來研究圍棋的規則好了 pic.twitter.com/82ZMMR0Qvc
— 甘苦•柴犬圖靈機•求職中 (@riddle_ling) August 11, 2019
Coral 官方網站也提供了好幾個已編譯好的模型讓人下載:https://coral.withgoogle.com/models/ ,可以先從這些模型開始玩起。
感想:這種 Edge TPU 裝置可以做很多有趣的應用,而且價格不算貴,有興趣的人快去買來玩玩看!
IchigoJam BASIC RPi 初體驗
IchigoJam BASIC RPi 是一個運作在 Raspberry Pi 上的 OS,這個 OS 很有趣,開機後會顯示一個黑白畫面的 BASIC 終端機,完全沒有 GUI,直接寫 BASIC 控制 Raspberry Pi,彷彿就像是 30 多年前的個人電腦。
下方是我嘗試用 IchigoJam BASIC RPi 控制 Pin 輸出的影片:
我知道怎麼控制輸出了!
— 柴犬 · C腦 · 圖靈機 (@riddle_ling) August 19, 2019
好,今天就先練習到這。😊 pic.twitter.com/sJLKWhHR9j
Raspberry Pi 上的 BASIC 解譯器
整理一下,目前 Raspberry Pi 上可用的 BASIC 有:
其中 RTB 與 BBC BASIC for SDL 2.0 可直接在 Raspbian 上安裝與執行,IchigoJam BASIC RPi 與 RISC OS 則是獨立的 OS。
在 Raspberry Pi 上安裝 Groovy
打開終端機,用 apt 指令安裝 OpenJDK 8 與 Groovy:
$ sudo apt install openjdk-8-jdk groovy
然後,我們試試是否可執行 groovy:
$ groovy -v
groovy: JAVA_HOME is not defined correctly, can not execute: /usr/lib/jvm/default-java/bin/java
會顯示「groovy: JAVA_HOME is not defined correctly, can not execute: /usr/lib/jvm/default-java/bin/java」這個訊息。
我們先切換到 /usr/lib/jvm 目錄下查看一下:
$ cd /usr/lib/jvm
$ ls -l
lrwxrwxrwx 1 root root 21 6月 17 02:24 java-1.11.0-openjdk-armhf -> java-11-openjdk-armhf
drwxr-xr-x 9 root root 4096 7月 8 01:20 java-11-openjdk-armhf
lrwxrwxrwx 1 root root 20 3月 29 21:54 java-1.8.0-openjdk-armhf -> java-8-openjdk-armhf
drwxr-xr-x 7 root root 4096 8月 2 13:52 java-8-openjdk-armhf
drwxr-xr-x 9 root root 4096 3月 14 2018 jdk-8-oracle-arm32-vfp-hflt
然後幫 java-8-openjdk-armhf/ 做一個名為 default-java 的 symlink:
$ sudo ln -s java-8-openjdk-armhf/ default-java
$ ls -l
lrwxrwxrwx 1 root root 21 8月 2 14:05 default-java -> java-8-openjdk-armhf/
lrwxrwxrwx 1 root root 21 6月 17 02:24 java-1.11.0-openjdk-armhf -> java-11-openjdk-armhf
drwxr-xr-x 9 root root 4096 7月 8 01:20 java-11-openjdk-armhf
lrwxrwxrwx 1 root root 20 3月 29 21:54 java-1.8.0-openjdk-armhf -> java-8-openjdk-armhf
drwxr-xr-x 7 root root 4096 8月 2 13:52 java-8-openjdk-armhf
drwxr-xr-x 9 root root 4096 3月 14 2018 jdk-8-oracle-arm32-vfp-hflt
然後再執行 groovy 試試看:
$ groovy -v
Groovy Version: 2.4.16 JVM: 1.8.0_212 Vendor: Oracle Corporation OS: Linux
寫個程式測試看看:
$ cd ~
$ vim hello.groovy
def hello(name) {
println("Hi, " + name)
}
hello("Pi")
執行程式:
$ groovy hello.groovy
Hi, Pi