2013/9/15

【樹莓派】設定無線網路

  在網路上用LinuxWifiConnection & Command幾個關鍵字查詢怎麼透過指令讓Raspberry Pi能夠透過USB Wifi Dongle連上分享網路,得到步驟大致如下:
  1. 先用ifconfig看看有沒有出現wlanXX一般是0,但如果裝過多張無線網卡則可能會是更大的數值。
    • 若沒出現則用ifconfig -a看看無線網卡有沒有被系統正確識別,如果有的話則使用sudo ifconfig wlanX up將無線網卡帶起;若ifconfig -a也沒看到wlanX則表示系統不支援或是需要另外安裝Driver。
  2. sudo iwlist scan掃描附近可用的無線網路,會得到像下面截圖的資訊:
  3. 若上面有成功掃描到要連線的AP資訊,繼續使用指令sudo iwconfig wlanX essid NAME key KEY連接AP。
  4. 最後使用指令sudo dhclient -v wlanX動態取得IP,若一切正確下命令ifconfig wlanX查詢網卡狀態可以看到取得對應的IP與網路遮罩等訊息:
不過上述連線僅可用於WEP加密的AP連線,若使用的AP加密機制是WPA/WPA2的話,用上面的方法是沒辦法成功連線的,參考步驟如下:

  1. 修改網路連線設定文件/etc/network/interfaces
    1. 若原本有iface wlan0 inet manual敘述,則在該敘述最前面加上#變成註解
    2. 加入敘述iface wlan0 inet dhcp
    3. 加入敘述wpa-ssid "NAME"
      NAME請改成對應的ESSID名稱
    4. 加入敘述wpa-psk "KEY"
      KEY請改成對應的加密文字
    5. 若原本有wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf敘述,在該行最前面加上#變成註解
  2. sudo ifdown wlanX關閉無線網卡功能
  3. sudo ifup wlanX重新開啟無線網卡即會自動連線AP並取得IP。
  4. 最後同樣可用ifconfig wlanX查詢網卡狀態確認連線是否成功。 
PS. 使用的USB Wifi Dongle是EDUP EP-8508GS,使用上沒發現什麼問題。

2013/9/13

【樹莓派】開機、設定與關機!

  在開機之前得先確定週邊配件都齊全了才行,由於樹梅派只支援SD卡開機,因此得先準備一張SD卡,根據官方建議應該找一張4G以上的SD卡,速度上當然是越快越好,但是因為主板只支援SDHC,因此Class 10就可以了,怕會有相容性問題的話可以參考RPi SD cards網頁的相容性測試。手上用的這張是創建Class 10 8G,目前用起來沒遇到什麼問題。
  有了裝載系統的SD卡後,還得要顯示輸出設備,這邊決定採用RS232文字傳輸模式來跟板子溝通,所以得準備張USB to RS232轉卡,選購時得注意要買USB to TTL RS232的商品,若沒有TTL字樣可能會買到12V準位的RS232,樹梅派RS232準位是使用5V的。
最後需要一條Micro USB Cable做為樹梅派供電使用,底下列出這次需要用到的設備:

  1. 4G以上SD Card
  2. USB轉TTL RS232
  3. Micro USB Cable
  在開電之前必須先將OS Image載入記憶卡,首先下載Win32 Disk Imager還有RPi Image,這次選用的Image是Raspbian,這是從Debian系統改來的,先前若有用過Debian或是Ubuntu系統的人應該會對這版本Image感到熟悉。
  系統安裝十分簡單,開啟Win32 Disk Imager選擇下載好的Image並指定SD Card磁碟機路徑,最後按下Write後就會開始製作可開機的SD Card。
  開機前還得先設置好PC端的RS232視窗,這邊採用TeraTerm這個工具根樹梅派做溝通,開啟TeraTerm後點選Setup→Serial Port...,設定COM Port(安裝完USB to TTL RS232 Driver後會在裝置管理員上看到一個新的COM Port)
   開啟TeraTerm設定頁面,修改對應的COM Port並將BaudRate設為115200,其他設定為值預設即可。
  接著將USB to TTL RS232的TX、RX與實驗板的對應接腳接起來,樹梅派GPIO接腳參考如下圖
@2015/04/09補充:可參考這網頁有詳細的Pinout資訊

  最後插上MicroUSB就會自動進行開機程序,完成開機程序後會停在登入畫面,登入帳號輸入pi,密碼輸入raspberry即可完成登入動作,因為第一次啟動系統,會看到提示執行sudo raspi-config執行設定。
  執行sudo raspi-config會看到如下視窗:
簡單描述各個選項功能:
  1. 延展檔案系統,如果選用的SD Card大小大於2G可以使用這選項讓系統檔案延展,預設Image檔案系統是2G,若執行完此選項,可用空間將可延伸至整個SD Card大小。
  2. 更改登入密碼。
  3. 開啟系統進入桌面功能,這部分若沒有透過RCA / HDMI Cable接電視 / 電腦螢幕,將看不到效果。
  4. 設定語系相關選項。
  5. 啟用Camera模組。
  6. 加入Rastrack,若有讓實驗板連網,可以加入連網登記,其功能是統計樹梅派分散在世界的哪些角落。
  7. 超頻選項,建議加上散熱機制再做超頻選項。
  8. 進階設定,裡面可以開啟SSH連線功能、切割記憶體使用、更新系統等選項。
  做完上述設定,基本上就可以開始想想該怎麼使用手上的樹梅派啦!若要關機可以選擇直接拔掉Micro USB Cable或是謹慎一點的人可能會想下完sudo poweroff命令確定完成關機程序後再拔除USB Cable。

【樹莓派】Raspberry Pi UK版開箱


  最近發現個有趣的小玩具:Raspberry Pi,中文翻為樹莓派,英國教育學家為了讓小孩子可以從趣味的小專案實做過程中學習相關知識而設計的實驗開發板,詳細的來龍去脈可以參考網路上維基的介紹→樹梅派
  直接進入開箱吧!這次買的是英國生產的。
在網路上有看到一些討論當機問題,看到有人歸結為中國版本打板上件較不精細導致容易有當機現象,為了避免之後把玩時遇到奇怪現象決定多添些錢買英國版,不過說實話我覺得應該是沒差吧,因為不巧手上這塊版子也是有打件歪斜的問題...囧。
包裝盒內除了一塊Raspberry Pi板子還附上一張使用警告,然後就麼都沒有了!沒錯,就真的沒有其他額外的東西,因為當初這塊板子的設計目的就是要讓使用者能自行摸索找尋答案,因此電源、網路線、USB Cable都省了,希望使用者能依循自己的需求尋找對應的材料。
  拆開主板包裝先看看是什麼版本吧!手上這快板子是Model B(Model A是比較省電的版本,但犧牲掉Ethernet、一個USB孔,RAM則是256MB),RAM是512MB,在早期版本是256MB,現在買到的應該都會是512MB才對,價錢都是35美元。
  區別RAM的大小看CPU上面的雷射打印字樣就可以區別了:手上這塊是K4P4G324EB,4G是說4 Giga Bits,換算成Byte除以8則是512MB。
怕這小玩具不好保護因此買了個透明保護殼,拆開包裝共有六片透明板子,每塊板子兩邊都有透明膜得先撕掉。
先組好三片,架子就初步立起來了,外殼都是用卡榫相嵌扣住,沒有說很穩固,但也不會脫落。
裝上第二塊側邊長板,長板一定要先裝好才行。
接著先把上蓋給裝上,靠近電源那邊的屁屁最後再裝上就完成了。
買殼有另外附上三塊散熱片,分別裝在CPU,USB & Ethernet與電源轉換IC上,固定善熱片後的樣子如下。

2013/3/31

【C語言】亂數

  閒來無事突然好奇random()函數是不是真的能產生很均勻的數值來,就寫了個小程式將產生的亂數值做餘數處理分配到四個變數,在將最後結果印出來,結果竟然十分均勻,直接先看程式內容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char **argv) {
 int value[4] = {0, 0, 0, 0};
 int max = INT_MAX;

 srand(time(NULL));
 for(int i = 0; i < max; i++) {
  value[rand() % 4] += 1;
 }

 for(int i = 0; i < 4; i++) {
  printf("%d => %d\n", i, value[i]);
 }

 printf("Total: %d\n", max);
 return  0;
}

執行幾次結果大致相同
1
2
3
4
5
0 => 536870911
1 => 536870912
2 => 536870912
3 => 536870912
Total: 2147483647

母體設小一點就比較不那麼均勻

1
2
3
4
5
0 => 14
1 => 10
2 => 9
3 => 17
Total: 50

  說實話這樣的結果其實讓我有點懷疑亂數太過造假,也就是說顯得不自然,雖然這樣的結果符合機率告訴我們的只要母體夠大在公平的條件下大家機會是相等的,不過軟體產生的亂數本來就是依據演算公式不斷疊代產生,因此對於這樣的結果好像也就不需要太意外了!

PS. 環境說明

  • 編譯器:Visual Studio Express 2012 for Windows Desktop
  • 執行環境:Windows 7 SP1

2013/04/02 補充
  同樣程式碼放在Linux下跑,得出來的亂數值有比較符合原先預期的結果,先看執行結果:
第一次執行
1
2
3
4
5
0 => 536849545
1 => 536888948
2 => 536882094
3 => 536863060
Total: 2147483647
第二次執行
1
2
3
4
5
0 => 536877294
1 => 536896031
2 => 536864732
3 => 536845590
Total: 2147483647
不曉得linux下的library在實作此亂數函數時是否也有把一些硬體外在環境因素也加入演算,像是/dev/random/dev/urandom有把硬體訊號元的變因加入亂數產生演算因子,所以才會得到比較貼近實際的結果?

2012/11/11

【上海】人民公園裡的婚姻角、相親角

在上海人民公園的北面入口處(地鐵九號出口)早上開始會聚集許多人潮來這找尋兒孫的另一伴,沒有寫錯!是替自家兒女或小孫子找尋成家的對象,但我想應該也是會有年輕人自己來這物色對象才是。

這裡的景況應該就像台灣的相親吧!?只是這裡的待選名單都用A4紙張陳列自己的基本資料以及配對條件,等待有緣人來相認...。候選名單都會依據資料特性做分類,在國外工作的一區、碩士學歷的一區、大學學歷的一區、離過婚的一區...。

公園裡還有許多「仲介人員」幫忙做資料登錄與配對篩選,登記配對價錢五十到一百五不等,應該自身條件(高矮胖瘦、有房無房、有車無車...等)會影響費用吧?

這裡的婚介人員一只皮箱即可開業,讓我想到早年的台灣商人也是一只皮箱就到世界各國去招攬生意...XD。

在旁邊一處「散裝」的候選名單似乎是家長拿著自己兒孫的資料在物色媳婦女婿?

2012/11/6

【治具】Audio Loopback Jack

測試Audio Jack一般我們會使用所謂的Audio Loopback線材做迴錄工具,其實就只是把麥克風源跟聲音源的左右聲道給短路在一起而已。但最近有個案子用這樣的治具卻沒辦法回錄到聲音,後來得知在麥克風源與聲音源之間必須加個1uF(5V以上)的電容才可以,接線示意圖如下:
實際接線拍照:

補充雙聲道+麥克風Audio Jack 的結構圖,從最下方開始往上依序為左聲道源、右聲道源、接地與麥克風源:

2012/11/5

【Linux】Bochs模擬器模擬器

Bochs是一套用來模擬IA32架構的模擬器,可以模擬一台完整的PC:CPU, Memory, Disk...等,更棒的是在Debug模式中可以單步執行並隨時觀察CPU暫存器狀態或是記憶體資訊,對於學習PC底層有滿大的幫助,以下記錄下載Source包裝編譯安裝與執行的步驟。
  1. Bochs官網下載Source Code與Disk Image
    目前最新Source Code版本是bochs-20121103.tar.gz
    Disk Image這裡用FreeDos作為範例
  2. 完成下載後先對Source Code解壓縮
    tar zxvf bochs-20121103.tar.gz
  3. 作編譯前的設定:這邊開啟Debug與反組譯功能
    ./configure --enable-debugger --enable-disasm
  4. 編譯與安裝
    make
    sudo make install
  5. 以上步驟完成安裝程序, 接下來把下載好的FreeDos映像檔解壓縮
    tar zxvf freedos-img.tar.gz
  6. 切到解壓縮的目錄裡會看到會看到a.img, b.img, bochsrc, 與c.img這幾個檔案, 用gedit編輯器編輯bochsrc設定檔如下[註]
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    megs: 32
    romimage: file=$BXSHARE/BIOS-bochs-latest
    vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
    vga: extension=vbe
    floppya: 1_44=a.img, status=inserted
    ata0-master: type=disk, path=c.img, cylinders=306, heads=4, spt=17
    boot: floppy
    log: bochsout.txt
    mouse: enabled=0
    cpu: ips=15000000
    vga_update_interval: 150000
    
  7. 接著執行bochs即可, 第一個選擇畫面直接選擇6. Begin simulation即可運行模擬器
  8. 但因為編譯設定時有選擇debug模式, 所以會先trap在一開始, 畫面如下:只要輸入c並按下enter模擬器就會繼續執行
  9. 最後成功進入Dos的畫面截圖如下:
[註] bochs執行時可以用-f參數指定要帶起的模擬器參數設定檔, 若沒指定的話則會在當前目錄下依序找尋以下檔案作為設定檔:
  1. .bochsrc
  2. bochsrc
  3. bochsrc.txt
  4. bochsrc.bxrc (Windows Only)