2015/06/29

Raspberry Pi情報彙整(52)

我收集整理網路上看到的、感興趣的、跟Raspberry Pi相關的資訊,如果您發現任何新奇驚人的專案、新聞、活動等等,還請留言告知。

LifeBox with Raspberry Pi,有藍黃兩物種,不斷複製並競爭,不斷地形成新的樣子(畫面),可以由旋鈕改變參數。聽起來類似於Conway's Game of Life,不過我沒找到背後的演算法規則。

Kite mapping - Raspberry Pi,熱氣球太貴買不起嗎,試試看風箏吧,也能把相機與rpi送上天。
Garden Robot - Raspberry Pi,基金會的新教材:花園機器人,可以偵測光強度、溫濕度、土壤濕度,收集資料並儲存。
Raspberry Pi Official Case - Raspberry Pi,哇,rpi基金會官方設計推出的外殼,嗯,市面上已經有超多很棒的外殼產品,而且乍看之下,似乎看不出這個外殼是rpi官方產品;不過造型仍不錯,可看看文章,詳述設計過程。
Diddyborg metal edition - Raspberry Pi,PiBorg新產品,限量喔。在文章中,這台車還可以載一個人,真的還假的?
Flappy Brain EEG controlled game by Albert Hickey @winkleink » RasPi.TV,用腦波玩Flappy Bird,嘿,能過關嗎?
Outernet - Raspberry Pi,outernet?這什麼東西啊?透過與地球同步旋轉的衛星,廣播發送各種資料內容,譬如醫藥健康、維基百科、新聞消息等,屬於單向傳輸;這麼一來,許多遭受管制的地區,只要使用簡單的裝置,就可以接收這些資料,嘿嘿。
Moving Timelapse Féria de Nîmes 2015 | Nitchevo !,把縮時攝影裝置放在身上,呃,還不錯,不過拍下來的作品,看得我頭昏眼花。
PicoCluster - Computer and STEM education for everyone! by PicoCluster LLC — Kickstarter,推廣STEM教育的硬體載具,含有五台Pi 2,應該類似於運算叢集的概念,募資成功的話,之後會陸續教材與學習內容。
Raspberry Pi Posters,免費且有趣的rpi海報,真有心啊。
Naturebytes Wildlife Cam Kit - Digital Making for Wildlife by Naturebytes — Kickstarter,戶外攝影套件組合,捕捉野生動物的身影。

其他:

2015/06/26

在Raspberry Pi(Raspbian)上安裝matplotlib、使用pylab繪製簡單的圖形

之前已試過「在Cygwin上安裝matplotlib、使用pylab繪製簡單的圖形」,這篇則是試試在Raspberry Pi 2加Raspbian上做同樣的事情。

PS 已經忘記如何安裝了,印象中並無碰到困難,不是使用apt-get安裝Debian套件,就是使用pip安裝Python套件。

先試試輸出圖形到檔案吧,程式碼如下:

import matplotlib
matplotlib.use('Agg')

import pylab

pylab.figure(1)
pylab.plot([1,2,3,4,5], [1,7,3,5,2])
#pylab.show()
pylab.savefig('a.png')

沒問題,得到圖檔a.png後,如下:

然後試試直接在圖形視窗模式下直接顯示,我是以Windows的遠端桌面連線,透過RDP協定遠端登入,所以Raspbian應該安裝xrdp套件。

程式碼如下:

import pylab

pylab.figure(1)
pylab.plot([1,2,3,4,5], [1,7,3,5,2])
pylab.show()

可惜出現底下的錯誤訊息,雖會跳出一個視窗,但其內容是空白的。

** (a.py:2917): WARNING **: Can't load fallback CSS resource: Failed to import: The resource at '/org/gnome/adwaita/gtk-fallback.css' does not exist

** (a.py:2917): WARNING **: Can't load fallback CSS resource: Failed to import: The resource at '/org/gnome/adwaita/gtk-fallback.css' does not exist
/usr/lib/python2.7/dist-packages/gi/types.py:113: Warning: Source ID 5 was not found when attempting to remove it
  return info.invoke(*args, **kwargs)

趕緊拜拜谷歌大神,雖然也有人碰到類似的問題,但似乎沒有一槍斃命的解決辦法;試著安裝gnome這個套件:

$ sudo apt-get install gnome

然後再試一次,嘿,成功了。
雖然還是有錯誤訊息。


參考資料:

2015/06/25

在Cygwin上安裝matplotlib、使用pylab繪製簡單的圖形

matplotlib是一套2D繪圖的Python程式庫,支援各式各樣的圖形表格;透過pyplot與pylab提供類似於MATLAB的介面,功能強大,用起來卻非常簡單,因為各種你會需要的功能,都已經幫你準備好了。

底下列出幾個從官網抓來的展示圖。

若要在Windows上安裝matplotlib,最簡單的方法是安裝已經統包整理好的套件,諸如Python(x,y)Enthought CanopyContinuum Anaconda,譬如安裝Canopy之後,開啟編輯器,輸入底下的範例程式碼:
import pylab

pylab.figure(1)
pylab.plot([1,2,3,4,5], [1,7,3,5,2])
pylab.show()
然後執行,嘿,便會出現新視窗顯示下圖。
真不錯,不過這篇的重點是在Cygwin上安裝matplotlib。安裝Cygwin本身的部分,請參考這篇

開啟Cygwin終端機,試著以底下指令安裝matplotlib:
$ pip install matplotlib
Collecting matplotlib
  Using cached matplotlib-1.4.3.tar.gz
    Complete output from command python setup.py egg_info:
    IMPORTANT WARNING:
        pkg-config is not installed.
        matplotlib may not be able to find some of its dependencies
    ===================================================================
    Edit setup.cfg to change the build options

    BUILDING MATPLOTLIB
                matplotlib: yes [1.4.3]
                    python: yes [2.7.10 (default, Jun  1 2015, 18:17:45)  [GCC
                            4.9.2]]
                  platform: yes [cygwin]
...省略...
    ==================================================================
                            * The following required packages can not be built:
                            * freetype

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vScgZ4/matplotlib

出現錯誤訊息,因為沒有matplotlib需要的程式庫套件,我試了很多遍,參考了網路上許多文章,大概需要的套件有freetype、python-gtk、python-tk、libpng、gcc等,但因為試來試去,結果安裝了一堆,也不知道哪些其實是不需要的;我安裝的Cygwin套件有:libfreetype-devel、libfreetype6、python-gtk2.0、python-gtk2.0-devel、python-tkinter、libpng16、libpng16-devel、libpng-devel、libX11-devel、pkg-config、gcc-core

然後再試著安裝,成功囉:

$ pip install matplotlib
Collecting matplotlib
  Using cached matplotlib-1.4.3.tar.gz
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.6 in /usr/lib/python2.7/site-packages (from matplotlib)
Requirement already satisfied (use --upgrade to upgrade): six>=1.4 in /usr/lib/python2.7/site-packages (from matplotlib)
Collecting python-dateutil (from matplotlib)
  Downloading python_dateutil-2.4.2-py2.py3-none-any.whl (188kB)
    100% |████████████████████████████████| 192kB 524kB/s
Collecting pytz (from matplotlib)
  Downloading pytz-2015.4-py2.py3-none-any.whl (475kB)
    100% |████████████████████████████████| 475kB 262kB/s
Requirement already satisfied (use --upgrade to upgrade): pyparsing>=1.5.6 in /usr/lib/python2.7/site-packages (from matplotlib)
Collecting nose>=0.11.1 (from matplotlib)
  Downloading nose-1.3.7-py2-none-any.whl (154kB)
    100% |████████████████████████████████| 155kB 655kB/s
Collecting mock (from matplotlib)
  Downloading mock-1.0.1.tar.gz (818kB)
    100% |████████████████████████████████| 819kB 187kB/s
Building wheels for collected packages: matplotlib, mock
  Running setup.py bdist_wheel for matplotlib
  Stored in directory: /home/yehnan/.cache/pip/wheels/12/98/77/c3a045fea5159ea287a3db9d1c55c471d452019fecfde2f194
  Running setup.py bdist_wheel for mock
  Stored in directory: /home/yehnan/.cache/pip/wheels/c9/b4/72/4de2802cbc4bfd82f938ff92015e1b42f01131583675ab4d00
Successfully built matplotlib mock
Installing collected packages: python-dateutil, pytz, nose, mock, matplotlib
Successfully installed matplotlib-1.4.3 mock-1.0.1 nose-1.3.7 python-dateutil-2.4.2 pytz-2015.4

花費了不少時間,接著執行剛剛的範例程式碼(假設檔名為a.py):

$ python a.py
/usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)
/usr/lib/python2.7/site-packages/matplotlib/backends/backend_gtk.py:61: GtkWarning: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
  cursors.MOVE          : gdk.Cursor(gdk.FLEUR),
...省略...
  File "/usr/lib/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 61, in
    cursors.MOVE          : gdk.Cursor(gdk.FLEUR),
RuntimeError: could not create GdkCursor object


呃,DISPLAY?啥?不知道怎麼解決,不過可以把程式碼換成底下這一份,不要以圖形視窗介面顯示,而是儲存到PNG圖檔。

import matplotlib
matplotlib.use('Agg')

import pylab

pylab.figure(1)
pylab.plot([1,2,3,4,5], [1,7,3,5,2])
#pylab.show()
pylab.savefig('a.png')

執行後便會得到圖檔a.png,如下:
耶,成功囉。

有高手留言,需再安裝Cygwin/X,便能以pylab.show()顯示,讓我們試試看囉。再次執行Cygwin安裝程式,選擇套件xorg-server、xinit、xlaunch並安裝。

在Cygwin終端機下輸入指令startx,會看到一個全黑視窗(立刻會跳出),以及出現一堆訊息,然後就沒了。
嗯,試著從程式集選擇Cygwin-X的XWin Server:
看到底下的終端機介面,輸入$ python a.py執行範例程式(使用pylab.show()那一個):
哇,真的出現囉,收工。

參考資料: