Tag Archives: python

[python] JSON 與 Facebook 取讚,可以直接執行在 Arduino Yun 的 Linux 中喔!

各個版本的 Facebook 取讚都玩過了,想不到用 python 居然只要… 不到10行啊…

螢幕截圖使用 Coding Ground (大推的線上程式編譯網站,超多程式可以玩),本份 code 可以直接執行在 Arduino Yun 的 Linux 中喔!

歡迎回顧一下我們 Arduino Yun 的相關文章 與 App Inventor 的 Web 元件教學1234

import urllib2
import json

req = urllib2.Request('http://graph.facebook.com/CAVEEducation')
response = urllib2.urlopen(req)             
html = response.read()                      

data = json.loads(str(html))
print('# of CAVEDU FB fanpage likes:',data['likes'])
python to retrieve FB fanpage # of likes

[python 與 EV3] 讀取 MindSensors LightSensorArray 光感測器模組的原始值

在樂高 EV3 上安裝 Debian 作業系統之後, 來讀取MindSensors LightSensorArray 光感測器模組的原始值。這是一個把八個光感測器整合在一起的模組,可說是循線利器。每個感測器都可以根據光量變化回傳 0~100 的數值。

10934431_10203429295989662_60478272_n

先來看影片,配音員聽說很帥

相關資訊:

python on EV3 機器人 – 整理好的 img 檔送給您!

python on EV3 機器人-基礎python撰寫

 

程式碼:

from ev3.ev3dev import Key,Msensor
import time

key=Key()
light=Msensor(port = 1)  #將感測器接在1號輸入端

while key.backspace != True:  #按下EV3 的灰色退出鍵就跳出程式
	val=[]
	val.append(light.value0)
	val.append(light.value1)
	val.append(light.value2)
	val.append(light.value3)
	val.append(light.value4)
	val.append(light.value5)
	val.append(light.value6)
	val.append(light.value7)
	for i in range(7):
		print val[i],
	print val[7]
	time.sleep(0.1)   #等候0.1秒
Get MindSensors LightSensor Array module's raw value

用 python 取得 Facebook 粉絲頁面讚數

本範例使用 python3 中的 httpclient 函式庫來取得 Facebook 粉絲頁的指定欄位(讚數!) 先來看看咱們相關的App Inventor 網路爬文教學。本文程式碼請拉到頁面最下方。

螢幕快照 2015-01-11 下午10.23.28

這樣後續可以做的事情可真不少,例如CAVEDU 設計首席小游的取讚轉盤

#!/usr/bin/env python3
import json
import http.client

if __name__ == '__main__':
    conn = http.client.HTTPConnection('graph.facebook.com', 80)
    conn.request('GET', '/CAVEEducation')
    response = conn.getresponse()

    if response.status != 200:
        print('failed')
        exit(1)

    response_body = response.read()
    data = json.loads(str(response_body, 'UTF-8'))
    print('# of likes:', data['likes'])
get Facebook fanpage # of likes

python on EV3 機器人-使用python控制EV3馬達

這次分享的是由ev3主機的python檔案,讓EV3的A、B兩個馬達持續轉動,

2_4_python

想用python控制EV3馬達,需要(1)先安裝dev-ev3的環境(python on EV3 機器人 – 整理好的 img 檔送給您!),

建議(2)先體驗dev-ev3環境下控制馬達(Python EV3 速記 – 控制馬達轉速與方向)

與(3)基本的python語法(python on EV3 機器人-基礎python撰寫)

這是這次分享的的程式碼,程式的內容由python on EV3 機器人-基礎python撰寫所改編,

不一樣的是這次加入python-ev3模組的內容,我們可以使用這個模組裡的語法。

執行此程式後,輸入”A”可以讓馬達A轉動,輸入”B”可以讓馬達B轉動,輸入”stop”可以讓所有馬達停止轉動,

2_1_python

以下皆為使用python-ev3模組的內容:

(1)將模組ev3.lego輸入至檔案中

(2)由LargeMottor決定控制哪一個馬達(A、B、C、D)

(3)使用reset重新設置馬達,重複宣告使用馬達時,需要重新將數值設置

(4)開啟regulation_mode模式(on、off),開啟會使你的馬達輸出比較穩定,比較不受剩餘電池電量的影響

(5)使用run_forever讓馬達持續運轉(-900~900)

(6)使用stop讓馬達停止

你可以在dev-ev3的環境下編寫python的檔案,也可以在你的電腦編寫好檔案之後再把檔案傳送到ev3,

小編我是在電腦寫好主要程式後再傳送,推薦這款好用的軟體cyberduck,支援Windows與Mac系統

2_3_python

選擇SFTP傳輸協定後,輸入EV3主機的ip並輸入帳號與密碼,你的電腦就可以與EV3進行檔案傳輸了

馬上來體看看吧~

python on EV3 機器人 – 整理好的 img 檔送給您!

本篇要介紹如何燒錄給樂高EV3 機器人開機用的SD卡,內含的作業系統是 Debian,並已經掛好版本相當新的 Python2 與 Python 3。本文是按照 ev3dev 網站來操作,歡迎您與我們一起來玩玩看喔!

先讓大家看看成功的畫面,讚啦!在這個 terminal 下面可以玩的事情實在是太多了。要做到以下畫面,您需要兩件事:

1. 下載 img 映像檔並燒錄到 micro SD 卡中,插入EV3的SD卡插槽即可開機(無需更改原本的作業系統)2. 完成 Ethernet over USB,讓這台EV3模擬成一個網路裝置。我們就是這樣透過 SSH 來登入它,它也能利用電腦的網路來上網更新套件等等。本文以 Windows 來示範(說真的在 Linux / MAC 上來處理簡單多了)

009

1. 請下載我們幫您包好的 img 檔,與官方的差別在於我們有幫大家把一些python 套件與官方開發的 EV3 library 整理得更好一點。這個解壓縮完會有 15G,所以您需要16G 的記憶卡喔。使用 Win32DiskImager 燒錄,燒錄完畢插入 EV3 的 micro SD slot 即可開機。開機完成畫面如下:

 

2. 請進入 USB 選單,啟動RNDIS(Remote Network Driver Interface Specification、遠端網路驅動程驅動規格… 好拗口)。接著回到上一層,進入 Networking 選單,啟動 Gadget 選項即可。

    

 

3. 接著請將您的 EV3 接上電腦,並開啟控制台 / 裝置管理員。在此由於 Windows 會自動安裝好 driver ,但這不是我們要的,所以在此要重新做一遍。請在網路介面卡下找到 Remote NDIS based Internet Sharing Device

004

4. 請對它點選右鍵來更新驅動程式,並選擇[從指定位置來安裝]。接著選擇網路介面卡,製造商選擇 Microsoft,並在右側找到 Remote NDIS Compatible Device。這時就會您是否確定要更新 driver,點選確定後即可,在此需要等一下(約1~2分鐘)。

5. 最後一步是把我們聯外的網路分享給 EV3 使用。請回到控制台 / 網路與共用中心,請點選畫面左側的[變更介面卡設定]。您在其中會看到一個 USB Ethernet/RNDIS Gadget,這就是 EV3 啦。

005

6. 請回到控制台/網路與網際網路/網路連線,找到您聯外的網路名稱(下圖為 ROBOTKINGDOM-WIRELESS),對它點右鍵,找到[共用]選項。

006

7. 請勾選其中的選項,這樣就能讓 EV3 藉由這個網路來聯外了。

 

008

 

8. 電腦設定完成了,請回到EV3 主畫面。Networking / Manage connections,會看到一個 Wired 選項,請點選它

在 IPv4 標籤下點選 Change…

選擇 Load Windows Defaults,藉此仔入我們之前辛辛苦苦做好的設定啊 QQ

這時還沒有連線,所以您會看到 State 顯示為離線(offline)。請切到 Conn. 標籤,點選 Connect automatically,這樣 EV3 就會在每次開機時試著去用這組設定去連上網路。

最後點選Connect,一切順利的話就可以在 IPv4 標籤下看到您的 EV3 取得的 IP了!下圖為 192.168.137.3,我們就是透過這個 IP 來登入 EV3。

 

9. 請用 putty 或其他類似功能的連線程式,使用 SSH 連到這個 IP。預設帳密為 root / r00tme <- 兩個 zero 不是O。登登登!登入之後的歡迎畫面如下:

009

 


 

 

 

 

登入之後就來玩看看,首先切換到  /sys/class 裡面看看有什麼,相關的硬體都有:gpio (EV3的按鈕好像是歸類在這,還要確認一下)、leds、tacho-motor 與 i2c 裝置等等。再進入 /tacho-motor 資料夾看看:有一個 motor0 ,這代表一個實體樂高EV3馬達。

請注意您必須真的接上一個馬達才會在 /tacho-motor 資料夾下看到 motor0

013

輸入 cat /sys/class/tacho-motor/motor0/position 即可讀取馬達角度感測器值,下圖讀了兩次:-33 與 239

011

要直接這樣子讓馬達轉起來也是可以的:請先 echo 50 > ~/duty_cycle_sp,代表設定馬達電力為 50%,接著再 echo 1 > ~/run。馬達就會轉動啦!延伸閱讀:Python EV3 速記 – 控制馬達轉速與方向

012

Python EV3 速記 – 控制馬達轉速與方向

EV3 改用 Linux 為核心之後,真是創意無限。只要燒錄好 SD 卡,就能讓 EV3 用不同的作業系統開機。繼 leJOS 之後,也可以用 Debian 開機了。既然是一台完整的作業系統,自然是寫什麼程式語言都可以,但 python 最近實在是太夯了,所以 ev3dev 這個網站就提供了全套的 python + EV3 教學。您只要燒錄好 SD 卡並設定好 Ethernet over USB 就可以了。(本文為速記,日後會補上完整的環境建置教學)

http://www.ev3dev.org/

先來看影片,下指令控制馬達轉動,停止還可以控制轉速

控制轉速:echo 50 > /sys/class/tach0-motor/motor0/duty_cycle_sp   (0為靜止,100為最高速)

轉動: echo 1 > /sys/class/tach0-motor/motor0/run

停止:echo 0 > /sys/class/tach0-motor/motor0/run

設定好 Ethernet over USB 之後,可以透過 Putty 小程式來 SSH 登入 EV3,下圖中的 192.168.137.3 就是 EV3 的 IP。登入後就能進行各種 linux command。

009

EV3 的各類硬體裝置(LED,發音器,馬達,感測器等等)是列在 /sys/class 中,馬達是位於 /tacho-motor 資料夾中

013

在 terminal 中輸入 cat /sys/class/tach0-motor/motor0/position 即可讀取指定馬達的角度感測器值。下圖共讀取兩次: -33 與 239

011

 

141211_RaspberryPi樹莓派研習營 使用openCV視覺函式庫@未來廠房

第四周未來廠房的樹莓派研習營,本週要介紹的是在樹莓派上運行opencv函式庫。opencv函式庫主要功能在於影像資料的處理,不僅能夠處理靜態影像(圖片、照片等…),也能即時處理動態影像(webcam傳送的即時影像),這次分享的是使用攝影機,讓攝影機能夠辨識眼前的綠色球體。

不過要把 openCV 在 Pi 上面的環境建好需要一點功夫,所以我們已經幫大家準備好了 SD 卡的映像檔,下載之後燒錄,開機就能開始玩 openCV了

[感謝祭,有下有推]Raspbian openCV img 檔下載 – 可用於 Raspberry Pi B、B+ 以及 Banana Pi

這次主要分為三個主題分享

1、讓Webcam連線至樹莓派,將影像串流成功傳到Python開啟的視窗

camera01

2、將影像影像平滑化,找出綠色的物件,將物件以外的影像變為黑色,物件變為白色

camrea02

3、找出綠色物件的邊界值,將物件用框架框起來

camera03

這次分享的內容主要是電腦再進行視覺辨識時,需要做的步驟,

比如透過(1)平滑化,將影像變模糊,減少綠色物件因為光造成顏色不同而產生的辨識錯誤

使用(2)RGB轉換HSV,降低光對顏色造成的影響

接下來(3)調整可以接受的顏色範圍。這樣我們就可以把指定的顏色以白色顯示,其他部分以黑色顯示。

camrea04

接著找出綠色的邊界值,找出辨識物件的對角線頂點,將物件以綠色的線框起來。

這樣就可以在樹莓派上面看到辨識出來的影像囉。

camrea05

這週大家也是全神貫注的聽~12月18日,第五週的課程會上GPIO,

除了上LED和按鈕控制之外,也會把樹莓派裝在車上控制直流馬達,敬請期待!!!

141118 電鈴工作坊@松山文創園區 台北數位藝術中心主辦

11/18 由台北數位藝術中心主辦的 Raspberry Pi 電鈴工作坊,在松山文創園區5號倉庫舉辦。原本主辦單位還擔心辦在週二白天會不會人不多,結果很快就客滿了。好的主題一定會有人支持,還有一家三口來參加呢,爸媽願意帶小朋友參加一些動手做的課程,真是太棒了。

2014-11-18-18_Fotor

本次的主題非常酷!是用 Raspberry Pi 來解析一個 Midi 音樂檔,音樂檔中用什麼節奏來播放音符,Raspberry Pi 就會用這個節奏去帶動電磁閥來敲打鐵琴。程式語言是用 Python,對這份程式有興趣的朋友請點我下載。本日教學投影片請見文末。

學員們早上是焊接並組裝電鈴,聽說隔天還會教大家怎麼設計電路板,太充實啦!下圖中學員是在焊接要接在 Raspberry Pi GPIO 腳位上的控制板

2014-11-18 17.19.01

2014-11-18 17.18.49

這就是我們的電鈴成品,電磁閥帶動木片去敲打鐵管,就可以發出五種不同的聲音。

2014-11-18 13.17.19

到了下午則開始進入 Raspberry Pi 教學。有幾位學員之前沒有玩過 Pi ,所以在燒錄作業系統上花了一點時間。阿吉老師很快教大家一些基礎的系統操作之後,就要開始[認識] 這隻 Python 程式了。簡單來說,程式會去把指定的 midi 檔解碼,並根據對應的時間透過 GPIO 來驅動電磁閥。這樣不論您怎麼寫歌,Raspberry Pi 都會彈出來喔!

這位同學,您為何眉頭深鎖呢?ccc

2014-11-18 17.10.08

2014-11-18 17.30.12

這是本日的教學投影片,是 CAVEDU 一年辦理20場以上的 Raspberry Pi 研習的精華喔,裡面整理了許多疑難雜症的解決方法。如果您還意猶未盡的話,可以參考葉難的專業教學部落格


 

Raspberry Pi 雙輪機器人與3D列印攝影機底座

來看看 Raspberry Pi 使用 L293D 馬達控制晶片控制兩個直流馬達,這是本周公民營教師研習[視覺辨識機器人] 的車身喔

三台機器人排排站,感覺就很蓄勢待發!

2014-07-24 18.06.02

每位老師整理線的方式各有不同,不過如果要讓機器人更好的話,還是要用永久性電路板或是自行銲接洞洞板比較好。不然接點容易鬆動

2014-07-24 18.05.55

基本單馬達 code (使用 RPi.GPIO 函式庫)


import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BOARD)

Motor1A = 16
Motor1B = 18
Motor1E = 22

GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)

GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1E,GPIO.HIGH)

sleep(2)

GPIO.output(Motor1E,GPIO.LOW)

GPIO.cleanup()
Rapsberry Pi 控制單顆馬達

 

各位客倌,請看看早上用 DesignSpark Mechanical 來畫攝影機底座,下午就可以3D列印出來了。科技實在是進步得很快啊

2014-07-24 11.03.13

 

兩個扣環直接,還有一個肋條來提高強度

2014-07-24 14.13.09

放上攝影機,燈燈燈~

2014-07-24 14.13.18

 

Raspberry Pi 機器人P控制循跡 – 使用BrickPi轉接板

這是一台使用Raspberry Pi 為核心的循跡機器人, 使用Dexter Industries 公司所生產的 BrickPi 轉接板來接上樂高NXT的感測器與馬達。請看影片中的機器人使用了比例控制方法,所以動作相當順暢:

[youtube=http://youtu.be/qdDGpQBW0YA]

這是我們1/24 25兩天研習時,現場demo機器人的照片。當然您可以直接從 Raspberry Pi 的 GPIO腳位來控制馬達與感測器,一樣可以做出機器人而無需使用 BrickPi 轉接板。之所以使用它當然是因為樂高零件的方便性囉,當然 Dexter Industries 的周邊感測器也都有現成的函式庫可以用,端看您如何選擇囉

2014-01-24 17.17.21

看完也想玩玩看嗎?   歡迎報名 14/02/23 Raspberry Pi 單板電腦整合機器人研習營

延伸閱讀:

[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達

BrickPi_用RasberryPi操控NXT

以下為Python程式碼:

from BrickPi import *

BrickPiSetup()

BrickPi.MotorEnable[PORT_A] = 1
BrickPi.MotorEnable[PORT_B] = 1

BrickPi.SensorType[PORT_1] = TYPE_SENSOR_LIGHT_ON

BrickPiSetupSensors()

while True:

result = BrickPiUpdateValues()

if not result:
light = BrickPi.Sensor[PORT_1] print light

white = 476
black = 626
mid = (white + black)/2
last_power = 255*0.7 #70% of motor power
M = last_power/(black – white)

power_A = int((light – mid)*M + last_power)
power_B = int((light – mid)*(-1)*M + last_power)

if(power_A >= 255):
power_A = 255

elif(power_A <= -255):
power_A = -255

if(power_B >= 255):
power_B = 255

elif(power_B <= -255):
power_B = -255

print str(power_A) + “|” + str(power_B)

BrickPi.MotorSpeed[PORT_A] = power_A
BrickPi.MotorSpeed[PORT_B] = power_B

BrickPiUpdateValues()

 

 

131209 Raspberry Pi社群聚會 #2 @CLBC

12/9  星期一晚上是第二次的Raspberry Pi社群聚會,地點在捷運大安站旁的 CLBC。今天晚上的主題都偏硬體也就是 Pi 的 GPIO 應用,CAVE 也來分享一下心得,有demo 使用 Scratch 來控制 Raspberry Pi 雙馬達機器人(使用 BrickPi 擴充板)。

現場真的很熱鬧啊,大家心中對於要用 Raspberry Pi 來做些什麼都有了初步的想法,真好!期待第三次的聚會喲~   

主題1:深入淺出Raspberry Pi GPIO,sosorry(台灣樹莓派)

主題2:Raspberry GPIO機器人與XBMC家庭劇院(投影片請按我) ,薛皓云,曾吉弘(CAVE教育團隊)

主題3:為Raspberry Pi加入ADC,以MCP3008為範例,葉難(Raspberry Pi從入門到應用作者)

 

延伸閱讀資料:

1. LEGO MINDSTORMS Motors with Raspberry Pi (BrickPi 0.1) <- 使用鍵盤來控制Raspberry Pi機器人動作

2. Magpi 雜誌的 webiopi

3. CAVE 實驗室 Raspberry Pi 分部

  2013-12-09 20.19.14

現場有一位來賓參考了  BrickPi 的文件自己做出一台 Raspberry Pi 機器人,還有 Webcam。厲害厲害~ (照片中右邊是 CAVE 的 BrickPi 機器人)

2013-12-09 20.19.23

sosorry先生,抱歉站太遠照了,只有照到背影

2013-12-09 19.44.45

 

 

 

CAVE 皓云老師

2013-12-09 20.27.20

葉難先生

2013-12-09 21.21.02

接下來是機器人特寫

2013-12-09 21.59.03

把樂高NXT的六芯線剪開之後,藉由麵包板去接到 Raspberry Pi上對應的 GPIO 腳位就可以控制了。

您可以自己來也可以偷懶使用現成的 BrickPi,端看個人的需求囉。

2013-12-09 21.59.09

利用機器人肚子的空間來放行動電源,電池的重量對於機器人的性能真的有很大的影響哩。

2013-12-09 21.59.23

這張有遠望的感覺~

2013-12-09 21.59.55

[開箱文]BrickPI – 讓 Raspberry Pi 接上您的樂高機器人感測器與馬達

[BrickPi_用RasberryPi操控NXT]

BrickPi 是 Dexter 公司所生產的  Raspberry Pi 擴充板,可以讓 Raspberry Pi 可以同時接上4個馬達(最新的EV3馬達也可以唷!),以及5個感測器,算是相當豪華的應用。

先來看看 Dexter 提供的成品照片

BrickPi10 BrickPi08 BrickPi07 BrickPi for LEGO and Raspberry Pi BrickPi02 BrickPi01

 

BrickPi 共有兩種規格:BrickPi Basic Power(售價$2600) 與 BrickPi Advanced Power(售價$3200),Advanced Power 版本對於電源有比較好的保護。以下照片都是使用Advanced Power 來拍攝。至於控制的語言有 Python、C與 Scratch

請密切注意 CAVE 之後的 BrickPi 教學文章!

 

2013-12-04 11.20.09

 

Motor_Ports_Blue Sensor_Port_Layout_Yellow-copy

2013-12-04 11.20.24

好~   與 Raspberry Pi 組起來看看吧!指揮艇組合~   您可以看到尺寸剛剛好,在設計外殼以及線路配置上都很方便。

2013-12-04 11.22.02 2013-12-04 11.22.13 2013-12-04 11.22.22

Magpi雜誌最近有 Raspberry Pi + Arduino 系列專欄

MagPi 是一個免費的Raspberry Pi 雜誌,最新一期是2013年11月號(Issue18),從Issue 15 (2013 8 月)開始有一系列 Arduino 的專題, 對於硬體有興趣的朋友, 這些文章非常值得一讀唷!

Issue 18中就有說到如何使用 Nanpy  這個 library 直接在command line 中執行 Arduino Sketch, 可以避免在 Raspberry Pi 上開啟Arduino IDE 過慢的情形, 是個相當好用的小工具.

rpi01

 

Issue 16 中也提到了如何在 Raspberry Pi 去控制 Arduino 端的類比腳位,以及LCD模組.

rpi02

Raspbmc – Raspberry Pi 家庭劇院

Raspbmc 是 XBMC 的 Raspberry Pi 版本,讓您輕鬆將 Raspberry Pi 變成一台
 
請注意:Raspbmc 是另一個可安裝於 Raspberry Pi 的作業系統,專門用於播放各種影音,建議您準備另一張 SD卡來抽換,這樣就不用反覆安裝作業系統。
 
下圖是我們將 Raspberry Pi 灌好接到一般液晶電視上來看影片(HDMI),很方便唷!