###前提・実現したいこと
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を使って楽しい電子工作ライフを満喫できると思うので、なんとかして実現したいです。。
回答2件
あなたの回答
tips
プレビュー