2013年4月29日 星期一

node-webduino

I have just released node-webduino - A web FrontEnd for Arduino. Node-webduino will let you do real-time I/O monitoring and controlling in your browser. See README.md on the repo for more information:

https://github.com/coopermaa/node-webduino

Here is a screenshot of node-webduino.

687474703a2f2f6269742e6c792f58487461336d

2013/04/30: Here is a demo video:

2013年4月27日 星期六

ABC – Arduino Basic Connections

Alberto Piganti,就是那位畫了很多超棒的 Arduino pinout diagrams 的義大利人,最近他又畫了好多精美的電路圖,這次的創作叫作 Arduino Basic Connections,有關 Arduino 如何連接各種電子零件,所有你想知道的,全都在這本畫冊中。

Arduino Basic Connections 畫冊以集合為單位,每個集合有三張卡片。這本畫冊還在持續進行中,我三月份看到的時候,當時只看到 15 張,現在已經畫到第 14 集合了。

據我所知,為了方便查閱,大部份硬體工程師都會準備一本記載著基本而常用的電路的筆記本。Alberto Piganti 真的很佛心,常用的電子零件怎麼接,在這本畫冊中幾乎都找的到,而且電路圖畫得真的很漂亮。底下這張是 Card 3 中的繼電器電路:

image

如下,在寫繼電器簡介這篇時,我自己也畫了張控制繼電器的電路圖,圖是用 Visio 畫的。我不是學硬體出身的,也不是學設計的,當時可以畫出這樣一張圖,覺得很佩服自己,現在想想,跟 Alberto Piganti 畫的圖比起來,實在是不能比,我只能告訴自己:「工程師真的需要培養一些美感啊!」

image

Arduino Basic Connections 這本畫冊有 PDF 檔可以下載,或者也可以到 Flickr 取得 PNG 圖檔。

2013年4月25日 星期四

在 PC 上玩 Flipboard

我的手機應該有感覺,自從前陣子裝了 Flipboard 後,我變了,以前不常打招呼,如果有打開來用的話,通常也只是對它指指點點,很不溫柔,現在只要一到休閒時刻就來找它玩,常常在它身上滑來滑去的。確實,我的閱讀習慣似乎正在改變,我現在都用 Flipboard 來看新聞、部落格和網站,Flipboard 讓我有一種「在翻閱雜誌」的感覺。Flipboard 也可以連結 Facebook, Twitter, Google+, Google Reader 等社群網路,所有資訊都可以匯流到 Flipboard 裏,所以現在我不需要打開那麼多 App,既不必學習各個 App 的操作方式,又可以節省手機的電力,而且還可以把社群網站當成雜誌來翻閱,感覺很特別。

2013-04-25 22.55.13

我還有一台 Nexus 7 平板電腦,在七吋的平板上翻 Flipboard 雜誌,感覺更棒,我相信用 iPad Mini 或是螢幕尺寸更大的 iPad 玩 Flipboard 應該會更過癮。那麼,能不能在 PC 上跑 Flipboard 呢?

行,只要裝個 Bluestacks 就可以在 PC 上跑 Flipboard 等各種 Android Apps。Bluestacks 支援 Windows 和 Mac 作業系統。我在 Windows 上裝了 Bluestacks,以我的 Google 帳號登入,然後安裝了 Flipboard,結果:

image

哇嗚!成功了,現在我在 PC 上也可以玩 Flipboard 了!

所有 Flipboard 的功能都可以正常使用,而且用自己的帳號登入後 Flipboard 會自動跟你手機上的設定同步,PC 和手機上訂閱的雜誌兩邊都看得到。

對了,你還可以建立一個 Flipboard 的捷徑。方法是切到 C:\Users\Public\Libraries\Apps.library-ms 資料夾:

image

然後你會看到 Fliboard 的圖示,只要建個捷徑把它放到桌面上就好了:

image

參考資料

2013年4月15日 星期一

GPIO_UGLY for Cubieboard

快速認識 Cubieboard 後,我們知道 Cubieboard 背面有 96 支擴充針腳,我們可以利用這些 GPIO 針腳連接各種電子零件,譬如 LED、開關、馬達、光敏電阻、溫度感測器等等,藉以擴充 Cubieboard 的功能,製作各種電子專題。可惜的是,目前 Cubieboard 的 Linux 作業系統,其提供的 Kernel 大部份都還沒支援 GPIO 控制(官方比較新版的 Kernel 似乎已經有 GPIO 的 kernel module,不過我還沒試),所以如果你想使用 GPIO 針腳,也許可以試試 GPIO_UGLY 這個 Kernel module。

安裝

首先,請下載這兩個檔案:

kernel_a10_aufs.img 是給 Cubieboard 用的 Linux Kernel,我已經把 GPIO_UGLY 這個 Kernel module 編譯進去,適用於使用 berryboot 刷機的系統。Kernel 的版本是 3.4.24,我用 berryboot-cubieboard-beta6 測試過,可以正常運作。

下載後,把 SD Card 插到電腦 USB Port,然後把兩個檔案複製到 SD Card 覆蓋掉 berryboot 原來的版本,如果你擔心這個動作失敗從此開不了機,那麼可以把原始檔改個名字備份起來。完成後,把 SD Card 插回 Cubieboard,然後上電,開機。

image

使用說明

更新好 Kernel 後,就可以開始使用 GPIO 針腳了。

首先,先看看可以用的 GPIO 針腳有哪些:

    $ ls /sys/devices/virtual/misc/sun4i-gpio/pin

看到的結果應該會是:

image

算一算,總共有 67 支針腳可用。雖說有 96 支針腳,但其實有很多針腳是 PWR, GND 等電源針腳,還有一些針腳不能用,可能有特殊用途吧。

接著,我們選一支針腳來玩,但是要怎麼知道針腳的對應關係呢?方法是查 Cubieboard Expansion ports,總共有兩張對應表,一張是靠近 SATA 介面的兩排針腳的對應表,另一張是介於 Ethernet port 與 USB port 之間的兩排針腳的對應表。

以 SATA 介面的兩排針腳的對應表為例:

image

查表後,可知 Pin 1 是 PD0,而 Pin 2 是 GND:

image

好,PD0,就是你了,出列吧,誰叫你要排最前面啊。^o^

現在,在 PD0 上接一顆 LED,LED 接法是長腳接 PD0,短腳接 GND。

image

image

然後以底下的指令控制 LED 的明滅:

    $ echo 1 > /sys/devices/virtual/misc/sun4i-gpio/pin/pd0
    $ echo 0 > /sys/devices/virtual/misc/sun4i-gpio/pin/pd0

耶!完成囉!

也可以寫個簡單的 Shell Script 控制 LED 的明滅,例如底下的 blink.sh:

以 sudo ./blink.sh 執行後,接在 PD0 的 LED 燈就會亮一下,滅一下,不斷地循環。

參考資料

2013年4月14日 星期日

備份 SD Card

終於,Raspberry Pi 作業系統跑起來了,要玩的應用程式也都安裝好並且設定完成了,接下來你應該備份 SD Card 以防萬一,免得將來又得重灌所有的東西。所以,咱們來備份 Raspberry Pi 的 SD card 吧。

在 Windows 上,你可以用 Win32diskimager。步驟很簡單,只要輸入 image 的檔名,選擇 SD Card 的 Device,接著點選 Read 鈕就行了:

image

然後,稍候一下,過幾分鐘後 SD Card 就備份完成了。

image

看你用的 SD Card 有多大,image 檔就有多大,比如 SD Card 是 8GB,那 image 檔就是 8GB。image 製作完成後,你可以把檔案壓縮一下,這樣比較省空間。

在 Linux 上,請以底下的指令備份 SD Card:

    $ dd if=/dev/sdX of=/path/to/image

或者是備份的時候順便壓縮:

    $ dd if=/dev/sdx | gzip > /path/to/image.gz

其中 /dev/sdX 是你的 SD Card 設備。

要把 image 還原到 SD Card,就反過來做:

    $ dd if=/path/to/image of=/dev/sdx

如果檔案有經過壓縮,請以底下的指令還原:

   $ gzip -dc /path/to/image.gz | dd of=/dev/sdx

參考資料

2013年4月12日 星期五

超棒的 Arduino pinout diagrams

有個叫 Pighixxxx 的義大利人,最近製作了好多 Arduino 的 pinout diagrams 貼在 Arduino forum 上,有 Arduino UNO 的,有很多張 ATMega 的,例如 ATMega328 與 ATMega1284p 等,也有幾張是 ATTiny 的。例如底下這張是 UNO 的 pinout diagram:

ARDUINO_V2

這些圖畫的真棒,好清楚,對如何使用 Arduino 的針腳幫助很大。

之前我寫過「From Arduino to AVR 單晶片教學」一系列的教學文章,搭配這些精美的圖來學習,真是再好不過了。

arduino_atmega328_Web

pighixxx 畫的這些圖,除了可以在 Arduino forum 上看到外,也可以到他個人網站下載,圖檔有 PNG 格式,也有 PDF 格式。

2013年4月11日 星期四

Playing Status LEDs of Cubieboard

昨天把玩了 Raspberry Pi 的 Status LED,今天換張板子,來玩玩 Cubieboard 的 Status LEDs。

依 RAM 的大小,Cubieboard 分成 512MB 與 1GB 兩種版本,除此以外,還沒聽說硬體有其它版本,所以 Cubieboard 的狀態指示燈目前應該只有一個版本。如下圖,以我所知,Cubieboard 板子上有三顆狀態指示燈:

image

這三顆指示燈的意義為:

  • PWR (紅燈) – 3.3V 電源指示燈
  • LED1 (藍燈) - 好像沒特定用途
  • LED2 (綠燈) - 好像沒特定用途

PWR 燈不能拿來玩,所以 LED1 (藍燈) 和 LED2 (綠燈) 就是這次要被玩的對象啦。學習撰寫程式通常都是從 Hello World Program 開始,而學習一塊電子的板子則通常從控制 LED 明滅作為起點。咱們就以底下的 blink.sh 來控制 LED 的明滅:

blink.sh

以 sudo ./blink.sh 執行後,藍燈就會亮一秒,滅一秒,不斷地循環。

/sys/class/leds/blue:ph21:led2 這個節點代表的就是藍燈這個設備,寫入 0 到節點底下的 brightness 會讓 LED 熄滅,寫入 1 就會打開 LED。

同樣是控制 LED 的明滅,我們也可以這樣做:

把上列程式存成 trigger.sh 後,以 sudo ./trigger.sh 執行,會得到一樣的效果,藍燈會亮一秒,滅一秒,不斷地循環。

這次不同的地方,是以 echo timer > /sys/class/leds/blue:ph21:led2/trigger 設定藍燈使用 timer 控制,至於明滅的時間,則分別把數值寫到 delay_on 與 delay_off 就可以了,本例都設成 1000,代表明滅時間各是一秒鐘。

trigger 還有其它用法,比如可以用藍燈顯示 SD Card 的存取狀態:

    $ echo mmc0 > /sys/class/leds/blue:ph21:led2/trigger

也可以用燈號來作 Linux 的心跳計:

    $ echo heartbeat > /sys/class/leds/blue:ph21:led2/trigger

正確地說,heartbeat 其實是 CPU 的心跳計,如果 CPU 的 Loading 很高的話,它的心跳速度,也就是燈號閃爍的速度就會跟著變快。

要知道有哪些 trigger 方式,可以輸入底下這條指令:

    $ cat > /sys/class/leds/blue:ph21:led2/trigger

這是在我的 Cubieboard 上看到的結果:

image

參考資料

2013年4月10日 星期三

Playing Raspberry Pi Status LED

image

參考上圖右上角,所有 Raspberry Pi 板子上面都有狀態指示燈,位置在 audio jack 跟 USB port 之間。

看一下底下這張放大圖,上面可以看到 Model B Revison 2 所有的狀態指示燈,總共有五顆:

image

目前 Raspberry Pi 的狀態指示燈,其標記方式有兩種版本。Model B Revision 1 的標記為:

  • OK
  • PWR
  • FDX
  • LINK
  • 10M

Model A 與 Model B Revision 2 的標記為:

  • ACT
  • PWR
  • FDX
  • LNK
  • 100

Model B 有五顆狀態指示燈,Model A 因為沒有網路介面,所以只有 ACT 與 PWR 兩顆指示燈,剩下三顆沒上件。

這幾顆指示燈的意義如下:

  • ACT – (綠燈) – SD Card 存取
  • PWR – (紅燈) – 3.3 V 電源指示燈
  • FDX – (綠燈) – Full Duplex (LAN)
  • LNK – (綠燈) – Link/Activity (LAN)
  • 100 – (黃燈) – 100Mbit (LAN)

這五顆指示燈中,ACT 是 SD Card 存取的指示燈,只要 SD Card 有存取動作,燈號就會閃爍一下。

其實 ACT 這顆燈也可以拿來玩,比如底下的 blink.sh 程式可以控制 ACT 燈的明滅:

以 sudo ./blink.sh 執行後,ACT 燈就會亮一下,滅一下,不斷地循環。

/sys/devices/platform/leds-gpio/leds/led0 這個節點代表的就是 ACT 燈這個設備,寫入 0 到節點底下的 brightness 會讓 ACT 燈熄滅,寫入 1 就會打開 ACT 燈。

當你按 Ctrl+C 結束 blink.sh 程式後,燈就不會閃了,原來 ACT 燈會顯示 SD Card 的存取狀態,這個功能也沒了,回不去了...騙你的啦,你只要以底下指令就可以還原:

    $ sudo –i
    $ echo mmc0 > /sys/devices/platform/leds-gpio/leds/led0/trigger

2013年4月9日 星期二

用 Berryboot 刷 Cubieboard

Cubieboard 可用的作業系統很多,Arch Linux, Debian, Ubuntu, Fedora, Linaro, Android 都可以,任君選擇,不過安裝是一道難題,因為過程有點麻煩,沒耐性的話,可能玩不到五分鐘就放棄了,還好,有了 Berryboot 之後,作業系統的安裝就比較簡單了。

haritot 錄了一段很棒的影片,示範如何用 Berryboot 在 microSD 卡上安裝 Ubuntu。影片裏刷的機器是 Cubieboard,其實 Berryboot 也可以刷 Raspberry Pi。

用 Berryboot 刷機的步驟摘要如下:

  1. 準備一張 microSD 卡,建議用大一點的,至少 4GB
  2. 把 microSD 卡插到電腦上,格式化,使用 FAT32 的檔案系統
  3. 下載 Berryboot 並解開壓縮檔 (我用的是 berryboot-cubieboard-beta6.zip)
  4. 下載 win32diskimager
  5. 跑 win32diskimager,把 berryboot-cubieboard-betaX.img 影像檔寫到 microSD 卡上 (X 是版本號碼)

    image
  6. 把 microSD 卡插到 Cubieboard,接上所有的線材 (HDMI, 鍵盤,滑鼠,網路線,電源線等),然後上電開機
  7. 按照 Berryboot 的指示安裝作業系統 (目前有 Ubuntu, Debian, OpenELEC, Puppy, RasoRazor, Sugar, LTSP Thinclient, BerryWebServer 等眾多作系統可供選擇)
  8. 安裝完成後,重開機便可以開始玩 Cubieboard 囉

Berryboot 是開機管理程式,我們可以用 Berryboot 在一張記憶卡上安裝多套作業系統,這題目改天有空再來研究。

參考資料

快速認識 Cubieboard

簡介

前陣子拿到一片 ARM 的板子 Cubieboard。來快速認識一下這塊板子。Cubieboard 主要核心晶片用的是 Allwinner A10 ARM Cortex-A8,RAM 有 512MB 和 1GB 兩種版本,內建 4GB Nand Flash,一組 10/100M Ethernet,有 HDMI 輸出,兩個 USB Host ports,SATA 介面,紅外線感測器,microSD 插槽,以及兩排針腳,上面有 GPIO, I2C, SPI, VGA, ADC 等高達 96 支針腳。板子的價格從 49 美金起跳,在露天和淘寶等拍賣網站上都買得到。

image

規格
  • CPU: 1G ARM cortex-A8 processor, NEON, VFPv3, 256KB L2 cache
  • GPU: Mali400, OpenGL ES GPU
  • Memory: 512MB/1GB DDR3 @480MHz
  • Video Output: HDMI 1080p Output
  • Networking: 10/100M Ethernet
  • Storage: 4GB Nand Flash
  • IO: 2 USB Hosts, 1 micro SD slot, 1 SATA, 1 IR sensor
  • Extended interfaces: 96 extend pin including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP..
  • Software: Running Android, Ubuntu and other Linux distributions
  • Power: requires regulated 5VDC 2A power supply
相關連結
照片

大部份元件都在板子的正面:

image

擴充針腳在背面,板子左右各有兩排,總共有 96 支針腳,4GB Nand Flash 跟 Ethernet PHY 也在背面:

image

側面有兩個 USB Host Ports 與 microSD 卡插槽:

image

官網提供的 Block diagram 有板子各部元件的標示,看這份 Block diagram 會比較快了解。

板子正面的元件:

image

背面的元件:

image

應用

好,那麼這塊 Cubieboard 可以拿來做什麼呢? 嗯,至少可以這麼用:

  • 當作輕簡型的 Linux Desktop - 插上 USB 滑鼠、鍵盤和 HDMI 螢幕後,可以把它當成一台小型的 Linux 個人電腦來用。目前已經有很多 Linux Distribution 可以在 Cubieboard 上跑,例如 Ubuntu, Debian, Fedora, Arch ARM Linux, Puppy 等。
  • Android TV - 可以在 Cubieboard 上跑 Android,插上 Wifi dongle 與無線滑鼠,再透過 HDMI 輸出接到電視,便可以連上 Youtube 看影片或是玩玩遊戲
  • NAS – Cubieboard 有 SATA 介面,所以可以接個 2.5 吋的硬碟把它變成一台家裏的網路檔案伺服器
  • Home Automation – Cubieboard 有兩排 96 組針腳,上面有 GPIO, I2C, SPI, VGA, ADC 等針腳,可以透過這些針腳連接各式電子零件,例如 LED(發光二極體)、開關、馬達、光敏電阻、溫度感測器等等,然後拿來做各種電子專案,譬如自走車、家電控制等等。
結語

Cubieboard 硬體規格比 Raspberry Pi 高檔,可惜的是文件資源不如 Raspberry Pi 豐富,比較少人注意到它 。不過,從另一個角度想,資料雖然不多,其實也是一個機會,因為這樣我們就有理由捲起袖子自己動手做了。

參考資料

2013年4月2日 星期二

Fritzing Library for Raspberry Pi

如果你想用 Fritzing 來畫 Raspberry Pi 電子專案的線路圖,那麼可以試試 AdaFruit Fritzing Library。

照底下幾個步驟安裝 AdaFruit Fritzing Library:

Step 1. 下載 Fritzing Library

image

首先,到這裏 https://github.com/adafruit/Fritzing-Library 下載 AdaFruit Fritzing Library。如上圖所示,只要點一下 ZIP 鈕即可下載 Fritzing Library,然後把壓縮檔解開。

Step 2. 匯入 Library

image

點選「檔案 > 開啟」,然後切到剛剛下載的 Fritzing Library 資料夾並開啟 AdaFruit.fzbz,Fritzing 會自動匯入 Library,這時候在右上角的元件庫視窗 (Parts Pallete) 便會看到由 AdaFruit Fritzing Library 提供的各種材料。

接下來在元件庫上按滑鼠右鍵,並點一下 Save Bin,這樣便可以把 AdaFruit Fritzing Library 存到你的系統裏。如果你沒做這個動作,下次開啟 Fritzing 就看不到這些新增的元件。

Step 3. 使用 Raspberry Pi 材料

裝好 Fritzing Lirbrary 後,現在你就可以用 Raspberry Pi 材料來畫線路圖了。例如,拉個 Raspberry Pi, 麵包板, LED 和電阻,不到五分鐘後...

image

哇!完成了。

Step 4. 更新 AdaFruit Fritzing Library

Fritzing 還沒有自動更新 Library 的機制,如果要更新 Library,目前的方法是在元件庫視窗上按滑鼠右鍵,接著點一下 Delete Bin 刪掉 Library,然後再重覆 Step 1 & 2 的步驟重新匯入。

參考資料