Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10

Я хочу отправить данные датчика моего Arduino в базу данных MySQL, используя XAMPP и phpMyAdmin. Я использую ESP8266 для подключения Wi-Fi. Но я не могу отправить значение. И на самом деле я должен отправить четыре значения, но на данный момент я посылаю только одно значение. Поэтому также, пожалуйста, скажите, как отправить несколько значений. Я написал PHP-файл и сохранил его в htdocs Apache.

#include <WiFiEsp.h>
#include <WiFiEspClient.h>
#include <WiFiEspUdp.h>
#include <SoftwareSerial.h>
#include <PubSubClient.h>
#include <SPI.h>
IPAddress ip(192,168,8,1);
char ssid[] = "ZONG MBB-E8372-B67D"; // SSID вашей сети (имя)
char pass[] = "08522547"; // ваш сетевой пароль
int status = WL_IDLE_STATUS; // статус Wifi-радио
int photocellPin = 4; // Аналоговый входной вывод на Arduino мы подключили вывод SIG от датчика
int photocellReading; // Здесь мы разместим наш
char server[] =  "192.168.8.1";
// Инициализация клиентского объекта Ethernet
WiFiEspClient espclient;
SoftwareSerial soft(2,3); // RX, TX

void setup() {
  // инициализировать последовательный для отладки
  Serial.begin(115200);
  // инициализировать последовательный для модуля ESP
  soft.begin(115200);
  // инициализация модуля ESP
  WiFi.init(&soft);
  // проверить наличие щита
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // не продолжай
    while (true);
  }
  // попытка подключения к сети Wi
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Подключение к сети WPA/WPA2
    status = WiFi.begin(ssid, pass);
  }
  // теперь вы подключены, так что распечатайте данные
  Serial.println("You're connected to the network");
}

void loop() {
  photocellReading = analogRead(photocellPin);
  // Заполните сенсорную запись информацией от датчика
  // Подключение к серверу (вашему компьютеру или веб-странице)
  if (espclient.connect(server, 80)) {
    espclient.println("GET /write_data7.php?"); // Это
    espclient.println("value="); // Это
    espclient.println(photocellReading);
    // And this is what we did in the testing section above.
    // Мы делаем запрос GET точно так же, как и в нашем браузере
    // но теперь с живыми данными от датчика
    espclient.println(" HTTP/1.1"); // Часть запроса GET
    espclient.println("Host: 192.168.8.1");
    // ВАЖНО: Если вы используете XAMPP, у вас будет
    //узнать IP-адрес вашего компьютера и поместить его сюда
    // (это объясняется в предыдущей статье). Если у вас есть веб-страница,
    // введите его адрес (т.е. Хост: "www.yourwebpage.com )
    espclient.println("Connection: close");
    // Часть запроса GET, сообщающего серверу
    // что мы перестали передавать сообщение
    espclient.println(); // Пустая строка
    espclient.println(); // Пустая строка
    espclient.stop();    // Закрытие соединения с сервером
  } else {
    // Если Arduino не может подключиться к серверу (вашему компьютеру или веб-странице)
    Serial.println("--> connection failed\n");
  }

  // Дайте серверу некоторое время, чтобы получить данные и сохранить их. Я использовал здесь 10 секунд. Будьте предупреждены при задержке. Если вы используете короткую задержку, сервер может не захватить данные из-за того, что Arduino передает новые данные слишком рано.
  delay(10000);
}

Ниже приведен PHP-код:

<?php
//подключение к базе
define('DB_HOST', 'localhost');
define('DB_NAME', 'connected_car_1');
define('DB_USER','Maryam1');
define('DB_PASSWORD','telecom1213');

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());

$sql = "INSERT INTO connected_car_1.sensor (value) VALUES ('".$_GET["value"]."')";
// Выполнить инструкцию SQL
mysql_query($sql,$con);
mysql_close($con);
?>

А вот мой последовательный выход монитора:

Я очень новичок в кодировании на Arduino, а также в PHP и базах данных. Так что будьте добры, скажите мне, что я делаю не так. И должен ли я указать IP-адрес сервера, т.е. 127.0.0.1? Если да, то где?

, 👍1

Обсуждение

Там есть хорошая уязвимость для атаки с использованием SQL-инъекций. (http://yoursite.com/yourpage.php?value =');+drop+database+connected_car_1;--Неужели люди никогда не научатся? Подсказка: Используйте PDO., @Majenko

Я не загружаю на веб-страницу. Я загружаю на mysql. Это комментарий в коде, если вы хотите загрузить его на веб-страницу, но я этого не делаю., @Maryam

У вас там есть фрагмент PHP-кода. Это веб-страница. Он принимает параметры GET., @Majenko

тогда как мне загрузить чтение arduino в mysql?, @Maryam

Через веб-страницу, подобную той, которую вы создали. Просто изучите с самого начала лучшие практики. Ваша веб-страница, если бы она когда-либо была общедоступной, представляла бы огромную угрозу безопасности., @Majenko

Я должен отправить его после 1 week..so можете ли вы помочь и дать несколько советов, чтобы я быстро учился?, @Maryam

Похоже, ваша проблема не имеет ничего общего с MySQL, XAMPP или чем-то подобным. Похоже, у вас есть элементарная неспособность общаться по сети Wi-Fi. Все эти сообщения о "тайм-ауте" должны сказать вам, по крайней мере, об этом. Сначала запустите сетевое подключение, а затем работайте над взаимодействием с MySQL., @Majenko

я уже много раз гуглил, но обнаружил, что этот код работает гораздо лучше для подключения к сети Wi-Fi. Можете ли вы дать мне несколько хороших ссылок?, @Maryam

Шаг первый: запустите несколько примеров, прилагаемых к вашей библиотеке Wi-Fi, чтобы убедиться, что вы можете правильно подключиться к своей сети. В ваших выходных данных есть огромное количество предупреждений и ошибок, которые говорят мне, что что-то в корне неправильно в вашей настройке. ESP8266 - это не простая плата для использования с Arduino., @Majenko

Не является ли GET неправильным глаголом для использования при записи на веб-сервер?, @Code Gorilla

#включить (avr/pgmspace.h) ^ компиляция завершена. статус выхода 1. Ошибка компиляции карты NodeMCU 1.0 (модуль ESP-12E)., @Usef Uzer

Не очень понятно, для чего нужен этот "Ответ", пожалуйста, не могли бы вы отредактировать его, чтобы уточнить или удалить., @Code Gorilla

@LookAlterno - я знаю, я пытался быть деликатным :), @Code Gorilla

192.168.8.1 должен быть IP-адресом вашего ПК. Где должен быть запущен ваш apache. Вы можете проверить это, посетив http://192.168.8.1/write_data7.php и посмотрите, в порядке ли сервер или нет. Затем вы можете попробовать получить доступ с другого компьютера, чтобы убедиться, что брандмауэр не блокирует вас, @Eslam Sameh Ahmed

Не уверен, как PDO предотвратит внедрение SQL. После проверки данных на ошибки используйте mysql_real_escape_string(), @Brian Moreau


1 ответ


1

Вы должны написать IP-адрес ПК, например: 192.168.1.53, потому что 127.0.0.1 - это IP-адрес, используемый только для phpmyadmin и базы данных внутри вашего компьютера.

,