¿Qué es la máquina generadora de silencio (Silence Machine)?
La máquina generadora de silencio es un dispositivo que te ayuda a recobrar la paz perdida cuando la bocina ruidosa de tu vecino suena a máximo volumen. Existe la versión de un sólo núcleo y dos núcleos:
- Silence Machine - Dual Core (Recomendada)
- Silence Machine - Single Core
- La versión de un sólo núcleo es menos eficiente que la versión de dos núcleos, sin embargo cuenta con código más fácil de leer y programar.
- La versión de un sólo núcleo fue la prueba de concepto para crear la versiń dual core.
Para entender su funcionamiento necesitamos entender lo siguiente:
- La música es la combinación de sonidos, ritmos y silencios expresados en ondas y frecuencias.
- Pese a las reglamentaciones locales, las autoridades informan que no pueden hacer nada en contra de las bocinas ruidosas cuando estas suenan dentro de los domicilios. Dicen que si te molesta, “pongas tu música también”.
- Dado lo anterior, solo quedaba una cosa por hacer. Poner mi música a todo volumen, siendo mi música una combinación de silencios a su máxima potencia.
Señoras y señores, damas y caballeros, me complace presentarles a la máquina generadora de silencio.
NotaPuedes leer todos los artículos relacionados a este tema en:
¿Cómo funciona?
Puedes ver una explicación profunda en:
De manera resumida, imagina que para que tu bocina reproduzca música requiere enviar datos a través de una línea teléfonica distinta a una velocidad de 1600 veces por segundo. Este proyecto busca que esas líneas estén ocupadas transmitiendo silencio. Básicamente, como cuando pones dos bocinas a todo volumen y la música se mezcla entre sí.
Componentes requeridos
- 1 ESP32 o similar. 30 o 38 pines, son bienvenidos.
- 2 módulos de radio a 2.4 Ghz
- 1 Pantala OLED con 4 botones
- 2 Capacitores
- 1 Protoboard
- Cables dupont
- 16 Female Female (1 PAQUETE DE 40, puede dar dos juegos. Sobran conexiones rojas y negras)
- 2 AMARILLO 🟡
- 2 NARANJA 🟠
- 2 VERDE 🟢
- 2 AZUL 🔵
- 2 MORADO 🟣
- 2 BLANCO ⚪
- 2 GRIS 🔘
- 2 CAFE 🟤
- 8 Male Female (1 PAQUETE DE 40, puede dar un solo juego. Sobran todos los colores. Se recomienda suplir con café y blanco)
- 4 ROJO 🔴 || CAFE 🟤
- 4 NEGRO ⬛ || BLANCO ⚪
- 16 Female Female (1 PAQUETE DE 40, puede dar dos juegos. Sobran conexiones rojas y negras)
Modo de operación
- Prende el dispositivo
- Se corre de forma automática un chequeo de salud, se muestra el resultado en la pantalla
- Si todo sale bien, puedes proseguir
- Si alguno de los módulos RF falla, el resultado se mostrara en pantalla
- Si la pantalla falla, en el Serial se mostrará el error
- En muchas ocasiones, solo con reiniciarlo,
botón #, se corregirá el error
- Seleccionas
#=> para reiniciar*=> para continuar
- Seleccionas un modo y generas silencio
^=> arribav=> abajo#=> reiniciar*=> continuar
- Una vez iniciada la generación de silencio, solo puedes parar mediante el botón
#=> reiniciar
Modos de silencio (Single-core)
- silence_mode_1
- silence_mode_2
- silence_mode_3
- silence_mode_4
Tabla de conexiones
| Componente | Especificación | Pin (ESP32) | 10uf capacitor / 2da opción | Cable |
|---|---|---|---|---|
| 1st nRF24L01 | VCC 🔴 | 3.3V | N/A (+) capacitor | Rojo |
| 1st nRF24L01 | GND ⬛ | GND | N/A (-) capacitor | Negro |
| 1st nRF24L01 | CE 🟡 | GPIO 04 | Amarillo | |
| 1st nRF24L01 | CSN 🟠 | GPIO 05 | Naranja | |
| 1st nRF24L01 | SCK 🟢 | GPIO 18 | Verde | |
| 1st nRF24L01 | MOSI 🔵 | GPIO 23 | Azul | |
| 1st nRF24L01 | MISO 🟣 | GPIO 19 | Morado | |
| 1st nRF24L01 | IRQ | |||
| 2do nRF24L01 | VCC 🔴 | 3.3V | N/A (+) capacitor | Rojo |
| 2do nRF24L01 | GND ⬛ | GND | N/A (-) capacitor | Negro |
| 2do nRF24L01 | CE 🟡 | GPIO 02 | Amarillo | |
| 2do nRF24L01 | CSN 🟠 | GPIO 15 | Naranja | |
| 2do nRF24L01 | SCK 🟢 | GPIO 14 | Verde | |
| 2do nRF24L01 | MOSI 🔵 | GPIO 13 | Azul | |
| 2do nRF24L01 | MISO 🟣 | GPIO 12 | Morado | |
| 2do nRF24L01 | IRQ | |||
| Button 1 - UP | Terminal | GPIO 25 | ||
| Button 2 - DOWN | Terminal | GPIO 26 | ||
| Button 3 - # | Terminal | EN | ||
| Button 4 - * | Terminal | GPIO 27 | ||
| Display 1 | VCC 🔴 | 3.3V | Rojo | |
| Display 1 | GND ⬛ | GND | Negro | |
| Display 1 | SDA 🟡 | GPIO 21 | GPIO 32 | Amarillo |
| Display 1 | SCL 🟠 | GPIO 22 | GPIO 33 | Naranja |
- Las otras terminales de los botones, se conectan a GND. Cuando se usa la pantalla OLED con botones integrados, estos ya están cableados a GND.
- Si se ocupan los pines de 2da opción, se debe modificar el código correspondiente en
// INICIO DE OPCIONES CONFIGURABLES
Crea tus propios modos de silencio
Este proyecto es posible gracias a proyectos similares que eran Open Source, por lo que este proyecto también lo es y busca:
- Ser fácil de leer, analizar y modificar
- Permitir añadir modos de silencio personalizados
- Ser lo más eficiente posible
- Durante el desarrollo de este proyecto se realizó un análisis y comparación de resultados, dando como resultado un proyecto más eficiente.
- En las próximas semanas publicaré el resultado de algunas comparativas. (Espera el link aquí)
Composición del código
- Librerías
- Sección de configuraciones que puedes modificar
- Configuración de pantalla
- Configuración de radios
- Configuración de botones
- Configuraciones adicionales
- Definición de variables
- Radios
- Botones
- Pantalla
- Configuración de modos de silencio (Puedes añadir los tuyos)
- Array de descripciones para cada modo de silencio
- Funciones de los modos de silencio (La lógica del modo)
- Menú para los modos de silencio
- Funciones de operación
- show_health_test
- show_nav
- show_current_mode
- press_to_start
- start_nav
- Función setup que inicializa el código
¿Cómo añadir tus propios modos de silencio?
Puedes crear tus propios métodos para generar silencio. Para esto debes tomar en cuenta las siguientes consideraciones:
- Frecuencias 2.4 Ghz
- Bluetooth Clásico (2.402 GHz y 2.480 GHz)
- 79 canales
- 1 MHz cada uno
- Salto de Frecuencia (FHSS) - 1600/s
- BLE (2.402 GHz y 2.480 GHz)
- 40 canales
- 2 MHz
- Salto de Frecuencia (FHSS) - 1600/s
- Advertising Channels - 37, 38 y 39
- Dicho lo anterior, para la librería RF24 tenemos los siguientes canales
- Frecuencia(MHz) = 2400 + Número de Canal
- CH 0 => 2400
- CH 1 => 2401
- …
- CH 80 => 2480
- Frecuencia(MHz) = 2400 + Número de Canal
- Bluetooth Clásico (2.402 GHz y 2.480 GHz)
Creación de tus propios custom modes
Modo de creación (custom_mode)
- Añades tu descripción de tu
custom_modeal arrayconst char* all_modes[] = {}; - Creas una función que coincida con el identificador numérico de tu
custom_modeenvoid silence_mode_#() {} - Añade el
casecorrespondiente a tucustom_modeenvoid generate_silence(int p_index) {}
Pautas para la integración de código
- Identación por tabuladores de 4 espacios de longitud
- Homologación de nombres
- Que los modos tengan un propósito definido y útil
Diagrama de funcionamiento

Nota final¡Gracias por terminar de leer este artículo! uwur
— El Capitán
¿Tienes alguna duda o te gustaría comentar algo sobre este artículo?
Puedes encontrarme en: