全6554文字
PR

IoT(Internet of Things)に適した小型で安価なコンピュータが増えてきた。こうしたコンピューターを使ってIoT機器の開発を実際に体験することで、IoTのハードウエアとソフトウエアに対する理解を深めていく。

 前回は、中国M5Stackの「M5StickC」(図1)に接続した赤色LEDを、スマートフォン(スマホ)でオン/オフする方法を紹介しました。

図1●中国の深センに本社を置くM5Stack(https://m5stack.com)が開発した「M5StickC」。IoT向けの小型コンピューター
図1●中国の深センに本社を置くM5Stack(https://m5stack.com)が開発した「M5StickC」。IoT向けの小型コンピューター
[画像のクリックで拡大表示]

 今回はもっと派手なものを作りたい、ということで“スマホによる「カラーLED」の制御”をテーマにしたいと思います。カラーLEDは、内部に光の3原色である赤、緑、青のLEDを内蔵するLEDで、様々な色を発光できます。ただし、単なるカラーLEDの制御ではなく、スマホの傾き方に連動して発光色が動的に変化するようにしましょう。つまり、スマホをグリグリ動かすと、カラーLEDもダイナミックに色を変えるようにします。

 マイコンボードは前回と同様、M5StickCを利用します。M5StickCで動くプログラム作成用の開発ツールも前回と同じ、「Arduino IDE」(https://www.arduino.cc/en/software)を使います。また、今回、スマホ側のプログラムはiOS用のPythonプログラミングアプリである「Pythonista 3」を使って作成します。

システムの全体構成

 図2は作成するシステムの全体構成図です。カラーLEDをM5StickCで制御します。

図2●今回作成するシステムの全体構成図
図2●今回作成するシステムの全体構成図
[画像のクリックで拡大表示]

 M5StickCは2.4GHz帯の無線LAN(IEEE 802.11b/g/n)に対応しているので、スマホとの無線通信が可能です。今回はWi-Fiルーター(アクセスポイント)を介して通信することにします。

 また、スマホとM5StickCが通信する際のプロトコルには「UDP」(User Datagram Protocol)を利用します。UDPはHTTP通信などで使われるTCPと比べて信頼性の面では劣りますが、通信の手続きが簡単なのでリアルタイム性に優れているというメリットがあります。

 プログラムはM5StickC側とスマホ(iOS端末)側の2つを作ります。それぞれの役割は次のようになります。

M5StickC側:UDPでスマホから受け取ったカラーコード(16進数6ケタ)でカラーLEDを発光させる
スマホ側:スマホの傾きに応じた色を作成し、16進数6ケタのカラーコードを生成。UDPでそのカラーコードをM5StickCへ送信する

今回、利用する電子部品は次の通りです。

  • カラーLED「PL9823-F5」
  • 定電流ダイオード
  • ジャンパーワイヤー(オス-オス)×3本
  • ブレッドボード

 これらの部品はいずれも、秋月電子通商(東京・秋葉原)などの電子部品店で購入できます。

 図3は利用するカラーLEDと定電流ダイオードです。カラーLEDには中国Shenzhen Rita Lighting Technologyの「PL9823-F5」を使用します。秋月電子通商での商品名は「マイコン内蔵RGBLED 5mm」です。ちなみに、価格は40円でした。

図3●利用するカラーLEDと定電流ダイオード。電子部品店で購入する
図3●利用するカラーLEDと定電流ダイオード。電子部品店で購入する
[画像のクリックで拡大表示]

 カラーLEDはメーカーによって機能がまちまちです。今回使うPL9823-F5はマイコンを内蔵していて、光量をソフトウエア的に調節できます。赤、緑、青それぞれ256段階で光量の指定ができるので、理論的には256×256×256=1677万7216色の表現が可能です。

 定電流ダイオードは電流を一定に保つための電子部品です。ここではカラーLEDの光量を抑えるために使います。筆者の場合は、石塚電子の「定電流ダイオード(15mA)E-153」(価格は30円)を使いましたが、同様の機能を持つものであれば、他の製品でも構わないでしょう。定電流ダイオード(15mA)E-153は端子間の電流を15mA以下に抑えることができます。