ESP отправка данных в Arduino
Я пытаюсь отправить данные с esp на arduino с помощью serial, используя следующие коды :
особенно :
server.on("/drive",HTTP_GET, handleDrive);
void handleDrive()
{
server.send(200,"text/html", "Drive!");
String sendToArduino = "";
for (int i=0;i<server.args();i++)
{
sendToArduino = sendToArduino+server.argName(i)+"="+sendToArduino.arg(i)+"&";
}
Serial.println(sendToArduino);
}
и на arduino :
Serial.begin(9600);
esp8266.begin(115200);
if (esp8266.available())
{
String readString="";
while (esp8266.available())
{
delay(2);
char c = esp8266.read();
readString += c;
}
}
но когда я отправляю данные из esp в arduino, я получаю их с "шумом".
Пример : "переменная 1=1234" я получаю ее на arduino "переменнаяb@e=12
"
Что я могу сделать, чтобы убедиться, что то, что я отправляю, совпадает с тем, что есть в arduino ?
@user863873, 👍1
Обсуждение1 ответ
Во-первых, вам нужно написать более надежную процедуру последовательного чтения на Arduino. В нынешнем виде вашей рутине повезло, что вы вообще получаете то, что делаете. Вам нужно написать процедуру, которая не заботится о времени, а вместо этого заботится о завершающем символе строки, которую вы получаете.
- Вот статья, которую я написал обо всем этом.
Во-вторых, вы не можете надежно обмениваться данными с помощью программного обеспечения на скорости 115200 бод. В то время как Arduino способен принимать байт с такой скоростью передачи данных, используя битовый стук, обычно между последовательными байтами недостаточно времени, чтобы позволить Arduino хранить то, что он только что получил, и поэтому он начинает получать часть следующего байта, повреждая как его, так и следующий байт. Это и есть причина коррупции, которую вы видите.
Вы должны либо замедлить скорость передачи данных в бодах (9600-хороший выбор), либо отправлять данные по одному байту за раз и добавлять задержку между каждым байтом (несколько банально...).
- 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?
Две вещи: 1. правильно прочитайте серийный номер (https://majenko.co.uk/blog/reading-serial-arduino), и 2. с какой скоростью передачи данных вы общаетесь?, @Majenko
Serial.begin(9600); esp8266.begin(115200); в arduino, @user863873
Извините, что это за задержка(2)? Вы отправляете один байт из ESP примерно за 87us и заставляете читать его каждые 2 мс?, @frarugi87