Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 阿杜伊诺+;Esp8266+;apk(TCP服务器客户端)_Arduino_Esp8266 - Fatal编程技术网

Arduino 阿杜伊诺+;Esp8266+;apk(TCP服务器客户端)

Arduino 阿杜伊诺+;Esp8266+;apk(TCP服务器客户端),arduino,esp8266,Arduino,Esp8266,有人知道我如何与esp8266和apk(tcp服务器tcp客户端)进行正确通信 问题是: 我发送值,esp8266有时读不好 arduino bauidio:115200 esp8266 baudio:115200 apk:发送类似5的消息;德尔;45(速度、状态、伺服位置) 这是我的汽车代码(tcp服务器): #包括 #包括 #定义M_ATRAS 4 #定义M_ADELANTE 5 #定义M_VELOCIDAD 6 伺服;//Crea un Objeto伺服系统 软件系列ESP8266(3,

有人知道我如何与esp8266和apk(tcp服务器tcp客户端)进行正确通信

问题是:

我发送值,esp8266有时读不好

arduino bauidio:115200 esp8266 baudio:115200

apk:发送类似5的消息;德尔;45(速度、状态、伺服位置) 这是我的汽车代码(tcp服务器):

#包括
#包括
#定义M_ATRAS 4
#定义M_ADELANTE 5
#定义M_VELOCIDAD 6
伺服;//Crea un Objeto伺服系统
软件系列ESP8266(3,2)//1) RX->Azul,2)TX->Amarillo
弦损伤;
国际水平;
内腐;
无效设置()
{
Serial.begin(9600);
ESP8266.开始(115200);
连载.println(“Iniciando…”);
comandoESP(“AT+RST”);//复位模块
comandoESP(“AT+CWMODE=3”);//配置为接入点
//comandoESP(“AT+CWSAP=\“ESP\,\“1234567890\”,3,3”);//SSID、密码、通道、密码加密(0=无密码)//0是加密类型,如0=Open、2=WPA\u PSK、3=WPA2\u PSK、4=WPA\u WPA2\u PSK
comandoESP(“AT+CWJAP=”tfh\“,”fggrtfdfgdtg\”);
comandoESP(“AT+CIPMUX=1”);//配置多个连接
comandoESP(“AT+CIPSERVER=1400”);//打开端口x上的服务器
Serial.println(“Servidor TCP ON…”);
pinMode(M_VELOCIDAD,输出);
pinMode(M_ATRAS,输出);
pinMode(M_ADELANTE,输出);
velocidad(0);
伺服。附件(7);//Selecionamos el pinde控制参数el servo Rango:0155
Serial.println(“Posicion delservo:+字符串(servo.read()));
}
void循环()
{ 
如果(ESP8266.available())
{
如果(ESP8266.findUntil(“+IPD,”,“))
{
vel=ESP8266.readStringUntil(“;”).toInt();
mar=ESP8266.readStringUntil(';');
rot=ESP8266.readStringUntil(';').toInt();
velocidad(vel);
玛莎(三月),;
rotacion(rot);
Serial.println(字符串(vel)+“-”+mar+“-”+String(rot));
}        
}
}
void marcha(字符串tipo){
如果(tipo=“del”)
{
//连载.println(“Adelante?”);
数字写入(M_ATRAS,低);
数字写入(M_Adelente,高);
}
否则如果(tipo==“tra”)
{
//序列号.println(“Atras?”);
数字写入(M_ATRAS,高);
数字写入(M_ADELANTE,低位);
}
}
void velocidad(int v){
//Serial.println(“Velocidad:+String(v));
模拟写入(M_VELOCIDAD,v);
} 
无效旋转(内部r){
int rot=map(r,-10,10,125,0);//mapeamos los valores que puede tener el acelerometro a los valores que puede tener el伺服
//Serial.println(“Acelerometro:+String(r)+”伺服:“+String(rot));
伺服写入(rot);
}
void comandoESP(字符串cmd)
{
ESP8266.println(cmd);
如果(ESP8266.available())
Serial.println(ESP8266.readStringUntil(14));
延时(1000*3);/3秒
}

不要编写自己的AT命令,而是使用库和虚拟串口


这是一个很好的图书馆。请参阅我关于如何将所有内容组合在一起的介绍。

嗨,我尝试在arduino uno中使用该库,但没有找到像getLocalIP或getVersion这样的gertter方法,。。。有时另一个函数给我错误,我需要重新启动arduino。可能是波特率问题。芯片可以提供波特率,但由于时钟频率的原因,会有一些错误率。请尝试使用其他较低的波特率。
#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
}