swf.com.tw

2008/05/14

自製Wii Remote控制器的紅外線發射器(使用USB接頭)

作者: cubie 於 「 改造遊樂器, 硬體與DIY

自製Wii Remote控制器的紅外線發射器(使用USB接頭)
文∕趙英傑

Wii遊戲機的特色莫過於集結「動作(加速)」與紅外線感應於一身的藍芽控制器——Wii Remote。Wii Remote前端有個紅外線CMOS感測器,搭配連結Wii主機的"Sensor Bar"(直譯為「感應器」,但其實它是紅外線發射器),即可感測控制器的座標位置。

這小小一支控制器集合了多個國家、不同公司的研發成果。下圖是美國Fortune(財星)雜誌所刊載的Wii Remote內部照片,以及各個零組件的研發∕製造廠商與估計成本(參閱:An Inside Look At The Wii’s Magic Wand)。其中的藍芽控制晶片(Broadcom 2042)由Broadcomm研發、台積電代工生產,此藍芽晶片的核心是八位元的Intel 8051單晶片。不知道為什麼,這篇文章遺漏了由台灣原相科技研發的CMOS感測器。關於此控制器的詳細技術分析,請參閱WiiLi.org網站的Wiimote文章

Wii Remote內部構造

令我感到訝異的是,控制器裡的記憶體晶片竟然是在義大利米蘭(Milan)研發製造的。現在台灣的記憶體晶片大廠的股價普遍低迷,怎麼不交給台灣研發生產?不僅價格低廉且品質優秀 :-)

個人電腦上的藍芽無線通訊模組可以和Wii Remote控制器連結。在配對時,電腦上要選擇藍芽的「滑鼠、鍵盤和搖桿」類別,並按著Wii Remote控制器上的1和2鈕,或者電池盒下方的紅色同步(Sync)鈕不放,即可配對成功。下圖是在我的電腦上呈現的藍芽裝置搜尋畫面,控制器的名字是"Nintendo RVL-CNT-01"(註:Mac OS X和Linux系統的驅動程式,請參閱WiiLi.org的這個網頁說明)。

搜尋Wii Remote藍芽無線裝置

藍芽連線成功後,即可使用一位日本人設計的 "WiinRemote" 軟體,讀取Wii Remote控制器的電量、動作感測器(Motion Senor)、紅外線感測器(IR Sensor)和左手控制器(Nunchuk)的參數值。而且,只要按下操作畫面右下角的Enable Cursor(啟用游標)鈕,就能把Wii Renote控制器當成無線滑鼠使用。其操作畫面如下:

WiinRemote軟體

為了讓Wii Remote控制器能在電腦上像操作Wii一樣方便,最好在電腦上加裝紅外線發射器,讓Wii Remote判斷搖桿的座標位置(註:上圖的IR Sensor窗格裡的1和2白點,就是紅外線發射器的位置)。

底下是紅外線發射器的電路圖(參考卡內基美隆大學Johnny Chung Lee教授的這個電路)。我使用電腦的USB供電,USB插頭是從舊的滑鼠剪下來的,除此之外,兩個紅外線發射二極體和電阻,加起來的成本大約新台幣25元,非常便宜。

紅外線發射器的電路圖

USB的電源為5伏特,電路中的電阻值可採用介於40~70歐姆之間(我用的是47歐姆);如果要使用外部的3伏特電池盒供電,請使用介於15~30歐姆之間的電阻值。若嫌自製電路太麻煩,也可以直接在電腦旁邊點兩個蠟燭充當紅外線光源…不過這樣的氣氛可能蠻詭異的。

因為電路很簡單,所以不需要使用電路板,可直接用電線把全部零件焊接在一起:

焊接紅外線二極體

焊接完畢後,我用一根筷子和膠帶將它們固定好。雖然完成品的外觀粗製濫造,但是可以快速完成並測試。

Wii Remote和紅外線發射器

我們肉眼看不到紅外線,檢驗電路是否有正常運作的最簡單方法,是把數位相機或攝影機的鏡頭對準紅外線二極體,由於攝影機的CCD和CMOS感測器的光譜涵蓋紅外線,因此我們可以透過它觀察到紅外線二極體所發射出的光線。

最後,選擇WiinRemote軟體的Options(選項)→Preferences(偏好設定)指令,並勾選左上角Cursor(游標)窗格裡的IR Sensor(紅外線感測器)選項,Wii控制器就能透過自製的紅外線發射器來感應座標了。

偏好設定

2008/04/29

設定FCKeditor,讓使用者上傳檔案到自己的目錄

作者: cubie 於 「 教學文件, 動態網頁製作

設定FCKeditor,讓使用者上傳檔案到自己的目錄
文∕趙英傑

目前的FCKeditor(註:嵌入網頁中,功能類似 Word 的文字編輯器介面)版本,並沒有提供讓使用者上傳檔案到自己的目錄的功能。不過,只要稍加修改它的程式碼,就能達到這項需求。

使用者上傳到自己的目錄

假設網站有兩個分別叫做 cubie 和 eric 的使用者要上傳影像檔。初次上傳檔案時,本文的修改程式將令 FCKeditor 在伺服器端的 uploads 路徑之下,以用戶的名稱建立新的資料夾。

首先使用Dreamweaver的「使用者驗證」伺服器行為指令,建立一個簡單的用戶登入PHP網頁(請參閱《碼上就會:Dreamweaver CS3 PHP、MySQL與AJAX》的9-2頁,「製作管理人員登入頁面」一節),如下圖所示:

使用者登入頁面

從「程式碼」檢視模式可以看到,Dreamweaver將把用戶的帳號名稱記錄在名叫 "MM_Username" 的session變數。根據本文範例檔的設定,登入成功後,瀏覽器將切換到包含 FCKeditor 編輯器的 editor.php 頁面。

接著修改位於底下兩個路徑裡的 config.php 設定檔。第一個設定檔用於設定「上傳檔案」面版裡的上傳路徑;第二個設定檔用於設定「瀏覽檔案」面版裡的上傳檔案路徑:

C:\AppServ\www\fckeditor\editor\filemanager\browser\default\connectors\php\config.php
C:\AppServ\www\fckeditor\editor\filemanager\upload\php\config.php

開啟這兩個設定檔之後,在PHP程式第一行(亦即,<?php的下一行)輸入底下的敘述,啟用session變數:

session_start();

將書本範例程式裡的固定上傳檔案路徑:

$Config['UserFilesPath'] = '/uploads/' ;  // 預設為'/userfiles/'

改成:

$Config['UserFilesPath'] = '/uploads/'. $_SESSION['MM_Username'] . '/' ;

假設登入用戶的帳號為 "cubie",那麼,該用戶的所有影像檔將自動存入底下的資料夾路徑中:

/uploads/cubie/images/

按此連結下載範例檔。本範例檔僅包含「用戶登入」頁面(testUpload.php)以及嵌入FCKeditor的簡易編輯頁面(editor.php),用戶登入頁面的資料庫連線設定沿用書本的範例檔,請直接將範例檔解壓縮放在AppServ的www根目錄,並依照上文修改config.php設定檔之後,即可進行測試。

[2008.5.6補充] 解決FCKeditor 無法上傳檔案的問題

請參閱《碼上就會:Dreamweaver CS3 PHP、MySQL與AJAX》書籍的勘誤表網頁

下一頁 »