LoginSignup
3
4

More than 5 years have passed since last update.

MQTT-SNを簡単にテストする方法 その3

Last updated at Posted at 2015-05-19

Arduino Ethernetで MQTT-SN クライアントを動かしてみよう

Arduino Ethernet は8ビットマイコンを使用したコンピュータでEthernetコントローラーを内蔵しています。 主な仕様は以下の通りです。

  • マイクロコントローラ ATmega328
  • 作動電圧        5V
  • 入力電圧       7-12V
  • デジタルI/O ピン   14 (そのうち4本が PWM 出力可能)
  • アナログ入力ピン    6
  • I/Oピン出力電流    40 mA
  • フラッシュメモリ   32 KB (ATmega328)
  • SRAM 2 KB (ATmega328)
  • EEPROM 1 KB (ATmega328)
  • Clock Speed 16 MHz
  • W5100 TCP/IP Embedded Ethernet Controller

1970年代ならば最先端のコンピューターです。

用意するもの

Arduinoクライアントの作成

step1. ソースコードの準備

必要なソースコードは その1で githubからホームディレクトリーにダウンロードされています。
AsyncMQTT-SN/AsyncClient/src/libにあるソースコードを全てzip形式で一つに圧縮して名前を MQTT-SNAsyncClient.zip にします。

step2. ライブラリーとしてIDEに登録します。

  • AruduinoIDEを起動します。
  • スケッチ > Include Library > Add .ZIP Library... とクリックして、MQTT-SNAsyncClient.zip ファイルを指定します。 これで登録は完了です。         
  • もう一つ、Arduinoが提供するEthernetUDPライブラリにマルチキャスト機能を追加します。追加方法は ここ を参照してください。

step3. クライアントのソースコードを作成します。

  • スケッチ > Include Library とクリックするとメニューの一番下に 今登録したライブラリーがMQTT-SNAsyncClient と表示されているはずなので、これを選択します。 エディターにライブラリーに登録されたincludeファイルが表示されます。

ArduinoIDE.png

  • エディターに表示されている内容すべてを AsyncClient/src にある Application.ino ファイルの内容で上書きします。
  • Linux用のコードとは、PUBLISHするトピックとsetup()関数の内容が少しだけ違います。

step4. クライアントのソースコードを修正します。

  • Arduino Ethernet は DHCPプロトコルをサポートしないため、IPアドレスに固定アドレスを割り当てます。(DHCPサーバに手動でMACとIPアドレスを設定します)
  • Arduino Etherは基盤毎にMACアドレスが6個の16進数で表示されていますので、この値と固定で割り当てたIPアドレスでソースコードを書き換えます。 

変更する箇所を太文字で表記しています。
{ 192, 168, 1 , 10 }, // Local IP (for Arduino App)
{ 0x90, 0xa2, 0xda, 0x01, 0x01, 0x01 } // MAC address (for Arduino App)

Application.ino
#ifdef NETWORK_UDP
UDP_APP_CONFIG = {
    {
        "LinuxClient",      //ClientId
        {225,1,1,1},        // Multicast group IP
        1883,               // Multicast group Port
        {0,0,0,0},          // Local IP     (for Arduino App)
        12001,              // Local PortNo
        {0,0,0,0,0,0}       // MAC address  (for Arduino App)
    },

step5. コードをコンパイルしてArduinoに書き込む。

  • 黄色で囲ってあるボタンを押すとコンパイルが実行され、エラーが無ければシリアル通信でFlashメモリにロードモジュールが書き込まれます。  リセットするとロードしたプログラムが起動します。

ArduinoCompile.png

これで、LinuxクライアントとArduinoクライアントとゲートウェイの完成です。
LEDの点滅が確認できましたか。

NCM_0267.JPG
ゲートウェイに Rspberry Pi + Wifi USB を使用しています。

その1 へ戻る

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4