кто-то знает, как я могу правильно общаться с esp8266 и apk (tcp-сервер‹->tcp-клиент)
Я отправляю значения, и esp8266 иногда плохо их читает;
ардуино боуидио: 115200 esp8266 бодио: 115200
apk: отправьте сообщение типа 5; del; 45 (скорость, состояние, положение сервопривода) это код моей машины (сервер tcp):
#include <SoftwareSerial.h>
#include <Servo.h>
#define M_ATRAS 4
#define M_ADELANTE 5
#define M_VELOCIDAD 6
Servo servo; // Crea un Objeto servo
SoftwareSerial ESP8266(3,2); //1)RX-> Azul, 2)TX->Amarillo
String mar;
int vel;
int rot;
void setup()
{
Serial.begin(9600);
ESP8266.begin(115200);
Serial.println("Iniciando...");
comandoESP("AT+RST"); // reset module
comandoESP("AT+CWMODE=3"); // configure as access point
//comandoESP("AT+CWSAP=\"ESP\",\"1234567890\",3,3"); //SSID,PASSWORD,CHANNEL,PASSWORD-ENCRYPATION(0=NO PASSWORD) //0 is encryption type like 0 = Open, 2 =WPA_PSK, 3 = WPA2_PSK, 4 = WPA_WPA2_PSK
comandoESP("AT+CWJAP=\"tfh\",\"fggrtfdfgdtg\"");
comandoESP("AT+CIPMUX=1"); // configure for multiple connections
comandoESP("AT+CIPSERVER=1,400"); // turn on server on port x
Serial.println("Servidor TCP ON...");
pinMode(M_VELOCIDAD, OUTPUT);
pinMode(M_ATRAS,OUTPUT);
pinMode(M_ADELANTE,OUTPUT);
velocidad(0);
servo.attach(7); // Selecionamos el pinde control para el servo Rango: 0<->155
Serial.println("Posicion delservo: "+String(servo.read()));
}
void loop()
{
if(ESP8266.available())
{
if(ESP8266.findUntil("+IPD,","."))
{
vel=ESP8266.readStringUntil(';').toInt();
mar=ESP8266.readStringUntil(';');
rot=ESP8266.readStringUntil(';').toInt();
velocidad( vel);
marcha(mar);
rotacion(rot);
Serial.println(String(vel)+"-"+mar+"-"+String(rot));
}
}
}
void marcha(String tipo){
if(tipo == "del")
{
//Serial.println("Adelante?");
digitalWrite(M_ATRAS,LOW);
digitalWrite(M_ADELANTE,HIGH);
}
else if(tipo == "tra")
{
//Serial.println("Atras?");
digitalWrite(M_ATRAS,HIGH);
digitalWrite(M_ADELANTE,LOW);
}
}
void velocidad(int v){
//Serial.println("Velocidad: "+String(v));
analogWrite(M_VELOCIDAD, v);
}
void rotacion(int r){
int rot =map(r,-10, 10, 125, 0); //mapeamos los valores que puede tener el acelerometro a los valores que puede tener el servo
//Serial.println("Acelerometro: "+String(r)+" Servo: "+String(rot));
servo.write(rot);
}
void comandoESP(String cmd)
{
ESP8266.println(cmd);
if(ESP8266.available())
Serial.println(ESP8266.readStringUntil(14));
delay(1000*3); //3seg
}