IoT時代はラズパイにカチャッ! リアルタイム制御コンピュータ初体験

第 1 部 IoT時代はハードが重要! リアルタイム制御コンピュータを作る
第
お手軽 Linux 時代に
高性能とリアルタイムを両立!
1章
ご購入はこちら
IoT時代はラズパイにカチャッ!
リアルタイム制御コンピュータ初体験
永原 柊
ラズベリー・パイなど,1GHz 動作のプロセッサ
を搭載した安価な小型コンピュータが増えていま
す.ネットワークに強い Linux OS を搭載し,ネッ
トワーク通信機能を備えているタイプも多く,I/O
も 行 え る た め, モ ノ の イ ン タ ー ネ ッ ト(IoT;
Internet of Things)に事足りる場合もあるかもしれ
ません.
しかし実際には,Linux コンピュータは,処理効
率は非常に高いのですが,決められた時間以内に「必
ず」処理を済ませることは不得意です.ちょっとし
リスト 1 リアルタイム性能をチェックするためのサーボモータ
制御プログラム
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
while (1) {
digitalWrite(13, HIGH);
delayMicroseconds(1000);
digitalWrite(13, LOW);
delay(19);
}
}
1msのパルスを
出力する
た操作・モニタを行うには便利ですが,電子機器の
制御・計測を行うには向きません.マイコンを使っ
たハードウェアのリアルタイム制御・計測が,IoT
時代に差をつけるキー・テクノロジとして,ますま
す重要です.
本稿では,便利な小型 Linux ボードであるラズベ
リ ー・ パ イ に, 制 御 用 マ イ コ ン・ ア ダ プ タ を カ
チャッと追加して,リアルタイム・コンピュータを
初体験してみます.
(編集部)
IoT 時代に知ってないとマズいこと…
Linux はハード制御に使えない
● 実験条件
まずは,ラズベリー・パイ 3 は制御でどの程度のリ
アルタイム性能を発揮できるのかを簡単に見てみるた
めに,サーボモータ(ラジコン・サーボとも呼ぶ)を
動かしてみます.
超お手軽マイコン基板Arduino Unoと比べてみます.
・マイコン基板 Arduino Uno:16MHz 動作の 8 ビッ
ト CPU(AVR)
・
Linux コンピュータ ラズベリー・パイ 3:1.2GHz
動作の 4 コア 32 ビット CPU(ARM Cortex-A53 プ
ロセッサ)
(a)Arduino Uno 用
#include <wiringPi.h>
#include <wiringPi.h>
#define GPIO18
#define GPIO18
18
main(int argc, char *argv[])
{
if (wiringPiSetupGpio() == -1) return 1;
pinMode(GPIO18, OUTPUT);
main(int argc, char *argv[])
{
if (wiringPiSetupGpio() == -1) return 1;
pinMode(GPIO18, OUTPUT);
for (;;) {
// 1 ミリ秒の幅のパルスを出力
digitalWrite(GPIO18, 1);
delayMicroseconds(1000);
digitalWrite(GPIO18, 0);
for (;;) {
// 1 ミリ秒の幅のパルスを出力
digitalWrite(GPIO18, 1);
delayMicrosecondsHard(1000);
digitalWrite(GPIO18, 0);
// 残り 19 ミリ秒待つ
delayMicroseconds(19000);
// 残り 19 ミリ秒待つ
delayMicrosecondsHard(19000);
}
}
28
18
}
}
(b)ラズベリー・パイ 3 用(wiringPi ライブラリの
delayMicroseconds 関数使用)
(c)ラズベリー・パイ 3 用その 2(delayMicroseconds
Hard 関数使用)
2016 年 12 月号