連載
» 2016年06月21日 07時00分 UPDATE

MQTTで始めるIoTデバイスづくり(4):MQTTで始めるIoTデバイスの作り方 第4回:ArduinoをMQTTブローカーに接続する (1/4)

「MQTTで始めるIoTデバイスの作り方」もいよいよ核心に迫ります。今回はArduinoをプログラミングして、MQTTブローカーへ接続する手順を紹介します。あえてライブラリを利用しないことで、その基礎を学びます。

[今岡通博,MONOist]

はじめに

 この連載では、電気電子の知識にあまり自信がないIT系あるいはWeb系のエンジニアが実際に簡単なIoTデバイスを製作し、通信プロトコル「MQTT」を用いてネット上のサービスに接続できるまでを目標としています。

 デバイス側のマイコンは電子工作でよく利用される「Arduino」を用いますが、「Lチカ」程度は経験があり、TCP/IPについても基本的なところは習得されていることを前提に進めていきます。

連載目次

・第1回 MQTTの概要とMosquittoの導入

・第2回 MQTTプロトコル解析

・第3回 ESP8266でMQTT

  • 第4回 ArduinoをMQTTブローカーに接続
  • 第5回 Arduinoで部屋の明るさをPublish
  • 第6回 スマホからLEDをON/OFF

 前回はPCからターミナルエミュレーターをマニュアル操作してMQTTブローカーに接続しましたが、今回はArduinoあるいはその互換機をMQTTブローカーに接続します。

 ArduinoにはMQTTプロトコルを扱うためのプロトコルスタックやライブラリが用意されていますが、こちらについてはネット上にも情報が多いので割愛し、今回はTCP/IPのレイヤーを直接たたいて、MQTTプロトコルの送受信を行います。

 直接たたくおかげで、簡単なパブリッシュやサブスクライバーのプログラムならば、2Kb程度で実現できます。プロトコルスタックなどの利用に比べれば手間が掛かることは事実ですが、基礎を学び軽量なプログラムを実現するために学んで頂ければと思います。

Arduinoと準備

Arduino Nano 「Arduino Nano」

 今回紹介する内容の実践には、Arduino本体とArduino開発環境(Arduino IDE)が必要です。Arduinoそのものの扱いやArduino IDE構築方法は下記の参考文献を参照してください。LEDの点滅プログラムや、PC/Arduinoの間でシリアル通信ができるようになっていれば十分です。

参考:Arduinoで電子工作をはじめよう!全12回連載まとめ

 下図がArduino NanoとWi-Fiモジュール「ESP8266」との配線です。

Arduino NanoとESP8266との配線。Arduino Nano(左)とESP8266(右)の間にはスイッチングレギュレーターを介しました。ソフトウェアシリアルのD11はESP8266のRXDにつなぎますが、電圧を2/3に分圧するために図のように抵抗を入れます

 筆者はESP8266のブレークアウトボードとともにブレッドボードにさして使えるという理由から、Arduino Nanoを使っています。ですが、手元にあったArduino Nano互換機では、ESP8266が使う電流容量(3.3V/500mA)が不十分なようで、5Vから3.3Vを作るデバイスとしてスイッチングレギュレーター(「AZ-1086H-3.3」)を用意しました。

スイッチングレギュレーター「AZ-1086H-3.3」 スイッチングレギュレーター「AZ-1086H-3.3」。型番が印刷された方を正面にして左からグランド、3.3V出力、入力となります。今回はここにArduinoから出ている5V出力をつなぎます。出力の3.3VはESP8266の電源として使います。グランドはArdunoとESP8266とで共通にします

 Arduino NanoとESP8266の間にスイッチングレギュレーターを入れています。筆者は3端子スイッチングレギュレーターを用いましたが、3.3Vを出力し500mA以上の電流容量があるものであれば同様に使えます。ただし種類によってはピンの配列が異なることがありますので注意してください。

 下が上記配線をブレッドボードに実装した画像です(発光ダイオードが写っていますが、これは今回の実験では関係ありません)。

 配線図ではESP8266のブレークアウトに隠れた配線もありますので、前回の記事(MQTTで始めるIoTデバイスの作り方 第3回:ESP8266でMQTT)を参考にしてください。

 配線図ではESP8266のグランドは9番ピンに接続されていますが、写真では18ピンがグランドに接続されています。実はES8266の内部で両方のピンは互いにチップ内で接続されているのでどちらをグランドに落としてもよいのですが、両方ともグランドに落とすのがベターでしょう。

 またオレンジ色の円筒形部品が写っていますが、これは電解コンデンサーです。スイッチングレギュレーターの出力側の3.3Vとグランド間に入れます。これを入れることにより、負荷に対する電源電圧が安定します。

 今回の電源は全てPCからUSB経由で供給される5Vを使っているのですが、PCによってはこれらを全てまかなえないかもしれません。もし動作が安定しない場合は電源容量の問題かもしれませんので、3.3V側だけでも別の電源を用意したほうが良いかもしれません。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.