2015年8月29日 星期六

[入門] 建置iPython-notebook開發環境

最近又添購了一些學習套件, 打算一邊試硬體開發一邊學python

在網路上看到有一款叫iPython的編譯器, 類似寫swift所使用的playground一樣

是互動式的編譯器, 決定來安裝看看

經過了幾次嘗試失敗, 發現在安裝前一定要確保:

1. pi的檔案系統有擴充 (可參考這篇)

2. 有update Raspbian的repo及安裝系統更新
也就是 apt-get update及apt-get upgrade這兩個指令

接下來就可以開始安裝及配置iPython了

1. 透過SSH登入pi

2. 安裝iPython套件, 輸入指令:
    $ sudo apt-get –y install ipython-notebook

3. 安裝python相關的套件, 輸入指令:
    $ sudo apt-get –y install python-matplotlib python-scipy python-pandas python-sympy python-nose
(這個步驟要安裝的東西比較多, 需要等比較久)

安裝好後, 我們要開始設定iPython Notebook讓它可以接受遠端操作

1. 先設定Notebook伺服器的設定檔, 輸入指令:
   $ ipython profile create nbserver
image

2. 為了確保Notebook server的安全性, 先利用python產生一組密碼的hash值. 首先進入python, 然後輸入以下指令:
>>> from IPython.lib import passwd
>>> passwd(“mypassword”)
image

產生出來的hash值, 先copy起來備用, 然後按"Ctrl +D”跳出python


3. 開啟Notebook伺服器的設定檔, 也就是:
/home/pi/.config/ipython/profile_nbserver/ipython_notebook_config.py 這個檔案, 並在第四行處加入以下設定:
image


其中,  password的部份就將剛剛copy下來的hash值整串貼上, 如:
    c.NoteboookApp.password = u'sha1:b531fcf890d1:578696b2bd0b89769918c30eb58adaa2ab91fa28'
port的部份則輸入你想用來連入notebook server的port


4. 最後, 就可以啟動Notebook伺服器了! 輸入指令:
    $ipython notebook --profile=nbserver


5. 立刻用browser開開看吧! 輸入網址: http://[pi的IP]:9999 即可
image

2015年8月28日 星期五

[入門] 遠端連回家中的pi 並更改SSH port

為了能夠出門在外時也不忘玩一下家中的pi,

這次要設定中華電信的數據機, 讓它轉送封包給pi.

並且改掉pi預設的SSH port(22), 增加一點點安全性

首先, 先更改pi的SSH port:

1. 透過SSH (port 22)登入pi
image

2. 開啟SSH server的組態檔: sudo vi /etc/ssh/sshd-config
(我習慣使用vim來編輯檔案, 如果需要瞭解怎麼安裝vim, 請參考這裡)

3.  將第五行 port 22 修改為你想要的port後儲存
image

4. 重啟SSH server服務: sudo service ssh restart
image

5. 重新用新的port登入SSH即可

接下來要設定中華電信的數據機

1. 先用super user登入數據機吧 (super user的帳密, 網路上都可以找到喔)

2. 先看一下pi的MAC地址, 在Device Info > DHCP裡面
(我這台是Z牌的P880, 有的人家裡是D牌的, 目前手邊沒機器, 先不討論)
image

3. 將pi的MAC地址複製起來之後, 到Advanced Setup > DHCP server, 設定靜態分配的IP給pi, 這樣才能確保pi可以每次都分到相同的LAN IP, port轉發才能正常運作
image

4. 貼上pi的MAC及你想分給pi的LAN IP就好
image

5. 接下來到Advanced Setup > NAT > Virtual Server設定轉port
image

6. 按Add 新增SSH的轉port規則, 這個地方比較複雜一點
image
    Use Interface: 要選pppoe的, 也就是你用來撥接上網的介面
    Service Name: 可以直接選SSH,
    Server IP Address: 要輸入剛剛靜態分配給pi的LAN IP
    External Port: 輸入當你從外面連回來時, 要使用的SSH port
    Internal Port: 輸入一開始設定好的pi的SSH Server Port

7. 設定好之後, 可以試著用數據機的WAN IP連到pi了
數據機的WAN IP可以看 Device Info > WAN (被我用海苔遮起來的地方就是WAN IP)
image

記得如果測試時是連到家中wifi的話, 絕大部份是無法透過數據機的WAN IP連上pi的
這牽涉到一個叫NAT Hairpin 或NAT Loopback的功能.
這邊先不多說, 以後若有時間再另外撰文解釋
因此最保險的就是透過手機的行動網路來連線看看, 就一定沒問題呦!

[入門] 在pi上安裝文件編輯器- vim

我個人習慣使用vim做文字編輯, 但是Raspbian本身搭載的是比較陽春的vi,

所以Raspbian安裝好後當然要立馬安裝vim!

準備步驟:

如果Raspbian安裝好之後, 還沒有更新repo及系統的話.

建議先跑一下這兩個指令:

1. sudo apt-get update
(這是更新系統的repo)

2. sudo apt-get –y upgrade
(這個指令則是將系統現有的套件更新到最新)

安裝vim:

很簡單, 只要執行指令 "sudo apt-get –y install vim” 就可以了!

安裝好之後, 確認一下安裝的成果.

另外, 檢查一下是不是每次輸入vi就自動開啟vim,

1. 使用which 指令先確認一下vi及vim的位址
    $ which vi
    $ which vim

image

2. 看一下/usr/bin/vi這個檔案, 發現他其實只是一個連結
Snapshot 043

3. 而/etc/alternative/vi這個檔案, 又連結到了/usr/bin/vim.basic
image

4. 上面看到/usr/bin/vim是連結到/etc/alternative/vim, 那這個檔案又連結到哪呢?
image

5. 同樣都是/usr/bin/vim.basic, 這樣就確定以後只要輸入vi就可以了!

[入門] 擴充系統容量

官方所提供的Raspbian Image是2GB的,

也就是說, 寫入SD卡的系統, 預設容量也只有2GB

但是實際上記憶卡還有剩下很多儲存空間

因此Raspbian也內建了將系統容量擴充到和記憶卡容量相等的功能

步驟很簡單:

1. 透過SSH登入你的pi
image

2. 輸入指令 "sudo raspi-config”
image

3. pi會進入內建的設定模式, 執行第一個"Expand Filesystem” 即可
image

4. 完成了, 接下來輸入"sudo reboot” 將系統重開機就會生效了!
image

2015年8月26日 星期三

[Python] 幾個基本的寫法

# 單行註解, 該行開頭使用一個井號

""" 多行註解
註解的前後各使用三個雙引號"""

#變數不需指定類型, python可由變數值自行判斷

    #字串, 值需用雙引號包起來
    str = “This is a string”

    #數字
    num = 8 or num = 1.234

    #布林值
    bool = True  or bool = False
   

#運算子

    #加減乘除
    + – * /

    #次方
    **
    #如, 2的3次方
    2**3

    #餘數
    %

    #如, 3除2的餘數
    3%2

#字串的應用

    #字串中含特殊字元時, 使用"\"標示此字元為字串內容
    str = “That\’s an apple”
    # 單引號為特殊字元, 前方必需加上一個"\"

    #取字串的第N個字, 使用[value]. 由0起算
    fourth_letter = “PYTHON”[3]
    #print fourth_letter應印出"H"

    #取字串長度, 使用len()
    parrot = “Norwegian Blue”
    print len(parrot)
    #應印出"Norwegian Blue”的長度 – 14

    #將字串內容全部改為小寫, 使用lower()
    parrot = “Norwegian Blue”   
    print parrot.lower()
    #應印出: norwegian blue

    #將字串內容全部改為大寫, 使用upper()
    parrot = “norwegian blue”   
    print parrot.upper()
    #應印出: NORWEGIAN BLUE

    #將非字串的變數更改為字串, 使用str()
    pi = 3.14
    print str(pi)
    #應印出: 3.14

    ”””lower(), upper()的寫法是在變數後加".”
    len(), str()則是將變數放在括號中
    因為: lower(), upper()只能和資料類型為字串的變數一起使用; 而len()和str()則可以
    和其他資料類型一起使用""”

2015年8月7日 星期五

[入門] 備份Raspberry Pi

如果每次重灌系統都要重新安裝一次必要的軟體, 實在很麻煩

因此我們可以利用先前在安裝Raspbian當中提過的小程式 – Win32ImageWriter 製作系統備份

備份步驟如下:

1. 先把安裝在Pi當中的記憶卡取出, 接到電腦

2. 執行Win32ImageWriter, 並選取要儲存映像的目的資料夾及檔名

3. 確認磁碟機已經選取了記憶卡對應的代號

4. 按下"Read”, 等待執行完成即可

image

5. 在映像檔存放的位置, 建議可以用一個小記事檔紀錄製作備份的日期, 上一個備份版本以及距離上一次備份中間做過哪些更動等資訊

image

 

不過要注意的是, 如果你使用的記憶卡是8G, 就會備份出一個8G的映像檔.

16G的話就會產生16G的檔案, 因此這個方法算是比較佔硬碟空間的

2015年8月6日 星期四

[入門] 使用VNC連線到Pi

如同先前提過的, 因為沒有螢幕.

但是一定會有需要用到圖形介面的時候, 該怎麼辦呢?

我目前想到幾個辦法:

1. 使用X Window

2. 使用Teamviewer

3. 使用VNC

在網路上發現台灣樹莓派的官網有使用VNC連線的教學, 立馬來試試看

Pi端:

1. 透過SSH連線進入Pi

2. 輸入指令安裝VNC server

pi@absoluteylPi ~ $ sudo apt-get install tightvncserver

image

▲安裝過程中pi會詢問是否確認要安裝, 輸入"y”就對了!

image

▲接下來等待VNC server安裝完成就好囉!

3. 輸入指令執行VNC server

pi@absoluteylPi ~ $ vncserver

image

▲執行後Pi會提示你設定登入密碼

PC端: (這邊使用的Win7的電腦)

1. 下載Windows版本的VNC viewer (官網載點)

image

▲我選的是64-bit的免安裝版本

2. 執行後輸入Pi的IP: port, 按"Connect”即可

image

▲VNC預設使用的port是5901

image

▲沒有加密連線的錯誤訊息, 直接按"Continue”即可

image

▲輸入剛才設定的密碼, 按下"OK"

3. 可以開始使用Pi的圖形介面囉!

image

▲大大的樹莓標誌, 超可愛的啊~

[入門] 安裝Raspbian

在樹莓的英國官網有提供蠻多套OS, 其中主要有NOOBS和Raspbian, 適合入門者
NOOBS其實是一個OS Installer, 有分一般版和Lite版
記憶卡裝了NOOBS開機之後, 螢幕上會出現一個選單詢問你要安裝哪個OS
一般版的NOOBS已經有預載好Raspbian了, 所以可以直接安裝
或是你想安裝其他第三方的Linux, NOOBS也會幫你下載+安裝
Lite版的NOOBS功能是一樣的, 只是它沒有預載好Raspbian

因此, 想安裝Raspbian的人, 可以使用NOOBS一般版
想安裝其它Linux的人, 可以直接使用NOOBS Lite版

不過, 看到一個重點了嗎? 要使用NOOBS, 必須要有外接螢幕
身為一個初心小資宅, 我還沒存夠錢買螢幕, 哈哈哈哈

所以如果你要用NOOBS, 不需要參考本篇內容, 直接參考官網的教學就好
這邊我要試的是直接利用Windows7系統手動在記憶卡上安裝Raspbian

準備工作:
1. 首先必須先下載好三個檔案, 這些都可以在官網下載頁面裡面找到
a. 最新的Raspbian 官網載點
b. 格式化工具 SD Formatter 4.0 官網載點
c. 寫入Raspbian到記憶卡的Win32DiskImager 官網載點
2. 接下來當然是要把microSD卡插到電腦, 看是要用內建讀卡機, 或者是USB讀卡機都行. 卡片容量Raspberry官方建議是要8GB以上

格式化記憶卡:
1. 打開"我的電腦", 確認一下SD卡的磁碟機代號
image
▲圖中可以看到我的卡只有818MB, 實際上它是一張8GB的卡, 應該是測試NOOBS的時候被切了partition
2. 執行SD Formatter4.0, 理論上它會自己抓哪到SD卡
如果沒有抓到的話, 自己選好後, 按一下"Refresh”
image
3. 格式化選項的地方, 選取"Full(Erase)” 以及"Off”
image
4. 選好之後, 就按下"Format”吧!
image
▲確認訊息, 格式化過程當中不可以拔出SD卡, 按"OK"即可
image
▲格式化的進度
image
▲完成後, 就會看到空間已經釋放出來囉!
 
安裝Raspbian:
1. 將下載下來的Raspbian壓縮檔解壓縮, 會獲得Raspbian的映像檔(.img檔)
2. 執行Win32DiskImager
image
▲如果你使用的Windows帳戶不是系統管理員的話, 必須要右鍵點選"以系統管理員身份執行"
3. 選取剛剛解壓縮的映像檔以及SD卡對應的磁碟機代號
image
4. 按"Write”就會將映像檔寫入SD卡了, 等待完成即可!
image
▲按"OK"之前一定要再三確認目標磁碟是SD卡, 不然電腦是會掛的
5. 將剛才寫好Raspbian的記憶卡插入RaspberryPi, 插上電源開機就ok囉!
 
Raspberry Pi連線:
這時候, 有另一個問題產生了: 要連線必需要知道IP, 但我的樹莓還是沒有接螢幕, 怎麼知道IP呢?
最簡單的方法就是用Wireshark看DHCP包
1. 我們必須先確認Pi的MAC地址, 因此先把電腦和Pi對接
2. Wireshark使用"bootp”作為關鍵字, 搜尋DHCP封包後 會看到許多DHCP Discover
image.
▲這些DHCP Discover分別是電腦跟Pi 發出來的, 隨便挑一個點進去看
3. 如果是Pi發送的, 在Ethernet的欄位會看到”Raspberr_xx:xx:xx”以及完整的MAC
image
4. 記下Pi的MAC地址之後, 就可以把電腦跟Pi分別接回路由器, 同時Wireshark請繼續抓包
5. 稍等幾秒鐘, 將Wireshark關鍵字改為"eth.addr== (Pi的MAC地址) && bootp"
image
▲最後一個封包應該是DHCP Request, 點選它
6. 封包內容的地方往下拉, 會有Bootstrap Protocol (Request)的欄位
image
▲裡面會看到Option50:Requested IP Address, 這就是Pi的IP了
7. 執行PuTTY, 用剛剛找到的IP就可以透過SSH連入Pi了
image

2015年8月5日 星期三

[開箱] Raspberry pi2 Model B

Raspberry Pi 一直是我蠻有興趣的一個產品, 擴充性十足, 兩張小朋友有找的mini PC.

但是之前遲遲沒下手, 主要是因為我想不出來該用它做什麼

再加上先前做NAS, 每天上班都已經在接觸SoC的系統了, 就有點提不起勁

 

這幾天剛好有了一些idea, 再加上發現他們2015年初推出了pi 2.

使用新的chipset, 並且RAM也增加到了1GB

於是又手滑了~

 

廢話不多說, 開箱吧!

 

IMG_2013

▲超可愛的外包裝, 原本看網路上有分陸版跟英版. 還有點擔心

還好後來實際拿到的是英版

 

IMG_2017

▲打開外包裝之後是一張簡單的注意事項以及pi2本人~

 

IMG_2019

▲拆封囉! 小巧可愛的主機板, 怎麼會這麼迷人~

 

IMG_2020

▲和B+一樣, 有USB port x4. 若要同時連接鍵鼠及無線網卡也沒問題

 

IMG_2023

▲小樹莓一定要來張特寫的, 還有BRCM的BCM2836四核心CPU

 

來看看其它配件吧!

我買的套餐有附samsung旅充, 另外我還有加價150升級原廠殼

 

IMG_2015

▲這是所謂的原廠殼, 但是我有點不確定是否被坑了?

因為塑膠射出多出來的部分都沒有修掉, 可惜我照片忘記照了

 

IMG_2016

▲Samsung的旅充, 還有送了兩顆散熱片

 

IMG_2026 

▲散熱片就直接黏上吧

 

IMG_2021

▲原廠殼上也有小樹莓的圖案

 

IMG_2022

▲裝進去囉! 矇矓美~

準備要來開機測試囉!!