[開箱]NVIDIA® Jetson Orin Nano™ Super 開發者套件專用外殼-Panini 外殼開箱與組裝教學(OLED顯示系統資訊教學)
| 撰寫/攝影 | 郭俊廷 | ||
| 時間 | 1~2 小時 | 材料表 | NVIDIA® Jetson Orin Nano™ 開發者套件– 機器人王國商城 M.2 SSD 硬碟 鍵盤滑鼠 Jetson Orin Nano™ Super 開發者套件專用外殼Panini(白色版) |
| 成本 | |||
| 難度 | ★★☆☆☆ | ||
| 前言 | |||
| 如果你手邊有一塊NVIDIA® Jetson Orin Nano™ Super 開發者套件,一定會發現它裸露的電路板,但在攜帶或佈署上總是有點讓人提心吊膽。今天要來開箱這款由 ROBOCO 推出的 "Panini" 專用機殼,它主打免工具安裝、優異散熱以及高擴充性。 | |||
- 需準備一台原廠 **NVIDIA® Jetson Orin Nano™ 開發者套件**。
- 作業系統建議使用 **JetPack 6.2(L4T 36.4.3)** 並安裝 OLED 套件,請盡量使用相同版本以避免相容性問題。
- 需連接OLED的 GPIO 線材及 Button Header 接線,請在開機上電前多次確認接線正確,否則可能導致無法開機或硬體異常。
Panini 外殼產品簡介
Panini 是專為 NVIDIA Jetson Orin Nano / Orin Nano Super Developer Kit 所設計的專用外殼,整體採用金屬結構,並搭配模組化設計,兼顧桌面使用與懸臂(VESA)安裝需求。主要特色
- 專用尺寸設計,完整對應 Jetson Orin Nano Super 開發者套件
- 金屬機殼結構,提升保護性與散熱穩定度
- 支援電源按鈕、重開機按鈕
- 可選配 0.96 吋 I2C OLED 顯示模組(OLED 版本)
- 支援 M.2 SSD(2280)安裝
- 支援 GPIO、CSI Camera 等擴充
- 可桌面擺放或安裝於 VESA 75 懸臂
外殼規格
- 材質:SPCC 金屬、ABS、壓克力、橡膠
- 尺寸:130 × 125 × 43 mm
- 重量:約 400 g
開箱內容物一覽
盒子外觀如下,可以看到外殼的圖片以及Panini的名稱,還可以看到下面寫著Design and made in Taiwan。
打開盒子後可以看到Panini外殼本體以及說明書,如果想要快速組裝完成可以參考說明書即可快速組裝好並使用。
實際開箱後,Panini 外殼包裝中包含以下零組件:
Panini 外殼以及Orin nano以及等等會用到的線材放在一起的位置。
首先拿到如果我們是要放在桌面使用的話第一件事就是把橡膠腳墊 ×4先裝上底部才可以避免機殼磨損
只要輕輕將橡膠腳墊 ×4ㄊ推進四個洞孔裡面即可固定。
外殼結構件
- 上蓋(Top Cover)
- 下蓋(Bottom Cover)
- SSD 蓋板(SSD Cover)
- 載板固定板(Board Holder)
螺絲與配件
- 手擰螺絲(Thumb Screw)
- M2 主板六角柱與主板螺絲
- M3 懸臂固定螺絲 ×4
- 橡膠腳墊 ×4
組裝前準備事項
在開始組裝前,請先完成以下準備:- Jetson Orin Nano Super 開發者套件需完全斷電
- 移除電源線、HDMI、USB 等外接裝置
- 建議於防靜電環境操作
Panini 外殼組裝步驟教學
步驟一:拆卸外殼上蓋
- 逆時鐘旋轉手擰螺絲
- 依箭頭方向拉動把手,向上取下上蓋
步驟二:移除載板固定板
- 再次逆時鐘旋轉內部手擰螺絲
- 將載板固定板取出,預備安裝主板
步驟三:安裝 Jetson Orin Nano Super 主板
建議先完成步驟五前面板線材與 Jumper 的連接,再安裝主板進入外殼。 由於 Panini 外殼在主板就位後,載板下方的系統控制腳位(System Button Header)視野會受到遮擋,實務上會較難清楚辨識腳位名稱,因此建議依以下順序操作:- 先將 Power Button、Reset Button 及相關 Jumper 線材,連接至 Jetson Orin Nano 載板下方的系統控制腳位
- 確認線材方向正確且固定牢靠
- 將 Jetson Orin Nano Super 對準 Panini 外殼內的滑槽
- 從側邊將主板平行滑入固定溝槽中
- 確認 I/O 介面(USB、HDMI、LAN、DC-IN)皆與外殼開孔完全對齊
步驟四:裝回載板固定板
將載板固定板裝回原位並鎖緊,使主板穩固不晃動。
步驟五:連接前面板與 OLED
依照上圖說明,請將 Panini 外殼的 Power Button 與 Reset Button 連接至 Jetson Orin Nano 載板下方的系統控制腳位(System Button Header)。
若為 OLED 版本,可將隨附的 0.96 吋 I2C OLED 顯示模組 連接至 Jetson Orin Nano 的 I2C 腳位,包含 VCC、GND、SDA 與 SCL。相關 GPIO 與 I2C 腳位定義可參考 NVIDIA 官方文件。
此外,需特別注意,除了上述的電源與重置按鍵接線外,還必須將 Jumper 接至「AUTO ON DIS」腳位(如下圖紅框所示),否則系統將維持預設行為,在接上電源後即自動開機,導致前面板電源鍵無法正常控制開機流程。
OLED到ORIN NANO的GPIO接線實際位置圖
OLED套件函示庫安裝方法:
首先先安裝OLED需要用到的函示庫
sudo apt install -y i2c-tools sudo i2cdetect -y -r 7 sudo apt install -y python3-pip python3-smbus pip3 install adafruit-circuitpython-ssd1306 psutil netifaces sudo -H pip3 install --upgrade --force-reinstall jetson-gpio執行sudo i2cdetect -y -r 7 的時候應該要顯示如以下畫面,這時候代表OLED接線都正確
OLED顯示程式
oled_sysinfo.py 可以點選以下連結下載,或是複製以下程式碼至您的ORIN NANO中並命名為oled_sysinfo.py https://drive.google.com/file/d/1cjRBRMXt4bKOdPUw6mXTrAc99oHlHbXV/view?usp=sharing 新版程式(IP字體大小會隨著號碼數量增減): https://drive.google.com/file/d/18Qn2tsx3s4KiUsRRbXTsdhEREKkiwfp-/view?usp=sharingimport time
import subprocess
import board
import busio
from PIL import Image, ImageDraw, ImageFont
import adafruit_ssd1306
import psutil
import socket
# --- 設定 ---
# I2C Bus,Orin Nano 的 Pin 3,5
I2C_BUS = 7
OLED_ADDR = 0x3c
# CPU 溫度感測器路徑
CPU_TEMP_PATH = "/sys/class/thermal/thermal_zone1/temp"
# --- 初始化 I2C 和 OLED ---
try:
i2c = busio.I2C(board.SCL, board.SDA)
display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=OLED_ADDR)
print("OLED display initialized successfully.")
except Exception as e:
print(f"Error initializing I2C or OLED: {e}")
exit()
# --- 清除螢幕 ---
display.fill(0)
display.show()
# --- 建立畫布 ---
width = display.width
height = display.height
image = Image.new("1", (width, height))
draw = ImageDraw.Draw(image)
# --- 載入字型 ---
try:
font = ImageFont.truetype(
"/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", 12
)
except IOError:
font = ImageFont.load_default()
# ---------------------------------------------------------------------
# IP 顯示:優先 Wi-Fi → Ethernet → 其他介面
# ---------------------------------------------------------------------
def get_ip_address():
wifi_ifaces = []
eth_ifaces = []
other_ifaces = []
for iface, addrs in psutil.net_if_addrs().items():
for addr in addrs:
if addr.family == socket.AF_INET:
ip = addr.address
# 排除 loopback
if ip.startswith("127."):
continue
if iface.startswith(("wlan", "wlp")):
wifi_ifaces.append((iface, ip))
elif iface.startswith(("eth", "en")):
eth_ifaces.append((iface, ip))
else:
other_ifaces.append((iface, ip))
if wifi_ifaces:
iface, ip = wifi_ifaces[0]
return f"WiFi IP: {ip}"
elif eth_ifaces:
iface, ip = eth_ifaces[0]
return f"ETH IP: {ip}"
elif other_ifaces:
iface, ip = other_ifaces[0]
return f"IP: {ip}"
else:
return "IP: Not found"
# --- 系統資訊 ---
def get_cpu_usage():
cpu = psutil.cpu_percent(interval=None)
return f"CPU Use: {cpu:05.2f}%"
def get_mem_usage():
mem = psutil.virtual_memory()
return f"RAM Use: {mem.percent:05.2f}%"
def get_cpu_temperature():
try:
with open(CPU_TEMP_PATH, 'r') as f:
cpu_temp = int(f.read()) / 1000.0
return f"CPU Temp: {cpu_temp:.1f}°C"
except FileNotFoundError:
return "CPU Temp: N/A"
except Exception:
return "CPU Temp: Err"
# --- 主循環 ---
print("Starting system monitor loop. Press Ctrl+C to exit.")
while True:
try:
# 清除畫布
draw.rectangle((0, 0, width, height), outline=0, fill=0)
# 取得資訊
ip_text = get_ip_address()
cpu_temp_text = get_cpu_temperature()
cpu_usage_text = get_cpu_usage()
mem_usage_text = get_mem_usage()
# OLED 排版
draw.text((0, 0), ip_text, font=font, fill=255)
draw.text((0, 16), cpu_temp_text, font=font, fill=255)
draw.text((0, 32), cpu_usage_text, font=font, fill=255)
draw.text((0, 48), mem_usage_text, font=font, fill=255)
# 顯示
display.image(image)
display.show()
time.sleep(1)
except KeyboardInterrupt:
print("\nExiting. Clearing display.")
display.fill(0)
display.show()
break
except Exception as e:
print(f"An error occurred: {e}")
time.sleep(5)
這裡執行程式oled_sysinfo.py檢查OLED是否顯示正常。
python3 oled_sysinfo.py
如出現以下畫面代表程式順利執行:
建立 systemd service(讓OLED程式可以在每次開機時自動啟動)
剛剛測試python3 oled_sysinfo.py程式OLED都正常顯示的話就可以建立開機時自動啟動的服務了,這樣每次開機時就不用另外執行python程式了。 建立服務檔案: sudo nano /etc/systemd/system/oled.service 貼上以下內容:-
[Unit] Description=OLED 系統資訊顯示服務 After=network.target [Service] Type=simple ExecStart=/usr/bin/python3 /home/jetson/oled_sysinfo.py WorkingDirectory=/home/jetson StandardOutput=journal StandardError=journal Restart=always User=jetson [Install] WantedBy=multi-user.target
⚠️ 如果您的帳號名稱不是 jetson,請把 User=jetson 改成你實際的帳號名稱。(當然如果您使用自己的OLED程式也需要更改檔案的位置及名稱)
? 啟用服務
重新載入 systemd: sudo systemctl daemon-reexec 啟用服務(開機自動啟動): sudo systemctl enable oled.service 立刻啟動服務: sudo systemctl start oled.service? 檢查狀態
使用以下指令檢查服務狀態是否正常 systemctl status oled.service 如果都正常啟動服務會出現如下畫面:
步驟六:裝回上蓋並完成固定
- 確認線材未被擠壓
- 蓋回上蓋
- 順時鐘旋轉手擰螺絲完成固定

擺放與安裝方式
桌面模式
- 將隨附的橡膠腳墊黏貼於外殼底部
- 提供良好止滑與桌面散熱空間
懸臂模式(VESA 75)
- 使用 M3 螺絲將 Panini 固定於支援 VESA 75 的螢幕懸臂
- 懸臂需另行準備
進階與可選安裝項目
安裝 GPIO 與 CSI Camera
- 可依需求安裝 40-pin GPIO 線材
- 支援 CSI Camera 模組(如官方或相容相機)
安裝 M.2 SSD(2280)
建議在安裝上外殼前就把SSD先安裝好- 移除 SSD 蓋板與固定螺絲
- 以斜角插入 M.2 SSD(注意方向)
- 鎖回 SSD 螺絲並裝回 SSD 蓋板
組裝完成檢查清單
- 主板是否穩固無晃動
- 所有 I/O 介面是否可正常插拔
- 電源鍵與重置鍵是否正常
- OLED 是否正常顯示
- 風扇與散熱模組無干涉卡住等情形
實際使用與應用情境
Panini 外殼特別適合以下使用情境:- AI / IoT 教學與課程實作
- Jetson Orin Nano Super 專案展示機
- 長時間運作的邊緣運算系統
- 搭配 OLED 顯示 IP、系統狀態的教學案例
留言 💬 (0)
還沒有留言,來當第一個。