Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@TomoakiYAMAGUCHI

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

More than 3 years have passed since last update.

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 へ戻る

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
TomoakiYAMAGUCHI
得意言語 C/C++ / eclipse paho コミッター

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?