0

DCCpp WebSocket ESP8266

Hace un tiempo, descubrí el WebSocketServer para DCC++, pero la verdad no me termino de convencer mucho, ya que pasaba la información desde una web. Sinceramente no creía que esto tuviera mucho futuro, pero me vi actualizándolo algún día… y ese día llego!!!

Si , cargando este pequeño programa en un ESP8266 usaremos websocket para establecer una conexión desde DCCpp Android Cab con destino la Central DCCpp exactamente igual que si estuviéramos utilizando un modulo Bluetooth.

La instalación es prácticamente igual a su homologa por bluetooth poniendo las resistencias para no freír el puerto Rx del ESP8266:

Central DCC++ Con modulo WiFi ESP8266
Adaptador 5V + Rx Tx ESP8266

En mi caso también adquirí al mismo tiempo un adaptador para el modulo ESP8266 que simplifica la conexión Rx y Tx y tiene incorporado un fuente de alimentación de 3,3V así que lo podemos conectar directamente a los 5V de la placa Arduino MEGA, de esta manera nos quitamos de soldaduras que siempre son susceptibles a fallar. Así la conexión queda únicamente con cuatro cables, dos para alimentación, otro para recepción de datos y otro para entrada de datos seriales Altamente recomendable dado su precio, unos 0,60€.

Programador USB
para ESP8266

Por esa misma razón también recomiendo un programador USB para este módulo, hay muchos diferentes pero se tiene que parecer al que se muestra en la foto, los hay con pulsador, a otros hay que hacerles alguna modificación

Pasamos a ver el código:


#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WebSocketsServer.h>
#define PUERTO 8080

WebSocketsServer webSocket = WebSocketsServer(PUERTO);

// IPAddress ip(192, 168, 4, 5); // Ip
// IPAddress gateway(192, 168, 4, 1); // Puerta de acceso
// IPAddress subnet(255, 255, 255, 0); // Mascara de subred
const char* ssid     = "NOMBRERED"; // Nombre de la red
const char* password = "PASSWORD";    // Contraseña de red    

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght) {

  switch (type) {
    case WStype_DISCONNECTED:

      break;
    case WStype_CONNECTED:
      {
        webSocket.sendTXT(num, "Conectado");
      }
      break;
    case WStype_TEXT: {
        String text = String((char *) &payload[0]);
        Serial.println(text);
        break;
      }
  }
}

void setup() {

  Serial.begin(115200);
//  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  Serial.println(WiFi.localIP());
  webSocket.begin();
  webSocket.onEvent(webSocketEvent);
}

void loop() {
  webSocket.loop();
  if (Serial.available() > 0)
  {
    String datos = Serial.readString();
    webSocket.broadcastTXT(datos);
  }
}

El módulo actuara como cliente entre la central DCC++ y DCCpp Android Cab.

Se pueden dejar comentadas las lineas de IP y puerta de acceso si tenemos el router en DHCP. Aunque es recomendable poner una IP fija así no la cambiará y siempre sabremos cual es la ip del modulo, de todas maneras al iniciarse mostrará en el monitor serial la IP asignada.

Ejemplo de conexión con DCCpp Android Cab

DCCpp Android Cab, desde su versión 2.5, tiene soporte para este tipo de conexión y simplificando así su uso. Una vez tenemos cargado y conectado el modulo ESP8266 podemos usarlo con DCCpp Cab seleccionando en la configuración que la conexión sea WiFi. Volvemos a la pantalla principal y en el menú pulsamos «Conectar» y nos aparecerá la siguiente pantalla:

DCCpp Cab Conexión Wifi

En esta pantalla configuraremos la IP y el puerto al que se conecta. En este caso el puerto es el 8080, pero se puede poner cualquier puerto que no este en uso, eso sí, recuerda cambiarlo también en el programa en la linea :

#define PUERTO 8080

Una vez que se conecte ya podremos usar DCCpp Cab o cualquier otro programa que pase sus datos a la central mediante WebSocketServer

DCCpp Cab Wifi Conectado

Espero que os sea útil, en mi caso seguiré con el Bluetooth, ya que tengo la instalación con los módulos HC-05. Pero lo contemplo para futuros proyectos como el de Ibertren 3N (aunque sea detro de mucho). Sobre todo por su precio y por que en su momento compre como 4 o 5 y están por ahí…

Sin más, Un saludo a todos y gracias por visitar lamaquetade!!!

(Visitado 158 veces, 1 visitas hoy)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *