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

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