Как подключить Arduino с модулем WiFi ESP8266-11 к 000webhost (бесплатный хостинг)
Я хочу узнать, как подключить Arduino к моему сайту на 000webhost.com (бесплатный аккаунт веб-хостинга). Я использую модуль ESP-11 WiFi, и он подключен к Интернету.
Это мой код Arduino:
#include <SoftwareSerial.h>
SoftwareSerial ESP11 = SoftwareSerial(10,11); // RX, TX
#define DEBUG true
// ДЕКЛАРАЦИЯ WIFI SHIELD
String ssid = "\"SampleSSID\"";
String pass = "\"SamplePass\"";
String tcp = "\"TCP\"";
String remoteip = "\"jvystocksystem.000webhostapp.com\"";
String portnum = "80";
void setup(){
ESP11.begin(9600);
Serial.begin(9600);
sendData("AT+CWMODE=1\r\n",2000,DEBUG); // настроить как точку доступа и Клиента
sendData("AT+RST\r\n",2000,DEBUG); // сброс модуля
sendData("AT+GMR\r\n",2000,DEBUG); // Просмотр информации о версии
sendData("AT+CWLAP\r\n",5000,DEBUG); // Список всех доступных точек доступа*/
sendData("AT+CWJAP=" + ssid + "," + pass + "\r\n",10000,DEBUG); // Подключиться к точке доступа
sendData("AT+CIFSR\r\n",2000,DEBUG); // получить IP-адрес
sendData("AT+CIPMUX=0\r\n",2000,DEBUG); //Отдельные TCP-соединения
sendData("AT+CIPSTART="+ tcp +"," + remoteip + "," + portnum + "\r\n",3000,DEBUG); // Начать подключение к localhost <link id>,<type>,<remote IP>,<Port Number>
String getStr = "GET /getCpno.php?user_type=admin HTTP/1.0"; // Получение информации из моей онлайн-базы данных через мой онлайн-сайт
getStr += "\r\n\r\n";
String cmd;
// длина отправки данных
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
sendData(cmd + "\r\n",1000,DEBUG);
sendData(getStr,3000,DEBUG);
}
void loop() {
// поместите сюда свой основной код для многократного выполнения:
// Для ESP8266
if(ESP11.available()) // проверяем, отправляет ли esp сообщение
{
if(ESP11.find("+IPD,"))
{
delay(1000); // ждем заполнения последовательного буфера (читаем все последовательные данные)
// получаем идентификатор соединения, чтобы затем можно было отключиться
int connectionId = ESP11.read()-48; // вычитаем 48, так как функция read() возвращает
// десятичное значение ASCII и 0 (первое десятичное число) начинается с 48
ESP11.find("pin="); // переместить курсор на "pin="
int pinNumber = (ESP11.read()-48)*10; // получаем первое число, т.е. если пин 13, то первое число равно 1, затем умножаем, чтобы получить 10
pinNumber += (ESP11.read()-48); // получаем второе число, т.е. если номер пина равен 13, то второе число равно 3, затем прибавляем к первому числу
digitalWrite(pinNumber, !digitalRead(pinNumber)); // переключить вывод
// выполнить команду закрытия
String closeCommand = "AT+CIPCLOSE=";
closeCommand+=connectionId; // добавить идентификатор соединения
closeCommand+="\r\n";
sendData(closeCommand,1000,DEBUG); // закрыть соединение
}
}
}
/*
* Name: sendData
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
*/
String sendData(String command, const int timeout, boolean debug)
{
String response = ""; // ESP8266 sendData Строка
ESP11.print(command); // отправляем прочитанный символ в esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(ESP11.available())
{
// В esp есть данные, поэтому отобразите их вывод в последовательном окне
char c = ESP11.read(); // прочитать следующий символ.
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}
Но мой код не возвращает нужное мне значение из базы данных, вместо этого я получаю это в своем последовательном мониторе:
Надеюсь, вы, ребята, сможете помочь мне с моим кодом.
@EJ Ladrica, 👍1
1 ответ
Лучший ответ:
▲ 1
Веб-сервер использует виртуальные хосты. Если вы не сообщите ему, к какому виртуальному хосту вы делаете запрос, сервер не будет знать, куда отправить запрос, и выдаст ошибку.
Вам необходимо добавить требуемый заголовок Host
, который сообщит ему именно это.
Составьте правильный запрос следующим образом:
String getStr = "GET /getCpno.php?user_type=admin HTTP/1.1\r\n";
getStr += "Host: jvystocksystem.000webhostapp.com\r\n"; // добавляем требуемый заголовок
getStr += "\r\n";
,
@gre_gor
Смотрите также:
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- Загрузка кода Arduino, OTA, через подключенный ESP8266-12E с запущенным Esp-Link
- ESP8266 Ошибка неверного запроса 400
- Проблема с WiFi на Mega + WiFi R3 ATmega2560 + ESP8266
- Последовательная связь arduino mega и D1 Wemos Mini
- Проанализировать большой ответ json с помощью ESP8266