Módulo WiFi TLG10UA03 de bajo coste para Arduino

Sin duda algo de lo que más se echaba en falta en Arduino era algún modulo que añadiera conectividad WiFi de forma barata. Porque si, si es cierto que hay shields muy completas o incluso un par oficiales, pero estas no bajan de los 30-70€ la unidad. O incluso el nuevo Arduino Yun presentado hace unos meses que además de WiFi también integra un Linux embebido, pero estamos en las mismas, todo eso es muy caro si lo que queremos montar es un proyecto sencillo y barato.

Por ello me sorprendió hace unos meses al enterarme de que había un modulo WiFi muy económico, y no solo eso si no que todas la comunicaciones se hacían de forma transparente al Arduino por lo que se simplifica mucho la programación y ahorramos mucha memoria al no necesitar ninguna librería.

El modulo del que hablo es el TLG10UA03, que podemos encontrarlo en dos versiones, una mas vieja y otra mas nueva. En teoría ambas funcionan igual pero en la practica parece que la nueva es mas terca para funcionar, como es de la que trata este articulo y de la cual tengo dos módulos explicare los detalles mas adelante.

Características técnicas del modulo:

Interfaz física

  • Conector 2*4 pines: HDR254M-2X4
  • Interfaz UART (Usa 4 pines para funcionar)
  • Rango de velocidad de transmisión: 1200~115200bps
  • Alimentación 3.3V 300mA

Interfaz inalámbrica

  • Soporta los estándares WiFi IEEE 802.11b/g
  • Soporta un rango de frecuencia de 2.412~2.484 GHz
  • Soporta redes Ad-Hoc e Infraestructura
  • Soporta encriptación inalámbrica: WEP64/WEP128/TKIP/CCMP(AES)WEP/WPA-PSK/WPA2-PSK

Otros

  • Protocolos soportados: TCP/UDP/ICMP/DHCP/DNS/HTTP
  • Soporta modo de funcionamiento Transparente
  • Soporta instrucciones/comandos de configuración AT+
  • Permite configuración a través de puerto Serie y interfaz Web

Documentación y software

Para poder configurar el modulo es necesario o bien usar el software para Windows que se comunica con el modulo mediante comandos, o bien usar los comandos directamente.

Ambos hacen lo mismo aunque el programa, aun teniendo fallos en su diseño, es bastante mas cómodo y rápido de usar. Aunque la ventaja de que por debajo funcione todo mediante comandos es que también podríamos configurar el modulo desde el propio Arduino, aunque tampoco es algo que fuese necesario salvo que queramos que el Arduino pueda cambiar de red WiFi a la que esta conectado.

UART-WiFi (Mega)

En cuanto a la lista de comandos AT, y resto de documentación, puede consultarse desde la documentación que he adjuntado en el enlace anterior.

Configuración del modulo

Por lo general seria suficiente con conectar el modulo WiFi a un modulo Serial<>USB, el pin de GND con GND, el de VCC a 3.3V, el TX a RX y RX a TX. Sin embargo no ha habido forma humana de que el software se conectase al modulo WiFi para configurarlo.

Actualización: David Molner comenta que se puede acceder al panel de control del dispositivo sin configuración previa desde el puerto serial.

Lo intente con varios adaptadores Serial<>USB, con varios Arduinos, con varios PCs, y nada, no había forma por lo que compre otro modulo pero volvió a pasar lo mismo, ninguno de los dos parecía responder a los comandos que le enviaba.

Al final y ya como ultimo intento se me ocurrió a usar los pads que tiene el modulo en el PCB en vez de los pines que tiene el modulo. Creo que ambos conectores están unidos al mismo puerto UART del chipset WiFi, con la diferencia de que los pines tienen unas resistencias entre medio, y los pads aparentemente no.

TLG10UA03_03

Y fue por fin esa la forma de que el software reconociera el modulo y permitiera configurarlo:

Configuración mediante el software UART-WiFi

Con el modulo conectado, abrimos el programo y le damos a Search, los módulos que tengamos conectados aparecerán en la lista, seleccionamos el que queramos configurar y en el lado derecho aparecerá su configuración, si la tiene.

uart-wifi_1

Es suficiente con que configuremos el SSID, el tipo de cifrado, la contraseña, y las configuraciones IP (y esto ultimo solo si no queremos usar la configuración DHCP del router, y por tanto queremos una IP estática). Es decir, lo que se ve en esa captura de pantalla, ya que el resto de opciones es mas cómodo configurarlas desde la interfaz web del modulo WiFi.

Tras configurar todo habrá que darle al botón Modify para que se apliquen los cambios. Después, si todo ha salido correctamente, ya deberíamos de poder acceder a la interfaz web desde la ip que hayamos configurado, el usuario por defecto es admin, y la contraseña es 000000. Si no funcionase entonces podemos modificar los datos de acceso desde el programa, pulsando sobre el botón Advance:

uart-wifi_2

Configuración mediante comandos AT

Consultar documentación del enlace superior…

Configuración mediante la interfaz Web

Una vez dentro de la interfaz web veremos la siguiente pantalla:

De las opciones que se pueden configurar nos interesa sobre todo la de Auto Mode Settings en el apartado Basic, ya que nos permite que el modulo WiFi funcione o bien como cliente o bien como servidor.

Si queremos usar el Arduino para que podamos acceder a él y ver la página que contenga, por ejemplo una con unos botones para encender o apagar unos leds, entonces necesitaremos configurar el modulo como Server ya que esta sirviendo y atendiendo las peticiones desde los clientes (Navegadores de Internet).

Por contra, si queremos que el Arduino envié datos a otro lado, por ejemplo a un servidor con PHP o Java, y que esos datos sean guardados en una base de datos, o lo que sea. Entonces necesitaremos configurar el modulo como Client ya que lo que hace el Arduino es conectarse a un servidor, enviando información o no al conectarse, y recibir una respuesta, o no, del servidor.

Aparte de lo explicado, la diferencia esta también en que en modo Cliente es necesario indicar a que servidor web nos vamos a conectar, por ello deberemos de especificar su IP publica y el puerto al que nos conectaremos, generalmente el 80.

En cambio con el modulo como Servidor no es necesario configurar la IP, pero si el puerto al que accederemos al Arduino, y tenemos que tener en cuenta que el modulo además de dar acceso al arduino también lo esta haciendo a la interfaz web por lo que cada uno de esos accesos deberá de tener un puerto distinto. Por defecto la interfaz web esta configurada con el puerto 80, y podremos cambiarlo desde el programa. El acceso hacia el Arduino también esta por defecto con el puerto 80 y esto podemos cambiarlo desde el programa o desde la web. Uno de los dos puertos deberemos de cambiarlo o chocaran.

Otras configuraciones que también podemos tocar desde el programa/web son las configuraciones del puerto UART, por defecto esta a 9600bps, podemos aumentarlo si necesitamos transferir información mas rápidamente.
También hay mas opciones, aunque muchas de ellas es por si usamos el modulo como AP.

Funcionamiento como Cliente

 

 

Funcionamiento como Servidor

 

Dónde comprarlo

El modulo puede encontrarse en Aliexpress por unos 10€:

TLG10UA03

2.4G Wireless Module Embedded Uart-Wifi Module (UART WiFi Network Server/Client ) IEEE802.11b with Antenna FZ0417

42 comentarios en “Módulo WiFi TLG10UA03 de bajo coste para Arduino”

    1. Tenia a medio escribir esta entrada desde enero xD

      El problema de esos módulos que has comprado es que acaban de salir, o al menos los han anunciado/popularizado hace poco, así que hay poca documentación y seguramente aun no haya librerías para Arduino.

      En que eso este resuelto seguramente se convierta en la mejor alternativa ya que son baratisimos.

  1. hola yo compre este modulo, tengo este problema con arduino UNO, quiero enviar una pagina web desde una memoria sd, esto como web server, pero no puedo.
    podrias darme una sugerencia??

  2. hola, tengo exactamente el mismo problema que tu , no reconoce el modulo mi usb-serial, a que te refieres con los «pads» de la pcb???

    1. yeah!! habemus configuracion…. lo conecte igual a los paths, el rx y el tx nada mas…. que tonteria que los pins no funcionen, muchas gracias!

  3. Hola, ante todo muchas gracias por el artículo. Yo soy nuevo en esto y estoy un poco pez.

    Mi intención es enviar datos desde el arduino a un servidor web. Con los resultados obtenidos de los sensores.

    Esto me viene de perlas.

    Pero como ya digo estoy aprendiendo desde cero.

    La duda que tengo es como conectarlo al conversor usb-serie.

    Por ejemplo este:

    http://www.pccomponentes.com/movil/convertidor_usb_2_0_a_puerto_serie_rs232.html

    Y conecto los pads según este esquema?

    http://www.cimco.com/docs/cimco_dnc-max/v7/es/#RS232Layouts

    Y a partir de aquí software de configuración… Y punto.

    Y cómo lo conecto al arduino uno?

    Seguramente estoy preguntando una chorrada… 🙁

  4. Una pregunta tonta(soy otro profano) que no me ha quedado clara. Conecto los pines del PAD a el usbSerie, pero el USB serie para configurarlo habría que conectarlo el usb al ordenador no? Una vez configurado para que lo reconozca Arduino habría que conectar el usbSerie al arduino no? Pero me surge una duda(sé que pregunto cosas serán obvias pero..) por lo tanto el conector serieusb además de conectado al arduino por las patillas habría que soldar los uart del usbserial de los lados con el pad, no es así?

    Gracias

    1. Se usan los pads para conectar el módulo al pc y poder configurarlo, puedes usar unas mini pinzas no hace falta soldar. Los pines se usan para conectarlo al Arduino.

  5. Gracias, mini pinzas? Muy pequeñas tienen que ser esas pinzas. De cocodrilo? Igualmente muy pequeñas tienen que ser, la separación entre los conectores es excesivamente pequeña, veré a ver como lo hago. Gracias, probaré a ver si consigo comunicarme con el módulo

  6. Hola tengo un modulo de estos y no me aparece por ningún lado la opción de encriptación inalámbrica: WPA-PSK/WPA2-PSK. Las otras más sencillas si.
    He estado buscado una actualización de firmware pero no la encuentro por ningún lado.

    Añadir que no hace falta conectarse por serie, le das alimentación y con el móvil o el portátil buscas su red que en el caso de mi modulo es «wifi-socket», una vez conectado accedes a la ip 192.168.1.100 y con el user «admin» y contraseña «000000» ya ves la pagina de configuración.Supongo que esto sera igual para todos los módulos.

  7. No consigo que funcione. Ya tengo el adaptador USB-SERIE FTDI232 y el módulo Wifi TLG10UA03. Solo he podido acceder a la configuración utilizando la preconfiguración WEB. Como indica DAVID MOLNER. Por el puerto usb con el software para windows.. no hay manera. Ni utilizando los pines, ni con las minipinzas utilizando los contactos del PCB.

    El módulo funciona. Al menos se conecta al router wifi de casa, y responde al PING que hago desde el portátil.
    He copiado el código que has puesto de ejemplo, el de servidor. Y lo he grabado en el ARDUINO. He conectado los pines del módulo a los pines TX y RX del arduino. Y alimento el modulo externamente (saco la alimentación de VCC y 3.3 del adaptador FTDI232).

    Pero si accedo desde el navegador… directamente me muestra el panel de configuración del módulo wifi. He habilitado la opción servidor en la configuración del panel web de módulo, indicando el puerto 8080. Para que no haya conflicto entre el servidor de configuración y el servidor web que debería mostrar el arduino… pero no da respuesta.

    Entiendo que los pines TX/RX del modulo y el arduino deberían ir cruzados… TR-RX , aunque ya he probado de las dos formas…

    ¿A alguien se le ocurre qué debo estar haciendo mal?
    ¿Alguien sabe de dónde puedo descargar una actualización de firmware para el módulo?

    Ante todo muchas gracias!

    1. saludos Antonio yo lo tengo operando en multiples sensores que fabrique, agregame al skype y te apoyo total hasta que logres usarlo bien.

      skype: iys.estudios

  8. Tengo un problema con el Módulo – wifi. Por alguna razón (cambié algo en la configuración) dejé de poder acceder a el mediante el panel web. Y como no tenía acceso utilizando el puerto serie, creí que quedaba inutilizado. El chino que me vendió el módulo me pasó esta dirección: http://www.hx-wulian.com/archives/220 (para quien pueda interesar) y me he descargado otra versión de la aplicación de configuración que por ahora me está permitiendo acceder al módulo. Voy a intentar hacer las pruebas que tengo pendientes y os digo.

    1. Hola Antonio, te comento que tengo el mismo problema, no puedo conectarme por la intarface web, ya que le cambie algo y no puedo verlo ni conectarme a mi modulo wifi, me gustaria saber si lograste resolverlo.

  9. He copia el ejemplo del servidor. Configurado el modúlo wifi con la ip 192.168.1.30, modificado el puerto desde el que trabaja el panel de configuración web del módulo al 8080, para evitar conflicto al utilizar el módulo como servidor web.

    Y he verificado que puedo acceder al panel web de configuración del módulo. Pero arduino no me responde cuando trato de acceder al servidor web. Os pondría foto de la configuración pero no se cómo…

    1. Insisto, prueba el modulo con el código de cliente, que el de servidor da muchos problemas.
      Con eso descartaras si es problema del modulo, que ni envía ni recibe, o si es problema de la configuración/código que no permite recibir datos.

  10. Configuración como cliente:


    unsigned long tAntes = 0;
    unsigned long tAhora = 0;
    unsigned long tEnvio = 300000;

    void setup()
    {
    Serial.begin(115200);
    while(!Serial);
    }

    void loop()
    {
    tAhora = millis();

    if( tAhora - tAntes >= tEnvio )
    {
    tAntes = tAhora;

    Serial.print("GET /ARDUINO/arduino.php?data=Hola Mundo");
    Serial.print(tAhora/1000/60);
    Serial.print(" HTTP/1.1\r\n");
    Serial.print("Host: 192.168.1.11\r\n");
    Serial.print("Connection: close\r\n");
    Serial.println();
    }
    }

    donde 192.168.1.11, es el servidor raspberry que tengo funcionando. arduno.php es esto:

    <?php

    echo "Ejecutando arduino.php" . "";

    $DATA = $_GET['data'];

    echo "Parámetro data: " . $DATA . " ";

    //Si se recibe el parametro "data" se guarda en el fichero "log.txt"
    if( isset($DATA))
    {
    $file = fopen("log.txt", "a+");

    echo "En el fichero hay: " . "";

    while(!feof($file)) echo fgets($file) . "";

    echo "Se recibe parámetro data: " . $DATA . ", y se guarda en fichero log.txt ";

    fwrite($file, $DATA . PHP_EOL);

    fclose($file);

    }
    //En caso contrario se imprime todo lo que haya en el fichero:
    else
    {
    $file = fopen( "./log.txt" , "r" );

    echo "No se recibe parámetro dat" . "" ."";

    while( !feof($file) )
    echo fgets($file) . "";

    fclose( $file );
    }
    ?>

  11. Hola,

    Ya me han llegado los otros dos módulos que pedí y el problema es el mismo.
    No puedo configurarlos con WPA.
    Igual estoy yo confundido, por eso pregunto, con estos módulos puedo conectar un arduino a mi red wifi o solo sirven para crear ellos una red i conectar a ella otros arduinos con su modulo.

    Gracias,

    1. No sé si los módulos soportan el modo ad-hoc, pero lo que si es seguro que el modo infraestructura si lo soportan, y por tanto permiten conectarse al router y a su vez a internet. Así los tengo yo configurados.

  12. Yo también lo tengo conectado al router. Con seguridad wpa, aunque sólo me aparece la opción cuando accedo a través del programa WiFi uart por el puerto serie.

  13. Buenos días!!

    Ya funciona!

    He modificado el módulo de ejemplo de cliente, por este:


    void setup()
    {
    Serial.begin(115200);
    //while(!Serial);
    }

    void loop()
    {
    Serial.print("GET /ARDUINO/arduino.php?data=");
    Serial.print("HolaMundo");
    Serial.print(" HTTP/1.1\r\n");
    Serial.print("Host: 192.168.1.11\r\n");
    Serial.print("Connection: close\r\n");
    Serial.println();
    delay(5000);
    }

    _____________________

    Con la ayuda de «Víctor» (https://www.youtube.com/watch?v=rI0Xincq3zM), que me ha demostrado que el módulo wifi no fallaba, mis disculpas al señor Chino que me lo vendió.

    Y muchas gracias a todos por vuestra ayuda!!

  14. buen dia a todos: que alcanse tiene este modulo alcanzara unos 50 mts.? o que modulo seria el adecuado para esto, gracias por su atencion

  15. Hola,
    Compre un módulo Wifi tlg10au03 pero no he encontrado mucha información sobre este, para conectarlo a una placa arduino mega necesito un adaptador o algo así?
    O se puede conectar directamente el wifi con la placa mega mediante cables?
    Gracias

    1. Hola,

      El modulo funciona a 3.3V por lo que tanto la linea de alimentación como la de datos deben funcionar a esa tensión, eso es lo recomendable, también puedes usar la linea de datos a 5V pero con el peligro de que se estropee antes el modulo, yo no he tenido problemas aun en ese sentido.

      Saludos.

    2. Hola gracias por tu respuesta

      La conexión de el modulo es DE
      TLG10au03 (3.3v) a ArduinoMEGA (3.3V)
      TLG10au03 (GND) a ArduinoMEGA (GND)
      TLG10au03 (RX) a ArduinoMEGA (RX1)
      TLG10au03 (TX) a ArduinoMEGA (TX1)

      Esta bien mis conexiones?

      Saludos!!!

    3. Gracias entendido.
      Mis dudas son sobre como configurarla y programarla tienes algún tipo de tutorial de como poderla configurar desde la pc?

  16. Hola.
    Gracias por tu ayuda. Gracias a ella pude configurar el modulo.
    Actualmente lo tengo conectado a un arduino mega funcionando en modo comando. De este modo puedo conectarlo a un servidor de hora y obtener la fecha y hora sin priblemas. El problema surge cuando quiero abrir un socket en modo servidor. No soy capaz de abrirlo, m responde err-11, he verificado y tengo todos los sockets libres asi que no se que esta fallando.
    Gracias.

Escriba aquí su comentario