顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章
顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章

2018年11月22日 星期四

HackRF 測試 PiFmRds 讓 Raspberry Pi 變身成為廣播電台

    在台灣未經NCC許可發射無線電波是非法行為 !!

警告和免責聲明

     PiFmRds一個的英文實驗程序,僅用於實驗。它決不要的英文個人成為媒體中心或操作無線電台的工具,甚至不能將音頻廣播到自己的立體聲系統。
     在大多數國家,沒有國家頒發的特定於傳輸方式(頻率,功率,帶寬等)的許可證,無線電發送波的英文非法的。
      因此,總是從樹莓派的屏蔽傳輸線直接連接到無線電接收器,從而不發射無線電波。切勿使用天線。
      即使您是有執照的業餘無線電運營商,使用PiFmRds在火腿頻率上傳輸無線電波而樹莓派與天線之間沒有任何濾波也很可能是非法的,因為方波載波的諧波非常豐富,因此可能帶寬要求很高沒見過。
     對於任何濫用您自己的Raspberry Pi的行為,我都不承擔任何責任。任何實驗都由您自己負責。

 PiFmRds  是開源的程式,程式與使用方法在這裡都有,這裡只做一點實際安裝過程的紀錄。

    https://github.com/ChristopheJacquet/PiFmRds

PI-FM-RDS 需要 sndfile 程式庫。

sudo apt-get install libsndfile1-dev

開始安裝PiFmRds

git clone https://github.com/ChristopheJacquet/PiFmRds.git

cd PiFmRds/src

make clean

make

PC上打開 SDR_Radio 我的所在地107.7Mhz 發現有個電台。


Raspberry Pi 執行,預設PiFmRds 發射頻率是107.9Mhz

sudo ./pi_fm_rds

PiFmRds 執行後可在  SDR_Radio 上看到107.9Mhz有RF訊號。


 為了不干擾電台將發射訊號移到 107.3 Mhz

sudo ./pi_fm_rds -freq 107.3 -audio sound.wav

 SDR_Radio 上看到107.3Mhz有RF載波訊號,PC上可以聽到聲音。


PiFmRds語法:

pi_fm_rds [-freq freq] [-audio file] [-ppm ppm_error] [-pi pi_code] [-ps ps_text] [-rt rt_text]

所有參數都是可選的:

-freq指定載波頻率(以MHz為單位)。例如:-freq 107.9。

-audio指定要作為音頻播放的音頻檔案。取樣率無關緊要:PI_FM_RDS會重新編輯取樣並對其進行過濾。如果提供立體聲檔案,PI-FM-RDS將產生FM立體聲信號。示例:-audio sound.wav。支持的格式取決於libsndfile。這包括WAV和Ogg / Vorbis(以及其他),但不包括MP3。

-pi指定RDS廣播的PI代碼.4個十六進制數字。例如:-pi FFFF。

-ps指定RDS廣播的電台名稱(節目服務名稱,PS)。限制:8個字符。例如:-ps RASP-PI。

-rt指定要傳輸的無線電文本(RT)。限制:64個字符。例如:-rt 'Hello, world!'。

-ctl 指定一個命名管道(FIFO),用作控制通道,在執行時更改PS和RT。

-ppm 以百萬分(ppm)表示您的Raspberry Pi振盪器誤差。

 預設情況下,PS在Pi-FmRds序列號之間來回顯示,從...開始00000000。PS每秒變化一次。


2016年6月25日 星期六

raspberry pi3 Raspbian (九) Jessie 中文顯示


     Raspbian Jessie 是移植 Debian 8 (Jessie) 改進了軟體安裝的便利性但是對於非使用羅馬拼音字體的顯示卻出現了很怪的問題選中文字體卻沒中文雖然官方網站都說沒問題可是就我知道不只中文有問題幾乎整個亞洲的字形顯示都有問題還,還好有修正的解決方案

 在SSH視窗輸入

$ sudo raspi-config

 選擇語言選項



 選擇本地化


在字碼選項一直往下拉就可看到 zh xx  把zh都用空白鍵圈選 用Tab 鍵移到OK 按 " Enter"


會顯示目前可辨識的非英語系的字碼圈選 zh_TW.UTF-8 為系統預設字碼


      選好後Raspberry 會自動的下載字形與字碼 系統不會提醒但需重開Raspberry 才會套用新設定但是重開機後會出現更怪的現象所有中文字都變框框



要再安裝修補程式,

 $ sudo apt-get update
 $ sudo apt-get install task-chinese-t-desktop

安裝好後一樣須重開機 所有的顯示就變正常



2016年6月22日 星期三

Raspberry Pi 3 ( 八 ) 骰子 -- 使用 sense_HAT


   本次是小幅修改以下網站作品加上中文註解,學習初期就是先動手抄,Make 最重要的是動手做再瞭解其中原理。
http://www.suppertime.co.uk/blogmywiki/2015/12/raspberrypi-dice-project/

  開啟文字編輯器輸入以下程式碼。

#-*-coding:cp950-*-

#這一行是讓 Python 能用中文註解

from sense_hat import SenseHat  # 載入SenseHat模組
import time         # 載入時間模組
import random       # 載入亂數模組

sense = SenseHat()  # 顯示器 = SenseHat

sense.clear()       # 清除顯示器

sense.show_message("Shake to roll!")  # 顯示字串 Shake to roll!

b = [0, 0, 0]      # b= 不亮
g = [0, 255, 0]    # g= 綠色
r = [255, 0, 0]    # r= 紅色

one = [            # 1 點的圖案
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
]

two = [           # 2 點的圖案
b,b,b,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,b,b,b,
]

three = [          # 3 點的圖案
g,g,b,b,b,b,b,b,
g,g,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,g,g,
b,b,b,b,b,b,g,g,
]

four = [          # 4 點的圖案
b,b,b,b,b,b,b,b,
b,r,r,b,b,r,r,b,
b,r,r,b,b,r,r,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,r,r,b,b,r,r,b,
b,r,r,b,b,r,r,b,
b,b,b,b,b,b,b,b,
]

five = [          # 5 點的圖案
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]

six = [           # 6 點的圖案
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]

def roll_dice():              
    r = random.randint(1,6)     # 隨機取得1~6的變數
    if r == 1:                  # 如果變數是1
        sense.set_pixels(one)   # 顯示 1 點的圖案
    elif r == 2:
        sense.set_pixels(two)
    elif r == 3:
        sense.set_pixels(three)
    elif r == 4:
        sense.set_pixels(four)
    elif r == 5:
        sense.set_pixels(five)
    elif r == 6:
        sense.set_pixels(six)

while True:
    x, y, z = sense.get_accelerometer_raw().values()  # 取得加數計的值

    x = abs(x)
    y = abs(y)
    z = abs(z)

    if x > 1.4 or y > 1.4 or z > 1.4:      # 如果任何一軸的值超過1.4
        roll_dice()                       # 執行  roll_dice()
        time.sleep(1)       # 延遲 1 秒  


將檔案存成 dice.py 。開啟 WinSCP 輸入登入資訊。


 將 dice.py 拖曳到 Raspbreey 的 Sense_hat目錄。


   用 SSH 登入 Raspberry 切換到 sense_hat 目錄,輸入 python dice.py。


每次搖動 Raspberry 都會產生新點數 。 



參考資料 :

   http://www.suppertime.co.uk/blogmywiki/2015/12/raspberrypi-dice-project/
   https://www.raspberrypi.org/blog/astro-pi-tech-specs/

Raspberry Pi 3 (七) 迷宮 --使用 sense_HAT

   這一篇是抄襲自這裡,英文好的可自行看一下原理網站上說明很詳細,這裡一樣主張先做再討論原理。
https://www.raspberrypi.org/learning/sense-hat-marble-maze/worksheet/

  開啟文字編輯器輸入以下程式碼。

#-*-coding:cp950-*-

#這一行是讓 Python 能用中文註解

from sense_hat import SenseHat  # 載入SenseHat模組
from time import sleep

sense = SenseHat()   # 顯示器 = SenseHat
sense.clear()        # 清除顯示器

r = (255,0,0)       # b= 不亮
g = (0,255,0)       # g= 綠色
b = (0,0,0)         # r= 紅色
w = (255,255,255)   # w= 白色

x = 1             # x 預設 =1
y = 1             # y 預設 =1

maze = [              # 迷宮圖案
[r,r,r,r,r,r,r,r],
[r,b,b,b,b,b,b,r],
[r,r,r,b,r,r,r,r],
[r,b,r,b,b,b,b,r],
[r,b,b,b,b,r,b,r],
[r,b,r,r,r,r,b,r],
[r,b,b,r,g,b,b,r],
[r,r,r,r,r,r,r,r]
]

def move_marble(pitch,roll,x,y):      #確認傾斜方向
    new_x = x
    new_y = y
    if 1 < pitch < 179 and x != 0:  
        new_x -= 1
    elif 359 > pitch > 181 and x != 7 :
        new_x += 1
    if 1 < roll < 179 and y != 7:
        new_y += 1
    elif 359 > roll > 181 and y != 0 :
        new_y -= 1
    x,y = check_wall(x,y,new_x,new_y)
    return x,y

def check_wall(x,y,new_x,new_y): #偵側牆面
    if maze[new_y][new_x] != r:
        return new_x, new_y
    elif maze[new_y][x] != r:
        return x, new_y
    elif maze[y][new_x] != r:
        return new_x, y
    return x,y

game_over = False #

def check_win(x,y): # 確認是否過關
    global game_over
    if maze[y][x] == g:  #如果 x,y 重疊綠色
        game_over = True
        sense.show_message('You Win')  #顯示字串 You Win

while not game_over: #沒有過關
    pitch = sense.get_orientation()['pitch']
    roll = sense.get_orientation()['roll']  
    x,y = move_marble(pitch,roll,x,y)    
    check_win(x,y)    
    maze[y][x] = w    
    sense.set_pixels(sum(maze,[]))
    sleep(0.05)
    maze[y][x] = b


完成後存成 maez.py,開啟WinSCP填入登入資訊。
.

登入後將 maze.py 拖曳進 sense_hat 資料夾。


登入SSH切換到 sense_hat目錄,執行 python maze.py。


就可開始玩電子迷宮了。

.


參考資料 :

https://www.raspberrypi.org/learning/sense-hat-marble-maze/worksheet/
https://www.raspberrypi.org/learning/sense-hat-data-logger/

Raspberry Pi 3 ( 六 ) VNC 連線


     VNC 是一種使用 RFB 協定的螢幕畫面分享及遠端操作軟體,由於 VNC 與作業系統無關,因此可跨平台使用,如果我們需要和 Pi 做有圖形介面的連線,使用 VNC 是最好的選擇。

   安裝VNC Server

    安裝VNC只能在終端機或SSH模式下進行,開啟SSH 登入 Raspberry。


安裝VNC 這過程要一段時間,跟網路速度有很大關係 。  $ 後為指令。

sudo apt-get install tightvncserver



執行 tightvncserver。

&  tightvncserver

    第一次執行 vncserver 時會問幾個問題,包括登入的密碼和可供其他人流覽的 read-only 密碼, read-only 密碼可以不設定。

 安裝Windows VNCViewer

在這裡下載,請選擇自己符合電腦的版本。

http://www.tightvnc.com/download.php


選擇自定安裝,Server 部分不用安裝,其他就下一步下一步就可。


執行 TightVNC Viewer 輸入Rispberry 的 IP,我們使用埠號是5901就 :1 就可。


這樣就可看到Raspberry 的畫面了。


 我習慣VNC 畫面是 Full HD 在開啟VNC時可以加這樣的參數。

$  vncserver :1 -geometry 1920x1080 -depth 24

  要在開機時就啟動 VNC 伺服器 須在 /etc/init.d/ 下建立一個控制的腳本 (script),例如取名為 vncboot。

$  sudo nano /etc/init.d/vncboot

 script 內容如下。

#! /bin/sh
# /etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
 start)
  echo "Starting VNC Server"
  #Insert your favoured settings for a VNC session
  su - $USER -c "/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24"
  ;;

 stop)
  echo "Stopping VNC Server"
  /usr/bin/vncserver -kill :1
  ;;

 *)
  echo "Usage: /etc/init.d/vncboot {start|stop}"
  exit 1
  ;;
esac

exit 0

須修改檔案權限。

$ sudo chmod 755 /etc/init.d/vncboot

將腳本加入預設的啟動程序。

$ sudo update-rc.d -f lightdm remove
$ sudo update-rc.d vncboot defaults

重開 Raspberry 測試一次。

$ sudo reboot

等Raspberry 開機完成後 就可用 VNC 登入, VNC畫面變大了。

參考資料 :

     https://www.raspberrypi.org/documentation/remote-access/vnc/

2016年6月20日 星期一

Raspberry Pi 3 ( 五 ) 文字編輯器 nano


       Raspberry Pi 大部分時間都是用SSH登入,雖然編輯文件時可在PC先編好在傳到Raspberry Pi,但是要改Raspberry Pi 設定檔或編及隱藏檔等,都必須在Linux文字模式下作業,還好Raspberry Pi 提供了比 vi 好用一點的純文字編輯器 nano。


$ nano         //沒加檔名會開一個未命名新檔。



$ nano  ~/.profile   // 會開啟 .profile 設定檔,如果檔案不存在會開一個新檔。


   開啟 nano 在文件底下會有指令提示 , ^G 是 "Ctrl"+G 鍵。


按  "Ctrl"+G 鍵 會顯示 說明。


"Ctrl"+G 鍵 = "F1"  鍵     // 顯示 說明。

"Ctrl"+X 鍵 = "F2"  鍵     //關閉檔案 / 離開 nano 。

"Ctrl"+O 鍵 = "F3"  鍵     //將檔案寫入磁碟。

"Ctrl"+J  鍵 = "F4"   鍵     //對齊段落。

"Ctrl"+R 鍵 = "F5"   鍵     // 切換編輯文件。

"Ctrl"+W 鍵 = "F6"   鍵     // 關鍵字搜尋。

"Ctrl"+Y  鍵 = "F7"   鍵     // 上一頁。

"Ctrl"+V  鍵 = "F8"   鍵     // 下一頁。

"Ctrl"+K  鍵 = "F9"   鍵     // 剪下一整行。

"Ctrl"+6  鍵        // 按"Ctrl"+6 後移動游標會反白,移到要複製的後端再按一次"Ctrl"+6 會複製反白部分 。

"Ctrl"+U  鍵 = "F10"   鍵     // 貼上。

"Ctrl"+C  鍵 = "F11"   鍵     //顯是游標位置。

"Ctrl"+T  鍵 = "F12"   鍵     // 拼字檢查。

  記住這些就足以應付一般所需。

Raspberry Pi 3 ( 四 ) 基本Linux指令



        雖然有千百的不願意 Linux的幾個基本指令一定要會Linux 系統不像 Windows 就算在本機操做也都要用到終端機部分使用文字指令是逃避不了的,這裡只列出機個比較常用的指令,也不會列出每個指令的詳細參數要深入研究者請參閱Google大神

$ 為系統提示符號!!

登入與登出

login

        在SSH登入時會自動執行,只要輸入帳號密碼就好

exit 

       離開 Linux 系統的指令,相當於 logout。

$ exit

shutdown

      Linux 的關機指令,這個指令只有 root 才有權力,pi 帳號登入的要加 sudo 

$   sudo shutdown  -h  now 

halt 

       halt 一樣是關機指令,跟shutdown 在Raspberry 好像感覺不大在大型系統才有差別

$  sudo halt -p

Raspberry Pi    關機後綠燈會恆亮!!!

 reboot

    系統重新開機

 $ reboot 

檔案與目錄

cd

   變換工作路徑的指令。登入 Linux 系統後會在預設的 /home/pi 底下,

$ cd  sense_hat  //工作目錄會切換到 /sense_hat 目錄
$ cd  /                //到系統跟目錄

pwd

       顯示目前工作目錄

$pwd  
 
/home/pi      //系統回應

ls

   用來顯示檔案名稱與內容的指令

$ ls -l     //詳細列出檔案系統結構 
$ ls -a     //顯示隱藏檔 (以"."開頭的檔案) 
$ ls -al    //同時顯示隱藏檔與詳細資料 

cat 

     列出檔案內容的指令。

$ cat abc.txt      //會顯示abc.txt內容。

mkdir

   建立新的目錄。

$ mkdir 123    //會建立一個 123 的目錄。

rmdir

    移除目錄的指令。若是欲移除的目錄裡頭有檔案或其他目錄存在就無法移除。

$ rmdir 123       //移除123這個目錄。

rm

    移除的指令。如果要連目錄下的東西都一起移除的話,就要使用 -rf 這個參數。

$ rm -rf 123     //會連同 123 目錄底下的檔案都刪除。

mv 

     移動檔案或目錄的指令。

$ mv 123 /home     //會將 123 這個檔案般移到 /home 目錄。

cp

   就是 copy 的意思。

$ cp  abc   /home     // 會複製 abc 檔案到 /home 目錄底下。

ln

  連結檔案或目錄的指令,通常都會加 -s 這個參數。

$ ls -s  /home/pi/music/123  /home/pi/ test  //將 /home/pi/music/123 這個目錄連接到 /home/pi/ test/ 目錄底下。

touch

     修改文件時間戳記,或創件時間戳記。

$ touch -t 201606182002 abc   //把abc這檔按日期修改成 2016/06/17 8:02 PM

head

   顯示文件前面幾行,如果不加參數只會顯示顯示檔案的最前面10行,加參數-n 會顯示指定的行數。

$ head -n 100 abc.txt   //會顯示abc.txt 檔案內容的前面的100行。

tail

      顯示文件後面幾行,如果不加參數只會顯示顯示檔案的最後面10行,加參數-n 會顯示指定的行數。

$ tail -n 100 abc.txt   //會顯示abc.txt 檔案內容的後面的100行。

chmod

   修改檔案權限,Linux 的檔案權限較複雜,身份分為三種owner(u)/group(g)/others(o)三種身份各有自己的read(r)/write(w)/execute(x)權限,檔案的權限就可表示為 -rwxr-wxr-- (每三個一組owner(u)有 read(r)/write(w)/execute(x)權限,group(g)有 read(r)/execute(x)權限,others(o)有 read(r)權限)。權限也可以用數字表示 r=4 w=2 x=1 ,權限 rwx =7   rx=5 。

$ chmod 777 abc    // 把abc 這個檔案設定成每個人都能 讀 寫 執行。

chown

  改變檔案擁有者。

$ chown  story abc.txt   //把abc.txt 這個檔案擁有者改成 story。

sudo 

    這就是尚方寶劍,Linux 系統中有最高權限者是root,安全考量不太可能以root身分登入,有些指令卻都要有root權限才能執行

$ sudo  update       //以 root 身份執行 update 這個指令。

dd

   將磁碟轉成映像檔,或復原映像檔為磁碟。做出來的映像檔會跟磁碟一樣大,dd指令不會讀取檔案格式不會確認磁碟內容。

$ dd if=/dev/sda of=backup.img  // 會將 dev/sda 做成映像檔 backup.img

DF

 列出檔案系統的整體磁碟使用量,加參數-h會以容量格式顯示。

$   df -h    // 會顯示檔案系統的整體磁碟使用量。

UNZIP

  解壓縮ZIP檔案。

 $ unzip test.zip    // 將test.zip 解壓縮。

TAR

   將目錄打包成一個檔案,或將打包過的檔案解打包。

$ tar -cvzf test.tar.gz test/      //打包並壓縮 test 目錄 。
$ tar -xvzf test.tar.gz            // 解壓縮 test.tar.gz 。

PIPES

   把一個命令輸出當成另一個命令的輸入。

$   ls | wc       //ls | wc 就會將 ls 指令的結果當作 wc 指令的輸入。

TREE

   列出樹狀目錄結構。

$ tree         //會列出當前檔案目錄結構。

&

   把指令丟到背景執行。

$  tar -zpcf /tmp/etc.tar.gz /etc &     //將壓縮的工作丟到背景執行。

WGET

  下載檔案。

$ wget http://www.raspberrypi.org/documentation/linux/usage/commands.md   //下載commands.md  檔案

CURL

    取得網頁內容。

$ curl https://www.raspberrypi.org/                              // 取得網頁內容,螢幕輸出 。            
$ curl -o raspberry.html https://www.raspberrypi.org/        //取得網頁內容,檔案輸出

MAN

    查詢指令的功能與說明。

$  man ls     //列出 ls 指令的功能語說明。

GREP

   搜尋文字檔內的字串,grep功能很強大參數也很多。

$ grep -n  'the'  test.txt  // 搜尋 test.txt 內含 "the" 的字串,會顯示含 "the"的整行。

PING

    用來察看對方網路是否有動作的指令, windows 也有這個指令!

$ ping  192.168.1.0   //查看 192.168.1.0 這裝置是否在網路上。
$ ping  https://www.raspberrypi.org/       //查看https://www.raspberrypi.org/  這網站是否在網路上。

NMAP

    網路檢測/探測工具,在指定的網路區段下掃瞄主機群的網路連線,探測指定主機已開啟的通訊埠。

$ nmap -sP 192.168.1.0/24    //使用ping掃瞄子網路內的所有IP,並列出有回應的IP,不作進一步測試。

HOSTNAME

用來觀看主機名稱。

& hostname

IFCONFIG

       用來查詢目前系統的網路卡的狀況,可以查詢 IP、子遮罩網路及網路卡的硬體資訊等等。

$ ifconfig

參考資料 :  

https://www.raspberrypi.org/documentation/linux/usage/commands.md



2016年6月7日 星期二

Raspberry Pi 3 (三) 安裝OpenCV


      OpenCV是一個跨平台的電腦視覺函式庫。OpenCV是由英特爾公司發起並參與開發,以BSD授權條款授權發行,可以在商業和研究領域中免費使用。

     網路上 Raspberry Pi 3 安裝 OpenCV 的 文章很多,我覺得這一篇最完整,本次安裝過程也是參照這網站改成中文,安裝過程都在SSH底下完,成請先用SSH登入Raspberry Pi 3。

http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/


   第一步就是升級系統

$ sudo apt-get update
$ sudo apt-get upgrade

   安裝cmake

$ sudo apt-get install build-essential cmake pkg-config


    安裝圖片檔的函式庫,包括JPEG,PNG,TIFF等...

$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

    安裝串流影像函式庫

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

    安裝GTK函式庫

$ sudo apt-get install libgtk2.0-dev

   安裝OpenCV優化的開發工具

$ sudo apt-get install libatlas-base-dev gfortran

   安裝 Python 3標頭檔

$ sudo apt-get install  python3-dev

   下載OpenCV的原始檔,這次安裝的是 3.1.0

$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip

下載 opencv_contrib 函式庫

$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
 
    安裝 Python 的套件管理程式 pip:

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

    安裝 Python 虛擬環境 virtualenv   和 virtualenvwrapper

$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip

      virtualenv   和 virtualenvwrapper   安裝好了,需要更新 ~/.profile 檔案,我是用文字編輯器 nano

nano ~/.profile

       在 ~/.profile 檔案底下多這三行

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh


     更新 ~/.profile

$ source ~/.profile

   創建一個Python的虛擬環境

$ mkvirtualenv cv -p python3

      檢查“CV”虛擬環境

$ source ~/.profile
$ workon cv



      
     安裝  numpy  Python 陣列運算的數學函式函式庫。

$ pip install numpy


     安裝過程要在CV虛擬環境中。設置使用CMake的的建構環境。

$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D BUILD_EXAMPLES=ON ..



   
  編譯 Opencv   make -j4  是使用4核心。

$ make -j4

      這過程約70~200分鐘,跟SD卡有很大關係,我用UHS-I U3 32G 號稱高達90MB/秒寫入速度的只要70分鐘左右,用SDHC Class 4 32GB 要3小時以上!!


     安裝OpenCV 3.1.0。

$ sudo make install
$ sudo ldconfig

 安裝後 OpenCV + Python 應該安裝在 /usr/local/lib/python3.4/site-packages/ 。可用 ls 指令查看。

ls -l /usr/local/lib/python3.4/site-packages/

回應

total 1852
-rw-r--r-- 1 root staff 1895932 Mar 20 21:51 cv2.cpython-34m.so

     檔名應該是 cv2.so 但是變成cv2.cpython-34m.so 需要手動變更檔案名稱

$ cd /usr/local/lib/python3.4/site-packages/
$ sudo mv cv2.cpython-34m.so cv2.so

      CV2更名後要聯結Python 3.4的虛擬環境:

$ cd ~/.virtualenvs/cv/lib/python3.4/site-packages/
$ ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so

   開啟一個新的 SSH 視窗確認OpenCV 安裝正常。

$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'3.1.0'


       確認 OpenCV 安裝好後就可刪除 OpenCV - 3.1.0   和 opencv_contrib - 3.1.0 的安裝過程使用的目錄。

$  rm -rf opencv-3.1.0 opencv_contrib-3.1.0


http://opencv.org/
http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/

Raspberry Pi 3 (二) Sense HAT 安裝 Jessie

 
Sense HAT 是樹莓派基金會推出的感測器模組又稱為 Astro Pi, Astro Pi有8×8 RGB LED矩陣顯示器、5向操縱桿,感測器有陀螺儀、加速度計、磁場感測、溫度感測器、氣壓感測器、濕度感測器。Astro Pi(天文派)還真的上過外太空,在國際太空站上運行。

  進一步太空資料在https://astro-pi.org/。
   
     樹莓派基金會推出的版子都是高CP值Astro Pi 也不例外。有這麼強大的功能只賣台幣1143(RS Components)。以下是Astro Pi 的規格。

陀螺儀 : +/-245/500/2000dps

加速度 : +/-2/4/8/16 g

磁力計:+/-4/8/12/16高斯

氣壓計:260 - 1260 hPa +/- 0.1 hPa

溫度傳感器 :(在0-65度時誤差+/- 2度)

濕度感測器 :(20-80%RH範圍,誤差值 ±4.5%)

8x8 RGB LED 全彩矩陣顯示器

小型5向操縱桿


Sense HAT 的詳細資料。
https://www.raspberrypi.org/blog/buy-the-sense-hat-as-seen-in-space/


Sense HAT 正面

Sense HAT 背面,排針是可拆下換成長的。


Sense HAT 插在Raspberry Pi 通電時LED會亮10秒左右。


安裝Sense HAT 軟體

  開啟SSH 登入 Raspberry Pi 。


 先確保系統軟體是最新的!!
 在SSH 視窗輸入  sudo apt-get update  "Enter"



 執行完後再輸入 sudo apt-get upgrade  "Enter"。


 安裝Sense HAT 的驅動程式。
在SSH 視窗輸入  sudo apt-get install sense-hat  "Enter"。


 執行完後再輸入 sudo pip-3.2 install pillow  "Enter"。


重新開機 在SSH 視窗輸入  reboot  "Enter"。


會詢問用哪個帳號下 reboot 指令 輸入 1 "Enter"。


會詢問密碼輸入 raspberry  "Enter" 就會重新開機。


putty SSH 的視窗也回不來了,要再從新開啟登入一次。
有一個秘密就是甚麼都沒裝!!因為新版的都預先裝好了


這裡有些Sense HAT 的範例。

https://github.com/RPi-Distro/python-sense-hat

把這整個目錄下載解壓縮。


再把examples 檔案夾內的檔案複製到 sense_hat檔案夾。


開啟WinSCP登入Raspberry Pi。


 把sense_hat檔案夾拖曳到Raspberry Pi 的目錄。



在 SSH 視窗輸入 sense_hat "Enter"。


在 SSH 視窗輸入python3 space_invader.py  "Enter", Sense HAT 就會出現火箭。


參考資料
               https://www.raspberrypi.org/blog/buy-the-sense-hat-as-seen-in-space/
               https://astro-pi.org/