Отправка данных из базы данных phpmyadmin в arduino uno с помощью модуля esp8266-01 wifi - PullRequest
0 голосов
/ 23 октября 2018

Я использую ИК-датчик с arduino uno. Через esp8266-01 я успешно отправляю состояние ИК-датчика (т. Е. Ясность и препятствие) в базу данных phpmyadmin, созданную с помощью панели управления xampp. Я использую команду AT дляотправить данные из arduino в базу данных. Теперь я хочу, чтобы мое arduino получало данные из базы данных phpmyadmin и изменяло состояние светодиодного индикатора. Как получить ответ от сервера с помощью команды AT и, соответственно, изменить состояние датчика.

Код Arduino

#include <SoftwareSerial.h>
#define RX 10
#define TX 11
String AP = "Tenda_2704A8";    
String PASS = "********"; 
String Data;
int countTrueCommand;
int countTimeCommand;
boolean found = false;

int LED = 13; // Use the onboard Uno LED
int isObstaclePin = 7;  // This is our input pin
int isObstacle = HIGH;  // HIGH MEANS NO OBSTACLE


SoftwareSerial esp8266(RX, TX);


void setup() {
  pinMode(LED, OUTPUT);
  pinMode(isObstaclePin, INPUT);
  Serial.begin(9600);
  esp8266.begin(115200);
  sendCommand("AT", 5, "OK");
  sendCommand("AT+CWMODE=1", 5, "OK");
  sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK"); 


}
void loop() {

  String output;

  isObstacle = digitalRead(isObstaclePin);
  if (isObstacle == LOW)
  { 
    output = "obstacle";
    Serial.println("OBSTACLE!!, OBSTACLE!!");
    digitalWrite(LED, HIGH);
  }
  else
  { 
    output = "clear";
    Serial.println("clear");
    digitalWrite(LED, LOW);
  }



  Data = "GET /project/ajax/arduino.php?value="+output;
  sendCommand("AT+CIPMUX=1",5,"OK"); 
  sendCommand("AT+CIPSTART=0,\"TCP\",\"192.168.0.104\",80",4,"OK");
  sendCommand("AT+CIPSEND=0," +String(Data.length()+4),2,">");
  esp8266.println(Data);delay(100);countTrueCommand++;
  sendCommand("AT+CIPCLOSE=0",2,"OK");



}


void sendCommand(String command, int maxTime, char readReplay[]) {
  Serial.print(countTrueCommand);
  Serial.print(". at command => ");
  Serial.print(command);
  Serial.print(" ");
  while (countTimeCommand < (maxTime * 1))
  {
    esp8266.println(command);//at+cipsend
    if (esp8266.find(readReplay)) //ok
    {
      found = true;
      break;
    }

    countTimeCommand++;
  }

  if (found == true)
  {
    Serial.println("Yes");
    countTrueCommand++;
    countTimeCommand = 0;
  }

  if (found == false)
  {
    Serial.println("Fail");
    countTrueCommand = 0;
    countTimeCommand = 0;
  }

  found = false;
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я просто заменил плату arduino uno на nodemcu esp8266. Использование библиотеки, такой как ESP8266HTTPCLIENT.H, ESP8266.H, решило все мои проблемы. Теперь я могу получать данные из базы данных или наоборот.

0 голосов
/ 24 октября 2018

Если я понял ваш вопрос, вам нужно добавить в свой код ip сервер ex.192.168.1.4. В моем тесте я использовал эту библиотеку #include WiFiClientSecure.h и написал этот код для получения ответа от моего php файла ... (используяesp8266)

// HTML

char servername[] = "192.168.1.4";
WiFiClient client; //library WiFiClientSecure

.....your code

void send(int temp, int hum) {

  if (client.connect(servername, 80)) {
    client.println(String("GET /myfolder/index.php?temp=") + temp + String("&hum=") + hum);
    client.println("Host: servername");
    client.println("Connection: close");
    client.println("");

    while (client.connected()) {

      while (client.available()) {

        Serial.write(client.read());//read the response that you receive...in this case on serial monitor

      }

    }

  }
  else {
    Serial.println("connession faliled");
  }
  //stop the client
  client.stop();
  while (client.status() != 0) {
    delay(5);
  }
}

Я надеюсь, что это полезно

В другой есть ссылка на YouTube, в которой говорится об Arduino и MySQL https://www.youtube.com/watch?v=6hi9Wf99hfg

...