Arduino互換Linux機pcDuino3について
2014/07/05作成
2014/08/12更新

以前からワンボードPCに興味がありつつも、性能的に今一つと感じて見送ってきたのですが、今回はpcDuino3を購入してみました。
簡単に説明すると、ワンボードPC人気の火付け役であったRaspberry Piとマイコン開発用プロトタイピングツールの事実上の共通規格となったArduinoを合わせたような、流行に追従した製品です。
機能的にはワンボードPCとしてもArduino互換機としても普通ですが、pcDuino3が従来の製品とスペック的に異なるのは、HDMI出力が1920x1080 60Hz(いわゆるフルHD)まで対応している事と、CPUがデュアルコアである事、Ethernetが1000BASE-Tに対応している事で、実効速度はともかく、規格的には現代のデスクトップPCとほぼ同等になっています。
輸入品のため、2014年7月現在、日本では無線LANチップが搭載されていないものが販売されていますが、サーバー用途ではないかAndroidをインストールしない場合は無線LANの有無が問題になる事は無いと思います。

本体

早速開封しました。
Raspberry PiやArduinoとは異なり販売元が中国の企業ですが、基板に目立った汚れは無く、半田やめっきの品質も普通です。
本体については他のサイト等で詳しく解説されているため、そちらを参照してください。

とりあえず給電用のUSB Micro-BケーブルとHDMIケーブルがあれば動作し、Linuxが起動して1分弱でGUIのデスクトップ(Lubuntu上のLXDE)が表示されます。
Arduino IDEもそのOS上で動作するため、開発にはUSB接続のキーボードが必要になるでしょう。
一般的なマイコンのようなクロスプラットフォーム環境ではないという点で、好みが分かれるでしょうが、特にVisual Studio等でソフトウェア開発をしている方にはなじみやすいかもしれません。

本体と周辺機器

USB Micro-Bケーブル、HDMIケーブル、USBハブ、USB接続のマウス、USB接続のキーボード、I2C接続の温度計(Analog Devices ADT7410)とその配線を接続してみた様子です。
何かの冗談でしょうか、正直に言ってキーボード(これでもかなり小型な部類)とマウスが一番邪魔という滑稽ぶりです。

pcDuino3内蔵のArduino IDEで書いたコードでI2C接続の温度計を制御しています。
Arduino互換のため、他のArduino互換機用に書かれたコードもほとんど修正せずに流用できます。
このソースコードはpcDuino3上で書いたものですが、GUIでありながらも入力時に表示のもたつきなどは特に感じませんでした。
また出力はLinux上のコンソールに表示されますが、文字のみとはいえ、こちらも表示はスムーズでした。



2014/08/12追記
上記のソースコードは一見正常に動作しているように見えますが、Repeated Start Conditionを送信していません。
pcDuino3のWireライブラリは内部でLinuxのデバイスを操作しているだけであり、LinuxのI2CドライバがRepeated Start Conditionに対応していないため、ArduinoスケッチからWire.endTransmission(false)が使用できませんので、EEPROM等の読み書きには使用できないと思います。
これはLinuxの設計の欠陥であり、ドライバにパッチを当てる以外にソフトウェア的に回避する方法はありません。
次の記事ではGPIOを4個使用し、I2Cの信号をソフトウェアで生成することにしました。

他のワンボードPCと同様に安価で省電力なLinuxサーバーとしても使えますが、とりあえず電子回路の制御がしたいが一般的なPICやARMマイコンでの開発は苦手で時間も無いという方にもおすすめです。
逆に他のマイコンに慣れている場合、他のワンボードPCのメリットやデメリットがこの製品にも当てはまるため、いかにLinuxとArduinoを連携させるかがpcDuino3を選択する理由になると思います。


目次 質問フォーム Q&A このサイトについて トップページ