Отправить данные на локальный хост компьютера с помощью Wi-Fi-модуля ESP-01.

Я использую Linux-машину с установленным локальным php-сервером. Машина Wi-Fi подключена к модулю ESP-01 (режим точки доступа), и я могу отправить несколько данных на Arduino через ESP-01, установленный как:

  sendData("AT+RST\r\n",2000,DEBUG); // сброс модуля
  sendData("AT+CWMODE=2\r\n",1000,DEBUG); // настраиваем как точку доступа
  sendData("AT+CIFSR\r\n",1000,DEBUG); // получаем IP-адрес
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // настройка для нескольких соединений
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // включаем сервер на порту 80

PHP-сервер может отправлять данные методом GET, а Arduino получает PIN=11:

 http://192.168.4.1:80/?pin=11

Но теперь я хотел бы отправить на php-сервер данные с Arduino. Я пробовал эту конфигурацию, но в моем скетче появляется ошибка.

sendData("AT+CIPSTART=0,'TCP','http://localhost',80\r\n",1000,DEBUG);

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

   ERROR
   AT+CIPSTART=0,'TCP','http://localhost/test_php',80

   Link type ERROR

Как я могу отправлять и получать данные с помощью моего модуля ESP-01?

, 👍0


2 ответа


2

«localhost» — это имя, связанное с интерфейсом обратной связи вашего компьютера. То есть 127.0.0.1.

Это не адрес вашего компьютера в сети. Единственный компьютер, который может общаться с «localhost», — это сам компьютер.

Вместо «localhost» вы должны использовать IP-адрес вашего компьютера (или полное доменное имя, которое преобразуется в IP-адрес вашего компьютера).

И вы не можете открыть TCP-соединение с URL-адресом. Вы открываете TCP-соединение с IP-адресом или полным доменным именем.

Вам действительно следует изучить основы IP-сетей, прежде чем пытаться писать для них программное обеспечение.


Поскольку ваш компьютер может обмениваться данными с ESP8266 по адресу 192.168.4.1, я предполагаю, что вы используете ESP8266 в режиме SOFTAP и у вас есть интерфейс Wi-Fi, подключенный к этой точке доступа. Если да, то интерфейсу Wi-Fi будет назначен адрес 192.168.4.x. Это адрес, который вы должны открыть с помощью TCP-соединения через порт 80, чтобы подключиться к вашему серверу Apache.

Например:

sendData("AT+CIPSTART=0,'TCP','192.168.4.3',80\r\n",1000,DEBUG);

Затем вы можете создать подходящий HTTP-запрос для отправки данных.

,

я заменил localhot на 127.0.0.1. Терминал возвращает ту же ошибку Тип ссылки, @Teddol

Я сказал *не* localhost., @Majenko

И вы удалили протокол., @Majenko

ОШИБКА AT+CIPSTART=0,'TCP','127.0.0.1/test_php',80 Тип ссылки ОШИБКА, @Teddol

Вы читаете? Я сказал НЕ использовать адрес локального хоста. Используйте IP-адрес вашего компьютера в сети. И вставьте обратно в протокол, который вы удалили., @Majenko

Хотя вы используете необработанные команды TCP, чтобы попытаться получить доступ к URL-адресу. Вам нужен *только* IP-адрес . И *не* 127.0.0.1, @Majenko

Прежде чем приступать к работе с сетями, изучите основы работы в сети., @Majenko

Извините, но я новичок в Arduino и пытаюсь понять, как он работает с ESP-01 и удаленным php-сервером. ESP не подключен к моей домашней сети, и я этого не хочу. мне нужна дополнительная помощь..., @Teddol

Если ваш компьютер может обмениваться данными с ESP8266, между ними должна быть какая-то сеть., @Majenko

Да, компьютер может отправлять сообщения, но как Arduino может сделать то же самое с компьютером?, @Teddol

Открыв соединение с IP-адресом вашего ПК., @Majenko


0

Откройте командную строку и введите ipconfig В разделе IPv4-адрес вы можете увидеть IP-адрес вашего компьютера. Этот IP-адрес является адресом локального хоста (поскольку ваш компьютер является «сервером» в вашей локальной/домашней сети).

Не забудьте настроить XAMP/WAMP для прослушивания специальных адресов. И, конечно же, если вы хотите использовать localhost, ваш компьютер должен быть включен.

Да, компьютер может отправлять сообщения, но как Arduino может сделать то же самое с компьютером

Да, может. ПК (локальный хост) — это сервер, а Arduino — клиент, например Stackexchange — хост, а ваш компьютер — клиент (для Stackexchange). Надеюсь, ты это понял

 ESP не подключен к моей домашней сети, и мне это не нужно.

Вы можете использовать общедоступный сервер, но вам необходимо знать IP-адрес сервера.

,

он подключается к esp8266 как точка доступа. поэтому не адрес в домашней сети, а адрес интерфейса Wi-Fi, подключенного к esp8266., @Juraj