Отправка данных 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? Если да, то где?
@Maryam, 👍1
Обсуждение1 ответ
Вы должны написать IP-адрес ПК, например: 192.168.1.53
, потому что 127.0.0.1
- это IP-адрес, используемый только для phpmyadmin и базы данных внутри вашего компьютера.
- AT-команда не отвечает на последовательный монитор
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Захват изображений с OV7670 (без FIFO) с использованием Arduino Uno?
- Arduino Uno — ESP 8266: отправка AT-команд через код
Там есть хорошая уязвимость для атаки с использованием 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