...

オブジェクト通信ボード

by user

on
Category: Documents
23

views

Report

Comments

Transcript

オブジェクト通信ボード
最近のデバイスの状況
・特にプロトタイピング的用途ではエバボードを含め選択肢が広がっている。
・高性能化に伴いスクリプト系言語の使用が広がっている。
・無線機能搭載ボードの選択肢が広がっている。
■総合力が重要
SaaS
データマイニング
開発全般
PaaS
データベース
IaaS
モデリング
設計
手法
テスト
手法
セキュリティ
ラピッド
プロトタイピング
PAN
ICT
WAN
クラウド
ネット
ワーク
無線通信
LAN
アナログ
回路
リアルタイムOS
リアルタイム
OS
ディジタル
回路
SoC
信号処理
センサー
組み込み
システム
ソフトウェア
記述言語
マイクロ
コンピュータ
制御理論
アクチュエータ
アクチュエー
タ
基礎
要素
メカトロ
■最近のマイクロコンピュータ周辺
各種クラウド
サービス
近距離通信
Arduino
各種シールド
Bluetooth,ZigBee,etc
.NET MicroFramwork
GIO、通信、
センサ、ドライバ、
etc.
BeagleBone
32bit,1GHz
2G/512M
ZedBoard
Zynq-7000
32bit,700MHz
/512M
Cortex-A9
RZ
ARM11
Cortex-A8
RX600
Cortex-M4
RXcore
SmartFusion
Cortex-M3
PSoC5
mbed
32bit,96MHz
8M/8M
8bit,16MHz
256k/8k
ZPU
Cortex-M0,M0+
PSoC4
RLcore
AVR
PSoC3
8051
CPUコア
チップ
メイカーズブーム等の
影響(?)で非常に
多様なデバイス、
システムが安価に
利用できるように
なった。
RaspberryPi
Papilio/ZPU
Arduino
Android
32bit
32M/512M
.NET Gadgeteer
32bit,168MHz
1M/192k
Linux
32bit,96MHz
512k/64k
GR-SAKURA
32bit,96MHz
1M/128k
Electric Imp
32bit,
mruby
Squirrel
IF誌FM3ボード
32bit,144MHz
1M/128k
PSoC4 Pioneer Kit
32bit,24MHz
32k/4k
ボード
eLua
PyMite
言語
3
■マイクロコンピュータの規模での分類
小規模
中規模
linux搭載・クラウド連携
スクリプト系言語の使用
単純なON/OFF処理 アナログ信号の入出力
Arduino
AVR
Netduino、GR-Peach
ARM Cortex-M
Native
直接機械語に
翻訳して実行
Virtual machine
スクリプトを(中間コードに変換して)直接実行
ネットワークへの接続
画像処理
RaspberryPi
ARM Cortex-A
C#、Python
node.jsなど
非ネイティブ系
言語(Script)
の台頭
進む
ブラックボックス化
■オブジェクト指向言語の組み込みデバイスでの使用例
例 C# で記述した .NET MicroFramework によるLED点滅
public class Program
{
public static void Main()
{
OutputPort LED0
= new OutputPort(FEZCerberus.Pin.PC4, false);
while (true){
LED0.Write(true);
Thread.Sleep(500);
LED0.Write(false);
Thread.Sleep(500);
}
}
}
・タイマなどもnewして仮想的に作ることができる。
機種依存しない抽象的なプログラムを書くことができる。
反面ハードウェアとの関係が分かりにくくなる。
・ライブラリーでサポートされないハードウェアはどうするか。
5
■性能比較
最速繰り返し速度比較
ボード名
ArduinoUNO
ArigG25
PioneerKit
PapilioPro
ESP8266
搭載CPU
ATmega382P
ARM9
PSoC4
ZPU
Tencilica
L106
搭載CPU
クロック
16MHz
400MHz
24MHz
96MHz
80MHz
搭載OS
なし
Linux
なし
なし
なし
記述言語
Arduino
C
Python
C
Arduino
Arduino
Lua
速度
(周波数)
120kHz
4MHz
450Hz
350kHz
570kHz
1.3MHz
1.7kHz
C言語と同じではない。
関数呼び出しの分のオーバーヘッド。
搭載CPUの性能よりも
記述言語による差が大きく表れる。
スクリプト系言語は
非常に遅い。
while(1){
digitalWrite(n,LOW);
digitalWrite(n,HIGHT);
}
6
■ポピュラな小中規模ボード
○Arduino
小規模での代表的なシステム。Arduinoは8ビットCPUのAVR ATmegaを使用している。AVR ATmegaの
性能は16MHzクロックであり、プログラムメモリもかなり小さいので単体での使用の場合、性能は限定される。
Arduinoは専用開発ツールを有するがその機能を限定することで導入の敷居を下げ、教育用だけでなくホビーや
異分野の人たちの利用が進んだ。多くのメーカがArduino準拠のCPUボード、周辺ボードを提供している。
○mbed
mbedはARM社がラピッドプロトタイピング用としてボードと開発環境を開発したもの。webコンパイラと豊富なラ
イブラリを提供しさらに一般ユーザのWeb上の情報交換の場であるフォーラム等も提供されている。右図はWebコ
ンパイラの画面でWebブラウザの中に一般的な統合開発環境が収まっているのがわかる。
○.NET MicroFramework 搭載ボード
.NET Frameworkの組み込み版の.NET MicroFramework が搭載ボード。C言語よりも生産効率がよいと
されるC#で記述でき、ガジェッタと呼ばれるCPUや周辺ハードウェアの豊富な製品群が提供される。さらに標準で
GUIがサポートとされる。
7
■小型Linuxボード
これまでも小型Linuxボードはあったが、最近のボードは
I/O操作のスクリプト言語が用意されている。
リスト LED点滅プログラム(Python)
import RPi.GPIO as GPIO
import time
GPIO.setmode( GPIO.BCM )
GPIO.setup( 25, GPIO.OUT )
while 1:
GPIO.output( 25, True )
time.sleep( 1.0 )
GPIO.output( 25, False )
time.sleep( 1.0 )
○RaspberryPi(写真左)
小型Linuxボードの中では最も普及しているのがRaspberryPiだろう。教育用途色が強く、日本語の文献も多
く存在する。その分、技術的は若干弱いところが指摘されていが、Model B+ 以降は改良されている。使用言語
についてはPythonを中心に使用することを想定している。リスト(右)にLED点滅のPythonプログラムを示す。ハー
ドウェアの設定がライブラリでラップされており、簡便な記述で使用可能になっている。
○BeagleBoneBlack(写真中央)
BeagleBoneBlackは大手半導体メーカのTI社が開発した組み込みシステム技術者向けの教育用ボードであ
る。RaspberryPiがPythonを主要言語と想定しているようにBeagleBoneBlackはNode.jsの使用を推奨して
いる。Cloud9とよばれるNode.jsの統合開発環境やサンプルプログラムが試しやすい形で提供されている。
○Galileo(写真右)
IntelからもGalileoと呼ばれるIoTのソリューションの1つとしてのボードが提供されている。CPUにはx86系チップ
が使用されている。新たなアプローチが盛り込まれている。そのうちの1つがArduinoの環境を取り込んだことである。
Galileoで最も注目すべき点はマイクロソフト社のVisualStudioとの親和性である。マイクロソフトのクラウドからデ
バイスまでの一貫した開発環境の利用が期待できる。
8
■安価になったWifi標準搭載のボード
多くのボードは ArduinoIDE
が使用できる。開発ツールのデファクトスタンダード(?)
○Arduino YUN
ArduinoにLinux部分を追加したボード。ArduinoとLinuxはハード的
にはシリアルで接続されArduinoからはBridgeライブラリを使用して利用
する。LinuxからArduino側を操作することもできる。
○Netduino 3 WiFi
.NET MicroFramework標準搭載のArduino準拠ボード。
そのWiFi搭載版。
○Intel Edison
ArmでなくIntelのCPUを搭載した小型Linuxモジュール。写真はArduinoのインターフェースを実現するためのドータボードの
上に搭載している。右図のようにArduinoIDEからもプログラムできる。
○ESP8266モジュール
格安WiFi-シリアルブリッジとして注目されているが、小規模な32bitCPUを搭載しており、プログラムすることができる。
9
ArduinoIDEでの開発のための追加ライブラリ等も用意されつつある。
■Wifi標準搭載のボード比較
同程度の価格であるが構成はかなり異なる。
EPS8266
RaspberryPi
Arduino
YUN
Netduino
3 WiFi
Edison
Linux
OpenWrt
-
Yocto
-
Debian
Node.js
△
-
○
-(Lua)
○
C#/.NET M.F.
-
○
-
-
-
CPU(net)
MIPS
AR9331
ARM
Cortex M4
Intel
Atom
Tensilica
L106(IP)
ARM11
クロック
400MHz
168MHz
500MHz
80MHz
700MHz
RAM
64MB
164KB
1GB(DDR3)
64+96KB
512MB
Flash
16MB
+SDCard
1408KB
4GB
512KB
SDCard
CPU(I/O)
ATmega32u4
Intel
Quark
クロック
16MHz
100MHz
RAM
2.5KB
-
Flash
32KB
-
1 Model B
10
■ YUN(雲)従来のArduinoの資産の継承を重視している(?)
Arduinoの進化
CPUの強化
32bit化
サブシステムの追加
YUNなど
更に
コンパクト、安価な
Industrial 101
も発売された。
11
■ YUN(雲)
Linux側はpython2.7が初めから動いている。2行でhttpサーバが構築できる。
サーブするhtmlファイル等はホームディレクトリがデフォルトの場所になる。
12
■ ESP8266
WiFi-シリアルブリッジとしてだけでなく、
ArduinoIDEやLuaを使ってマイコン
として利用できる。
Luaを使ったプログラム例、
今までにない低価格のIoTデバイスが実現できる。
ArduinoIDEで
プログラム可能
13
■Node.js
var
var
var
var
var
var
ブラウザからのLED制御(Node.js)
http = require('http');
app = http.createServer(handler);
sockio = require('socket.io');
io = sockio.listen(app);
fs = require('fs');
bb = require('bonescript');
app.listen(8090);
bb.pinMode('USR0', 'out');
io.sockets.on('connection',
function (socket) {
socket.on('led',
function (data) {
console.log(data);
if (data == 'on')
bb.digitalWrite('USR0', bb.HIGH);
else
bb.digitalWrite('USR0', bb.LOW);
});
});
<html>
<head>
<script src = "/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
function ledOn(){
socket.emit('led', 'on');
}
function ledOff(){
socket.emit('led', 'off');
}
</script>
</head>
<body>
<input type="button" name="on" id="onButton"
value="on" onClick="ledOn();">
<input type="button" name="off" id="offButton"
value="off" onClick="ledOff();">
</body>
</html>
function handler (req, res) {
fs.readFile('sock14.html',
function (err, data) {
if (err) {
res.writeHead(500);
res.end('Error loading index.html');
}
else{
res.writeHead(200);
res.end(data);
}
});
}
操作側に
専用プログラムを
用意しなくても
ブラウザだけで済む。
14
Fly UP