2013/12/31

Raspberry Pi情報彙整(16)

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

Raspbian有新版本了2013-12-20-wheezy-raspbian.zip,包含V4L2(Video for Linux)相機驅動程式、Wolfram Mathematica、硬體加速的X驅動程式、更新韌體、Linux核心也更新為3.10。另外,NOOBS也更新了。

Web browser beta,這套瀏覽器就叫做「Web」,真是容易混淆啊。為ARMv6特別最佳化,並且支援HTML5的影像解壓縮能力。請注意,仍處於beta階段,安裝後可能會與其他軟體起衝突,我在Raspbian上安裝後,發現Midori不能用了。
Perfect All-in-One Raspberry Pi Starter Kit (UK Only),英國限定的套裝組合,老實說我有點小驚訝,銷售量會有多少呢。
Sonic Pi Flight of the Bumblebee with HDMIPi,使用Sonic Pi來演奏大黃蜂(Flight Of The BumbleBee)。
Raspberry Pi Power Cat Feeder,自動餵貓專案;懶惰真的是人類進步的原動力啊。
耶誕節專案糖果手杖燈光
Top 10 Raspberry Pi Hacks of 2013,回顧一下2013年有哪些跟rpi相關的專案吧,這篇文章挑出10個,我個人比較喜歡底下這四個。
BeagleBone Black SBC surpasses 100,000 units,除了Raspberry Pi外,我有在關注的便是BeagleBone BlackCubieboard,BBB銷售也已經超過10萬(保守估計),恭喜啊,硬體規格高、價格也幾乎跟rpi差不多,相當不錯。

2013/12/23

Raspberry Pi情報彙整(15)

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

Raspberry Pi社群聚會 #2結束了,可以到這裡看看其他照片

Falling Blocks on Raspberry-Pi,俄羅斯方塊永不退流行,試試用Wii-Nunchuck來玩吧。
Sleepi,還不能看懂時間的小小孩,天還沒亮就跑進父母房間吵醒你嗎,試試這個紅綠燈形式的鬧鐘吧。話說回來,這應該用不到rpi吧,普通的微控制器開發板加RTC應該就行了。
MakerBot + RaspberryPi + Google Chrome = 快樂動手做!,隨時都要檢查3D印表機的狀態,好麻煩啊,何不加裝rpi打造自動回報的能力呢,輕輕鬆鬆在瀏覽器裡觀看。
Gertenlights,Gertboard與Gertduino的設計者又有新作品了,因應耶誕節的5x5 LED擴充板。
No More Woof,正在Indiegogo群眾募資中,據稱能讀取狗狗的EEG(Electroencephalography ,腦電波),至少可辨識犬隻的數種情緒「累了」、「餓了」、「好奇」、「想尿尿」。不過網頁上也清楚地指出,目前尚在研發階段,所以這次募資等於是募集研發資金,數年內大概拿不到產品。
Talking Reindeer,耶誕節快到了,許多Xmas專案紛紛出爐,何不與家人一同打造會說話的鹿頭呢,使用PIR偵測是否有人靠近,閃爍LED並發出語音。
Industrial applications - going postal in Portugal,哇,業界也開始採用rpi囉,葡萄牙的郵政系統汰換掉老舊的文字型LCD,改採rpi與彩色LCD螢幕。
An inflatable sex doll called Missy has been sent into the stratosphere (Wired UK),哇哩咧,除了把小熊絨毛玩偶裝上氣球,居然還將充氣娃娃送上天,真是夠了。
BrickPi Bookreader ← BrickPi,電子書閱讀器,相當厲害,結合Raspberry Pi與相機模組、BrickPi、LEGO Mindstorms,翻閱電子書、拍照、將文字轉換成語音,當你累了,就由它幫你讀書吧。

2013/12/22

Arduino藍牙無線燒錄:使用Adafruit公司的Bluefruit EZ-Link

我買了Adafruit公司的藍牙模組Bluefruit EZ-Link - Bluetooth Serial Link & Arduino Programmer - v1.0,它就是個支援SPP序列傳輸的基本藍牙模組,與電腦配對後就會以序列埠出現。

一般的藍牙模組需要先設定一堆組態,而這個產品能夠自動偵測並調整傳輸速率,支援常見的速率2400、4800、9600、19200、38400、57600、115200、230400,相當不錯。而且還能與電腦的序列埠自動同步DTR/RTS/DSR這些控制線路的訊號,一般模組多半沒有,甚至根本不拉出這些腳位。

結合上述功能,便可以經由藍牙介面無線燒錄Arduino的草稿碼,但能加上此功能的板子限於Uno、Duemilanove、Mega、以及其他使用ATmega328/168/1280/2560微控制器晶片並加上「USB轉Serial」轉換器的相容開發板,不能用於模擬出USB埠的Arduino板子(譬如Leonardo與Micro)。

這就是Bluefruit EZ-Link,長2.0公分、寬4.1公分、高0.4公分。

先介紹一下規格:
  • 含有穩壓器(regulator),可輸入3.3~16V直流電源,轉換成3.3V供應藍牙晶片。
  • 含有準位調節器(level-shifting),在外部訊號與內部藍牙晶片之間進行電壓準位轉換,所以可連接3.3V或5V的Arduino開發板。
  • 有三個狀態LED,分別標示為TX(傳送)、RX(接收)、Conn(連線狀態),Conn若快速閃爍代表沒有配對,若緩慢閃爍代表已配對但並未開啟連線,若亮著代表電腦端開啟序列傳輸介面並進行資料傳輸。
  • Pair按鈕,長按5秒後可重新配對。
  • 模組背面有JST插座,由這裡提供電源的話,那麼就能從Vin供電給Arduino板。
接下來試試無線燒錄吧。線路如下:
Arduino使用9V電池供電。
Bluefruit的Vin接Arduino 5V腳位。
Bluefruit的GND接Arduino GND腳位。
Bluefruit的DSR接Arduino GND腳位。
Bluefruit的TX接Arduino RX(腳位0)。
Bluefruit的RX接Arduino TX(腳位1)。
Bluefruit的DTR,接1uF電解電容的陰極,電容陽極接Arduino RESET腳位。
藍牙模組部分的近照。
開啟電源後,首先要與電腦端進行藍牙配對,預設配對碼是1234,過程此處就不詳述,細節可看這裡。注意,電腦端的藍牙至少要符合Bluetooth v2.1,有些非常便宜的模組僅支援2.0。

成功後,開啟Arduino IDE,便可看到代表藍牙模組的序列埠。譬如在我的Mac上,會出現兩個含有AdafruitEZ-Link字樣的裝置,需選擇「cu」那一個。
然後就可以經由藍牙無線燒錄囉,耶!

2013/12/21

Raspberry Pi:使用MCP23008擴充數位腳位

這篇要示範使用MCP23008這顆晶片擴充數位腳位,將會以其中一個腳位作為輸出,點亮LED,另一個腳位作為輸入,讀取開關的狀態。

MCP23008的傳輸介面是I2C,支援8個擴充腳位,每個腳位可驅動20~25mA電流,不過全部可驅動的電流則是125mA(流出去)或150mA(流進來)。

MCP23008與Raspberry Pi的接線如下:
MCP23008的SCL接rpi的SCL(針腳5)。
MCP23008的SDA接rpi的SCL(針腳3)。
MCP23008的A2、A1、A0,都接地。
MCP23008的RESET(逆向邏輯)接3.3V,不重置。
MCP23008的Vss,接GND。
MCP23008的Vdd,接3.3V。
MCP23008的GP0,接LED。
MCP23008的GP1,接開關。

I2C屬於匯流排架構,同一線路上可裝設254個I2C裝置,每個裝置須擁有獨一無二的位址。MCP23008的A0、A1、A2便是可以設定位址的腳位。

電子線路完成後,首先要開啟Raspbian支援I2C的部份。因預設不載入I2C的驅動程式,請修改/etc/modprobe.d/raspi-blacklist.conf,加上註解,如下:
# blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

若想開機後就載入I2C模組,可修改/etc/modules,加入底下這兩行:
i2c-bcm2708
i2c-dev

也可以自己手動以底下指令載入:

$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev

若成功載入I2C模組,下指令lsmod便可看到i2c_dev與i2c_bcm2708的身影。
$ lsmod
Module                  Size  Used by
i2c_dev                 5594  0
cpufreq_stats           2797  0
snd_bcm2835            16432  0
snd_pcm                77728  1 snd_bcm2835
snd_seq                53482  0
snd_timer              20110  2 snd_pcm,snd_seq
snd_seq_device          6462  1 snd_seq
snd                    58744  5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
snd_page_alloc          5169  1 snd_pcm
spidev                  5248  0
leds_gpio               2243  0
led_class               3570  1 leds_gpio
i2c_bcm2708             3947  0
spi_bcm2708             4841  0

然後更新一下軟體套件,安裝I2C的工具程式:

$ sudo apt-get update
$ sudo apt-get dist-upgrade -y
$ sudo apt-get install python-smbus i2c-tools

安裝後,執行底下指令可查出MCP23008的I2C位址。Rev 1板子的參數是0、Rev 2板子的參數是1。
$ sudo i2cdetect -y 1

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

由此可知位址是0x20,因為之前把A0、A1、A2都接地。

接下來安裝C介面的程式庫WiringPi

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

安裝後,便可開始寫程式了:

#include <stdio.h>
#include <wiringPi.h>
#include <mcp23008.h>

#define PIN_BASE 65 // 任何大於64的數字
#define ADDRESS 0x20
int main(int argc, char *argv[])
{
  int i;
  int s;
  wiringPiSetup();
  mcp23008Setup(PIN_BASE, ADDRESS);

  pinMode(PIN_BASE + 0, OUTPUT); // 輸出,LED
  pinMode(PIN_BASE + 1, INPUT); // 輸入,開關

  while(1){
    s = digitalRead(PIN_BASE + 1); // 讀取開關狀態
    printf("switch is %d\n", s);

    digitalWrite(PIN_BASE + 0, 1); // 閃爍LED
    delay(1000);
    digitalWrite(PIN_BASE + 0, 0);
    delay(1000);
  }

  return 0;
}

編譯指令是:
$ gcc -lwiringPi mcp3008.c

執行./a.out後,便可看到LED閃爍,畫面上也會顯示開關的狀態。

若想要更多的擴充腳位,可加入更多個MCP23008(最多8個),但要以A0、A1、A2指定不同的位址,或可改用16個擴充腳位的MCP23017。而MCP23S08與MCP23S17的功能也是一樣,但傳輸介面是SPI。


參考資料:
  1. Adafruit Learning System的MCP230xx GPIO Expander on the Raspberry Pi
  2. Raspberry Pi: MCP23008 Port Expander,使用Quick2Wire I2C程式庫,Python介面。
  3. IO Port Expander (MCP23017 and MCP23008),使用Adafruit的MCP3008程式庫,有Python與C介面。
  4. Extend your GPIOs on Raspberry Pi with MCP23017 & MCP23008,相當詳盡,還試著控制文字型LCD。

2013/12/18

古早大型機台遊戲Space Invaders(太空侵略者)

不知道各位玩過Space Invaders(太空侵略者)嗎?我並非出身在那個年代,僅在模擬器上玩過這個大型機台遊戲,第一次玩的時候也只覺得很無聊,因為已經玩過聲光效果更強更刺激的遊戲了(同類型的小蜜蜂),不過,此遊戲值得讓我們致敬。

嘿,這可是1978年的遊戲喔,算是「電動」的先驅,真是古老啊。保衛地球,擊退外星侵略者。

遊戲玩法簡簡單單,控制最下面的戰機,左右移動,發射飛彈射擊上面的侵略者。
不過我們較感興趣的是電子線路與程式碼,可到這裡下載詳細的電路圖,真是難以想像啊,佩服。
軟體部分當然是使用組合語言(甚至是01機械語言?)。

0263: 5E    LD E,(HL) ; Get handler address LSB
0264: 23    INC HL    ; xx04
0265: 56    LD D,(HL) ; Get handler address MSB
0266: E5    PUSH HL   ; Remember pointer to MSB
0267: EB    EX DE,HL  ; Handler address to HL
0268: E5    PUSH HL   ; Now to stack (making room for indirect call)

真是厲害。大家何不到這裡玩玩免費版呢,緬懷一下超超骨灰級遊戲。

2013/12/15

Raspberry Pi情報彙整(14)

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

Raspberry Pi Blind & AC Controller,百頁窗與空調的自動控制系統。


Adding a Startup Movie to your Raspberry Pi,Shea Silverman不僅寫了新書Instant Raspberry Pi Gaming,還告訴我們怎麼讓rpi開機時不再是無聊的開機訊息,而是可以秀出一段影片。


Get InsPired with Wolfram Language and Raspberry Pi,還記得rpi能夠免費使用Wolfram Language與Mathematica嗎,這篇文章列出幾個應用,包括存取GPIO、建置GPS記錄追蹤、透過Arduino讀取Wii手把、讀取加速度感測器、控制相機拍照、等等。


Synergy on Raspberry Pi,在Windows上裝Synergy server,在rpi上裝Synergy client,就能透過Windows電腦的鍵盤滑鼠控制rpi,有別於VNC與SSH的作法。


LOGi-Pi,可與Raspberry Pi搭配的FPGA開發板;另有BeagleBone版本。


Making a wireless printer from a Raspberry Pi,利用rpi讓老舊的印表機起死回生,讓rpi成為無線列印伺服器。


PiTFT Mini Kit - 320x240 2.8" TFT+Touchscreen for Raspberry Pi,Adafruit公司的新產品,真棒,真想要啊。


3D printing case for Raspberry Pi,以3D成型技術製作rpi的外殼,雲朵形狀。


Cambridge Raspberry Jam 2013.12.07,在倫敦天文學院舉辦的聚會,有Scratch工作坊、展示HDMIPi、Sonic Pi教學,以及與GPIO、Arduino、等等的相關演講。可到這裡觀看影片

2013/12/10

Raspberry Pi情報彙整(13)

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

5 Ways to Ruggedise Your Raspberry Pi,五款特殊外殼,防水防壓的、鋁製超堅固的、一體成形的。


2013年11月的MagPi出刊囉,這是2013年最後一期,可以到這裡瀏覽每一期內容的概要目錄


Twitter-triggered photobooth,透過Twitter推文來驅動拍照的照相棚,使用了15個RPi相機模組。


A Raspberry Pi controlled mini CNC Laser engraver,雷射雕刻機,Raspberry Pi、步進馬達、使用Python撰寫程式解析G碼的控制系統,網站裡有詳細的零件列表與建構步驟。


Carrie Anne Philbin的新書Adventures in Raspberry Pi出版囉,內容淺顯易懂,包括Scratch、Minecraft、Python、Sonic Pi、GPIO等等。作者錄製了一系列的教學影片Geek Gurl Diaries,有興趣的可以看看。


下一次Raspberry Jamboree將於2014年2月27-28日英國曼徹斯特舉行,好想去啊。先看看這裡的影片回顧一下上次的情況吧。


A Raspberry Pi-powered Radio 4 appliance,打造只能聆聽BBC Radio 4的網路廣播收音機,呃,你就這麼喜歡Radio 4嗎?


Sid,運用Raspberry Pi加相機模組控制機械手臂。喝,將球投進正確的洞口吧!


Retro Admiral Television with Raspberry Pi and XBMC,為一台老舊電視機換上新的螢幕,內臟也換成Raspberry Pi,運行XBMC,改頭換面。


PighiXXX Raspberry PI Pinout,彩色的Raspberry Pi針腳功能圖,太棒啦!


Windows CE On A Raspberry Pi,駭客實在太強了,居然讓Win CE在Raspberry Pi上能跑起來,不過,目前大概就是秀出畫面而已,尚缺乏很多功能。


PiTouch: HDMI Multitouch Monitor for Raspberry Pi, BeagleBone Black, Mac & PC,一款HDMI觸控螢幕,正在群眾募資中。嗯,能夠多便宜呢?


OpenSprinkler Pi (OSPi),An Open-Source Sprinkler / Irrigation Extension Board for RPi,一塊自動灑水灌溉系統的擴充板,以及開放程式碼。


Build your OWN Apple iBeacon with a Raspberry Pi,自行打造iBeacon,rpi加上Bluetooth,再加上一堆軟體設定,進行室內定位追蹤吧。


PiJamma Project : Building a Raspberry Pi Arcade Stick DTV,PiJamma是一塊rpi擴充板,用來製作各種骨灰極古董,譬如街機搖桿。


Pi-powered Ping Pong Pursuit,讓Pi來幫我們回收乒乓球吧,。


Bullet Time Effect – Frozen Raspberry Pi,哇,以48塊rpi加48個相機模組,拍攝出類似駭客任務基努李維躲子彈的畫面,時間似乎靜止了。太強啦!


SkyJack,您聽說未來的「無人機送貨服務」嗎,何不打造一台無人飛行機具,攔截並駭進其他無人送貨機,嘿嘿,這應該是犯法的吧。