質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.96%

Arduino MEGA2560 と ESP8266 で Milkcocoa のデータストアと接続したい

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,029

moa

score 8

前提・実現したいこと

Arduino MEGA2560 と ESP8266(ESP WROOM-02) で Milkcocoa のデータストアと接続し、データーやりとりをしたいのですが・・・

発生している問題・エラーメッセージ

Wifiには接続できているようですが、Milkcocoa と接続できないようです。以下はシリアルモニタの表示です。

Connecting to ***
FW Version:AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
compile time:Aug 11 2015 17:02:18
to station ok
Join AP success
IP: +CIFSR:STAIP,"***"
+CIFSR:STAMAC,"***"
single ok
milkcocoa on sucesss
Connecting to MQTT... Milkcocoa SDK demo

これを繰り返します。

該当のソースコード

試したのは、ArduinoIDEのメニューからファイル>スケッチの例>MilkcocoaArduino SDK > milkcocoa_esp8266 のスケッチで、MEGAに合わせて、wifi.begin()を、Serial5からSerial1に変更しました(https://github.com/exshonda/ESP8266_Arduino_AT を参考にしました)。

#include "ESP8266.h"
#include "Milkcocoa.h"
#include "Client_ESP8266.h"

/************************* WiFi Access Point *********************************/

#define WLAN_SSID       "*******"
#define WLAN_PASS       "*******"

/************************* Your Milkcocoa Setup *********************************/

#define MILKCOCOA_APP_ID      "*******"
#define MILKCOCOA_DATASTORE   "*******"

/************* Milkcocoa Setup (you don't need to change this!) ******************/

#define MILKCOCOA_SERVERPORT  1883

/************ Global State (you don't need to change this!) ******************/

// Create an ESP8266Client class to connect to the MQTT server.
ESP8266Client wifi;

const char MQTT_SERVER[] PROGMEM    = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] PROGMEM  = __TIME__ MILKCOCOA_APP_ID;

Milkcocoa milkcocoa = Milkcocoa(&wifi, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);

int cnt;

void setup() {
  Serial.begin(115200);
  delay(10);

  Serial.println(F("Milkcocoa SDK demo"));

  // Connect to WiFi access point.
  Serial.println(); Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WLAN_SSID);

  wifi.begin(Serial1, 115200);  // MEGA対応に変更した部分はここのみSerial5→Serial1

  Serial.print("FW Version:");
  Serial.println(wifi.getVersion().c_str());

  if (wifi.setOprToStation()) {
      Serial.print("to station ok\r\n");
  } else {
      Serial.print("to station err\r\n");
  }

  if (wifi.joinAP(WLAN_SSID, WLAN_PASS)) {
      Serial.print("Join AP success\r\n");
      Serial.print("IP: ");
      Serial.println(wifi.getLocalIP().c_str());    
  } else {
      Serial.print("Join AP failure\r\n");
  }

  if (wifi.disableMUX()) {
      Serial.print("single ok\r\n");
  } else {
      Serial.print("single err\r\n");
  }

  if(milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush)){
      Serial.println("milkcocoa on sucesss");   
  }
  else {
      Serial.println("milkcocoa on failure");   
  }

  cnt = 0;
};

void loop() {
  milkcocoa.loop();

  DataElement elem = DataElement();
  elem.setValue("v", cnt++);
  milkcocoa.push(MILKCOCOA_DATASTORE, &elem);

  delay(7000);
};

void onpush(DataElement *pelem) {
  Serial.println("onpush");
  Serial.println(pelem->getInt("v"));
};

試したこと

Arduino IDE を変えて行いましたが、結果は変わりませんでした。
試したのは1.6.12と1.7.9と1.7.11です。

補足情報(言語/FW/ツール等のバージョンなど)

MEGA2560の接続は、https://github.com/exshonda/ESP8266_Arduino_AT を参考にしました。
Milkcocoa のドキュメントに従って、ライブラリーは競合を避けるため、Milkcocoa ESP8266 SDKは入れずにMilkcocoa_Arduino_SDKを入れています。他に、ESP8266.hを使うために必要だと思いますが、ESP8266_Arduino_ATがインストールされています。

以上です。
ご回答お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • MasahikoHirata

    2016/11/19 19:16

    ソースの入力の際に、先頭と最後に’```’をつけると見えやすいのですが。

    キャンセル

  • MasahikoHirata

    2016/11/19 21:51

    先頭以外の’include'と'define'には'#'が付いてないのでしょうか?

    キャンセル

  • moa

    2016/11/19 22:11

    なぜでしょう? #が消えて表示されます。’include'と'define'には'#'がついております。

    キャンセル

  • moa

    2016/11/19 22:17

    すみません。ようやく、きれいに表示できました。読みにくくて失礼しました。

    キャンセル

回答 1

0

まず、’ESP8266’はスイッチサイエンスのシールドでしょうか?
もしそれならばシリアルはハード?ソフトのどちらになってますか?
それとインクルードから’ATコマンド’を使う形になっているように見えるのですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/20 18:21

    期待しています。あなたのような前向きな方であればできると確信していますから。

    キャンセル

  • 2016/11/23 20:05

    いろいろやりましたが、Arduino MEGA2560とESP8266によるMilkcocoaの接続は出来ませんでした。

    'センサーでなんでもできる おもしろまじめ電子工作'を参考にしてArduino Mo Pro で試したところ、こちらはできました。ただし、ESP8266周りの接続を書籍の内容と変えてRSTを開放し、IO2を10kの抵抗でプルアップしてやりました。

    MEGAとESP8266のWiFi接続は、https://ics.media/entry/10457/3 を参考にしてうまくできました。
    ライブラリーは、参考のHPのとおり、ESP8266_Arduino_ATではなく、ITEADLIB_Arduino_WeeESP8266を使用しました。
    IDEは、1.6.12、1.7.9、1.7.11で試し、いずれも成功しました。
    スケッチはMEGA2560に合わせて、ESP8266 wifi(Serial1);に変更し、
    TX1 18にESP8266のRXD
    RX1 19にESP8266のTXD
    を接続しました。

    ESP8266 2製品で試しましたが、「ATコマンドで通信速度を設定」で、簡単に設定できるものとなかなかうまくいかずにATコマンドを色々試したり、RSTをGNDに落としてリセットしたり、最後には作動中にTXDやRXDを接続し直したりと、設定できるようになるまで苦労するものもあり個体差?のようなものを感じました。

    MilKcocoaに接続するために、Milkcocoa_Arduino_SDKの"Client_ESP8266.h"をスケッチにinclude しているので、たぶんArduinoとWiFiシールドなどESP8266以外のWiFi接続には対応できないSDKなのだと思います。
    Arduino Mo Pro 以外でも使えるライブラリーを出していただけるとありがたいというのが個人的な感想です。

    以上、期待外れな結末ですが、書籍や上記ホームページでも解説していただいた 蔵下 まさゆき様、ありがとうございました。
    また、初心者の私にヒントをくださったMasahikoHirata様、ありがとうございました。

    キャンセル

  • 2016/11/23 21:52

    おめでとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.96%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる