小ネタ 2013-015

ARMマイコンボードでLinuxと電子工作

 Linuxの動くマイコンボードを去年(2012年)から色々と入手して試してみた。(2013-06)

 
 Linuxの動くARMマイコンボード

 左下: BeagleBoard 、 その隣: BeagleBoard xM
 左上: PandaBoard ES
 右下: Raspberry Pi
 右上: Android Stick MK802

 なんとなくチップに発熱が気になったので放熱用ヒートシンクを付けている。
 LinuxをインストールするSDカードは、Class8のものを使う。


Beagle Board , BeagleBoard xM

 BeagleBoardというARMマイコンボードでARM版LinuxやAndroidを動かすことができるというので試してみた。
 
 写真上側が初代BeagleBoard、写真下側が後継機種のBeagleBoard xM。

 
 BeagleBoardとBeagleBoard xMにUbuntuをインストールして動かしてみた。
 elinux.orgというサイトでイメージが配布されているものを使った。

 GUIはGNOMEだと重すぎるのでLXDEにしている。


PandaBoard ES

 BeagleBoardシリーズよりも高性能なCPUを搭載したARMマイコンボードのPandaBoardを試してみた。
 PandaBoardは無印のものと、ESがある。ESはエンジニアリングサンプルというわけではなくSecond Editionみたいなものか?
 
 Pandaboard ES。
 基板の中心の白いシートは、貼るヒートシンク。CPU近くの少し熱くなるIC群に貼ってみた。
 その上の銀色の物体はアルミの大きめのヒートシンク。BeagleBoardに比べて発熱が多かったので大きめにした。

 
 Ubuntuの公式サイトのARM版Ubuntuのイメージをそのまま使った。
 16GBのSDカードへのインストールするとエラーで起動しなかったので、一旦4GBのSDカードにインストールしてからddで16GBのSDカードにコピーして移行した。

 GUIはGNOMEで普通に使うことができる。
 少し重いけど、PCのUbuntuに近い使い勝手である。


Android Stick MK802

 スティック型の小型のAndroidマシンがいくつか発売されている。
 AndroidでなくUbuntuも動かせるというので、1つ買って試してみた。
 
 筐体のフタを外して、CPUにヒートシンクを貼って使っている。

 
 Lubuntuをインストールした。
 LXDEだとそこそこ使える。
 (普通のUbuntuでインストールしてGNOME環境も試したが、そちらは重すぎて実用的な速度で動かなかったので、Lubuntuに変えた。)



Raspberry Pi

 去年(2012年)から「3千円で買えるPC」としてブレイクしているマイコンボードRaspberryPiというのを自分も買ってみた。
 
 RaspberryPi初代の基板と、RAMの容量が倍になった版の基板。
 写真の上側の黒いのはRaspberryPi用のケースである。
 フタを締めると固くて取り外しが困難なのでツメの部分を削って簡単にあけられるようにした。

 
 RaspbianというDebianをカスタマイズしたバージョンのLinuxが配布されているので、それを入れてみた。

 
 RaspberryPiのケースを3DプリンタCupcakeCNCで自作するのを試してみている。

 
 RaspberryPi用の電子回路自作用の基板というのを入手したので、温度計を繋いで室温を監視するサーバーを作ってみる。
 前にPCで室温を測ってみたときにはアナログのセンサーを使ったが、今回はI2CのデジタルI/Fのセンサーを使うことにする。
 Link:
  Raspberry Pi I2C How-To ガイド by @azarashi55 http://www.gvc-on.net/?p=288
  Raspberry Piで温度&気圧測定(センサー接続編) http://machide.blog98.fc2.com/blog-entry-116.html

 Arduinoを接続するとかいう例もあるそうだ。
 Link:
  Alamode - Arduino Compatible Raspberry Pi Plate [ARD10251P] - $50.01 Seeed Studio Bazaar, Boost ideas, extend the reach
  Cooking Hacks - Documentation - Raspberry Pi to Arduino shields connection bridge

 PC-9801のエミュレータを動かすという例があるようだ。
 Link: NP2 for Raspberry Pi https://github.com/irori/np2pi/wiki/NP2-for-Raspberry-Pi
 ワンチップPC-9801みたいなことができるかも。


pcDuino
 (後日加筆 2013-06-16)
 pcDuinoというARM Linuxマイコンボードを買ってみた。
 CPUは、Android Stick MK802と同様にAllwinnerのA10が載っている。

 
 pcDuinoの基板
 長細い。
 フラッシュメモリ内蔵で、既に出荷時にUbuntuが書き込まれている。
 
 電源を挿すだけでUbuntuのLXDE環境が起動した。
 Arduino開発環境もインストール済みらしい。

 MK802だと基板上にI/Oピンがまったく出ていないため、電子工作には向いていなかった。
 BeagleシリーズやRaspberryPiだと電子工作向きだが、Beagleは値段が高いし、RaspberryPiはUbuntuが動かない。
 pcDuinoはそのちょうど中間あたりに位置している感じだ。


スペック比較

 各ボードのスペックを比較してみた。

Raspberry Pi BeagleBoard BeagleBoard xM PandaBoard ES MK802 pcDuino Dynabook AZ(比較用)
CPU BCM2835
(ARM11)
OMAP3530
(OMAP3)
OMAP3730
(OMAP3)
OMAP4460
(OMAP4)
Allwinner A10 Allwinner A10 Tegra250
(Tegra2)
Clock 700MHz 720MHz 1.0GHz 1.2GHz 1.0GHz 1.0GHz 1.0GHz
RAM 256MB 256MB 512MB 1GB 1GB 1GB 512MB
OS Raspbian Ubuntu(elinux) Ubuntu(elinux) Ubuntu版 meleubuntu Ubuntu Ubuntu公式版
GPU対応 有り? 無し 無し 有り 有り 有り 有り

ちょうど似たようなスペックDynabook AZも比べてみた。

 
 ARM版UbuntuをインストールしたDynabook AZ。
 キーボードを英語版に取り替えてAC100化してある。


電子工作で周辺機器を作るには

 基板上の汎用I/Oピンをコネクタで取り出せるボードが多いので、Linuxで直接I/Oポートを叩く環境さえ設定すればやりたい放題できる。
 ただし、あるボード用に作ったものは、他のボードで使いまわすのが難しくなってしまう。


 I2Cというシリアル式のバスを使うとピン数が少ないし、コネクタを同じに作っておけば使い回しは容易そうだ。
 ソフトも/dev/i2cとかでアクセスできるらしい。
 SPIバスも同様なのだろうか。


 UARTを使うとさらに簡単に使い回しができる。GPSモジュールとかは、この方法で繋ぐのがよさそう。


 USBで周辺機器を作るというのがマイコンボード以外も含めてPC-Linuxまで使い回しができるので一番良い感じだ。
 既存のWindowsPC用のUSB周辺機器なども何でも動く。 (何でもは動かないよ、動くものだけ。)
 キーボード、マウス、USBストレージ、USB-WiFiドングル、USB-Bluetoothドングル、USB-webカメラなどで普通のPC-Linuxで動かせるものは大体ARM-Linuxマイコンボードでも動く。
 地デジチューナーを動かしたりとかKinectを動かしたりとかUSB-DACを動かしたりする例もあるようだ。

 特にUSB-3Gモデム/LTEモデムが動かせるのがあるので、屋外で使う回路をWANに繋いでデータを送受信するのに使えるというのが便利だ。
 昔はPHSのW-SIMモジュールを繋いでみたいと思っていたが、結局使わずじまいだった。
 他に、GPSモジュールを繋いだりして位置情報とセンサー情報を屋外から送信するというのをやってみたい。

 (後日加筆 2014-05-05)
 → USBモデム色々をARM Linixマイコンボードで動作確認してみた。


 USB周辺機器の場合は特に上記のDynabook AZなどで動作確認したり、セルフ開発までできるので便利かもしれない。