Как Arduino Mega 2560 + Wifi Shield 2.0 (SeeedStudio) получает данные из базы данных на сервере XAMPP на моем ПК?

Я пытаюсь подключить свою Arduino Mega через Wi-Fi к моему серверу XAMPP. Моя основная цель - получить значение из моей базы данных и сохранить его на переменной в коде Arduino. С помощью этой новой переменной я смогу контролировать остальную часть программы ... Поэтому мне нужна ваша помощь. Может кто-нибудь дать мне совет?

Я уже пробовал все, что я нашел в Интернете, но он просто не работает.

Я думаю, что простой способ - отправить GET-запрос на сервер и прочитать его ответ ... Но по какой-то причине я не могу отправить запрос GET через ...

Я тестировал его в браузере напрямую, и значение появляется, поэтому я думаю, что на стороне сервера все в порядке.

Вот мой код Arduino:

#include <Arduino.h>
#include <SoftwareSerial.h>
#include "WiFly.h"
#include "HTTPClient.h"

#define SSID      "mySSID"
#define KEY       "myKEY"
#define AUTH      WIFLY_AUTH_WPA2_PSK
#define HTTP_GET_URL "http://192.168.1.80/xampp/training/send_data_db.php/?temp=0"

// Pins' connection
// Arduino       WiFly
//  2    <---->    TX
//  3    <---->    RX
SoftwareSerial uart(10, 11);
WiFly wifly(uart);
HTTPClient http;
char get;

void setup() {
  Serial.begin(9600);
  Serial.println("------- WIFLY HTTP --------");
  uart.begin(9600); // WiFly UART Baud Rate: 9600
  // Wait WiFly to init
  //  delay(3000);

  // check if WiFly is associated with AP(SSID)
  if (!wifly.isAssociated(SSID)) {
    while (!wifly.join(SSID, KEY, AUTH)) {
      Serial.println("Failed to join " SSID);
      Serial.println("Wait 0.1 second and try again...");
      delay(100);
    }
    wifly.save(); // save configuration,
  }
  Serial.println("\r\nTry to get url - " HTTP_GET_URL);
  Serial.println("------------------------------");
  while (http.get(HTTP_GET_URL, 10000) < 0) {
  }
  while (wifly.receive((uint8_t *)&get, 1, 1000) == 1) {
    Serial.print(get);
  }
  if (wifly.commandMode()) {
    Serial.println("\r\n\r\nEnter command mode. Send \"exit\"(with \\r) to exit command mode");
  }
}

void loop() {
  int c;
  while (wifly.available()) {
    c = wifly.read();
    if (c > 0) {
      Serial.write((char)c);
    }
  }
  while (Serial.available()) {
    c = Serial.read();
    if (c >= 0) {
      wifly.write((char)c);
    }
  }
}

И вот мой PHP-код:

<? php
include("./connection/database_connect.php");
include("./top_table.php");

if ((isset($_SESSION["ID"])) AND (isset($_GET["temp"]))) {
  $id = $_SESSION["ID"];
  $sql = "SELECT temp FROM perfil, client WHERE perfil.ID ='$id'";
  $consult = mysqli_query($connect, $sql);
  $result = mysqli_num_rows($consult);
  if (($result == 1)) {
    $person_data = mysqli_fetch_array($consult, MYSQLI_ASSOC);
    $temp = $person_data["temp"];
    header("HTTP/1.1" . " " . 200 . "OK");
    header("Content-Type: text/html; charset=UTF-8");
    header("Content-Length: 1112");
    header("Connection: close");
    header("/r/n");
    echo $temp;
  } else {
    //se user dosen't exist on data base
    header("Location: http://192.168.1.80/xampp/training/login.php");
    exit;
  }
} else {
  header("Location: http://192.168.1.80/xampp/training/login.php");
  exit;
}
?>
3 голоса | спросил Filipe Carrasquinho 20 PM00000020000002331 2015, 14:08:23

2 ответа


0

Вы должны забыть о $ _SESSION ["ID"]; на стороне PHP, потому что вы работаете без гражданства без какой-либо сессии! Вы должны указать параметр для идентификации вашей переменной от arduino до php script - это temp = 0? Если это так, вам нужно обменять

$sql="SELECT temp FROM perfil, client WHERE perfil.ID ='$id'";

с

$sql="SELECT temp FROM perfil, client WHERE perfil.ID =" . $_GET["temp"];

Предполагая, что perfil.id является только целым числом - если это строка, то добавьте «».

ответил PowerStat 14 J0000006Europe/Moscow 2016, 12:32:02
0

Да, вы правы!

Между тем я закончил этот проект.

Проблема заключалась в использовании экрана Wi-Fi, который я использовал. Запрос Http не был в правильном формате.

ответил Filipe Carrasquinho 15 J0000006Europe/Moscow 2016, 15:31:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132