[新聞] Raspberry Pi 4 Case Fan 出來了!


圖片來源:NEW Raspberry Pi 4 Case Fan

Raspberry Pi 4 出來以後,雖然效能有三倍的 Pi 3B+ 來得快,但溫度也比 Pi 3B+ 更高了。下圖左是系統閒置狀態(Idle),下圖右是滿載情形(Load),其中溫度最高的是 CPU,再來是 PMIC 部份。

圖片來源:Raspberry Pi 4 Firmware Update – Pi 4 Now Runs Cooler Than Ever

雖然 Pi 4 可以在高達 80°C 的溫度工作,但韌體會在溫度超過 85 度之後降頻已確保溫度不再提昇,連帶的雙 4K 顯示和 GPU 的功能都會收到限制。

圖片來源:Raspberry Pi 4 Firmware Update – Pi 4 Now Runs Cooler Than Ever

因此樹莓派基金會更新了一系列的韌體,目的在不影響效能下對各組件的電壓做節能調整,讓功耗可以下降,溫度也隨之降低。


圖片來源:Raspberry Pi 4 Firmware Update – Pi 4 Now Runs Cooler Than Ever

這也讓各類型的外殼散熱系統可以有著力的地方。但通常好的散熱外殼都會搭配金屬外殼,這有可能造成 WiFi 的訊號衰減。下圖比較了 Pi 4 的 2.4GHz 頻段 WiFi 對於固定位置的 AP 訊號強度,單位 dBm(從 0 到 -100),愈接近零愈好

圖片來源:WiFi Signal Strength with Raspberry Pi 4 Cases

終於,樹莓派基金會也出了自己的散熱套件 Case Fan(外殼風扇),但需要搭配原廠紅白外殼使用。

安裝方法相當簡單,先將散熱片貼在 CPU 上,再把 Case Fan 固定在外殼的溝槽裡就可以了。上下外殼可以完全緊閉如同沒有安裝 Case Fan 一樣的密合。

圖片來源:Official Raspberry Pi 4 case fan adds cooling to Raspberry Pi 4 case

Raspberry Pi Case Fan 有四點特色。
1. 原廠散熱片(18×18×10mm)散熱效果佳。

2. 專為超頻設計,可使用 GPIO 控制啟動風扇條件。
新版本的 raspi-config 已經將控制功能加入了,可以從 4 Performance Options > P4 Fan 設定控制腳位和調整溫度條件(如果使用 raspios_armhf-2020-12-04 以前版本,需要先使用 sudo apt-get update && sudo apt-get dist-upgrade 更新 raspi-config 功能。

3. 主動散熱,可將熱氣從 USB 和 Ethernet 空隙中帶走。
Raspberry Pi 4 Case Fan 採用下吹式的主動散熱方式,配合紅白外殼的機構,可有效的將熱氣從 USB 和 Ethernet 處抽走,達到絕佳的冷卻效果。

圖片來源:Designing the Raspberry Pi Case Fan

4. 完美搭配原廠紅白外殼,WiFi 訊號不衰減,降溫效果明顯。

圖片來源:Official Raspberry Pi 4 case fan adds cooling to Raspberry Pi 4 case

《補充資訊》
* 根據測試,風扇運轉時大約是 55dB。
* 根據這篇教學,可以使用 Hardware PWM 控制風扇運轉速度,而不只有開和關而已。

《新聞》
* New product: Raspberry Pi 4 Case Fan
* Designing the Raspberry Pi Case Fan
* Raspberry Pi 4 Firmware Update – Pi 4 Now Runs Cooler Than Ever
* Official Raspberry Pi 4 case fan adds cooling to Raspberry Pi 4 case

好東西,不買嗎? Raspberry Pi 4 Fan Case 現貨,立即填寫表單,搭配紅白外殼更優惠!

[常見問與答] 如何更新Raspbian?

2017-09-07-raspbian-stretch-rpi-update本圖是從安裝 2017-09-07-raspbian-stretch 經過更新後的版本資訊。

很多人拿到 Pi 3B+ 之後會迫不及待的把原本在 Pi 3B 上所使用的 SD 卡拿到 Pi 3B+ 使用,但是會發現無法開機。這是因為 Pi 3B+ 使用新的晶片(BCM2837B0),因此如果沒有安裝 2018-03-13 以後所發布的核心(kernel)或是韌體(firmware)是無法直接使用的。

但如果要重新燒錄的話,原本的資料不是就會不見了嗎? 那該如何正確更新 Raspbian

Raspbian 是源自於 Debian 但根據 Raspberry Pi 硬體所衍生初的分支,使用 APT 作為套件管理系統。而根據 apt-get 的手冊,常用的更新指令分別說明如下:

1. 更新 /etc/apt/sources.list 底下的套件清單。

$ sudo apt-get update

2. 比對套件清單決定是否需要更新,但如果要更新的套件有相依性問題,則放棄更新。

$ sudo apt-get upgrade

3. 會處理新版本套件與相依性套件的衝突,並試著安裝/移除有問題的套件來完成更新。

$ sudo apt-get dist-upgrade

4. 刪除之前因為有相依性而安裝,但現在已經不再使用的套件(非必要)。

$ sudo apt-get autoremove

5. 清除下載到 /var/cache/apt/archives 的 .deb 套件檔(非必要)

$ sudo apt-get autoclean

6. 更新核心和韌體到最新版本(可能不穩定),因此更新前一定要先備份重要資料!

$ sudo rpi-update

Pi 3B 依序執行 1 到 6 的步驟(4 和 5 非必要)以後關機,將 microSD 拔下換到 Pi 3B+,就可以順利在 Pi 3B+ 上使用了。

購買產品:[產品] Raspberry Pi 3 Model B+(現貨)

Reference:
* UPDATING AND UPGRADING RASPBIAN
* UPDATING THE KERNEL

[測試] AS3992 – UHF RFID Single Chip Reader

《文件與教學》
文件總整理,可以從這論壇查看使用教學。
https://www.soliddepot.com/forum/viewforum.php?f=22

AS399X firmware(.hex)下載
https://www.soliddepot.com/forum/viewtopic.php?f=22&t=40343&sid=e0f3335ae0e157fb2e77c799a567d57d

下載完整資料(出處),包括 datashhet、schematics、firmware、document 等等。
https://www.dropbox.com/s/u9cv2ytscplytmg/AS3992%20reader%20module%20files%20English.zip?dl=0

 
《硬體外觀》
AS3992_adapter_antenna_tag
AS3992 開發板 + 3.6V/2A 電源 + 3dBi 天線 + 五張 915MHz Tag

usb_debugger_jtag_adapter
USB Debug Adapter + JTAG 排線 + JTAG 轉 C2 轉板

 
《AS3992 韌體更新》
由於韌體預設是燒錄 USB 版本,可以燒成 UART 版本方便測試。連接方式如下。

jtag_connect_usb_debugger
JTAG排線防呆。

jtag_connect_adapter
注意要三角對三角。

pin_of_as3992_jtag_adapter
AS3992 的 C2CK 和 C2D 還有 GND 要和 JTAG 轉板腳位相接。

connect_as3992_jtag_adapter
相接的結果(用手扶著就可以了)。

upload_firmware_connection
完整連接圖。

韌體更新要透過 Silicon Lab 提供的 FLASH 燒錄工具(C8051F)上傳。或是下載完整資料裡的壓縮檔。選擇 C2 programmer > Flash Programming V3.90.exe

如果一切連接順利,就可以看到 USB Debug Adapter 是可以選取的。
silicon_lab_flash_utility

點選 “Connect”,順利的話就可以連接到 AS3992,原來 “Connect” 會變成 “Disconnect”。
connect_to_as3992

下載 AS399X firmware.zip(.hex)
其中,as399xdemo_uart_3992.hex 表示 115200bps baud rate
另外,as399xdemo3992uart_9600.hex 表示 9600bps baud rate
我們選擇 115200bps 燒錄(用 9600bps 的也可以)。

upload_firmware
燒錄完畢後,重插拔電源將會使用新韌體開機(如果下載到一半斷線也沒關係,但電源不能斷)

 
《AS3992 連線》
我們測試的環境為 Raspberry Pi 3,使用 2016-05-23 的映像檔。
Raspberry Pi 和 AS3992 使用 USB 轉 TTL 序列傳輸線(PL2303HXD 或是 PL2303HX 都可以)相接。
raspberry_pi_as3992

通訊的方式是用 CuteCom,如果還沒安裝請先用 sudo apt-get install cutecom 安裝。
在 Pi 上連線的介面是 /dev/ttyUSBX,例如 /dev/ttyUSB0 如下圖。
dev_ttyusb0

一切沒問題,就可以使用 cutecom 做連線測試了。步驟如下:
1. 在 Device 選擇 /dev/ttyUSB0
2. 在 Baud rate 選擇 115200
3. 在 Data bits 選擇 8
4. 在 Stop bits 選擇 1
5. 在 Parity 選擇 None
6. 這時候點選 Open device
7. 最下方選擇 Hex input
8. char delay 選擇 1 ms
cutecom

根據文件說明,送 10 03 00 是查詢韌體版本,送 10 03 01 是查詢硬體版本。

因此我們在底下的 Input 輸入100300 就可以看到 AS3992 回傳的韌體版本。
cutecom_100300

如果是輸入100301 就可以看到 AS3992 回傳的硬體版本。
cutecom_100301

更多命令就需要參考完整的手冊才知道怎麼使用了。最重要的是完整資料裡的 datasheet 和 command。
datasheet: AS3992 reader module files English > Application notes > AS3992_Datasheet_v1.0.pdf
command: AS3992 reader module files English > Application notes > AN399x Leo Roger System Description_1_4.pdf

 
《AS3992 讀卡》
有人將 AS3992 UHF RFID reader 寫了 Python 的模組,可以參考使用。

接線就和剛剛的方式一樣,Raspberry Pi 透過 PL2303HX 或 PL2303HXD 和 AS3992 相接。

################                 ##########
# Raspberry Pi #  --USB to TTL-- # AS3992 #
################                 ##########

開啟 Pi 的終端機,先把程式拉(pull)下來。

$ cd ~
$ git clone https://github.com/GuyLewin/pyAS3992
$ cd pyAS3992/

因為原本的範例程式(example.py)只會讀取一次,我們稍做修改就可以持續讀取。

$ vim main.py
import as3992_api
import time

def main():
    ann = as3992_api.AntennaDevice()
    print "Firmware info: %s\nHardware info: %s" % ann.get_system_info()
    print "Activating antenna"
    ann.set_antenna_state(True)
    print "Tags:"

    while True:
        try:
            for epc, rssi in ann.iter_epc_rssi():
                print epc.encode("HEX"), rssi
        except:
            pass

        time.sleep(1)

if __name__ == "__main__":
    main()

執行 main.py,我們拿五張 tag 做測試,會讀到 epcrssi。實測接收距離約在 10-15cm 左右。

$ sudo python main.py

as3992_reader

[常見問與答] 如何看 Raspbian 的版本資訊?

自從 Raspbian 從 Wheezy 升級到 Jessie 以後,許多系統性的設計都有所不同。那要如何看 Raspbian 的版本資訊呢?

1. uname -a 查詢 kernel 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.1.17-v7+ #834 SMP Mon Feb 1 15:17:54 GMT 2016 armv7l GNU/Linux

 

2. /opt/vc/bin/vcgencmd version 查詢 firmware 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd version
Apr 21 2015 14:42:19 
Copyright (c) 2012 Broadcom
version 2d5ad04b63af4233440c3f7c8587108223201102 (clean) (release)
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ /opt/vc/bin/vcgencmd version
Feb  1 2016 17:51:17 
Copyright (c) 2012 Broadcom
version b3dc56931507f355d503ea69397778643f7a3dc3 (clean) (release)

 

3. strings /boot/start.elf | grep VC_BUILD_ID 查詢 firmware 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ strings /boot/start.elf | grep VC_BUILD_ID
VC_BUILD_ID_USER: dc4
VC_BUILD_ID_TIME: 14:42:19
VC_BUILD_ID_BRANCH: master
VC_BUILD_ID_TIME: Apr 21 2015
VC_BUILD_ID_HOSTNAME: dc4-XPS13-9333
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: 2d5ad04b63af4233440c3f7c8587108223201102 (clean)
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ strings /boot/start.elf | grep VC_BUILD_ID
VC_BUILD_ID_USER: dc4
VC_BUILD_ID_TIME: 17:51:17
VC_BUILD_ID_BRANCH: master
VC_BUILD_ID_TIME: Feb  1 2016
VC_BUILD_ID_HOSTNAME: dc4-XPS13-9333
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: b3dc56931507f355d503ea69397778643f7a3dc3 (clean)

 

4. cat /proc/version 查詢更完整的 kernel 資料。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /proc/version
Linux version 3.18.11-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /proc/version
Linux version 4.1.17-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #834 SMP Mon Feb 1 15:17:54 GMT 2016

 

5. cat /etc/os-release 查詢 OS 版本資訊。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

 

6. cat /etc/issue 查詢 Linux distro 版本。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/issue
Raspbian GNU/Linux 7 \n \l

# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/issue
Raspbian GNU/Linux 8 \n \l

 

7. cat /etc/debian_version 查詢 Debian 版本編號。

# 2015-05-05-raspbian-wheezy 
pi@raspberrypi ~ $ cat /etc/debian_version
7.8
# 2016-02-03-raspbian-jessie
pi@raspberrypi:~ $ cat /etc/debian_version
8.0