Cytron esp8266 Wifi Shield подключается и передает данные на локальный хост xampp без проводов - PullRequest
0 голосов
/ 03 марта 2019

У меня есть проект об автоматизированных воротах.Я использую Cytron ESP8266 Wifi Shield.Я использую его для передачи и сохранения ультразвуковых данных на мой локальный порт xampp 80.

Но в моем коде на стороне клиента есть ошибка.

Вот мой код:

#include <CytronWiFiShield.h>
#include <CytronWiFiClient.h>
#include <CytronWiFiServer.h>
#include <SoftwareSerial.h>

const int trigPin = 5;
const int echoPin = 4;
long duration;
int distance;

ESP8266Client client;

const char *ssid = "HRHS";
const char *pass = "06031960";
IPAddress ip(192, 168, 100, 9); //The IP address i got from cmd
ESP8266Server server(80);

const char htmlHeader[] = "HTTP/1.1 200 OK\r\n"
                          "Content-Type: text/html\r\n"
                          "Connection: close\r\n\r\n"
                          "<!DOCTYPE HTML>\r\n"
                          "<html>\r\n";

void setup()
{

    // put your setup code here, to run once:
    Serial.begin(9600);
    while (!Serial)
    {
        ; // wait for serial port to connect. Needed for Leonardo only
    }

    if (!wifi.begin(2, 3))
    {
        Serial.println(F("Error talking to shield"));
        while (1)
            ;
    }
    Serial.println(wifi.firmwareVersion());
    Serial.print(F("Mode: "));
    Serial.println(wifi.getMode()); // 1- station mode, 2- softap mode, 3- both

    Serial.println(F("Start wifi connection"));
    if (!wifi.connectAP(ssid, pass))
    {
        Serial.println(F("Error connecting to WiFi"));
        while (1)
            ;
    }
    Serial.print(F("Connected to "));
    Serial.println(wifi.SSID());
    Serial.println(F("IP address: "));
    Serial.println(wifi.localIP());
    wifi.updateStatus();
    Serial.println(wifi.status()); //2- wifi connected with ip, 3- got connection with servers or clients, 4- disconnect with clients or servers, 5- no wifi
    //clientTest();
    espblink(100);
    server.begin();
}

void loop()
{
    //Start of Program

    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    // Sets the trigPin on HIGH state for 10 micro seconds
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    // Reads the echoPin, returns the sound wave travel time in microseconds
    duration = pulseIn(echoPin, HIGH);
    // Calculating the distance
    distance = duration * 0.034 / 2;
    // Prints the distance on the Serial Monitor
    delay(1000);

    // Connect to the server (your computer or web page)
    if (client.connect("192.168.100.9", 80)) //Same local ip address from cmd
    {
        client.print("GET /write_data.php?"); // This
        client.print("value=");               // This
        client.print(distance);               // And this is what we did in the testing section above. We are making a GET request just like we would from our browser but now with live data from the sensor
        client.println(" HTTP/1.1");          // Part of the GET request
        client.println("Host: ");             // IMPORTANT: If you are using XAMPP you will have to find out the IP address of your computer and put it here (it is explained in previous article). If you have a web page, enter its address (ie.Host: "www.yourwebpage.com")
        client.println("Connection: close");  // Part of the GET request telling the server that we are over transmitting the message
        client.println();                     // Empty line
        client.println();                     // Empty line
        client.stop();                        // Closing connection to server
    }

    else
    {
        // If Arduino can't connect to the server (your computer or web page)
        Serial.println("--> connection failed\n");
    }

    // Give the server some time to receive the data and store it. I used 10 seconds here. Be advised when delaying. If u use a short delay, the server might not capture data because of Arduino transmitting new data too soon.
    delay(10000);
}



void espblink(int time)
{
    for (int i = 0; i < 12; i++)
    {
        wifi.digitalWrite(2, wifi.digitalRead(2) ^ 1);
        delay(time);
    }
}

}

Здравствуйте, извините еще раз.Я собираюсь обновить здесь прогресс может?

Я обновил код.Пожалуйста, поправьте меня, если я могу или не могу сделать это

Хорошо, экран подключен к Wi-Fi.Тем не менее, по-прежнему не удается подключиться к базе данных xampp localhost.

Я искал много в Google, но большинство решений используют локальный экран и веб-страницу, а не localhost.

Я застрял здесь.Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Но я сделал что-то еще.Я сделал мой wifiShield сам сервер.Я могу контролировать светодиод оттуда и контролировать данные оттуда.К сожалению, нет данных для хранения, но пока я могу контролировать их на расстоянии, я счастлив LOL

0 голосов
/ 04 марта 2019

Вы не объявили (глобальную) переменную сервер , как

const char server[] = "www.adafruit.com";

(как вы сделали в void clientTest ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...