SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoTをかじってみよう

IoTをかじってみよう(1)
~mbedの概要とオンラインIDEの使い方

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、比較的入手しやすく、オンラインIDEで開発環境も構築しやすいmbedを使った作例を通して、IoT(Internet of Things)でどんなことができるのか、またどんな点に注意すればよいのかを紹介していきます。第1回では、mbedの概要とオンラインIDEの紹介、簡単なプログラムを作成して実行するところまでを解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

本連載について

 最近、IoT(Internet of Things)という言葉がはやっていますが、この言葉自体は1999年にケビン・アシュトンという人が提唱した言葉です。組み込み機器をネットワークに接続することでデータを相互にやりとりしたり、組み込み機器からデータを収集したりすることが可能となり、さまざまな可能性が広がります。IoTという言葉はこうして形成されたネットワークあるいは機器を指します。歴史的には随分と古いものですが、10年以上たって急にはやりだしたのは、組み込み機器の性能が上がって高度な処理が可能になり、組み込み機器のライブラリやツールが整備されて開発が容易になってきたためでしょう。特に最近の組み込み機器はプログラミング(プログラムを書くこと)と、プログラミング(そのプログラムをCPUに書き込むこと)が容易になっている上、ICE(インサーキットエミュレータ)というデバッグのためのツールが充実しており、またそれらが非常に安価に(場合によっては無料で)入手できるので、入門の敷居は昔と比べて非常に下がっていると言えます。

 組み込み機器の入門記事というのは、はるか昔からありますが、どちらかというとLEDを点灯してみたり、センサーなどの入出力機器を制御してみたりといったハードウェアの制御に焦点を当てたものが多いと言えます。実際、こうした入出力機器が自分のプログラムで動作する体験から得られるドキドキ、ワクワク感というのは他には得がたいものがあります。今回の連載はこうしたデバイスの制御よりは、IoTに重点を置き、組み込み機器をネットワークに接続してサンプルをいくつか作成してみることを目指します。そのため、基本的なハードウェアの解説は最小限にとどめ、サーバ・アプリケーションとの連携を中心に解説します。

mbedとは

 mbedはIoTのためのプラットフォーム、OS、ツールといったエコシステムを、標準をベースとした方法で構築するための団体で、ARM社が主導しています。一般には、mbedという言葉はARM社のマイクロコントローラ(以降、単にコントローラと呼びます)を用いたプロトタイプ開発用のボードを指すことが多いと思われますが、それは、mbedが提供するデモボードのことを指しています。mbedのデモボードにはいくつか種類がありますが、一番有名なのはARM Cortex M3を用いたmbed NXP LPC1768(図1)で、単にmbedと言った場合は、このデモボードを指すことが多いでしょう。本連載でもこのデモボードのことを今後、単にmbedと呼称します。

図1:mbed NXP LPC1768
図1:mbed NXP LPC1768

 デモボードは広く出回っているので、入手は困難ではないでしょう。筆者は秋月電子通商で入手しましたが、円安の影響で価格が上昇しているので、検索エンジンで安く購入できるところを検索してみるとよいかもしれません。

 LPC1768はさまざまな入出力を持っていますが、その中でもEthernetを備えているのが特徴の一つと言えます。これを用いることで簡単にインターネットに接続可能な機器を作成することができます。本連載では、より手軽にmbedを試せるようにアプリケーションボード(図2)を使用します。これにより多くのI/Oをはんだ付けなしに試せるようになります。アプリケーションボードにはEthernetのRJ-45コネクタも実装されているので、そのままEthernetのケーブルを接続できます。

図2:mbed用アプリケーション・ボード
図2:mbed用アプリケーション・ボード

 IoTとして活用可能なコントローラのいくつかを表(IoTとして利用可能なコントローラ)にまとめました。左側がローエンド、右側がハイエンドになります。

表1:IoTとして利用可能なコントローラ
  PIC18F66J60 mbed LPC1768 Raspberry PI 2
CPU 8bit
クロック 42MHz
32bit
クロック 96MHz
32bit 4コア
クロック 900MHz
ROM 64KB 512KB Micro SD card
(公式には32GBまで)
RAM 4KB
Ethernet用に
8KBの専用バッファあり
32KB
USB/Ethernet用に
32KBのバッファあり
1GB
OS なし 簡単な
リアルタイムOSあり
Linux
プログラミング言語 C C/C++ さまざまなものが利用可

 PIC18F66J60は、チップ自体が$3くらいなので非常に安価にシステムを構成できますが、CPUは8bitですし、RAMが4K Byteしかないため、ネットワーク制御用としては限られた機能しか提供できません。逆にRaspberry PI 2の場合は、一昔前のPC並みのスペックを有しており、プログラミング言語に高級言語を用いることが可能なので、開発を非常に楽に行えます。しかしLinuxベースなので、応答性能が必要な場面では、専用にデバイスドライバを書かなければなりませんし、シャットダウンせずに電源を落とすとファイルシステムが損傷を受ける可能性があるなど、取り扱いにPCと同じような神経を使う必要があります。mbedはIoT用のコントローラとしてはミッドレンジと言えるでしょう。開発にはC/C++を用いなければならないので、Raspberry PI 2よりは敷居が高いと言えますが、高速な32bit CPUと32K ByteのRAMを備えているため、さまざまなネットワーク制御に対応が可能です。また、簡単なリアルタイムOSが用意されているため、割り込み処理などの低レベルな記述を行わなくても、比較的容易にバックグラウンド処理を実装できます。

 LPC1768の仕様の詳細についてはmbedのページを参照してください。

mbedでの開発の特徴

 初心者にとって、組み込み機器の開発にはいくつかの難関があり、代表的なものとして以下のようなものが挙げられます。

  • 部品をはんだ付けしないといけない
  • プログラムを機器に書き込むために書き込み用の機器(以降本連載では、プログラマと呼びます)が必要
  • 開発環境をPC上にセットアップしなければならない

 部品のはんだ付けそのものはブレッドボードなどを用いることで回避できますが、それでも面倒な配線作業は残ります。配線を間違えれば正しく動作しないだけでなく、最悪の場合、部品が壊れるかもしれません。今回はmbedのデモボードとアプリケーションボードを使いますので、配線作業はまったく不要で、残る注意点は、デモボードをアプリケーションボードに差し込む時に方向を間違えないこと、静電気に注意すること、ピンを折らないように気を付けることくらいです。

 最近のコントローラは、数本の信号線をプログラマに接続すれば書き込みが可能になっています。書き込みに使用する線は入出力ピンと共用になっているケースが多いですが、それでも回路に接続したままで書き込みが可能なように配慮されているので、わざわざ書き込みのためにコントローラを回路から外す必要はありません。しかしそのためには回路側では設計に配慮が必要ですし(例えば負荷容量が一定値を超えないようにする)、書き込みの際には配線の他にも、プログラマのセットアップや操作が必要で、初めての場合には戸惑うことも多いでしょう。mbedは最初からUSBポートの一つがUSBストレージ・クラスに対応したデバイス(つまりはUSBメモリ)になっており、ここにプログラムを書き込んでやれば、コントローラ起動時に自動的にそのプログラムを読み込んでくれます。このためプログラム書き込みのために特殊なハードウェアは一切必要ありません。

 開発環境の整備も初心者にとっては荷の重い作業です。組み込み開発の世界でも最近は統合開発環境(IDE)が提供されるようになり、IDEをセットアップすればひととおりの環境がそろうようになったので、昔と比べれば随分と楽になりました。それでも、例えばUSBやEthernetにアクセスするためのライブラリを集めてきたりといったところは、Webページ上を探し回る必要があることが多く、特に組み込み用のコントローラは種類が多いために正しいモジュールを見つけるのは一苦労でしょう。mbedはブラウザ上で動作するIDEを提供しており、新規に何かインストールする必要はまったくありません。ブラウザ上で動作するIDEでコードを書き、必要なライブラリを選択してビルドすれば、ブラウザ経由で実行モジュールが自動的にダウンロードされるので、それをUSBメモリとして認識されているmbedにコピーしてやるだけで済みます(詳細はこの後解説します)。

mbedアプリケーション・ボード

 すでに述べた通り、今回の連載ではmbedアプリケーション・ボードを使用します。このボードには数多くのデバイスが搭載されていますが、詳細はmbed application boardのページを参照してください。日本ではスイッチサイエンス社が取り扱っており、筆者もここで手に入れました。

 なお、連載第1回では、アプリケーション・ボードは使用しませんので、mbedのボードだけあれば十分です。

 それでは早速mbedを使ったプログラミングを始めましょう。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
WebベースのオンラインIDEを使う

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
IoTをかじってみよう連載記事一覧

もっと読む

この記事の著者

花井 志生(ペンネーム 宇野るいも)(ハナイ シセイ(ペンネーム ウノルイモ))

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山崎 まゆみ(日本アイ・ビー・エム株式会社)(ヤマザキ マユミ)

人・技術・本が好きなITエンジニア。公共・金融機関のアプリケーション開発/インフラ構築経験を持つ。プロジェクト現場で日々奮闘中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9031 2015/10/30 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング