Guia Roblex
Guia Roblex
Guia Roblex
Experience
Guía Educativa
Contenido
2
1. Kit de desarrollo educativo ROBLEX
Puertos Pantalla
digitales Distancia
Oled
Buzzer Sensor de
Boton Botones sonido
Microcontrolador ESP32
3
Placa base ROBLEX
Microcontrolador ESP 32
4
• Wi-Fi 2.4 GHz con hasta 150 Mbits/s
• Conectividad Bluetooth BLE o clásica
• 11 pines de propósito general (GPIO) que pueden ser usados todos como entradas o salidas
analógicos, digitales o PWM. Además de 4 pines de solo entrada.
• Comunicación serial I2C
• 2 núcleos de procesamiento que le permite desempeñar dos tareas simultáneamente
• 512 kbits de RAM
• reloj crystal de 40Mhz
• Montado en un módulo con comunicación y alimentación serial a través de un conector USB
tipo C
Módulos Roblex
Los módulos de sensores, actuadores y periféricos ROBLEX son circuitos impresos
estandarizados de 28 por 28 milímetros con conexiones que encajan mediante cabezales en
los espacios respectivos en la placa base ROBLEX. Cada módulo consta de las siguientes
conexiones:
• Entrada 3.3V para la alimentación del modulo
• 2 pines GPIO que pueden ser entradas o salidas analógicas o digitales según el
módulo. Pin A y Pin B. Ambos pueden ser programados de forma independiente.
• Pines SDA y SCL usados para los periféricos con conexión serial I2C
• Entrada de voltaje no regulada directa de la alimentación para módulos que requieren
un nivel elevado de voltaje y/o corriente
5
Modulo Conexiones Descripción
Sensor de Sonido
Mide la intensidad del sonido. Para
Pin A: entrada analógica
aplicaciones de control por ruido como
Micrófono Electret de 9mm
aplausos o similares
6
Switch
Pin A: entrada digital El módulo cuenta con dos Switch que
Switch de dos posiciones actúan como entradas digitales. Ideal
para el manejo de lógica digital,
Pantalla OLED
Comunicación serial I2C Permite imprimir texto, graficas o
Pantalla OLED 128x64 imágenes. Ideal para visualizar valores
pixeles de sensores realizar interfaces de
usuario, entre otras cosas.
Pin A y Pin B no usados
7
2. Configuracion del Software Arduino
Para comenzar a usar el kit de desarrollo educativo ROBLEX a través del IDE Arduino es
necesario realizar las siguientes configuraciones:
https://www.arduino.cc/en/software
8
Instalar los controladores y librarías para la placa ESP32
Para poder hacer uso de la placa ESP32 desde el IDE Arduino es necesario añadirla al gestor
de tarjetas.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-
pages/package_esp32_index.json
Si ya cuenta con una URLs diferente en esta pestaña puede agregar otras separándola
con una coma (,).
9
Desde esta ventana de preferencias puede editar otras configuraciones del IDE como el color
de fondo, el idioma o el tamaño de la letra.
De esta manera se instalará la librería que facilitará la interacción con los elementos del kit
Roblex y algunas librerías adicionales requeridas para los módulos del kit
10
Pasar programa de prueba
En el IDE Arduino entrar a Herramientas > Placa > esp32 y seleccionar DOIT ESP32
DEVKIT1
11
Si no aparece ningún puerto disponible intente desconectar y volver a conectar la Shield, usar
otro puerto del computador o cambiar el cable USB. Si este error persiste puede intentar
descargar drivers adicionales en el siguiente enlace (https://www.silabs.com/developers/usb-
to-uart-bridge-vcp-drivers)
A continuación, abrir el ejemplo básico en Archivo > Ejemplos > Roblex y seleccionar
Prueba
Para subir el programa presione el botón “cargar” en la parte superior izquierda representado
por una flecha. El proceso de compilación y carga toma algunos segundos y puede monitorear
12
el progreso en la sección de salida en la parte inferior. Al finalizar el proceso se observa una
salida similar a la siguiente.
Una vez finalizada la carga, desconecte el esp32 del computador y proceda a conectar
los siguientes módulos en los puertos correspondientes de la placa ROBLEX:
Puerto 1: Potenciómetro
Puerto 2: Sensor de Distancia
Puerto 3: Buzzer
Puerto 4: Pantalla OLED
Puerto 5: Botones
13
3. Introducción al lenguaje de programación C++
Arduino es una plataforma de desarrollo de hardware y software libre que permite crear
proyectos interactivos con diferentes tipos de sensores y actuadores. Utiliza un lenguaje de
programación similar al de C++, con algunas librerías y funciones específicas para interactuar
con los componentes de hardware.
14
void setup() {
void loop() {
Con este programa En Arduino, el código se organiza en dos funciones principales: setup() y
loop().
setup() es una función especial que se ejecuta una sola vez al inicio del programa. Aquí se
suelen configurar las entradas y salidas del dispositivo, establecer las velocidades de
comunicación y establecer las condiciones iniciales.
loop() es una función que se ejecuta de manera continua después de que se ha ejecutado
setup(). Aquí se encuentra el cuerpo principal del programa y se ejecutan las acciones que se
desean realizar, en este caso imprimir un mensaje una vez por segundo.
15
4. Modulo Pantalla OLED
Pantalla OLED
Comunicación serial I2C Permite imprimir texto, graficas o
Pantalla OLED 128x64 imágenes. Ideal para visualizar valores
pixeles de sensores realizar interfaces de
usuario, entre otras cosas.
Pin A y Pin B no usados
El módulo pantalla OLED puede conectarse a cualquier puerto de la placa ROBLEX de forma
indistinta y sin modificar el código
pantalla: 9691007709185
16
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
void setup() {
void loop() {
Dentro del loop() primero se limpia la pantalla de los dibujos anteriores. Luego se escribe un
texto en la parte superior seleccionando el tamaño del texto, el color del texto y del fondo
(encendido y apagado). Se dibujan figuras geométricas en diferentes posiciones de la pantalla
y por ultimo se utiliza la función display.display(); para visualizar todo lo creado.
17
Mostrar imágenes en la pantalla
Configure el tamaño del canvas a 128x64 pixeles y dibuje o pegue cualquier imagen
que desee visualizar en la pantalla. Esta debe ser preferiblemente de un solo color con
alto contraste.
https://javl.github.io/image2cpp/
18
Una vez cargada la imagen podrá observar la salida de la pantalla en la sección
Preview.
En la casilla Code Output format seleccione plain bytes. Luego presione el botón
Generate code y por último Copy Output para copiar los códigos generados.
19
Finalmente, dentro del Ide de Arduino cree el siguiente programa y pegue los códigos
de la imagen generados dentro de los corchetes de la variable imagen.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
void setup() {
void loop() {
20
c representa el color, puede ser WHITE para encender y BLACK para apagar
- display.fillScreen(c);
dibuja todos los pixeles de la imagen
- display.drawTriangle(x0, y0, x1, y1, x2, y2, c); display.fillTriangle (x0, y0, x1, y1, x2, y2, c);
dibuja un triángulo definiendo sus tres vértices.
- display.setTextSize(p);
configura el tamaño del texto siguiente dándole un grosor a la línea de p pixeles
21
- display.setCursor(x0,y0);
posiciona el cursor para el texto en la posición (x0, y0)
- display.setTextColor(c1,c2);
selecciona el color del texto y del fondo. Para que el texto sea visualizable c1 debe ser
opuesto a c2 WHITE o BLACK para encendido y apagado respectivamente
- display.display();
la función mas importante, es la que permite que todos los dibujos realizados en la pantalla
se visualicen adecuadamente.
5. Modulo Buzzer
22
Buzzer y botón Pin A: salida análoga Puede reproducir sonidos en un buen
Buzzer piezoeléctrico de rango de frecuencias. Para melodías o
frecuencia variable alertas sonoras
Un Buzzer es un dispositivo que permite convertir una señal eléctrica en una onda de sonido.
Variando la frecuencia de la señal se pueden obtener diversos tonos y crear melodías.
El modulo hace uso del pinA como salida PWM del microcontrolador al Buzzer y el pinB como
entrada digital del pulsador.
Es importante resaltar que el ESP32 tiene funciones más avanzadas para el manejo de las
salidas PWM en comparación a los microcontroladores tradicionales de Arduino. Por esta
razón, las funciones usadas en las placas Arduino para interactuar con los Buzzer y que se
consiguen fácilmente
Para poder programar cómodamente el Buzzer con el ESP32 la librería ROBLEX tiene
funciones y definiciones que emulan las funciones disponibles para las placas Arduino.
Para explicar el funcionamiento del módulo Buzzer se hace uso del siguiente código de
ejemplo:
23
#include "ROBLEX.h"
ROBLEX ROBLEX;
int melody[] = {
// Super Mario Bros
NOTE_E5, 8, NOTE_E5, 8, REST, 8, NOTE_E5, 8, REST, 8, NOTE_C5, 8, NOTE_E5, 8,
REST, 8, NOTE_G5, 4
};
void setup() {
void loop() {
//reproducir melodia
if (digitalRead(BOTON_PIN) == 1) {
int n = sizeof(melody) / sizeof(melody[0]); // calcular el tamano
ROBLEX.PlayMelody(BUZZER_CHANNEL,melody, n, tempo); // reproducir la melodia
}
24
Con este código se puede probar la funcionalidad del buzzer para reproducir melodías
predefinidas presionando el botón del módulo. Y a su vez, para tocar notas sueltas
directamente.
ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL);
Esta hace parte de las novedades del ESP32 frente a Arduino. Permite vincular el pin del
Buzzer (BUZZER_PIN) a un canal PWM (BUZZER_CHANNEL) previamente definido con el
numero 0. En las próximas funciones será este canal es el que se use para programar el
generar las señales.
ROBLEX.PlayMelody(BUZZER_CHANNEL,melody, n, tempo);
ledcWriteTone(BUZZER_CHANNEL, nota);
Para cambial la canción definida en la variable Melody puede acceder a la siguiente biblioteca:
https://github.com/robsoncouto/arduino-songs
25
Aquí encontrará una lista de canciones para usar. Ingrese al archivo disponible en la carpeta
de la canción deseada y reemplace las notas de melody y el valor de tempo de en su código
de arduino
26
6. Sensor de distancia
El modulo Sensor de distancia se basa del sensor de distancia laser ToF (Time-of-Flight)
Vl53l0x.
Este sensor la tecnologia FlightSense para medir el tiempo que tarda un pulso de la luz laser
infrarrojo y seguro para la vista en llegar al objeto más cercano y reflejarse en el detector. De
esta forma logra estimar con alta precisión la distancia de dicho objeto.
El modulo se comunica con el ESP32 principalmente a través del puerto I2C, pero hace uso
de los pines A y B para configurar los sensores laterales.
27
#include "ROBLEX.h"
ROBLEX ROBLEX;
void setup() {
int distancia = 0;
void loop() {
if (ROBLEX.FrontComplete()) {
distancia = ROBLEX.FrontRange();
}
Esta función es usada para configurar el puerto de la placa a la que se encuentra conectado
el módulo y a su vez los sensores se encuentran conectados a este. Los bools left, front y right
deben marcarse como true dependiendo de en cuales se conecten los sensores:
28
A su vez, para la lectura de los sensores en el loop() la librería ROBLEX cuenta con funciones
que leen los tres sensores independientemente:
if (ROBLEX.FrontComplete()) {
distanciaF = ROBLEX.FrontRange();
}
De esta manera, el ejemplo de uso de los tres sensores simultáneos seria de la siguiente
manera:
#include "ROBLEX.h"
ROBLEX ROBLEX;
void setup() {
int distanciaF = 0;
int distanciaR = 0;
int distanciaL = 0;
void loop() {
if (ROBLEX.FrontComplete()) {
distanciaF = ROBLEX.FrontRange();
}
if (ROBLEX.RightComplete()) {
distanciaR = ROBLEX.RightRange();
}
if (ROBLEX.LeftComplete()) {
distanciaL = ROBLEX.LeftRange();
}
}
29
7. Modulo Puertos Digitales
El módulo puertos digitales se comunica con el ESP32 únicamente a través del puerto I2c. No
hace uso de los pines A y B y por lo tanto puede ser usado en cualquier puerto de la placa
ROBLEX sin alterar su programación.
Este módulo se basa en el circuito integrado PCF8574 ubicado en la parte posterior del
módulo. Este chip, permite controlar múltiples puertos digitales como salidas o entradas a
través de I2c. En la parte superior del módulo se exponen 6 puertos digitales independientes,
cada uno con su respectivo led y pines para conectar elementos externos. En esta guía se
centrará el uso de este módulo en la interacción de los 6 leds como salidas digitales.
30
#include <Adafruit_PCF8574.h> //importar librería PCF8574
void setup() {
void loop() {
Para hacer uso de los puertos digitales de este módulo basta con hacer uso las funciones
habituales para el control de pines, pero referenciados con la librería pcf8574. Es decir:
pcf.pinMode(p, MODE);
pcf.digitalRead(p);
pcf.digitalWrite(p, OUTPUT);
31
8. Bluetooth
32
Comunicación bluetooth clásica
La manera más sencilla y efectiva para usar la comunicación bluetooth con el ESP32 y el kit
ROBLEX es a través del bluetooth clásico. Para ello es necesario configurarlo para que
funcione como un dispositivo "maestro" o "esclavo", es decir si se quiere que el ESP32 se
conecte a otro dispositivo o que sea el dispositivo al que se conecten otros. Una vez
configurado, el ESP32 puede vincularse a otros dispositivos Bluetooth cercanos, y luego
enviar y recibir datos a través de la conexión.
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ROBLEX SLAVE"); //Nombre del dispositivo
}
void loop() {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
}
Este código permite enviar y recibir Strings a través de Bluetooth clásico usando el monitor
serial. La librería funciona de manera análoga a las funciones serial. En este caso, se hace
uso de la función begin para asignar un nombre al dispositivo y write y read para enviar y
recibir mensajes respectivamente
33
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ROBLEX MAESTRO", true); //nombre de su dispositivo como maestro
SerialBT.connect(slaveAddress);
while (!SerialBT.connected(10000)) {
Serial.println("Conexion fallida, intentando nuevamente...");
}
void loop() {
//enviar y recibir Strings como maestro
if (SerialBT.connected()) {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
} else {
SerialBT.connect(slaveAddress);
}
delay(50);
}
Para este caso, es necesario especificar el MAC address del dispositivo esclavo con el cual
se desea vincular. También es necesario agregar un true en la función begin para iniciar el
como maestro y usar la función conect para vincularse con el esclavo.
34
9. WI-FI
35
Así mismo, al conectarse a un router con acceso a internet, puede comunicarse con servidores
externos o aplicaciones en la nube para obtener o entregar información. Existe una gran
cantidad de APIs o servicios web que cumplen diferentes funciones a las que puede acceder
el ESP32. Entre ellos destacan: bases de datos para almacenar información proveniente de
sensores, aplicativos móviles o Web para controlar el ESP de forma remota desde cualquier
parte del mundo, descargar Información de interés tal como reportes climáticos, sonidos o
texto.
36