質問するログイン新規登録

質問編集履歴

1

現在のできているところ、ソースコードを追記しました。

2015/11/25 14:25

投稿

umi_kappa
umi_kappa

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,8 @@
1
1
  ###前提・実現したいこと
2
2
  ArduinoにESP-WROOM-02をあくまでWi-FiモジュールとしてSoftwareSerialで接続した場合(ESP-WROOM-02にはプログラミングは行わない)、
3
3
  どのようにしたらMilkcocoa Arduino SDKでMilkcocoaとやり取りできるようになるのでしょうか?
4
+ ###ここまではできました
5
+ [ESP-WROOM-02とArduino UNOでhttp通信](http://www.mkbtm.jp/?p=644)のサンプルを基にSoftwareSerialでArduino~ESP8266のシリアル通信・サーバー上のPHPから値取得はできています。SoftwareSerialをMilkcocoa Arduino SDKに渡す部分で悩み中です。
4
6
  ###SoftwareSerialからEthernetClientへ置換えられないか
5
7
  [ESP8266やArduinoでMilkcocoaを使う方法(Milkcocoa Arduino SDK)](http://blog.mlkcca.com/iot/milkcocoa-arduino/)
6
8
  にて、
@@ -9,5 +11,79 @@
9
11
  Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
10
12
  ```
11
13
  Milkcocoaコンストラクタの第1引数にArduino基本クラスのEthernetClientのインスタンスを渡すとのことなのですが、ArduinoとESP-WROOM-02間はSoftwareSerialでシリアル通信しているので、そこをEthernetClientへ置き換えられればうまくいくのではないかと考えたのですが、解決方法がわからずこちらで質問させていただきました。
14
+ ###ソースコード
15
+ ほぼ上記の記事のサンプルのままです。それにSoftwareSerialを追記しています。
16
+ ```Arduino
17
+ #include "ESP8266.h"
18
+ #include <SoftwareSerial.h>
19
+ #include <Milkcocoa.h>
20
+
21
+ /************************* WiFi Access Point *********************************/
22
+
23
+ #define WLAN_SSID "...SSID..."
24
+ #define WLAN_PASS "...PASS..."
25
+
26
+
27
+ /************************* Your Milkcocoa Setup *********************************/
28
+
29
+ #define MILKCOCOA_APP_ID "...YOUR_MILKCOCOA_APP_ID..."
30
+ #define MILKCOCOA_DATASTORE "esp8266"
31
+
32
+ /************* Milkcocoa Setup (you don't need to change this!) ******************/
33
+
34
+ #define MILKCOCOA_SERVERPORT 1883
35
+
36
+ /************ Global State (you don't need to change this!) ******************/
37
+
38
+ SoftwareSerial mySerial(12, 11); /* RX:12, TX:11 */
39
+ ESP8266 wifi(mySerial);
40
+
41
+ const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com";
42
+ const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID;
43
+
44
+ Milkcocoa milkcocoa = Milkcocoa(mySerial, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
45
+
46
+ void setup() {
47
+ Serial.begin(115200);
48
+ delay(10);
49
+
50
+ Serial.println(F("Milkcocoa SDK demo"));
51
+
52
+ /*
53
+ // Connect to WiFi access point.
54
+ Serial.println(); Serial.println();
55
+ Serial.print("Connecting to ");
56
+ Serial.println(WLAN_SSID);
57
+
58
+ WiFi.begin(WLAN_SSID, WLAN_PASS);
59
+ while (WiFi.status() != WL_CONNECTED) {
60
+ delay(500);
61
+ Serial.print(".");
62
+ }
63
+ Serial.println();
64
+
65
+ Serial.println("WiFi connected");
66
+ Serial.println("IP address: ");
67
+ Serial.println(WiFi.localIP());
68
+ */
69
+ Serial.println( milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush) );
70
+ };
71
+
72
+ void loop() {
73
+ milkcocoa.loop();
74
+
75
+ DataElement elem = DataElement();
76
+ elem.setValue("v", 1);
77
+
78
+ milkcocoa.push(MILKCOCOA_DATASTORE, elem);
79
+ delay(7000);
80
+ };
81
+
82
+ void onpush(DataElement elem) {
83
+ Serial.println("onpush");
84
+ Serial.println(elem.getInt("v"));
85
+ };
86
+
87
+ ```
12
88
  ###Milkcocoaを使いたい!
13
89
  この壁さえ越えられれば、私のような趣味で電子工作をやっている人間でもArduinoからMilkcocoaを使って楽しい電子工作ライフを満喫できると思うので、なんとかして実現したいです。。