Tag Archives: python

【11/9開課】人工智能服務與Opendata大數據專題實作|​臺北市職能發展學院 X CAVEDU教育團隊

Acupass報名請點我

以下為本次物聯網運用與開發課程招生簡章 (詳細報名簡章請按我)

一、主辦單位:臺北市職能發展學院

二、培訓單位:翰尼斯企業有限公司

三、訓練班別與課程資訊:人工智能服務與Opendata大數據專題實作

班別名稱人數時數訓練起迄日期上課時間報名截止日錄取公告自行負擔費用
人工智能服務與Opendata大數據專題實作30人21小時106/11/9

106/11/30

週二、四

18:30-21:30

線上報名;106年11月8日中午12:00截止106/11/8 933元
製表日期:106.10.06

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

四、參訓資格與訓練費用負擔:

(一)年齡:年滿15歲以上民眾有意願參加進修訓練者(自行負擔個人訓練費用之20%)。

(二)性別:男女兼收

(三)開班條件:具特殊身分參訓者人數,須佔每班次實際開訓人數10%(含)以上,如特定對象不足額方開放一般民眾參訓。

 

五、報名方式與繳交文件:

(一)先完成線上報名,報名網址:https://www.accupass.com/event/1710031100534614309170

(二)經培訓單位通知後,請繳交下列文件:

  1. 身分證(正反面影本)
  2. 1吋相片2張
  3. 特定對象身分證明文件(無者免附)

資料不齊或欠缺者,恕不接受報名。

六、錄訓機制:

(一)甄試方式:採「甄選審查錄訓」方式。

甄選審查錄訓將以筆試跟面試兩階段進行。筆試主要針對基礎知識了解程度做評鑑,將其評鑑結果跟面試成績做加總,占甄選審查標準20%。

面試主要針對申請人參與意願、基礎知識了解程度、學經歷及證照進行分數計算作為評鑑標準,占甄選審查標準80%。

筆試以是非題跟選擇題為主,使其學員了解物聯網基礎知識。口試將針對參與意願(50%)、基礎知識了解(25%)、學經歷簡述(25%)為評鑑標準。

【甄試日期】106年11月8日

甄試成績達錄訓標準70分者為合格,依甄試總成績高低順序排列後,分列正取、備取,錄取名單於各班錄取公告日公佈於CAVEDU教育團隊首頁(http://www.cavedu.com/),並以E-mail與簡訊方式通知錄取學員,未錄取者不另通知。

106/11/9開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。

八、課程大綱   

課程名稱課程內容
教務說明

人工智能服務與opendata大數據概論

教務管理規定—

  1. 職訓計畫介紹
  2. 出缺勤管理辦法與退訓規定
  3. 學員應盡權利與義務
  4. 申訴管道
基本電子輸入輸出控制實習基本電子輸入輸出控制實習
程式語法基礎認識 Python 程式語言

變數、判斷式與程式流程

基礎互動專題製作

雲端服務運用認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

擴充裝置電路設計實作使用電路設計軟體設計與製作擴充電路板
Facebook API根據開發板資訊來發佈 Facebook 個人訊息
微軟認知服務上傳照片到微軟認知服務 Face API 並取得臉孔資訊(年齡、性別、情緒等)

九、注意事項:

1.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。

扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

2.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

10/17開始上課,10/16報名截止!物聯網運用與開發​【臺北市職能發展學院 X CAVEDU教育團隊】

$1133元,21小時物聯網精彩課程,整套LinkIt 7697設備帶回家,這次錯過我只能說太可惜啦…  10/17晚上開始上課,先把報名頁面點開吧!

Acupass報名請點我

以下為本次物聯網運用與開發課程招生簡章(詳細報名簡章請按我)

一、主辦單位:臺北市職能發展學院

二、培訓單位:翰尼斯企業有限公司

三、訓練班別與課程資訊:物聯網運用與開發

班別名稱人數時數訓練起迄日期上課時間報名截止日錄取公告自行負擔費用
物聯網運用與開發30人21小時106/10/17

106/11/7

週二、四

18:30-21:30

線上報名;106年10月16日中午12:00截止106/10/161,133元
製表日期:106.10.06

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

四、參訓資格與訓練費用負擔:

(一)年齡:年滿15歲以上民眾有意願參加進修訓練者(自行負擔個人訓練費用之20%)。

(二)性別:男女兼收

(三)開班條件:具特殊身分參訓者人數,須佔每班次實際開訓人數10%(含)以上,如特定對象不足額方開放一般民眾參訓。

 

五、報名方式與繳交文件:

(一)先完成線上報名,報名網址:https://www.accupass.com/event/1710031605591491104938

(二)經培訓單位通知後,請繳交下列文件:

  1. 身分證(正反面影本)
  2. 1吋相片2張
  3. 特定對象身分證明文件(無者免附)

資料不齊或欠缺者,恕不接受報名。

六、錄訓機制:

(一)甄試方式:採「甄選審查錄訓」方式。

甄選審查錄訓將以筆試跟面試兩階段進行。筆試主要針對基礎知識了解程度做評鑑,將其評鑑結果跟面試成績做加總,占甄選審查標準20%。

面試主要針對申請人參與意願、基礎知識了解程度、學經歷及證照進行分數計算作為評鑑標準,占甄選審查標準80%。

筆試以是非題跟選擇題為主,使其學員了解物聯網基礎知識。口試將針對參與意願(50%)、基礎知識了解(25%)、學經歷簡述(25%)為評鑑標準。

【甄試日期】106年10月16日

甄試成績達錄訓標準70分者為合格,依甄試總成績高低順序排列後,分列正取、備取,錄取名單於各班錄取公告日公佈於CAVEDU教育團隊首頁(http://www.cavedu.com/),並以E-mail與簡訊方式通知錄取學員,未錄取者不另通知。

106/10/17開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。

八、課程大綱   

課程名稱課程內容
教務說明

Linklt7697相見歡

教務管理規定說明

1.  職訓計畫介紹

2.  出缺勤管理辦法與退訓規定

3.  學員應盡權利與義務

4.  申訴管道

Linklt 7697 規格介紹、使用環境設定。

數位控制控制實習

基本電子輸入輸出控制實習基本電子輸入輸出控制實習
雲端服務運用認識  MediaTek Cloud Sandbox 雲服務

上傳感測器資料至 MCS 雲服務

MCS 雲端智慧居家控制

手機程式設計編寫 Android app 使用 App Inventor

Android 裝置透過 BLE 與 7697 互動

擴充裝置電路設計實作使用電路設計軟體設計與製作擴充電路板
開源時代-認識開放政府認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

讓 LINE 與 7697 對話吧!認識 LINE API 使用 Python/NodeJS

架設 LINE回音機器人透過 Line API 與 7697 互動

九、注意事項:

1.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。

扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

2.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

[LattePanda] OpenCV視覺辨識人臉追蹤

本文說明如何使用 LattePanda搭配OpenCV視覺辨識函式庫來打造人臉辨識機器人。

作者/攝影 袁佑緣
時間  1小時
成本
  • LattePanda
  • 螢幕
  • 鍵盤
  • 滑鼠
  • 喇叭
  • webcam
難度 * *
材料表
  • LattePanda
  • 螢幕
  • 鍵盤
  • 滑鼠
  • Webcam

 

本文說明如何使用 LattePanda搭配 python語言去使用OpenCV機器視覺函式庫來打造一個人臉辨識機器人,本範例的操作環境將以LattePanda的Windows10為主。

 

1. 軟體準備

安裝Python與相關套件

首先請到Python的網站下載最新版的安裝檔,在這邊要提醒一下Python目前有兩種版本,一個是2.7x版,另一個3.x版。Python 2.7x版是比較舊的版本,同時官方也有發出聲明將不會在繼續更新了,而本篇的範例使用的是新版3.x的Python,所以請注意一下不要選錯囉,以本文為例,最新的版本是3.6.1,如下圖。接著請按照以下步驟進行。

 

請在安裝Python時,將下方Add Python 3.6 to PATH勾選起來,意思是要把Python加入windows作業系統的環境變數內。

 

安裝完成後,為了測試我們的電腦是否能正常呼叫Python,請呼叫您電腦的終端機,windows的使用者請按下快捷鍵win+R便會在左下角顯示執行視窗,接著輸入cmd,這樣一來就會叫出windows的命令提示字元。

 

 

接下來請在上面輸入Python,呼叫Python的互動界面,如果能成功看到>>>的符號,那就代表已經成功叫起Python的界面了,而使用者可以直接在上面輸入Python的相關指令,如果沒有正確顯示這個界面的話,可能是您前面的安裝過程有問題,請重新回到前面的安裝步驟,有可能是您沒有勾選系統變數那個選項,所以windows無從呼叫Python。

接下來請輸入exit()跳出這個Python互動界面,回到windows的命令提示字元。

接下來請輸入pip install numpy,使用Python的套件管理員pip來安裝numpy這個套件。

裝完numpy之後,一樣使用pip來安裝OpenCV套件,請輸入pip install opencv-python

最後請輸入pip install pyserial,安裝在python中用來做Serial溝通的pyserial套件。

準備Python IDE

撰寫Python的程式除了要打code之外,還需要執行的環境,所以筆者在這邊推薦一款非常容易上手的Python IDE,請到以下的網站(http://thonny.org/)下載並安裝Thonny。

 

裝完必要的Python套件之後,我們就要來把Thonny的程式路徑設定成我們電腦系統中預設的Python執行程式。請點選Tools然後再點選Options,進入Thonny的偏好設定。如下圖。

接下來選擇interpreter,也就是Python的直譯器為系統預設的路徑,如下圖。

2.硬體架設

 本範例使用羅技C170的webcam作為辨識人臉的攝影鏡頭,另外為了要能夠追蹤人臉的位置,我們還需要架設一個旋轉平台,如下圖,由底下的小型伺服馬達(MG90)來控制鏡頭對到的方位。且注意到下方的小馬達控制訊號線是接到LattePanda左邊的3Pin接頭,記得靠外側是要接深色的地線喔!

 

 

3.軟體實作

Arduino 程式碼

為了要控制旋轉平台的伺服馬達,我們需要使用LattePanda上的Arduino Leonardo晶片,請打開Arduino IDE並打上以下的程式碼,並上傳到LattePanda上的Arduino端(請記得選對COM port)。

Arduino端的控制動作其實很簡單,它會聽取Serial傳來的字元命令,如果是小寫的字母a或b就會分別左右旋轉一度,進而達到轉動鏡頭的效果,而伺服馬達的控制訊號腳位在本範例中用的是9號腳位,接法如上圖,如果想接其他腳位請記得要改一下Arduino程式碼裡的腳位定義(s.attach(9))。

#include <Servo.h>

Servo s;
int degree = 90;

void setup()
{
    Serial.begin(115200);
    s.attach(9);
}

void loop()
{
    if(Serial.available())
    {
        int cmd = Serial.read();
        if(cmd == 'a')
        {
            degree++;
            if(degree >= 180)
                degree = 180;
            s.write(degree);
        }
        else if(cmd == 'b')
        {
            degree--;
            if(degree <= 0)
                degree = 0;
            s.write(degree);
        }
        else
            Serial.println("Press a/b to turn the camrea!");
    }
}

 

Python 程式碼

前面已經準備好Python會需要用到的函式庫跟IDE了,接下來我們就要來實作最後關鍵的人臉辨識以及追蹤,因為需要用到辨識人臉的模型,請去OpenCV的github網站(https://github.com/opencv/opencv/tree/master/data/haarcascades)下載 haarcascade_frontalface_default.xml與 haarcascade_eye.xml這兩個.xml檔,分別是用來辨識人的臉部與以及眼睛。

程式碼的實做可以拆解成幾個重要的部份,以下就讓我們一步一步的來了解吧!

首先我們會由cv2.VideoCapture(0)來讀取Webcam的影像資訊,並且設定初始的解析度是640×480,接下來在連接埠COM5建立一個Serial通道,用來下指令給Arduino端,以控制鏡頭的方向。

而while迴圈裡面則包含了主要的辨識程式,辨識的方法其實很簡單,就是先把鏡頭每一幀的照片先灰階化,再透過前面下載的臉部及眼部辨識模組套進去(face_cascde和eye_cascade)去做最可能的人臉偵測(這裡使用的方法是取最大/近的臉部面積)。

最後為了要追蹤人臉,我們需要計算出人臉的中心位置(position = x + w/2.0),x是標示人臉方框的 角落x座標,w則是寬度,所以取一半的寬度就會得到人中的x座標位置,接下來我們只要跟我們取的影像中線做比較,然後左右旋轉鏡頭去做追蹤即可,而這調中線的位置則可以從前面設定的解析度640×480來算出,取寬的一半就能得到範例程式中的320了,如果說讀者想要嘗試其他的解析度,請記得也要修改鏡頭追蹤的中線喔!

import cv2
import numpy as np
import serial

face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('./haarcascade_eye.xml')

cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
ser = serial.Serial('COM5', 115200)

while True:
    _, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 2, 5)
    if len(faces):
        (x, y, w, h) = max(faces, key=lambda face: face[2]*face[3])
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
        position = x + w/2.0
        print(position)
        if position < 320:
            ser.write(b'a')
        else:
            ser.write(b'b')
        
    cv2.imshow('face', img)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
cv2.destroyAllWindows()

 

示範影片

 

相關文章:

[Python教學] Facebook圖形API測試工具,取得粉絲頁按讚數

作者/攝影 曾吉弘
時間  2小時
成本
難度 * * * *
材料表
  • 個人電腦
  • Facebook帳號

本文要介紹如何使用Facebook的圖形API測試工具(Graph API explorer) 取得粉絲頁的相關資料,最常見的應用就是讚數。如果喜歡的話,還可以結合Arduino作出有趣的互動裝置,例如以下:

(註:本影片僅為示意,並非使用Python來取得資料)

 

Facebook開發者平台與圖形API測試工具頁面

請到Facebook開發者網站(請用您原本的Facebook帳號登入即可),在網頁最下面找到 圖形API測試工具(Graph API explorer)。您可以在此查詢您個人的所有資料,查詢結果會以 json 格式回傳,下圖是阿吉老師的Facebook Id 與使用者姓名的查詢結果:

(圖形API語法詳細文件請點我)

請點選畫面右上角的下拉式選單,找到您所要查找的粉絲專頁(您得是該專頁的管理員才行),例如本範例的CAVE教育團隊。下圖查詢了四個項目:id、name、fan_count(讚數)與link。您當然可以查詢其他欄位,只要有輸入資料都可以查得到。

以往的做法是比較寬鬆的,不需要AccessToken,且只需要把粉絲頁超連結www改為graph即可,但現在已經都需要從圖形API測試工具取得才行,這也暗示了您需得是該粉絲頁的管理員才可查找。並且AccessToken會在兩小時之內過期。網路上介紹如何取得永久有效的AccessToken,但不在本篇討論範圍之內。

Python程式碼

 

最後請看一下本範例的Python程式碼,

阿吉碎碎念:Facebook相關的API改動非常快,例如2.6之前,fan_count 原本是叫做 likes。其他雲服務也會常常改,但真的Facebook最愛改就是了,可能和創辦人個性有關吧~

 

本範例的關鍵URL由以下四個項目組成:

  1. facebook api 網址:https://graph.facebook.com/v2.10/
  2. 粉絲頁id:148248725246010 (CAVEr教育團隊)
  3. 要查找的欄位:?fields=id,name,fan_count,link&access_token=
  4. Access token:請由Facebook API圖形API測試工具

 

當然,其他程式語言如C#、Node.js 甚至App Inventor等都可以做到本範例的效果,您可以在取得資料之後直接使用瀏覽器來測試,只要看到以下畫面就是ok的:

 

https://graph.facebook.com/v2.10/148248725246010?fields=id,name,fan_count,link&access_token=XXX

 

FB API 2.10

 

#22是您要查詢的Facebook帳號或粉絲專頁ID。#23則是Access Token

#04是自訂的函式來處理Facebook API回傳的JSON格式結果。

#24~26 則是依序顯示出我們所要查詢的欄位,執行畫面如下圖:

import urllib2
import json

def get_page_data(page_id,access_token):
    api_endpoint = "https://graph.facebook.com/v2.10/"
    fb_graph_url = api_endpoint+page_id+"?fields=id,name,fan_count,link&access_token="+access_token
    try:
        api_request = urllib2.Request(fb_graph_url)
        api_response = urllib2.urlopen(api_request)
        
        try:
            return json.loads(api_response.read())
        except (ValueError, KeyError, TypeError):
            return "JSON error"

    except IOError, e:
        if hasattr(e, 'code'):
            return e.code
        elif hasattr(e, 'reason'):
            return e.reason

page_id = "148248725246010" # username or id
token = "XXXXX"  # Access Token
page_data = get_page_data(page_id,token)

print "Page Name:"+ page_data['name']
print "Likes:"+ str(page_data['fan_count'])
print "Link:"+ page_data['link']

 

相關文章:

[LattePanda] 從零開始教學,在LattePanda上使用Python與Arduino來控制meArm機械手臂

本文章將帶領讀者從基礎開始,到學會用在LattePanda上面使用Python跟內建的Arduino Leonardo來控制機械手臂,想學習Python圖控界面,與Arduino的Serial溝通,或者是機械手臂的介紹的朋友不妨來看看本篇教學文喔!

作者/攝影 袁佑緣
時間  3小時
成本  約1,850(不含LattePanda)
難度  * * * * *
材料表

1.Python的環境安裝

首先請到python的官網(https://www.python.org/downloads/windows/)下載最新版的安裝檔,在這邊要提醒一下python目前有兩種版本,一個是2.7x版,另一個3.x版,2.7x版python是比較舊的版本,同時官方也有發出聲明將不會在繼續更新了,而本篇的範例使用的是新版3.x的python,所以請讀者注意一下不要選錯囉。

以筆者為例,最新的Python版本是3.6.1,以及LattePanda是64bit版本的,所以點選Windowsx86-64-excutable installer,如下圖。

接下來請記得在安裝python的時候將下方”Add Python 3.6 to PATH”勾選起來,意思是要把python加入windows的環境變數內。

安裝完後,為了測試我們的電腦是否能正常呼叫python,請呼叫您電腦的終端機,windows的使用者請按下快捷鍵”win+R”便會在左下角顯示執行視窗,接著輸入”cmd”,這樣一來就會叫出windows的命令提示字元,如下圖。

命令提示字元(command prompt)

接下來請輸入”pip install matplotlib”,使用python的套件管理員pip來安裝matplotlib這個套件。

接下來請輸入”pip install pyserial”,使用python的套件管理員pip來安裝pyserial這個套件。

接下來為了要讓讀者方便開發python的程式,請到以下的網站(http://thonny.org/)下載並安裝Thonny這個python IDE。

2.Arduino 環境準備

請到官網下載最新板的Arduino IDE,下載網址請點這裡。以筆者為例,最新版本的Arduino IDE為8.2板,因為LattePanda上面運行的Windows10,所以請記得點選windows版的IDE來下載,另外為了不覆蓋到LattePanda系統原本舊版的Arduino,請點選”Windows ZIP file for non admin install”。

想直接下載的話請點選JUST DOWNLOAD,當然如果行有餘力的話也可以給予Arduino一些贊助喔!

最後解壓縮完成之後,點開Ardunio的資料夾執行IDE的程式即可。

另外,為了要控制LattePanda內建的Arduino Leonardo,必須將控制板選為Arduino Leonardo。

Arduino IDE在上傳程式碼的時候,需要選擇對應的port(連接埠)才能上傳到控制板上,如下圖,請選擇有Arduino Leonardo的COM port。

 

3.執行本專案的程式碼

請在Arduino IDE 上面完成以下的程式碼。

#include <Servo.h> // 引入Arduino控制伺服馬達的函式庫

Servo s[4]; // 建立一個長度為4的servo物件

// 宣告收到Serial的訊息與長度
int  data;
size_t data_size = sizeof(data_size);

void setup()
{
    Serial.begin(115200); // 將Serial的鮑率設定為115200
    
    // 將4個servo對應到以下4個Arduino腳位
    s[0].attach(7); 
    s[1].attach(8);
    s[2].attach(9);
    s[3].attach(10);
}


void loop()
{
    // 如果從Python圖控界面收到的資訊是s開頭,則檢視下一個字元
    // 是指定哪一個伺服馬達(0~3號)
    // 最後再接收一4個bytes的整數,作為馬達要轉到的角度(0~180度)
    if(Serial.available())
        if(Serial.read() == 's')
        {
            int servo_number = Serial.read() - '0';
            if(servo_number < 4 && servo_number >= 0)
            {
                Serial.print("Servo number: ");
                Serial.println(servo_number);

                while(Serial.available() < data_size);
                Serial.readBytes((char*)&data, data_size);
                Serial.println(data);
                s[servo_number].write(data);
            }
        }
}

上傳Arduino程式碼

請先確認您的Arduino IDE是否有按照2. Arduino環境設定,將Arduino Leonardo的板子與連接埠都選擇正確,並按下快捷鍵<Ctrl+U>或者是如下圖點選上傳的箭頭來上傳程式碼。

打開Thonny,完成以下的Python程式碼。

# matplotlib是用來顯示GUI的函式庫
# serial則是用來跟Arduino溝通的函式庫
# struct跟pack則是在Serial傳輸資料時,打包資訊會用到的工具
from matplotlib.widgets import Slider 
import matplotlib.pyplot as plt
import serial
from struct import pack

# 在連接埠COM8建立一個鮑率為115200的Serial
# 這裡要提醒讀者,記得要把COM8改成您LattePanda上的COM port
ser = serial.Serial('COM8', 115200, timeout=0)

# 定義一個函式,將會根據i(馬達/拉桿編號),回傳指定的函式
def send_ith(i):
    def send(val): # 定義一個函式,用來送出控制馬達角度的訊號
        data_header = bytes('s' + str(i), 'UTF8')
        data = int(val)
        ser.write(pack('<2si', data_header, data))
    return send


# 初始化伺服馬達控制拉桿的圖形化界面以及其對應的函式
a = []
s = []
for i in range(4):
    a.append(plt.axes([0.2, 0.2*(4 - i), 0.6, 0.07]))
    s.append(Slider(a[i], 'Servo' + str(i+1) + ' ', 0, 180, valfmt = '%d', valinit = 90))
    s[i].on_changed(send_ith(i))

plt.show()

執行Python程式

請在Thonny IDE上,按下快捷鍵<F5>或者是點選下圖中的播放鍵來執行Python

如果在執行Python時遇到如下的錯誤,那有可能是您的COM port沒有設定正確,請回去看一下2. Arduino 環境設定那一步中的COM port,並把正確的port輸入上面Python程式碼中。

成功執行後,就可以看到一個簡單的Python互動界面,讀者可以透過上面的拉桿來操控四個伺服馬達各別的角度。

4.接上機械手臂,來動手玩玩看吧

完成上述的步驟後,我們就可以來執行最後的實做部份了,本次範例所使用的機械手臂是有名的開源機械手臂meArm,上面有4個伺服馬達,一共有四個自由度,然後因為特殊的平行連桿機構,最尾端的夾爪會一直保持水平,方便機器夾取物件,加上使用壓克力平板與螺絲螺帽就能輕易組裝,是一個相當好入門的教育套件,接下來我們就來看一下要如何完成電路的連接吧。

LattePanda與機械手臂的接線如下圖,由於本範例所使用的Arduino腳位是7, 8, 9, 10,所以請按照官方給的腳位圖接上去(紅圈的部份)。

特別注意,為了保護馬達與電路系統,電源的部份請最後再接上去。

電路接線圖

LattePanda腳位圖

 

完成圖

上視圖

 

相關文章:

 

160929 Python & Arduino體驗之夜

Arduino 具備了開放原始碼硬體的優勢,可連接非常多種的電子周邊,另一方面,Python則是近年非常熱門的程式語言,除了是 Raspberry Pi 的指定開發語言之外,也可開發各種網路應用程式,並可結合許多雲服務來進行各種有趣的互動專題。

本次課程會有 Python+Arduino的物聯網應用專題展示,但上課內容不包含這內容。

報名連結請點我

主辦單位:CAVEDU 教育團隊、翰尼斯企業有限公司

時間 : 105年9月29日星期四 19:00~21:20

地點 : 翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

請自行攜帶以下項目(沒帶的話,也可以在本公司購買):

1. 筆記型電腦,作業系統不限
2. 安裝Arduino 1.5.X以上的IDE (https://www.arduino.cc/en/Main/Software)
3. Python 2.7.x開發環境(https://www.python.org/downloads/),請注意不要安裝 Python 3
4. Arduino開發板與USB傳輸線(用來連接您的Arduino開發板與您的電腦)*

*本次課程會先在 Arduino 開發板上安裝 standardfirmata程式來回應Python的各種呼叫,因此須使用 Python 來編寫各種應用程式。

收費:

$700,自備Arduino UNO、筆電與傳輸線。
我們會提供包含上課所需電子周邊零件乙組,名額只有15名,請儘早報名。
請先繳費完成並收到我們寄出的確認信函才算報名成功喔!

付款方式:

1. 匯款:
銀行名稱 :華南商業銀行 雙園分行 / 戶名 :翰尼斯企業有限公司
銀行代號 :008 / 帳號 :122-10-015315-3

2. 來店付款:
翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

3. 線上付款:
在機器人王國的線上商城付款也可以:請點我

活動流程:

19:00 CAVEDU 教育團隊簡介

19:10 安裝環境、基礎 Python 語法介紹

19:40 使用Firmata通訊協定與pySerial函式庫
說明Arduino如何與Python程式互動。

20:20 動作觸發LED – PIR sensor
根據偵測到的動作來控制不同LED的Python-Arduino專案。

20:50 Python GUI 圖形化介面 – TKinter – 為您的LED專案加上圖形化互動介面

21:20 結語、賦歸

注意:主辦單位保留修改與解釋活動之所有權利。

聯絡我們:02-23062900 / service@cavedu.com

160712 [Raspberry Pi x 視覺辨識機器手臂控制]公民營研習 @建國科大電子系

今年咱們承接了四場公民營研習,阿吉老師主講了[Raspberry Pi x 視覺辨識機器手臂控制]公民營研習,地點是在風光明媚的彰化八卦山下的建國科大,有三天的課程,就分成  Raspberry Pi 基礎設定、GPIO硬體控制與視覺辨識等三大項目。

DSC03129 - 複製

機器手臂使用的是 CAVEDU 改良過的 Mearm(歡迎洽詢購買~),並搭配 Adafruit 的 16 channel 伺服機驅動板

arm3Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685

教學流程Google doc 請點我,您可以直接看到我們這三天的學習過程,相關文件也都可以下載喔

有基礎的朋友,也可以直接從CAVEDU講師袁佑緣的 github 跟著做 (包含 openCV 的設定),這樣會比較快

 

首先先用 python 的 wxpython 套件做一個 slider 來控制四個伺服機,sg90 小 servo 居然可以直接吃 Raspberry Pi 的電而不用另外接電,有種開心的感覺啊

2016-07-14 10.15.41

順利看到 Raspberry Pi 的 webcam 影像串流了
2016-07-14 15.03.25

openCV python 範例:邊緣偵測
2016-07-12 19.58.49

openCV python 範例:臉孔與眼睛偵測(model:阿吉老師)

13654399_10208311029466819_2468486586431237075_n

用 Raspberry Pi 安裝 XBMC多媒體中心(另外的作業系統),中午大家一起來看 NBA吧

2016-07-13 16.58.15

左邊是建國科大電子系的Raspberry Pi 教學箱


2016-07-14 09.13.52

 

[即將出版新譯書] Python x Arduino 物聯網整合開發實戰

本書從 Python 的角度來結合 Arduino 作為您網路應用程式的手腳,不僅能運用Arduino與各種電子元件的方便性,還能利用 python 來快速開發各種介面並與雲端服務串接。

既然是 python,也一定會有在 Raspberry Pi 上的實作,還有結合 Amazon AWS IoT 與 Xively 等雲服務的實作案例。希望大家會喜歡喔

cover

Continue reading

160421 T客邦創客night – Raspberry Pi 分享

感謝T客邦創客基地的邀請,這是我們第二次去分享了。這次由豐智老師分享我們使用 Pi2, Pi3 在教學上的一些心得,以及用 Pi3 做的openCV 視覺辨識機器手臂。豐智老師的分享內容請見本文末

這是本次活動的內容

首先由

IMG_2872

我們用開多個瀏覽器視窗以及 openCV 視覺方式來實證 Pi3 比 Pi2 快。投影機畫面中是 openCV 的即時預覽視窗,這兩個視窗其實很吃系統資源。  

IMG_2909

機器手臂的人氣還不錯吧

IMG_2925

另外四位分享的團隊,請看我們的簡介:

Aeroprobing 的Lance KKo ,積極推動各樣的無人機應用,從FPV競賽到教學用的套件都有。前陣子剛辦完國內的第一場線上直播無人機競速賽,超讚

IMG_2913

Checkin plus 團隊(誠義資訊)

使用樹莓派做了一個行動式的簽到系統,可以有效解決大活動的簽到問題( 我們真的很需要這個…)

IMG_2919

台灣樹莓派的 sosorry 大大,定期舉辦 Raspberry Pi 使用者聚會,已經是這個領域的重要活動啦。

今天帶來的內容是 Pi3 與 Pi Zero(大家都買不到啊…) 的比較以及 Raspberry Pi 的物聯網應用,包含智慧插座與生理資訊上雲端。 

IMG_2953

這是智慧插座的即時耗電狀況顯示畫面

IMG_2947

GaussToy:非常棒的發想,從磁力出發,測量磁場變化做出各種有趣的互動應用。很容易就能串接Arduino,並提供高達九種不同輸入元件。同時支援 Processing 開發環境來產生豐富的互動效果。

SDK:http://developers.gausstoys.com/

IMG_2964

現場 demo 的效果非常好,我也好想買一套來玩啊!

IMG_2973

Gausstoys相關影片

豐智老師的分享內容


 

MindSensors 結合 Raspberry Pi 與樂高機器人新產品:PiStorms 開箱

MindSensors 推出的 PiStorms,目標很簡單,就是要把 EV3 主機換成 Raspberry Pi,EV3 雖然有一個小小的 Linux kernel,但怎麼說還是弱了點,如果換成 Raspberry Pi 的話,多媒體功能與網路就能應用到原本的樂高機器人身上,既然要做就要做好做滿,PiStorms 上面當然有接頭可以直接接上 EV3 的感測器與馬達,馬上就開工吧

以下是 MindSensors 列出的 PiStorms 強項:

  • 可連接樂高 NXT 或 EV3 的感測器與馬達 (代表函式庫都寫好啦)
  • 內建 2.4 吋彩色觸碰螢幕 (當年 Canon 5D 的 2.5吋螢幕就已經覺得大到嚇人,2.4 對機器人來說應該是相當合適的尺寸)
  • 結構強壯 (這可能要玩玩看才知道)
  • 可在 Raspberry Pi 寫 Python 或 Scratch 來控制機器人周邊
  • 可搭配 Raspberry Pi A+、B+ 與 Pi 2
  • 套件包內含:
  • –   PiStorms 控制器
  • –   LEGO 相容的框架 (其實就是對應樂高孔距的3D列印車體)
  • –   6-AA 電池盒 (Raspberry Pi 與樂高零件都要另外買喔!)

MindSensors 也提供了函式庫與範例程式以及技術文件,可以馬上開工。如果懶得安裝 PiStorms 函式庫的話,就直接下載 MindSensors 提供的 img 檔吧,燒錄到 SD 卡讓 Raspberry Pi 開機就通通都好了 Continue reading

[LinkIt Smart 7688教學] 登入7688 後使用 nodejs 控制板載LED

本範例將介紹如何在 LinkIt Smart 7688 Duo上藉由一個 node.js 小程式來控制板載的 LED。首先請確認您的 LinkIt 7688 與 7688 DUO 已經可以經由 SSH 連線來登入了。以下步驟是在 Windows 中藉由 puTTy 來操作。(LinkIt Smart 7688 作為 Arduino 來使用相當直觀, 容我們後續範例再述. )

詳細的資料請參考  MediaTek Labs 所提供的相關文件

在物聯網的世界裡,有人是從硬體連上網路,

也有人是從網路擁抱硬體

不同領域的人看待硬體控制的角度也不一樣,對於能用更多元的方式來控制開發板,不失為一種樂趣喔

12289697_10206637202302186_6327610817805487711_n
阿吉老師家的牙牙, 我咬!

node.js helloworld on 7688

1)  SSh 登入您的7688之後,使用 vim 文字編輯器新增一個名為 app.js 的檔案,並輸入以下內容:

console.log(‘Hello World nodejs’)

b02

在 vim 中先按 ESC,再按 :w 存檔之後離開 vim,接著輸入:

#node app.js 就可以看到以下結果

b03

Continue reading

ArduinoYun使用Temboo上傳照片至Dropbox

ArduinoYun的相關範例在網路上越來越多人分享,想必大家常常遇到按照步驟與Temboo連線,但是Dropbox卻沒有任何回應。

首先可以來Activity的LOG來看Temboo是否有資料上傳的紀錄,紀錄內容有上傳資料的時間,還有上傳的裝置,如果用的是Yun的Linux系統,裝置會顯示PythonSDK,如果沒有任何上傳紀錄,代表你並沒有成功連線到Temboo網站,趕快看看Yun是不是有上網成功喔。

01

有沒有遇過Temboo傳過這樣的錯誤呢?也不知道為什麼?

01_2

這樣的問題除了在Dropbox之外也很容易發生,Temboo提供的一個功能是特別需要注意的,那就是oAuth服務,oAuth所做的是允許認證這項功能

1、允許用戶讓第三方應用存取該用戶在某一網站上儲存的私密的資源

2、無需將使用者名稱和密碼提供給第三方應用

這在ArduinoYun中非常重要,因為Yun很容易社群網站(比如google、FB、Dropbox)被當成機器人,即使你有這個網站的帳號與密碼也無法登入,只要使用oAuth通過這個網站的認證就能使用

02

要使用oAuth,在Temboo上一共有兩個功能要做(1)InitializeOAuth (2)FinalizeOAuth

我們以Dropbox為例,首先在Dropbox開發者網站創建APP,拿到這個Dropbox APP的appkey、appsecret

03

接著將這兩筆資料輸入到Temboo網站的Dropbox . OAuth . InitializeOAuth之中,你將會得到AuthorizationURL、callbackID、OAuthTokenSecret共三筆資料

04

接著將AuthorizationURL的連結打開,Dropbox的APP會詢問你是否願意讓這個Temboo網站存取,按允許即可

05

接著我們到Temboo網站的Dropbox . OAuth . FinalizeOAuth之中,接著輸入Dropbox的AppKey、AppSecret。還有在InitializeOAuth之中得到的callbackID、OAuthTokenSecret也要輸入進去。

06

最後我們會得到AccessToken、AccessTokenSecret共兩筆資料。這兩筆資料可以幫助我們在使用Temboo的Dropbox服務上暢行無阻,以ArduinoYun上傳照片到Dropbox為例,原本我們必須照著Dropbox . FilesAndMetadata . UploadFile的內容輸入資料才可以上傳照片,你也可以靠使用AccessToken、AccessTokenSecret這兩筆資料通過認證

下面是上傳照片到Dorpbox時,Temboo所準備的python程式碼,下面要輸入的yourAccessToken、yourTokenSecret就是剛剛得到的兩筆資料了,至於yourAppKey、yourAppSecret則是Dropbox開發者網站的的appkey、appsecret。

07

如果還有新收穫再來跟大家分享,下次再見囉

 

 

[好朋友專題分享]自製Raspberry Pi 2 兩輪自平衡車

本篇文章感謝 CAVEDU 好朋友 Kevin 授權轉貼,好東西就是要讓更多人知道,也請大家點擊原文到 Kevin 的部落格留言發問喔!程式碼 Github 請點我

這台機器人 3/29 會出現在 CAVEDU Day喔,快點報名來看看吧~

0. 前言

本文將介紹如何利用Raspberry Pi自行製作一台兩輪自平衡車(segway)。先聲明一下, 這方面我只是初學者, 自動控制與工程數學理論都還給老師很久了,寫這篇純粹是為了拋磚引玉, 希望有經驗的高手們也能分享經驗.

1. 硬體需求

  • Raspberry Pi + 外殼 + WiFi網卡。我用的是Pi 2, 請自行先燒錄並安裝 Raspbian 作業系統來開機。WiFi網卡是edimax的, 安裝方法不另贅述
  • DC motors + 輪胎 + 車架 + 壓克力板 + 銅柱
    我從這裡買的,我當時買到的馬達規格是減速比1:34. 我想1:21應該更好。其它的馬達如果轉速夠快扭力夠大應該也可以用, 有經驗的朋友們請幫忙分享心得。
  • L293D IC 馬達驅動IC
    我從這裡買的
  • MPU6050六軸感測器
    我從這裡買的。順便也買到焊接針腳, 這樣就可以將感測器固定到麵包板上了.

2. 機構組裝

  • 上面是我買的那一包車體零件開箱照
  • 依照說明安裝車體, 包括L架, 馬達, 輪胎, 最後把壓克力板還有銅柱都裝上去。請參考這裡的組裝圖
  • 裝完以後的樣子

(其實拍完上面那一張照片,下一分鐘我的Pi就摔到地面, 透明壓克力盒就摔破了…)

這裡要說明一下, 車體零件內附的銅柱是 3cm的, 如果您的Pi外殼超過3cm 會塞不進去, 可以考慮換銅柱. 或是更換Pi的外殼。我是考量原廠外殼太重,卡榫又容易摔斷,所以後來換了一款薄型類似名片盒的外殼。又輕又耐摔。最上面那一片壓克力板是準備要來放麵包板的。

4. 安裝線路

開始插麵包板吧

這裡簡單說明一下電路,MPU6050模組是使用I2C介面,有四根線需要接上Raspberry Pi 的 GPIO腳位,分別是:

Vcc –> RPi GPIO header pin#1 (3.3V),
SDA –> RPi GPIO header pin#3 (SDA)
SCL –> RPI GPIO header pin#5 (SCL)
GND –> RPi GPIO header pin#6 (GND)

關於馬達的部分,我使用常見的L293D 驅動IC。
GPIO header pin#11, pin#13, pin#15 控制左輪, 接到L293D的pin#2, pin#7, pin#1
GPIO header pin#16, pin#18, pin#22 控制右輪, 接到L293D的pin#15, pin#10, pin#9
L293D的pin#3, pin#6 接左輪馬達
L293D的pin#14, pin#11 接右輪馬達
Vs 接 12V DC
Vss 接 5V DC
(Vs & Vss 這兩隻腳不要搞混)

還有就是 L293D 需要有夠高的電壓來源才能驅動馬達,我的做法是買一個 12V DC 1A 變壓器,再配一個轉接頭再接上麵包板,這樣才能供應 L293D 的 Vs (pin#8)。

還要注意一點就是,請把車體前後的接線整理固定好,因為後面做平衡調校測試的時候一定會摔車好多次,前後的線路就是首當其衝, 最好都用束線帶綁好。全部都固定完畢的樣子

IMAG0077

後面我們會講到用軟體測試上面的接線是否正確.

5. 軟體部份

這裡我們要搞定I2C, 並且使用wiringPi函式庫。它有基本GPIO功能又支援I2C 讀取MPU6050資料,還有SoftPWM 功能可以控制DC motors轉速,真是一舉數得呀!!

安裝步驟如下

先安裝i2c driver.

$ sudo apt-get install libi2c-dev

設定下次開機要啟動 i2c driver,

$ sudo vi /etc/modules

增加以下兩行到裡面, 儲存.
i2c-bcm2708
i2c-dev

有一個blacklist檔案要檢查
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

確認裡面沒有以下兩行, 如果有出現, 請在前面都加上 #符號 (也就是把他comment掉), 儲存.

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

然後Pi要重新開機
$ sudo bash; sync;sync;reboot

開機回來後, 要確認i2c driver kernel module 有正常啟動

$ lsmod |grep i2c
i2c_dev                 6027  0
i2c_bcm2708             4990  0

安裝 git
$ sudo apt-get install git-core

下載並安裝 wiringPi

$ cd
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ sudo ./build

6. 測試MPU6050

先安裝測試工具
$ sudo apt-get install i2c-tools

執行這個工具測試 i2c bus上是否有看到MPU6050.

$ sudo i2cdetect -y 0 (for a Revision 1 board)
or
$ sudo i2cdetect -y 1 (for a Revision 2 board)

如果看到以下輸出… 注意那個”68″, 就表示已經正常抓到MPU6050了.

0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — 68 — — — — — — —
70: — — — — — — — —

再來我們要下載測試程式嘗試抓取加速度計(accelerometer) & 陀螺儀(gyroscope meter)數據.

下載測試程式, 並編譯

$ cd
$ git clone https://github.com/wennycooper/mpu6050_in_c.git
$ cd mpu6050_in_c
$ cat README.md

$ gcc -o mpu6050_accl ./mpu6050_accl.c  -lwiringPi -lpthread -lm
$ gcc -o mpu6050_gyro ./mpu6050_gyro.c  -lwiringPi -lpthread -lm

現在來看看加速度的數據, 請執行以下程式:

$ sudo ./mpu6050_accl

應該要看到X, Y, Z 加速度數據, 如下:
My acclX_scaled: 0.140625
My acclY_scaled: -0.031006
My acclZ_scaled: 0.994141
My X rotation: -1.768799
My Y rotation: -8.047429

其中 acclX, acclY, acclZ 是三軸加速度數據
(單位是g, 沒錯! 就是物理課本上面的重力加速度 g=9.8m/s^2)
My X/Y rotation 是換算出來的角度 (單位是 degree).

請試著將車體前傾或後仰, 看看數據的變化.
如果您安裝MPU6050 的方向正確的話, 車體前傾或後仰應該會看到 Y rotation 介於 -90度 ~ 90度.

再來看看陀螺儀的數據, 請執行以下程式:

$ sudo ./mpu6050_gyro

應該要看到X, Y, Z軸的角速度, 單位是 degree/s
My gyroZ_scaled: -1.954198
My gyroX_scaled: -4.312977
My gyroY_scaled: 0.458015
My gyroZ_scaled: 0.366412
My gyroX_scaled: -4.053435
My gyroY_scaled: 0.427481
My gyroZ_scaled: -0.160305

請嘗試著觀察轉動瞬間與數據的變化, 就會理解陀螺儀數據了。這裡說明一下,單純用上面那個加速度計不就可以推算出傾斜角度不是嗎? 為何需要用到陀螺儀數據呢?主要是因為加速度數據很容易浮動, 後來有人發明了使用陀螺儀數據再補上加速度數據的方法, 這樣就能算出比較穩定可靠的傾斜角度。這套方法叫做 “complementary filter”. 詳細說明請看文末的參考文件.

7. 測試DC motors

現在我們用 wiringPi 寫一個程式測試 DC motors.

$ cd
$ git clone https://github.com/wennycooper/dcMotor.git
$ cd dcMotor
$ cat README.md

$ gcc -o dcMotor0 dcMotor0.c -lwiringPi -lpthread

準備要讓馬達轉囉!! 請確認12V電源有正常插上, 並把車體用手拿起來, 執行程式!!

$ sudo ./dcMotor0

如何?? 正常的話兩個馬達應該正轉5秒鐘, 再反轉5秒鐘, 最後停止.
馬達如果沒有轉, 表示前面步驟執行有錯, 請回頭去檢查.
如果有轉, 請確認兩個馬達都有轉同樣方向, 如果反向, 請把一個馬達接腳兩根交換, 應該可以改善.

還要注意一點, 您的兩個馬達都有轉得很 “夠快” 嗎??
如果轉得很慢, 比方說每秒鐘大約才2轉, 很有可能是L293D 的部分接線有問題, 請回頭再確認!!

轉速太慢可能會造成車體傾斜時馬達來不及將車體導正, 這樣就無法平衡了.

8. 最後整合

令人興奮的時刻要來了!! 我們要把上面所有的努力全部整合到一起!!
請下載並編譯最後這套兩輪自平衡車控制程式.

$ cd
$ git clone https://github.com/wennycooper/mySegway.git
$ cd mySegway
$ gcc -o mySegway ./mySegway.c ./motors.c  -lwiringPi -lpthread -lm

這程式會根據測到的數據, 努力保持車體平衡.
如果傾斜角度過大(>60度), 會自動讓馬達停止.

9. 執行

由於每一台車體平衡角度不一樣, 本程式開始執行的時候是假設車體已平衡, 並取出當下角度作為基準點, 再努力透過馬達運作努力保持角度。這意思是說: “程式啟動瞬間請保持車體平衡

有一點點難度,我的做法是左手放車子到地面,扶著它盡量保持車體平衡,然後平衡瞬間右手敲鍵盤執行程式。以下是結果錄影

如果不成功, 可能原因如下:

1. 馬達驅動方向和感測器方向相反, 可能需要改一下motors.c speed 的方向
2. 如果馬達有往正確的方向轉, 但還是傾倒, 可能是角度太大, 馬達轉速不夠或扭力不夠.
3. 執行啟動的時候沒有保持平衡, 請再執行一次
4. 不一樣的車體, 高度, 重心都不一樣, 可能需要改 PID參數
5. 其他我也不知道的原因

最後祝福各位也能夠成功!!

參考文件

  • http://blog.bitify.co.uk/2013/11/interfacing-raspberry-pi-and-mpu-6050.html
  • http://blog.bitify.co.uk/2013/11/reading-data-from-mpu-6050-on-raspberry.html
  • https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/
  • http://robotrabbit.blogspot.tw/2012/07/pid.html
  • http://www.bajdi.com/building-a-self-balancing-bot/

[Raspberry Pi 2]樹莓派2效能測試,使用Chrome 瀏覽器與 openCV

RaspberryPi 2號稱CPU效能比過去快上六倍,快六倍究竟是什麼樣的感覺呢?這次使用Linux系統的Google Chrome與opecncv這兩個需要消耗較大CPU運算來做測試。剛拿到樹莓派2的朋友們,要讓過去系統可以相容於Pi 2請看這篇

這次使用top指令來觀察Pi2的系統執行能力,首先輸入:

$top

002

出現上圖的視窗,以灰色的一行作分類,上半部顯示的是Pi2的四核心運算率,分別是:CPU0、CPU1、CPU2、CPU3,如果沒有出現,按數字鍵[1]即可

下半部顯示的是正在執行的命令,如果出現的資料太多,按下鍵盤的[i]鍵就會切換顯示方式

  • USER:顯示執行命令的帳號
  • %CPU:顯示CPU的使用率
  • %MEN:顯示記憶體的使用率
  • COMMAND:執行的命令名稱

讓我們來看看在Pi B+執行 Google Chrome 的速度如何?

我們可以看到執行 Chrome需要使用CPU 高達 70%的運算,在整個系統上資源使用量是排第一名,右下角的圖形化CPU也是整片都滿滿的綠色,代表CPU全部的使用率達百分之百。Pi B+只有CPU0可以進行運算,系統跑起來會LAG,如果要執行其他程式需要等待約一到數分鐘才能打開。

接著來看看Pi2執行 Chrome 又是如何?

如圖所見,這個瀏覽器開了兩個分頁,但是CPU只使用了百分之30,而且在運算上會分擔給四個CPU,所以每個CPU執行的速度還是很快,由於我還開了其他的程式,例如截圖軟體,所以Chrome在使用整個系統的資源量是排第七第八名。

接著來看看Pi B+執行OPENCV佔的資源如何:

CPU使用率佔百分之七十,系統使用資源量排名第一,不用說整個CPU圖片為滿滿的綠色。

接著看Pi2執行opencv

CPU使用為 59%,我們看看右下角,CPU使用量顯示,綠色居然沒超過四分之一,小編實地測試,使用Pi2時,opencv只要畫素高,經過計算會照成圖片顯示DELAY,但是總CPU使用量不會超過四分之一,應該是Pi2作業系統(OS)的使用預設是不會讓單一程式佔走大部分的運算資源,在使用時,不會讓使用者感覺系統LAG,經過測試,Pi2在需要較高運算的程式上,的確比之前的Pi快上許多。

目前CAVEDU 已經開始供貨給玩家囉,Raspberry Pi2售價是台幣1500元,Raspberry Pi B+是900元,Raspberry Pi B 降價成500元!!歡迎到我們的FB粉絲頁商城訂購~~