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

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

ただいまの
回答率

90.52%

  • C

    3672questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Arduino

    538questions

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

Ethernetシールド用のプログラムを、ESP-WROOM-02用のプログラムにしたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 462

bobby2128

score 33

前提・実現したいこと

参考文献にあるコード(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で質問しよう!

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

関連した質問

同じタグがついた質問を見る

  • C

    3672questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • Arduino

    538questions

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