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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

10813閲覧

ESP-WROOM-02をWi-FiモジュールとしてArduinoに接続(SoftwareSerial)してMilkcocoa Arduino SDKを使用する方法について

umi_kappa

総合スコア12

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

3グッド

1クリップ

投稿2015/11/24 04:50

編集2015/11/25 14:25

###前提・実現したいこと
ArduinoにESP-WROOM-02をあくまでWi-FiモジュールとしてSoftwareSerialで接続した場合(ESP-WROOM-02にはプログラミングは行わない)、
どのようにしたらMilkcocoa Arduino SDKでMilkcocoaとやり取りできるようになるのでしょうか?
###ここまではできました
ESP-WROOM-02とArduino UNOでhttp通信のサンプルを基にSoftwareSerialでArduino~ESP8266のシリアル通信・サーバー上のPHPから値取得はできています。SoftwareSerialをMilkcocoa Arduino SDKに渡す部分で悩み中です。
###SoftwareSerialからEthernetClientへ置換えられないか
ESP8266やArduinoでMilkcocoaを使う方法(Milkcocoa Arduino SDK)
にて、

// 'client'は、Ethernet or WiFiのClient Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);

Milkcocoaコンストラクタの第1引数にArduino基本クラスのEthernetClientのインスタンスを渡すとのことなのですが、ArduinoとESP-WROOM-02間はSoftwareSerialでシリアル通信しているので、そこをEthernetClientへ置き換えられればうまくいくのではないかと考えたのですが、解決方法がわからずこちらで質問させていただきました。
###ソースコード
ほぼ上記の記事のサンプルのままです。それにSoftwareSerialを追記しています。

Arduino

1#include "ESP8266.h" 2#include <SoftwareSerial.h> 3#include <Milkcocoa.h> 4 5/************************* WiFi Access Point *********************************/ 6 7#define WLAN_SSID "...SSID..." 8#define WLAN_PASS "...PASS..." 9 10 11/************************* Your Milkcocoa Setup *********************************/ 12 13#define MILKCOCOA_APP_ID "...YOUR_MILKCOCOA_APP_ID..." 14#define MILKCOCOA_DATASTORE "esp8266" 15 16/************* Milkcocoa Setup (you don't need to change this!) ******************/ 17 18#define MILKCOCOA_SERVERPORT 1883 19 20/************ Global State (you don't need to change this!) ******************/ 21 22SoftwareSerial mySerial(12, 11); /* RX:12, TX:11 */ 23ESP8266 wifi(mySerial); 24 25const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com"; 26const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID; 27 28Milkcocoa milkcocoa = Milkcocoa(mySerial, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID); 29 30void setup() { 31 Serial.begin(115200); 32 delay(10); 33 34 Serial.println(F("Milkcocoa SDK demo")); 35 36 /* 37 // Connect to WiFi access point. 38 Serial.println(); Serial.println(); 39 Serial.print("Connecting to "); 40 Serial.println(WLAN_SSID); 41 42 WiFi.begin(WLAN_SSID, WLAN_PASS); 43 while (WiFi.status() != WL_CONNECTED) { 44 delay(500); 45 Serial.print("."); 46 } 47 Serial.println(); 48 49 Serial.println("WiFi connected"); 50 Serial.println("IP address: "); 51 Serial.println(WiFi.localIP()); 52 */ 53 Serial.println( milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush) ); 54}; 55 56void loop() { 57 milkcocoa.loop(); 58 59 DataElement elem = DataElement(); 60 elem.setValue("v", 1); 61 62 milkcocoa.push(MILKCOCOA_DATASTORE, elem); 63 delay(7000); 64}; 65 66void onpush(DataElement elem) { 67 Serial.println("onpush"); 68 Serial.println(elem.getInt("v")); 69}; 70

###Milkcocoaを使いたい!
この壁さえ越えられれば、私のような趣味で電子工作をやっている人間でもArduinoからMilkcocoaを使って楽しい電子工作ライフを満喫できると思うので、なんとかして実現したいです。。

m2wasabi, YoheiKawano, ikuwow👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiyopikko

2015/11/24 16:12

現状どこまで出来ているのか(SoftwareSerialでArduino・ESP8266間の通信まではできている等)教えて頂ければ、最短で解決策にいけそうな気がしています。(私もまだ試行錯誤中です。。) また、そのコードも記載頂ければ幸いです!
umi_kappa

2015/11/25 14:25

ご協力いただきありがとうございます。 現状とソースコードを追記しました。
guest

回答2

0

ベストアンサー

Milkcocoa開発チームのものです。

こちら、exshondaさんの力によって、実現に向かっています...!

具体的には、従来のMilkcocoa Arduino SDKが以下の2種類に分かれました。

後者のMilkcocoa Arduino SDKをexshondaさんにコントリビューターとして開発を進めて頂いています。
性能の都合上Arduino M0から優先的に対応して、UNOへの対応は「可能であれば」とのことです。

いち早く試したい場合は、Arduino M0をお買い求め頂くことをおすすめします...!

投稿2015/12/09 16:51

kiyopikko

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umi_kappa

2015/12/10 01:30

Milkcocoa開発チームのみなさま、exshondaさんありがとうございます! SDKまでアップデートしていただいて恐縮です。。 Arduino M0の購入も検討させていただきます。 私の方でも引き続き試行錯誤していきたいとおもいます。
guest

0

みなさまのご協力のおかげでArduino M0 + ESP-WROOM-02でMilkcocoaにアクセス出来ました!
Arduino UNO R3でダメ元で試してみたのですが、SRAMの容量の関係でスケッチが書き込めずという悔しい結果でした(容量をクリアできればSoftwareSerialでうまくいきそうです)。

下記に今回のArduinoスケッチを。
これからMilkcocoaライフを楽しみます!

C

1#include "ESP8266.h" 2#include "Milkcocoa.h" 3#include "Client_ESP8266.h" 4 5/************************* WiFi Access Point *********************************/ 6 7#define WLAN_SSID "SSID" 8#define WLAN_PASS "パスワード" 9 10 11/************************* Your Milkcocoa Setup *********************************/ 12 13#define MILKCOCOA_APP_ID "Milkcocoa App Id" 14#define MILKCOCOA_DATASTORE "esp8266" 15 16/************* Milkcocoa Setup (you don't need to change this!) ******************/ 17 18#define MILKCOCOA_SERVERPORT 1883 19 20/************ Global State (you don't need to change this!) ******************/ 21 22// Create an ESP8266Client class to connect to the MQTT server. 23ESP8266Client wifi; 24 25const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com"; 26const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID; 27 28Milkcocoa milkcocoa = Milkcocoa(&wifi, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID); 29 30int cnt; 31 32void setup() { 33 SerialUSB.begin(9600); 34 delay(10); 35 36 Serial5.begin(9600); 37 while (!Serial5) { 38 ; 39 } 40 41 SerialUSB.println("Milkcocoa SDK demo"); 42 43 // Connect to WiFi access point. 44 SerialUSB.println(); SerialUSB.println(); 45 SerialUSB.print("Connecting to "); 46 SerialUSB.println(WLAN_SSID); 47 48 wifi.begin(Serial5, 9600); 49 50 SerialUSB.print("FW Version:"); 51 SerialUSB.println(wifi.getVersion().c_str()); 52 53 if (wifi.setOprToStation()) { 54 SerialUSB.print("to station ok\r\n"); 55 } else { 56 SerialUSB.print("to station err\r\n"); 57 } 58 59 if (wifi.joinAP(WLAN_SSID, WLAN_PASS)) { 60 SerialUSB.print("Join AP success\r\n"); 61 SerialUSB.print("IP: "); 62 SerialUSB.println(wifi.getLocalIP().c_str()); 63 } else { 64 SerialUSB.print("Join AP failure\r\n"); 65 } 66 67 if (wifi.disableMUX()) { 68 SerialUSB.print("single ok\r\n"); 69 } else { 70 SerialUSB.print("single err\r\n"); 71 } 72 73 if (milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush)) { 74 SerialUSB.println("milkcocoa on sucesss"); 75 } 76 else { 77 SerialUSB.println("milkcocoa on failure"); 78 } 79 80 cnt = 0; 81}; 82 83void loop() { 84 milkcocoa.loop(); 85 86 DataElement elem = DataElement(); 87 elem.setValue("v", cnt++); 88 milkcocoa.push(MILKCOCOA_DATASTORE, &elem); 89 90 delay(1000); 91}; 92 93void onpush(DataElement *pelem) { 94 SerialUSB.println("onpush"); 95 SerialUSB.println(pelem->getInt("v")); 96}; 97

投稿2015/12/20 15:19

umi_kappa

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問