El módulo WIFI HLK-RM04

Objetivos

 

  • Presentar el módulo WIFI HLK-RM04.
  • Entrar en detalle en la configuración básica.
  • Montar un pequeño circuito con él para comprobar que se comporta como es debido.
  • Ver como resetearlo cuando os de problemas.
  •  

    Material requerido.

    Soc TCPIP con Linux Un módulo WIFI HLK-RM04,
    Algunos cables de protoboard, preferiblemente Dupont macho/hembra más una protoboard

     

    Presentando  el módulo WIFI HLK-RM04

     

    En sesiones previas, ya vimos el módulo WIFI ESP8266, que en muchos aspectos es muy similar al que nos ocupa hoy HLK-RM04, porque al igual que aquel convierte el WIFI a puerta serie y el manejo es similar, pero también hay diferencias importantes que conviene conocer.

    Lo primero que salta a la vista es que la documentación del fabricante chino es un auténtico barullo, con malas traducciones al inglés y omisiones clamorosas de información, y tampoco ayuda mucho que no hay demasiados ejemplos detallados por ahí de cómo usar el módulo de marras.

    Por eso voy a excederme un poco (Espero que no mucho) en detallar en este capítulo la configuración del módulo WIFI, porque a mí me ha dado guerra el tema como pocos, y he perdido mucho tiempo revisando páginas por ahí. Así que voy a intentar evitar el problema a los sufridos lectores que no hayan tenido la precaución de irse.

    En primer lugar tenemos que decir que este módulo no es un adaptador WIFI para tu Arduino, sino un micro PC (Ahora se llaman SOCs, ele ahí) corriendo un Linux OpenWrt similar al que incluye el Arduino Yun y que incorpora un módulo WIFI.

    • El módulo HLK-RM04 acepta la distribución OpeWrt y podéis volcarle modificaciones de esta distro o actualizarla de un modo similar a como lo hacéis con cualquier distro normal de Linux.
    • Eso incluye cargarle vuestros propios programas en Python o PHP, por ejemplo, lo que abre posibilidades muy interesantes a muy bajo coste.

    Es el micro PC el que gestiona toda la conexión a la WIFI y gestiona la pila (Stack) TCPIP, con lo que encima tenemos la ventaja de quitarnos de encima la gestión en Arduino de toda esa historia.

    Pero… ¿Y entonces como nos comunicamos con el HLK-RM04? Pues tranquilamente a través de una puerta serie que incluye.

    De hecho, lo que hace este modulito es gestionar la conexión WIFI de forma autónoma y enviar a nuestro Duino lo que le entra por TCPIP y nos lo convierte, limpio de polvo y paja, a datos en nuestra puerta serie y viceversa (En esto es igual que el módulo ESP8266 que vimos en las sesiones previas).

    Esto tiene el inconveniente de que nosotros no vemos la WIFI, sino una puerta serie. Y a cambio nos despreocupamos de la gestión de la conexión y del transporte de datos liberando memoria y tiempo de Arduino para nuestras cosas.

    A diferencia del ESP-8266 el modulo HLK-RM04 dispone de un servidor web en una dirección concreta que podemos usar para configurar los datos de la conexión y por si esto se queda corto, podemos usar, además,  comandos AT (Os acordáis aun de ellos) para configurar vía el puerto serie distintos aspectos.

    Lo primero necesitamos conectar el HLK-RM04 a nuestro Arduino y aunque es un módulo con un montón de pines no hay que asustarse. Solo se necesita conectar 4 a nuestro Arduino.

    • Vale la pena indicar aquí, que la distancia entre pines del módulo HLK-RM04, no permite insertarlo en una protoboard, por lo que necesitaras cables Dupont macho/hembra.

    Como siempre, conviene que le echéis un vistazo a la hoja de características. Aquí tenéis el pinout del modulo

    Patillaje del WIFI HLK-RM04

    La conexión a un Arduino UNO o MEGA es tan sencilla que ni siquiera compensa dibujar un diagrama de conexión.

    Arduino 5V GND 3 (Rx) 2 (Tx)
    HLK-RM04 1 2 20 (Tx) 21 (Rx)

    De nuevo, he visto varios ejemplos en Internet que piden que lo conectemos a los pines 0 y 1 de Arduino para aprovechar la puerta serie, pero aquí no vamos a hacer eso si podemos evitarlo. Solo faltaría andar desconectándolos cada vez que queramos reprogramar el Arduino.

    Así que si queremos usar un Arduino UNO usaremos la librería SoftwareSerial, como es habitual y por eso conectamos a los pines digitales 2 y 3 de nuestro Duino,pero como yo soy vago homologado, voy a usar un MEGA porque me va a dejar subir la velocidad mas y poder probar el modulo dándole caña.

    Pero antes de escribir el programa de gestión de Arduino, vamos a necesitar configurar el módulo HLK-RM04 a nuestros intereses. Vamos a ver cómo.

     

    Configurando el  HLK-RM04

     

    Para poder probar el módulo basta con que enchufes los pines 0 y 1 del módulo a 5V y GND respectivamente. Con esto el chip se activara y ya podremos buscarlo en la WIFI.

    Cuando arranca por primera vez está en la dirección 192.168.16.254 y además se configura como un Router WIFI. Eso significa que no necesitas cambiar tu IP para buscarlo, si no que si configuras tu IP por DHCP bastará con que busques un Router que se llamará algo así como Hi-LINK-xxxx, en mi caso es HI-LINK_8835.

    Imagen de seleccion en Windows

    Conéctate a él con la clave por defecto: 12345678.

    Con ello te habrás conectado al módulo que por defecto está configurado como un Router WIFI.

    Ahora vamos a conectarnos al servidor Web del módulo. Para ello abre tu navegador y llévale a la dirección IP 192.168.16.254. Si no hay problemas te pedirá un usuario y password para conectarte al Router. Usa:

         Usuario: admin

         Password: admin

     

    Si todo va bien verás la pantalla de bienvenida  del Router:

    Entrando al modulo

    Tenemos ahora que configurar unos pocos parámetros. Lo primero es seleccionar el NetMode, porque este curioso módulo, puede funcionar de varios modos:

    • Cliente WIFI a puerto serie.
    • Punto de acceso WIFI.
    • Cliente Ethernet a puerto serie, para lo que necesitamos un adaptador adicional.

    Vamos a seleccionar WIFI (Client)-Serial, para que se pueda conectar a nuestra WIFI principal. Veréis algo como esto:

    Accediendo a la configuracion

    Ahora tenemos que configurar el acceso WIFI a nuestra red. Pulsa en el botón SCAN para localizar WIFIs, selecciona la que corresponda y pulsa Apply.

    Seleccion de WIFI

    • El modulo por sí mismo no tiene antena WIFI, (aunque si un conector para una antena estándard) y necesitaras tener buena señal WIFI o te puede dar problemas para descubrir las redes.
    • Puedes conectarle una antena típica al conector del que dispone y mejorará mucho la recepción.

    Detalle de conexion

    Configura ahora, los parámetros de tu WIFI: Contraseña y tipo de encriptación.

    Dependiendo de si vas a utilizar tu modulo como cliente o servidor WEB, te interesa configurar tu IP por DHCP o bien con dirección estática respectivamente. En mi caso he elegido una dirección IP estática: 192.168.1.254 de mi subred y he configurado la dirección de mi Router y DNS primario. Asegúrate de configurar correctamente todos estos valores o tendrás problemas a la hora de conectar.

    También he elegido configurar la velocidad de comunicación serie en 57600, 8, n, 1. SI vas a usar un UNO para conectar no te conviene pasar de esta velocidad para evitar problemas, pero con un MEGA o DUE que tienen puertas hardware puedes subir esta velocidad.

    Configuramos además, el puerto donde atenderá los servicios de red como el 8080 (En el 80 sale siempre la página de configuración del módulo, y no he visto como cambiarla).

    HLK-RM04

    Pulsa el botón de Apply, y listo. Perderás la conexión con el modulo porque cambia de dirección IP y deja de ser punto de acceso WIFI, así que te desconectará.

    • Un punto que tienden a olvidarse de decirte en Internet, es que aparentemente, para activar la configuración nueva, hay que apagar y encender el modulo ( Y darle al menos 30 segundos para que arranque).

    Vuelve a conectarte a la red local, bien por WIFI o por Ethernet y ya deberías poderte conectar al módulo desde tu red, accediendo a su nueva dirección IP local. En mi caso 192.168.1.254:

    Pantalla web

     

    Si no consigues conectarte al módulo, no te asustes todavía. Podemos resetearlo para que vuelva a su condición inicial. Para ello tienes que saber que según el manual del fabricante hay que poner el pin 10 del módulo a GND durante no menos de 6 segundos (Recordad que cuando todo falla, es que hay que leerse el manual).

    Como a mí, me ha estado mareando continuamente, acabé, haciendo un programa para resetear el modulo, porque eso de mirar cómo pasan 6 segundos me acaba cabreando.

    ESquema de conexion en protoboard

    Aquí tienes el programita para Resetear el módulo:

    //#include <SoftwareSerial.h>
    //SoftwareSerial BT1(3, 2); // RX | TX
    
    void setup()
      {   Serial.begin(9600);
          pinMode(7,OUTPUT);
          digitalWrite( 7 , HIGH);               // Levanta el pin 7
          delay(1000);
          Serial.println("Reseteando el modulo WIFI HLK-RM04 ");
    
          digitalWrite( 7 , LOW);                // Iniciamos el Reset
          Serial.println("Iniciando reset...");
          delay(6500);
          digitalWrite( 7 , HIGH);               // Volvemos alevantar el pin 7
    
          Serial.println("HLK-RM04 reseteado OK");
       }
    
    void loop()
    { }

     

    Cuando puedas, accede a su dirección IP de nuestra red local, ya solo falta comprobar que la puerta serie comunica correctamente con nuestro Duino. Para ello conecta los hilos de comunicaciones entre el módulo y tu Arduino:

    ESquema de conexion en protoboard

    Carga ahora este programa de comunicaciones en tu Arduino, que lo único que hace es enviar y recibir todo que llegue a las puertas serie:

    //#include <SoftwareSerial.h>     //Si tu Arduino es UNO o similar descomenta esta linea
    //SoftwareSerial Serial3(3, 2); // RX | TX y  crea una instancia de Softwareserial
    
    void setup()
      {  Serial.begin(57600);
         Serial3.begin(57600);
      }
    
    void loop()
      {  if (Serial3.available())
             { char c = Serial3.read() ;
               Serial.print(c);
             }
    
         if (Serial.available())
             {  char c = Serial.read();
                Serial3.print(c);
             }
      }

    Solo falta ya acceder al puerto 8080 de la dirección IP del modulo:

    Conexion al modulo WIFI HLK-RM04

    En la consola serie de Arduino deberías ver algo parecido a esto:

    Conexion de un cliente WEB

    Tenemos activado un servidor Web en el módulo HLK-RM04, que nos reenvía los datos a través d la puerta serie. No está mal para un módulo de menos de 20€

    En la próxima sesión haremos algún ejemplo de prueba para ver cómo manejar el acceso WIFI de este modulito.

     

    Resumen de la sesión

  • Presentamos las características básicas del módulo HLK.-RM04.
  • Vimos cómo hacer la configuración básica del módulo y como Resetearlo cuando se pierda (Que si os pasa como a mí, se os perderá).
  • Usamos una conexión básica con Arduino y un programa habitual para reenviar las lecturas de las puertas series.
  • Hemos comprobado, finalmente, que la conexión es correcta y la comunicación fluida en ambas direcciones.
  •  

    Deja una respuesta