2014年12月11日 星期四

Ubuntu 14.04 install Android Studio 1.0 with ERROR: 32-bit Linux Android emulator binaries are DEPRECATED

當你嘗試在 Ubuntu 底下執行 Android Studio 上剛寫好的 APP 時,你可能會在 Android Studio 下方的訊息視窗發現以下內容:

ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use them
you will have to do at least one of the following:


- Use the '-force-32bit' option when invoking 'emulator'.
- Set ANDROID_EMULATOR_FORCE_32BIT to 'true' in your environment.

Either one will allow you to use the 32-bit binaries, but please be aware that these will disappear in a future Android SDK release.
Consider moving to a 64-bit Linux system before that happens.


 這段內容指出你的 Android Studio 虛擬器 (emulator) 沒有正確執行,因為相關的 32 bit 指令沒有正確連結,因此無法啟動。在錯誤訊息處已經有提示你要如何排除這樣的狀況(黃色訊息處)。


由於第一行方法我尚未在 Android Studio 環境下執行過,因此在這僅提供第二行方法的操作步驟,詳見如下:

1. 請開啟 terminal 並輸入: gedit ./profile
    (如果慣用 Vim 編輯者,也可以改以 Vim 開啟編輯)

2. 開啟 profile 後,請捲至最下方後,貼上:ANDROID_EMULATOR_FORCE_32BIT =true
    在儲存後關閉,並重新登入一次系統即可。

3. 重新開啟 Android Studio ,並執行剛剛無法正常運作的 APP 與 emulator ,此時即可正常運
    作了!現在就可以快快樂樂寫 APP 囉!



2014年12月9日 星期二

Ubuntu 14.04 安裝 JDK 7

2014年 12/9  這天 Android Studio 1.0 終於釋出,此一版本改善了之前 Beta 版的 Android Studio 許多細節,而且 Eclipse 上的 ADT 也將停止開發。言下之意,Google 希望 Android 開發者都能轉換到 Android Studio 底下,如同 iOS 的 Xcode 開發平台一樣,可將開發工具的破碎化降至最低。

當下載好 Android Studio 後,如果解壓縮後在 /bin 資料夾無法執行 ./studio.sh,多半是因為 Ubuntu 尚未安裝 JDK 套件,依照 Android 官方頁面建議,需安裝 JDK 7 ,因此請打開終端機,輸入以下指令進行 JDK 安裝:

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java7-installer

當 JDK 安裝完畢後,請輸入:
javac -version

若 JDK 有正確安裝,終端機將顯示:
javac 1.8.0_25


JDK  安裝完成後,就可在終端機下切換至解壓縮後的 Android Studio 下的 /bin 資料夾執行 ./studio.sh 便可開始進行安裝 Android Studio ,接著就可以開始快樂使用 Android Studio 寫 APP 囉!

2014年8月10日 星期日

(筆記)強化 RF 模組傳輸距離

今晚在 FB 上看到有網友詢問如何使用 RF 模組 + Arduino 傳輸資料。就實際使用經驗上,我僅使用 serial port 就可以滿足我的應用需求。

但有朋友指出:若需要將 RF 訊號打得更遠,則需要採用 NRZ  或 曼徹斯特編碼方式,才可以將訊號傳輸至較遠的地方。



NRZ : 

NRZ (Nonreturn to Zero),其表現 1 與 0 的方式是以,正電壓為 1 ,副電壓為0 。NRZ 編碼解碼的方式比較容易,但缺乏同步機制,因此缺少了訊號校正的能力。



Manchester:曼徹斯特編碼

曼徹斯特編碼的 1 與 0 表示方式分別為: 1 為正電壓(前)+負電壓(後),0 為負電壓(前)+正電壓(後)。


詳細的說明與繪圖方式,請參閱 GOTOP 的網路試讀章節:
訊號編碼格式介紹(若此連結有版權疑慮,請即刻聯絡我,我會立即修正下架,謝謝!)

2014年7月18日 星期五

更改 Macbook Pro Retina 中 VMware Fusion 6 的解析度 ( For Windows 7 )

如果你買了一台 Macbook Pro Retina ,因為作業需要,不得不安裝 Windows,你有兩種選擇進行 Windows 安裝:

1. Bootcamp 
    使用 Bootcamp 安裝 Windows 的時間相當長,且若需使用 Windows 時,需在開機前按住        
    Option + 電源鍵才可以選擇要進入哪一個作業系統。

2. VMware Fusion 6
    使用 VMware Fusion 可以在 OS X 下安裝 Windows ,而且可無縫操作,就像在執行單一執行
    軟體一樣,非常方便。


目前我採用方案二安裝了 Windows 7 在我的 Macbook Pro Retina 上,但遇上了一個相當困擾的問題:解析度太高

由於 Retina 解析度太高,因此進入 VMware Fusion 中的 Windows 時,字體相當小,連各種介面的工具列也看起來相當吃力。但無論怎麼在 Windows 下調整解析度大小,只要重新開機就一切恢復原狀。


那該怎麼解決這個問題? 請跟著以下步驟操作,就可以一勞永逸:

1. 開啟 VMware Fusion ,並執行 Windows 

2. 登入 Windows 後,請回到 OS X 桌面上使用 Finder 進入應用程式

3. 於應用程式中找尋 VMware Fusion,並在該項目上以兩指點選右鍵,打開選單項目。
    接著在選單項目中尋找「簡介」,將 " 以低解析度開啟 " 打勾

4. 接著回到 OS X 的桌面,並於右上角尋找 VMware Fusion 的 icon,同樣於 icon 以兩指點
    選右鍵開啟設定介面

5. 於 VMware Fusion 設定介面左下方點選 Virtual Machine,並點選 Settings 。點選 Setting 
    後將會開啟設定介面,請點選右上角 Display,接著取消勾選 " Use full resolution for 
    Retina display " 

6. 再回到 Windows 中,可發現系統提醒需先登出 Windows ,以利套用設定更新。待重新
    登入後, Windows 解析度就調整至舒適的大小了。


以上就是在 OS X 中調整 VMware Fusion 的設定步驟,好好享受在 Macbook Pro Retina 上使用 Windows 辦公的樂趣吧!



2014年7月15日 星期二

Windows 7 Enterprise 架設 FTP

由於公司有檔案傳輸的需求, 因此我試著在 Windows 7 企業版安裝  FTP Server , 但嘗試了許多套 FTP Server 與設定後 , 終於到適合的 FTP Server 與設定方式 , 僅此寫個紀錄分享

安裝環境 :

- Windows 7 Enterprise
- 非固定制 ADSL ( 有在中華電信網頁另申請固定 IP )
- Netis AP
- Xlight FTP Server



1. 非固定制 ADSL 申請固定 IP
    使用固定 IP 架設網站或 FTP 前 , 非固定制 ADSL 用戶需到以下網址申請一個固定 IP
    固定 IP 申請頁面 , 申請完後即可得到一個固定 IP, 請記得留存

2. 更改 PPPoE 帳號

    - 直接連接 Modem :
 
       若您的網路線是直接連接 Modem 的朋友, 請至 PPPoE 撥號介面更改您的帳號即可 ,
       在您的撥號帳號的 @ 後方加上 ip 兩個字, 改為 :  xxxxxxxx @ ip.hinet.net


     
     - 連結至 AP
     
        若您的網路線是接至 AP, 請先進入您的 AP 管理介面, 需要調整部分設定,
        在此我已 Netis 的 WF 2409 為例

        請先點選桌面左下角的開始, 並於搜尋欄位輸入 cmd , 開啟命令列, 並輸入
        ipconfig , 輸入 ipconfig 後 , 輸出畫面如下, 請紀錄您 IPv4 位址

       

        

        接著進入 AP 管理介面 , 並尋找通訊埠轉發中的虛擬伺服器 , 進行更改設定
        在此例中 , 我們設定 LAN IP 為 cmd 介面中所查詢到的 IPv4 位址, 並開啟 port 20 



        WF 2409 設定中 , 還有一項 FTP通訊埠轉發 , 也記得設定 port 20




        通訊埠設定完成後 , 我們需要設定最重要的 PPPoE 為固定 IP 格式



3. 設定網卡為 DHCP

以上 AP 與 PPPoE 設定完成後 , 我們亦須將網卡設定為 DHCP 讓網卡可以自行抓取 AP 配置的虛擬 IP





4. 安裝 Xlight FTP Server 

我曾安裝了數種知名 FTP Server (Filezilla FTP Server, Core FTP, zFTP, GoldenFTP) , 但無論怎麼設定 , 甚至關閉防火牆依舊無法正常啟用 . 還好後來找到這個輕量級的 FTP Server 相當好用. 此為下載網址 : http://www.xlightftpd.com/hk/

安裝完成後開啟介面如下, 請點選左上角新增 FTP 站台 , 並於 IP Address 欄位輸入稍早填入 AP 設定中的虛擬 IP , 並將 port 設定為 AP 中指定的 FTP port




5. 開啟 Windows 7 防火牆

請至控制台, 並打開系統及安全性



 點選防火牆選項 , 並進入進階設定




點選輸入規則, 以及幫 FTP Server 新增規則




點選 " 程式 ",  並選擇程式路徑





接著只要允許連線 , 以及套用此設定的授權範圍 , 接著就完成了新增規則





6. 透過 Client 端驗證登入狀態
 
    請下載一個你較為常用的 FTP Client 軟體 , 並於 IP 端輸入 固定 IP , 以及你所新增的使用者帳號密碼 , 並將 port 設定正確 , 就可以開始使用 FTP 服務囉!


2014年5月13日 星期二

Arduino 上使用 DHT11 溫濕度 Sensor + Bluetooth

今天我們要介紹的是如何在 Arduino 上使用 HC-05 這個藍牙模組將 DHT11 溫濕度 sensor 資訊,以無線傳輸的方式回傳至電腦端。

今天用到的材料清單如下:
  • 內建藍牙筆電(或有藍牙接收器的 PC ) x 1
  • Arduino  UNO  x 1
  • DHT11 溫濕度 Sensor  x 1
  • HC-05 藍牙模組   x 1
  • 杜邦線 (公母頭) x 7
  • 外接電源(行動電源或手機充電器) x 1
  • USB 線  x 1

若你手上的 HC-05 藍牙模組需要更改 Baud rate ,請依照 HC-05 藍牙模組設定 這篇文章先進行 Baud rate 設定。

Step 1 :

首先我們先將以下程式燒錄到 Arduino

/*

Board int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3
Mega2560 2 3 21 20 19 18
Leonardo 3 2 0 1
Due (any pin, more info http://arduino.cc/en/Reference/AttachInterrupt)
*/

#include <idDHT11.h>

int idDHT11pin = 2; //Digital pin for comunications
int idDHT11intNumber = 0; //interrupt number (must be the one that use
                          //the previus defined pin (see table above)
//declaration
void dht11_wrapper(); // must be declared before the lib initialization

// Lib instantiate
idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);

void setup()
{
    Serial.begin(9600);
    Serial.println("idDHT11 Example program");
    Serial.print("LIB version: ");
    Serial.println(IDDHT11LIB_VERSION);
    Serial.println("---------------");
}


// This wrapper is in charge of calling 
// mus be defined like this for the lib work
void dht11_wrapper() {
    DHT11.isrCallback();
}
void loop()
{
    Serial.print("\nRetrieving information from sensor: ");
    Serial.print("Read sensor: ");
    //delay(100);
    DHT11.acquire();
    while (DHT11.acquiring());
    int result = DHT11.getStatus();


    switch (result)
    {
       case IDDHTLIB_OK: 
       Serial.println("OK"); 
       break;


       case IDDHTLIB_ERROR_CHECKSUM: 
       Serial.println("Error\n\r\tChecksum error"); 
       break;


       case IDDHTLIB_ERROR_ISR_TIMEOUT: 
       Serial.println("Error\n\r\tISR Time out error"); 
       break;


       case IDDHTLIB_ERROR_RESPONSE_TIMEOUT: 
       Serial.println("Error\n\r\tResponse time out error"); 
       break;


       case IDDHTLIB_ERROR_DATA_TIMEOUT: 
       Serial.println("Error\n\r\tData time out error"); 
       break;


       case IDDHTLIB_ERROR_ACQUIRING: 
       Serial.println("Error\n\r\tAcquiring"); 
       break;


       case IDDHTLIB_ERROR_DELTA: 
       Serial.println("Error\n\r\tDelta time to small"); 
       break;


       case IDDHTLIB_ERROR_NOTSTARTED: 
       Serial.println("Error\n\r\tNot started"); 
       break;


       default: 
       Serial.println("Unknown error"); 
       break;
    }
    Serial.print("Humidity (%): ");
    Serial.println(DHT11.getHumidity(), 2);

    Serial.print("Temperature (oC): ");
    Serial.println(DHT11.getCelsius(), 2);

    Serial.print("Temperature (oF): ");
    Serial.println(DHT11.getFahrenheit(), 2);

    Serial.print("Temperature (K): ");
    Serial.println(DHT11.getKelvin(), 2);

    Serial.print("Dew Point (oC): ");
    Serial.println(DHT11.getDewPoint());

    Serial.print("Dew Point Slow (oC): ");
    Serial.println(DHT11.getDewPointSlow());

    delay(2000);
}

Step 2 : 接上藍牙與溫濕度 Sensor

在 Step 1 中將程式碼燒錄完成後,我們可以開始將感測器與藍牙接上 Arduino。以下的接線過程中,記得要讓 Arduino 保持斷電狀態。


Bluetooth 腳位對照表,請將各腳位對應至 Arduino 上接好


DHT 11 溫濕度 Sensor 腳位對照表,請將各腳位對應至 Arduino 上接好


Step 3 : 下載通訊軟體

因為 Arduino 在後續的使用上將會脫離與 PC 端連接,因此若要收取經由藍牙回傳至電腦端的封包資料,我們必須在接收端的電腦上安裝一套可以收取 COM port 封包的軟體,在此我們推薦使用 Tera Term  。 Tera Term 是一套 Open source 的軟體,介面簡潔好用,是我相當推薦的原因。

若你的電腦是 Windows 作業系統,請在 Tera Term 的 Download page 中挑選 exe 檔進行安裝。



Step 4 : 搜尋藍牙裝置與建立通訊埠

Arduino 上的藍牙模組要能傳送資料給 PC 前,我們需將 Arduino 電源接上,使 Arduino 處於供電狀態,並在電腦上針對該藍牙模組開啟一個適當的通訊埠(COM  port )。在此我僅示範 Windows 7 的藍牙通訊埠建立流程,詳見如下:


開啟藍牙管理中心後,點選新增裝置

搜尋到藍牙模組後,請點選該模組,並按下一步


選擇『輸入裝置的配對碼』,HC-05 藍牙模組的預設密碼為 1234



密碼驗證成功後,開始安裝驅動程式與建立 COM port



Step 5 : 開啟 Tera Term 接收資料

以上四個步驟都建立好後,開啟 Tera Term,畫面如下,請點選 Cancel


進入主畫面後,請於上方功能選單點選 Setup  ->  Serial port


開啟 Serial port 選單後,可在上方 Port 選單下拉,檢查是否有新增稍早建立的藍牙通訊埠,在下圖中我們可以看到新增的 COM 6 、COM 11,兩者擇一即可。


選擇 COM port 完成後,請檢查 Baud rate 是否正確。如果你在藍牙模組上所設定的 Baud rate 並非 9600,請依照藍牙上的 Baud rate 進行選擇。例如,你在藍牙上的 Baud rate 為 115200,那麼在 Tera Term 這個視窗中,你就需要選擇 115200 。確認後,按下 OK 即可開始通訊。


若藍牙與溫濕度 Sensor 有正常工作,電腦自藍牙接收到的溫濕度資料就像下圖一樣,分別呈現出不同的溫濕度。




以上就是透過 HC-05 藍牙模組將 Arduino 上的溫濕度 Sensor 資訊傳至電腦端的實驗步驟。透過這些步驟,你可以整合更多有意思的感測器,並透過藍牙或 Wifi 的方式傳回電腦上,讓你的 Arduino 設備不再因為線材而綁手榜腳。

2014年5月12日 星期一

Arduino + HC-05 Bluetooth module setting ( AT Mode and Baud rate setting )

Arduino 有許多容易使用的模組與 Lib ,可以讓人快速的驗證流程與效果,但為了能讀取 Arduino 上的溫濕度、光敏電阻、電壓等數位、類比訊號,我們難道就只能用 USB Cable 讀取嗎?不不,我們還有 Wifi module 和 Bluetooth module 可以幫助 Arduino 添加無線傳輸功能,讓我們拋開 USB Cable ,把 Arduino 發揮更多可能。

市面上販售的藍牙模組、Wifi 模組有許多型號,各種型號版本各有些許差異,但在這篇筆記中,我們僅探討:HC-05 這個藍牙模組。

為什麼僅探討 HC-05 模組?

1. 筆者手邊僅有這個型號的藍牙模組

2  我買來好久一段時間,一直沒能搞定 AT Mode 和傳輸問題

3. 網路上將近八成的藍牙模組筆記,多是探討 HC-06,其底下留言中有許多跟著步驟操
    作仍無法成功的朋友(我亦是其一),且拍賣網頁上的模組介紹,有許多將 HC-06 與 
    HC-05 搞混

4. 幾乎找不到對 HC-05 的 AT Mode 設定文章與介紹

基於以上四點理由,我覺得我該寫一篇文章分享給同樣遇到藍牙模組設定有問題的朋友們。




首先讓我們先來看一下 HC-05 的外觀:


 正面

背面


由背面我們可以看到版本編號為 V1.05 ,但若依照 V1.05 進行搜尋筆記或拍賣時,有可能會得到誤導的資料與型號。筆者依照 V1.05 於露天拍賣、淘寶、Yahoo 拍賣上搜尋,V1.05 的版本名稱為 HC-06 ,但經由實驗過程中發現,這根本是 HC-05!難怪許多網頁上的操作步驟,怎麼測試就是無法進入 AT Mode 更改 Baud rate,原來一開始就搞錯了版本。

HC-05 與 HC-06 的 AT Mode 在操作中, HC-06 較簡單, HC-05 則需要透過 key pin 的設定才可以進入 AT Mode。





進入設定步驟說明前,介紹一下我的設備與 Arduino 版本,並依照下列步驟,逐一將 HC-05 與 Arudino 連接、設定:

  • Arduino UNO           x 1
  • HC-05 藍牙模組     x 1
  • 杜邦線(公母頭)x 4
  • Arduino  IDE  1.0.5 - r2





Step 1 : 以杜邦線將 HC-05 與 Arduion 連接

接線腳位對照表
  • HC-05 GND <---> Arduino GND Pin
  • HC-05 Vcc (5V) <---> Arduino 5V
  • HC-05 TX  <---> Arduino Pin 10 (soft RX)
  • HC-05 RX  <---> Arduino Pin11 (soft TX)
  • HC-05 Key <---> Arduino Pin 9


Step 2 : 上傳程式碼至 Arduino

/*

AUTHOR: Hazim Bitar (techbitar)
DATE: Aug 29, 2013
LICENSE: Public domain (use at your own risk)
CONTACT: techbitar at gmail dot com (techbitar.com)

*/


#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(9, OUTPUT);// this pin will pull the HC-05 pin 34 (key pin)HIGH 
                     // to switch module to AT mode

  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{

  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}

將上面程式碼複製到 Arduino IDE 中編譯、上傳,並開啟 Serial Moniter。



Step 3 : 設定 HC-05 進入 AT Mode

* 注意 : 請先將 Arduino 電源拔除再進行以下步驟


1. 確認是否線路皆依照 Step 1 接線完成

2. 把 Arduino 接上電源前,請將 HC-05 連接至 Arudino 上的 Vcc 腳位拔除,其餘四支腳位皆維
    持連接狀態

3. 確認拔除 Vcc 腳位後,現在可將 Arduino 接上電源

4. 確認 HC-05 目前沒有與任何藍牙裝置配對中

5. 將 HC-05 的 Vcc 腳位插回 Arduino Vcc

6. 上述步驟都正確執行後, HC-05 的 LED 燈應該維持兩秒閃爍一次的頻率。若燈號狀態正
    常,此時已進入 AT Mode

7. 為了驗證是否正確登入 AT Mode ,請開啟 Serial Moniter ,並設定視窗右下角的 Baud rate 為
    9600,於 Serial Moniter 上方欄位中輸入大寫 " AT " ,將收到回應 " OK "

8. 如果依舊沒有辦法收到 " OK " 回覆,請再次檢查您的線路與步驟是否正確


進入 AT 模式後,若設定皆正常,於畫面應顯示 " Enter AT commands ",而非亂碼,若呈現亂碼請注意右下角 Baud rate 速率與格式設定。輸入 " AT ",可得到回應 " OK " 。

改變 HC-05 Baud rate , 請輸入 " AT+UART=115200,1,0 ",改變成功可得到回覆 " OK ",其中 115200 為最高 Baud rate 值,1 則是停止位元,0 為檢查位元,調整 Baud rate 時,僅需調整前面的 Baud rate 值即可。


請注意程式碼中的 Serial.begin(9600) 與 BTSerial.begin(38400),這兩者的數值請勿調整

Step 4 : 設定 HC-05 各項 AT 指令

以下為常用指令,若需參考其他 HC-05 指令,可點選以下連結:
http://www.electronicaestudio.com/docs/istd016A.pdf

返回初始預設值 : AT+ORGL

查詢版本 : AT+VERSION?

更改藍牙名稱 : AT+NAME=XXXX  (其中 XXXX 為欲設定的名稱 )

更改 Baud rate : AT+UART=XXXX,1,0  (其中 XXXX 為欲設定的 baud rate 值 )

更改密碼 : AT+PSWD= XXXX ( 其中 XXXX 為新密碼 )




障礙排除

如果 HC-05 與 Arduino 的接線皆正常,程式也沒有錯誤,打開 Serial Moniter 設定與 Baud rate 也正常,但無論怎麼輸入 " AT " 都無法得到 " OK " ,請參考以下解決方案

燈號狀態


  • 若燈號為兩秒閃爍一次,請重新確認 BTSerial.begin(38400) 是否正確,並請重新操作上述步驟


  • 若燈號為快速閃爍,請依照以下步驟設定


1. 拔除 USB 線,使 Arduino 處於斷電狀態

2. 將 Pin 9 的腳位拔除後,插入 Vcc 3.3V 腳位

3. 插上 USB 後,檢查 HC-05 燈號,若燈號為兩秒閃爍一次,此時已正確進入 AT Mode,若燈
    號為快速閃爍,請重新操作一次接線步驟



以上為進入 HC-05  AT Mode 設定,若你在其他 Blog 或 論壇上找到的操作方法無法正常設定,或許你手上的藍牙模組有可能與我的相同是『掛羊頭賣狗肉』的 HC-05 ! 

2014年5月5日 星期一

2.4Ghz 與 5Ghz 穿透性與傳輸效果

近期有朋友買了 5Ghz 的 AP 設備後,分享了相關心得,但令他不解的是:為何 5Ghz 的網通設備,其穿透率不如 2.4Ghz 的高?在此我們不討論詳盡的物理實驗與計算,僅回歸探討「波長」與「能量」還有「繞射」等基本科普問題。


見圖 1, 首先讓我們複習「波」的基本定義。於橫軸上有一波形,以橫軸為零點,橫軸以上的波形,其峰頂點稱為「波峰」,由波峰至橫軸的距離稱為「振幅」;橫軸以下的波形,其低點稱為「波谷」兩個波峰之間的距離稱之為「波長」。


波長越長,其頻率越低,能量也較低,因此穿透率較差;相反的,波長越短,能量越高,頻越也高,其穿透率也較強。


圖 1(轉自網路)



生活中我們從無線電、3G基地台、可見光、紅外線、X光、微波爐等,這些都是以波的是形式存在我們四周,見圖 2:

圖 2(轉自 wiki 百科)



再來讓我們談談繞射問題,圖 3 為著名的楊氏雙縫實驗(繞射、干涉於雙縫實驗同時發生),相信各位高中物理課程都有實驗過,在 Wiki 上對於繞射的定義如下:

繞射(英語:diffraction)是指波遇到障礙物時偏離原來直線傳播的物理現象。


在古典物理學中,波在穿過狹縫、小孔或圓盤之類的障礙物後會發生不同程度的彎散傳播。假設將一個障礙物置放在光源和觀察屏之間,則會有光亮區域與陰晦區域出現於觀察屏,而且這些區域的邊界並不銳利,是一種明暗相間的複雜圖樣。這現象稱為繞射,當波在其傳播路徑上遇到障礙物時,都有可能發生這種現象。


圖 3  楊氏干涉與繞射雙縫實驗(轉自 wiki 百科)




複習了波的基本物理後,我們可以開始探討:為何 2.4Ghz 於室內的傳撥能力優於 5Ghz ?


圖 4 2.4Ghz 與 5Ghz 比較表

圖 4 左側示意圖中,我將每個波的粒子以小人偶代替,藉此以簡單的方式陳述 2.4 G 為何繞射能力較優,圖 4 右側為 2.4Ghz 與 5Ghz 比較表,從表中得知 5Ghz 穿透能力較 2.4Ghz 強,但為何 5Ghz 於室內傳輸的狀況較差? 註:圖 4 中的擬人說法,於實際物理實驗與理論中其實是不大正確的,但這僅是為了概述說明波長於繞射實驗的影響所做的簡單陳述,若有任何問題,歡迎指教。

當每個小人偶依序排隊要通過狹縫時,可以看到 5Ghz 的波長短,頻率高,因此小人偶欲通過狹縫時較為擁擠,雖穿透能力較強,但其能量都耗費於「穿透」上,因此其剩餘能力用於繞射上就顯得心有餘而力不足,因此繞射的效果較差。相反的, 2.4Ghz 波長較長,頻率低,小人偶彼此之間的距離拉大,通過狹縫的程度較為容易,且經由繞射與反射,使 2.4Ghz 於是內的傳輸狀況優於 5Ghz。


因此透過上述說明與比較表,我們來歸納以下兩點 2.4Ghz 與 5Ghz 的比較:

傳輸能力

5Ghz 的能量較強,傳輸速率快,若在開闊地點,例如台北地下街、美食街等開放式地形,不需將能量耗費於穿透障礙物或建築物時,5Ghz 在此類環境中更能擔任高負載性的群眾上網需求應用;2.4Ghz 若是家居環境下,雖有牆壁、家具等障礙物,但傳輸範圍不需高達數十、數百公尺以上,因此透過繞射與反射即可達到一定程度的訊號傳撥。當然若有更穩定的頻寬需求,加裝 Router 是最基本的解決方案,並非一定要更換 5Ghz 網通設備不可。


設備普及率與價格

目前市面上的網通設備依舊是以 2.4Ghz 為大宗,無論是 802.11 a/b/g ,2.4Ghz 的產品幾乎都有滿足需求的選項可供購買,但 5Ghz 的產品為數不多,穩定性也與價格高低有關。如果你在家中只是想要用 iPad 躺在床上看看韓劇來自星星的你,對你而言,用 2.4Ghz 和 5Ghz 有差嗎?我想差異不會太大,畢竟家中成員同一時間使用 AP 的人數不會太多,因此網路速度影響有限。所以是否真的需要 5Ghz ,除了衡量使用環境外,當然還有你的荷包與使用人數作為網通設備的採購考量。


如何挑選適合的網通設備,這端看各位所要架設的範圍與地區來決定,若是位於室內,目前還是推薦以 2.4Ghz 為佳;若使用地點為開闊地形,那麼 5Ghz 將有助於良好的高速上網體驗。

2014年4月20日 星期日

Windows 8.1 中移除 KMPlayer 右側廣告

上週購入一台 Toshiba L50 後,試著將一些常用軟體安裝、測試,唯獨新版 KMPlayer 安裝後,每回開啟程式總會在右側出現廣告視窗,這是令人很苦惱的部份。廣告視窗不僅佔用版面外,還會讓啟動速度拖慢,實在是困擾,因此在網路上搜尋相關文章後便開始著手進行 KMPlayer 右側視窗的設定修改。


文章中指出,需到 C:\Windows\System32\drivers\etc\ 中,以記事本開啟 hosts 檔,並在檔案底部貼上以下指令,並將檔案存檔即可完成:

127.0.0.1  Update.kmpmedia.net
127.0.0.1 cdn.kmplayer.com127.0.0.1 player.kmpmedia.net127.0.0.1 media.sj2.vcmedia.com127.0.0.1 rd.apmebf.com


問題 1 :

當我如實的操作上述步驟,卻在存檔時告知,我並非系統管理者,需請求系統管理者權限才可操作。



因此我又搜尋了關於設定 Windows 8.1 管理者權限的文章,文章中指出欲設定管理者權限,需至「本機安全性原則」中設定,開啟本機安全性原則有以下兩種方式:

1. 按下 Win 鍵  + R 鍵,即可開啟「執行」視窗,並輸入:gpedit.msc

2. 回到 Windows 8 磚牆狀態畫面,並將滑鼠游標移至右側,顯示右側隱藏選單,並點選「磚」,接著將「顯示系統管理工具」啟用,即可在磚牆中看到許多新增的選單。




問題 2 :

於 Toshiba L50 中的 Windows 8.1 操作以上兩個步驟時,皆無法看到本機安全性原則這個項目。於執行視窗中輸入  gpedit.msc ,得到的訊息告知無法找到此內容;開啟磚牆狀態檢視新增管理項目,亦無本機安全性原則選項。


-----------------------------------------------------------------------------------------


基於問題 1 與問題 2 我查詢了不少文章與微軟官方網頁,皆無法在筆電上的 Windows 8.1 找到本機安全性原則,因此我採用了以下方式就解決了 KMPlayer 右側廣告視窗設定需系統管理權限問題:

1. 至帳戶設定中確認目前使用中的帳戶是否已為系統管理者(Administer 權限)

2. C:\Windows\System32\drivers\etc\ 中,以記事本開啟 hosts 檔,並在檔案底部貼上以下指令,再將檔案以 .txt 格式另存新檔(建議儲存於桌面):


127.0.0.1  Update.kmpmedia.net
127.0.0.1 cdn.kmplayer.com127.0.0.1 player.kmpmedia.net127.0.0.1 media.sj2.vcmedia.com127.0.0.1 rd.apmebf.com




3. 修改步驟 2 中另存新檔的 hosts.txt 副檔名,將 .txt 去除。此時系統告知更改副檔名後,檔案可能無法使用,請按下確定,修改後檔名為 hosts。

4. 複製步驟 3 修改副檔名後的 hosts 檔,並回到 C:\Windows\System32\drivers\etc\  貼上 hosts 檔,覆蓋原始 hosts 檔即可完成設定。

5. 重新開啟 KMPlayer 後可發現右側廣告視窗已關閉。




後記:

經由這次的設定過程,發現 Windows 8 的系統設定有截然不同的嚴謹程度,為了不讓使用者隨意更動系統設定,將相關頁面封裝的較為隱密。

但仍然令我不解的是為何筆電上搭載的 Windows 8.1 無法依照以上步驟找到本機安全性原則。或許是筆電上的 OEM 版本於出廠前便與 Toshiba 相關系統設定軟體做出最佳的整合設定,因此不希望使用者進行更動,造成系統 crash。

以上經驗讓我體驗到 Windows 8 是多麼的不易使用,還是回頭使用我的 Ubuntu 吧 XDD


-Marcus.

2014年1月14日 星期二

3P Rocker Switch ( 3 Pin 洛克開關應用 )

從電子零件行買來一個 3 Pin 的電子開關,你是否能很快速的瞭解如何使用這個零件?讓我們來想想你會怎麼做:

1. 把玩電子零件,看看是否有標示使用方式、腳位說明

2. 如果方法 1  找不到,便開始 google 相關 datasheet


一個容易上手的 3 Pin 的電子開關應該在外殼處會有基本電路示意圖,或者是三個金屬接腳有一隻顏色不同。基於這些已經附在硬體上的基本資訊,還有經由上述兩個方法,你應該很快可以開始使用你的零件。但如果你買到的 3 Pin 電子開關如同以下圖片中的一樣,幾乎沒有什麼標示,腳位也是同樣顏色,不免要煩惱怎麼下手才好。




如果不小心採買到這樣的電子開關也不必太擔心,只要拿出三用電錶量測一下,紀錄導通腳位是哪兩隻腳位即可。讓我們先來認識一下怎麼挑選開關:

1. 挑選規格、大小

電子開關有各種不同尺寸,有方形、長形、圓形等,基本用途都是用來作為切斷與導通迴路,因此我們要先瞭解其迴路所使用的電流源是直流,還是交流。如下圖中的電子開關是交流專用,規格為: 15 A     125V AC ,10A     250V AC

所以這顆電子開關就可以讓我們用在台灣常見的 110V 與 220V 的電路環境中使用。若你的電流源是 DC 直流,請依照需求挑選耐流、耐壓。



2. 有無帶燈

有帶燈電子開關僅為方便使用者觀看開關是否有成功導通迴路,使用方法與不帶燈電子開關並無二致。若要說,帶燈開關與不帶燈開關使用上最大的差異,就只有帶燈開關的特定單一腳位為燈泡專用,因此接法就不像不帶燈開關一樣單純串聯在迴路中即可。

低頭尋找你身邊的延長線,應該可以在開關處找到「帶燈」的開關,但當然也有便宜延長線使用不帶燈的開關,如下圖。


3. 帶燈開關腳位判別


因為不帶燈開關只需要留意兩個接點是否導通即可,使用上應該沒有疑問,在此便不詳述。對於帶燈開關則需先找出哪兩隻腳位是導通腳位,這時只要拿出三用電錶量測即可。

將三用電錶檔位調到二極體測試檔位後,將其中一隻探棒放在中間腳位,另一隻則放在其他兩隻未使用腳位上(二挑一),並試著切換帶燈開關,看看蜂鳴器是否會鳴叫。下圖中的開關導通腳位為中間與右側的腳位,導通後,電錶螢幕上的數值亦會大於 0 。






若你所購買的 3P 帶燈開關如下圖中的開關,有單一隻腳位顏色與其他兩隻不同,那麼該腳位就是給予開關中的燈泡所使用的腳位。





4. 帶燈開關應用接法

已經確定好燈號腳位後,我們不禁思索:迴路不是應該都要有火線與接地兩點才能構成一迴路?怎麼開關上的電燈只有一個腳位?

其實燈泡的接地腳位是與開關本身的接地採用串聯的方式與電流源的接地端接在一起,當開關導通,燈泡也隨之點亮。瞭解開關上各種腳位後,我們來看看實際將開關安裝在迴路與設備上的線路圖為何吧。







下圖中開關為「斷路」狀態,當 Light 端 被下壓後, Acc 與 GND 便導通,左下角的喇叭也會隨之導通,如此一來,一個可正常運作的開關迴路就完成了。(此接法為開關上 LED 燈恆亮)





上圖中的 Vcc 與 Acc 腳位是可以互換的,因此與上圖接法不同也不用擔心。以上是 3P Rocker Switch 的說明與應用,希望能讓各位更瞭解如何使用。


----------------------------------

2018.02.11 更新說明


基於底下留言有許多網友給了許多指教,我也一度覺得自己的學習經驗是有誤差的。在研究了許多帶燈洛克開關的討論串和影片教學後,這裡有個 ebay 官方的教學文章 

此外,我在上圖中的 Acc 與 Vcc 雖然這樣的接法是會讓開關上的 LED 燈常亮,若希望 LED 燈能隨著跟開關相接的設備一同啟動或關閉,那就只需要將圖中的 Acc 和 Vcc 互換即可。

LED 燈隨著負載設備同亮,請將中央的腳位接到 負載設備正電端,左側的腳位改接到電池正電端

若要LED 燈恆亮,請將中央的腳位接到 Vcc,左側的腳位改接到負載設備的正電腳位


-Marcus.