Ethernetシールド用のプログラムを、ESP-WROOM-02用のプログラムにしたい
受付中
回答 0
投稿
- 評価
- クリップ 0
- VIEW 1,527
前提・実現したいこと
参考文献にあるコード(ArduinoからPOSTデータを送信してPHPで受け取る方法)を書き換え、Ethernetシールドではなく、ESP-WROOM-02を用いてプログラム内容を実行したいです。
http://kakikukeko.sakura.ne.jp/blog/send-post-data-to-php-from-arduino/
Ethernetに該当する箇所をESP-WROOM-02の文に書き換えるだけで実行できると思ったのですが…
ところが、以下に示すようにエラー文が出てきまして、解決の方法がよくわかりません。
解決のアイデアや方法などございましたら、お教えいただけますと幸いです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
In file included from C:\Users\y.y\Documents\Arduino\Patern2\Patern2.ino:9:0:
C:\Users\y.y\Documents\Arduino\libraries\Milkcocoa_Arduino_SDK-master/Client_ESP8266.h:27:35: error: expected class-name before ',' token
class ESP8266Client: public Client, public ESP8266 {
^
C:\Users\y.y\Documents\Arduino\Patern2\Patern2.ino: In function 'void setupWiFi()':
Patern2:93: error: 'wifi' was not declared in this scope
wifi.begin(Serial1); //RX-D0 TX-D1
^
C:\Users\y.y\Documents\Arduino\Patern2\Patern2.ino: In function 'bool post(String, String)':
Patern2:183: error: 'client' was not declared in this scope
if (client.connect(HOST, 80)) {
^
?ESP8266.h?????????????????????
????C:\Users\y.y\Documents\Arduino\libraries\ESP8266_Arduino_AT-master
????C:\Users\y.y\Documents\Arduino\libraries\ITEADLIB_Arduino_WeeESP8266-master
exit status 1
'wifi' was not declared in this scope
該当のソースコード
書き換えたコード
//参考文献 Ethernet
//#include <SPI.h>
//#include <Ethernet.h>
/*****************************WifiSetting*************************************/
// ライブラリの読み込み
#include "ESP8266.h"
#include "Client_ESP8266.h"
// 転送スピード
#define SERIAL_SPEED 115200
/************************* WiFi Access Point *********************************/
// Wi-Fi SSID
#define WLAN_SSID "D*****"
// Wi-Fi PASSWORD
#define WLAN_PASS "e*******"
/******************************************************************************/
//入力ピンの設定
#define PIN_INPUT_BLUE 5
#define PIN_INPUT_YELLOW 7
#define PIN_INPUT_GREEN 9
//参考文献 Ethernet
////MACアドレス(適当に)
//byte mac[] = {0x02, 0x02, 0x02, 0x02, 0x02, 0x02};
////IPアドレス(適当に)
//byte ip[] = {192, 168, 0, 123};
//接続先のURL
char HOST[] = "https://*****************websites.net"; //元々のプログラム"www.example.jp";
String END_POINT = "******************.php"; //元々のプログラム/dev/wwwroot/Sent.php
//参考文献 Ethernet
//EthernetClient client;
void setup() {
// Wi-Fi設定
setupWiFi();
pinMode(PIN_INPUT_BLUE, INPUT);
pinMode(PIN_INPUT_YELLOW, INPUT);
pinMode(PIN_INPUT_GREEN, INPUT);
// パソコンとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
// Wi-Fiモジュールとのシリアル通信のポートを開ける
Serial1.begin(SERIAL_SPEED);
// 参考文献 Ethernet
//Serial.begin(9600);
delay(500);
while (!Serial) {
;
}
delay(1000);
// 参考文献 Ethernet
// Ethernet.begin(mac, ip);
// delay(3000);
// Serial.print("IP: ");
// Serial.println(Ethernet.localIP());
// Serial.println("Ready...");
// Serial.println();
}
bool onBlue = false;
bool onYellow = false;
bool onGreen = false;
/*************************************Wi-Fiを設定します*********************************/
void setupWiFi() {
Serial.print("Connecting to");
Serial.println(WLAN_SSID);
// シリアルポートの指定
wifi.begin(Serial1); //RX-D0 TX-D1
// Wi-Fiへ接続(成功するまで処理を繰り返す)
while (!wifi.joinAP(WLAN_SSID, WLAN_PASS)) {
delay(500);
Serial.print(".");
}
Serial.println("Wi-Fi connected");
Serial.println("IP address: ");
// Wi-FiのローカルIPアドレスをシリアルモニターへ表示
Serial.println(wifi.getLocalIP().c_str());
}
void loop() {
int blue = digitalRead(PIN_INPUT_BLUE);
int yellow = digitalRead(PIN_INPUT_YELLOW);
int green = digitalRead(PIN_INPUT_GREEN);
switch (blue) {
case HIGH:
if (!onBlue) {
Serial.println("BLUE ON");
post("Blue", "time-" + String(millis(), DEC));
delay(1000);
onBlue = true;
}
break;
case LOW:
if (onBlue) {
Serial.println("BLUE OFF");
onBlue = false;
}
break;
default:
break;
}
switch (yellow) {
case HIGH:
if (!onYellow) {
Serial.println("YELLOW ON");
post("Yellow", "time-" + String(millis(), DEC));
delay(1000);
onYellow = true;
}
break;
case LOW:
if (onYellow) {
Serial.println("YELLOW OFF");
onYellow = false;
}
break;
default:
break;
}
switch (green) {
case HIGH:
if (!onGreen) {
Serial.println("GREEN ON");
post("Green", "time-" + String(millis(), DEC));
delay(1000);
onGreen = true;
}
break;
case LOW:
if (onGreen) {
Serial.println("GREEN OFF");
onGreen = false;
}
break;
default:
break;
}
}
bool post(String title, String message) {
Serial.println("connecting...");
if (client.connect(HOST, 80)) {
Serial.println("connected");
String query = "title=" + title + "&message=" + message;
client.println("POST " + END_POINT + " HTTP/1.1");
client.print("Host: ");
client.println(HOST);
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("User-Agent: Arduino Post Client");
//ここは無くてもOK
//client.print("Post-Title: ");
//client.println(title);
//client.print("Post-Message: ");
//client.println(message);
client.print("Content-Length: ");
client.println(query.length());
client.println("Connection: close");
client.println();
client.print(query);
Serial.println(query);
Serial.println("sent");
delay(500);
client.stop();
return true;
}
return false;
}
参考文献
http://kakikukeko.sakura.ne.jp/blog/send-post-data-to-php-from-arduino/
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる