HTTP Post данные с Arduino uno с помощью Wi-Fi
Пожалуйста, помогите мне разместить данные с arduino uno на веб-странице, используя модуль wifi (ESP-01). Я пытаюсь использовать AT-команды, но они не дали ответа с моей веб-страницы
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
#define DEBUG true
#define RX 10
#define TX 11
String WIFI_SSID = "*****"; // Ваш ssid Wi-Fi
String PASSWORD = "*****"; // Пароль
//Строка DEVICE_SECRET_KEY = "**";
//ПУТЬ к строке = "/v1/события";
//Строковый ПОРТ = "8000";
//String ХОСТ = "http://10 .**.***.66:8000/данные";
String HOST = "10.**.240.**";
String PATH = "/data";
String PORT = "8000";
String response;
int countTrueCommand;
int countTimeCommand;
boolean found = false;
SoftwareSerial esp8266(RX, TX);
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
void setup()
{
Serial.begin(115200);
esp8266.begin(115200);
esp8266.println("AT");
Serial.println(esp8266.read());
sendCommandToESP8266("AT", 5, "OK");
sendCommandToESP8266("AT+CWMODE=3", 5, "OK");
sendCommandToESP8266("AT+CWJAP=\"" + WIFI_SSID + "\",\"" + PASSWORD + "\"", 20, "OK");
}
void loop()
{
root["key"] = "sdfsdfsd";
String key;
root.printTo(key);
String postRequest = "POST " + PATH + " HTTP/1.1\r\n" +
"Host: " + HOST + "\r\n" +
"Accept: *" + "/" + "*\r\n" +
"Content-Length: " + key.length() + "\r\n" +
"Content-Type: application/json\r\n"
"\r\n" + key;
Serial.print("pst:" + postRequest);
sendCommandToESP8266("AT+CIPMUX=1", 5, "OK");
sendCommandToESP8266("AT+CIPSTART=0,\"TCP\",\"" + HOST + "\"," + PORT, 15, "OK");
String cipSend = "AT+CIPSEND=0," + String(postRequest.length());//GET /test.php?Data=2\r\nHost:192.168.1.13\r\n\r\n
sendCommandToESP8266(cipSend, 4, ">");
sendData(postRequest);
while (esp8266.available())
{
if (esp8266.find("+IPD,"))
{
// Строка msg;
esp8266.find("?");
// msg = esp8266.readStringUntil(' ');
response = esp8266.readStringUntil(' ');
Serial.print(response);
Serial.println();
}
}
printResponse;
// sendCommandToESP8266("AT+CIPCLOSE=0", 5, "OK");
}
void sendCommandToESP8266(String command, int maxTime, char readReplay[]) {
Serial.print(countTrueCommand);
Serial.print(". at command => ");
Serial.print(command);
Serial.print(" ");
while (countTimeCommand < (maxTime * 1))
{
esp8266.println(command);
if (esp8266.find(readReplay))
{
found = true;
break;
}
countTimeCommand++;
}
if (found == true)
{
Serial.println("Success");
countTrueCommand++;
countTimeCommand = 0;
}
if (found == false)
{
Serial.println("Fail");
countTrueCommand = 0;
countTimeCommand = 0;
}
found = false;
}
void sendData(String postRequest) {
Serial.println(postRequest);
Serial.println();
esp8266.println(postRequest);
delay(15000);
countTrueCommand++;
}
void printResponse() {
while (esp8266.available()) {
Serial.println();
Serial.println(esp8266.readStringUntil('\n'));
}
}
Пожалуйста, помогите мне получить ответ с веб-страницы, используя этот код.
@ASK, 👍1
Обсуждение1 ответ
Шаг 1) Загрузите software serial из примера и отправьте по адресу, вы должны получить ответ как В OK, если ваши подключения верны. Шаг 2) Как только ваши подключения будут правильными, и если вы загружаете данный код, убедитесь, что вы ввели свой SSID, пароль и IP-адрес сервера, который будет состоять из трех строк: ХОСТ, ПУТЬ и ПОРТ.
В качестве альтернативы вы можете сначала проверить свой сервер, отправив ему GET или POST с помощью своего браузера или другого программного обеспечения для тестирования API (я лично использую POSTMAN).
После выполнения этих проверок продолжайте работу.
Я попробовал это и до сих пор не получил ответа с веб-страницы. Также у API нет проблем, когда я его проверяю., @ASK
Вы пробовали выполнить проверку по команде AT? Загрузите software serial, и вы сможете вручную вводить команды AT и проверять, где вы ошибаетесь., @Asim Merchant
У меня есть с собой 2 модуля esp-01. Я думаю, что один из моих esp поврежден. Но другой работает при проверке по команде AT., @ASK
Теперь вы можете проверить каждую команду, которая используется через последовательный интерфейс программного обеспечения. Например, согласно вашему коду, если вы отправите "AT + CWMODE = 3", вы получите ответ OK. Вы можете выполнить полный post-запрос просто с помощью программного обеспечения serial, вводя команды одну за другой. Это хорошая практика, так как это поможет вам понять, в какой момент ваш код идет не так., @Asim Merchant
Я попытался, отправив все AT-команды, и я останавливаюсь, где AT + CIPSTART=0, "TCP", "xx.xxx.xxx.xx", "порт" из этой команды я получил сообщение об ошибке. что я могу сделать, чтобы сделать это правильно?, @ASK
Попробуйте выполнить эту команду ПО АДРЕСУ+CIPSTART="TCP","192.168.3.116", 8080 Соответствующим образом измените IP-адрес и порт сервера. 0 указывает идентификатор соединения в AT+CIPSTART=0, "TCP", "xx.xxx.xxx.xx", "порт". Я обнаружил, что идентификатор используется только для UDP-соединения в примере команды espressif at. Я сослался на это [link](https://www.espressif.com/sites/default/files/documentation/4b-esp8266_at_command_examples_en.pdf). Выполняли ли вы AT-команды в последовательности, указанной в вашем вопросе?, @Asim Merchant
Я проверяю с помощью AT-команд. Но ПРИ +CIPSTART="TCP","192.168.3.116",8080 эта команда не работает. Я не понимал, в чем проблема. Все остальные команды перед AT+CIPSTART работают с модулем., @ASK
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- 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?
SoftwareSerial не работает на скорости 115200 бод. измените скорость передачи в бодах в прошивке AT и для SoftwareSerial на 9600 бод., @Juraj
@Juraj я пытаюсь изменить скорость передачи данных в бодах, но с моей веб-страницы по-прежнему нет ответа, @ASK
@Juraj Или, пожалуйста, дайте мне знать, если есть какой-либо другой способ отправить данные с arduino uno с помощью Wi-Fi.(Модуль ESP01). Я вижу много программ, которые используют ethernet и другие модули Wi-Fi., @ASK
если вам нужно что-то вроде библиотеки Ethernet, вы можете использовать мою библиотеку WiFiEspAT. но для этого требуется изменить прошивку AT в esp-01 на версию 1.7 https://github.com/jandrassy/WiFiEspAT/blob/master/README.md, @Juraj
@Juraj могу ли я использовать вышеупомянутую библиотеку с arduino uno и esp01? Я новичок в программировании на arduino, поэтому задаю эти вопросы., @ASK
библиотека WiFiEspAT обрабатывает AT-команды за вас. проводка такая же, как и у вас сейчас, @Juraj
@Juraj Я просто хочу знать, как изменить версию esp-01 на версию 1.7. Работает ли esp-01, когда версия не изменена?, @ASK
со старой прошивкой AT вы можете использовать старую библиотеку WiFiEsp., @Juraj
@Juraj _https: //github.com/bportaluri/WiFiEsp/blob/master/examples/ConnectWPA/ConnectWPA.ino_ Я пытаюсь использовать этот код, но он показывает, что wifi shield отсутствует., @ASK
установите 9600 бод в прошивке AT. библиотеки находятся в Диспетчере библиотек в IDE, @Juraj
@Juraj когда я использую библиотеку, я получаю следующий вывод на последовательном мониторе.
[WiFiEsp] Инициализация модуля ESP [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] Не удается инициализировать модуль ESP [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] Тег не найден WiFi shield отсутствует
, @ASKвы установили скорость передачи данных на 9600 бод в прошивке и в sketch?, @Juraj
@juraj Извини!! Я забываю изменить скорость передачи данных в бодах. Теперь Wi-Fi подключается с помощью библиотеки esp. И не могли бы вы, пожалуйста, помочь мне опубликовать данные из arduino, используя эту библиотеку, и как получить ответ обратно с сервера., @ASK
@juraj когда я пытаюсь отправить данные с arduino на веб-страницу, он не отправляет данные и не подключается к серверу последовательный монитор показывает как :
Начинаю подключение к серверу... [WiFiEsp] Подключение к xxx.xx.xxx.xx [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] >>> ТАЙМ-АУТ >>> [WiFiEsp] Тег не найден Отключение от сервера...
, @ASK