Professional Documents
Culture Documents
Material requerido.
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.
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.
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
La conexión a un Arduino UNO o MEGA es tan sencilla que ni siquiera compensa dibujar un
diagrama de conexión.
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.
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.
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
Tenemos ahora que configurar unos pocos parámetros. Lo primero es seleccionar el NetMode,
porque este curioso módulo, puede funcionar de varios modos:
Vamos a seleccionar WIFI (Client)-Serial, para que se pueda conectar a nuestra WIFI principal.
Veréis algo como esto:
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.
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.
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.
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).
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á.
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:
Si algo falla y no ves el módulo: Reset
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.
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 ");
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:
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:
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);
}
}
En la próxima sesión haremos algún ejemplo de prueba para ver cómo manejar el acceso WIFI
de este modulito.