Juan Ramón tiene 15 años, vive en Almería y está trabajando en una idea que mezcla programación embebida, matemáticas y hardware abierto: una calculadora científica y gráfica open source que pueda construirse con componentes baratos y que no dependa de los ecosistemas cerrados de los grandes fabricantes.
El proyecto se llama NumOS y forma parte de NeoCalculator. Su objetivo es ambicioso: llevar a una calculadora de bajo coste funciones que hoy se asocian a modelos comerciales bastante más caros, como graficación, estadística, resolución de ecuaciones, scripting y un motor de álgebra simbólica. El repositorio público en GitHub describe NumOS como un sistema operativo para calculadora científica y gráfica basado en ESP32-S3 N16R8, con 16 MB de flash y 8 MB de PSRAM.
Para un medio de programación, lo interesante no está solo en el precio. Está en el enfoque: NumOS no pretende ser una calculadora cerrada, sino una plataforma que se pueda estudiar, compilar, modificar y mejorar. En un mercado donde muchos dispositivos educativos siguen siendo cajas negras, el proyecto propone algo más cercano a una placa maker con sistema operativo propio, interfaz gráfica y aplicaciones matemáticas.
Una calculadora sobre ESP32-S3, LVGL y C++17
NeoCalculator se apoya en un ESP32-S3, un microcontrolador de Espressif con doble núcleo y suficiente capacidad para interfaces embebidas si el software se diseña con cuidado. Según la documentación del proyecto, la configuración de referencia usa una placa ESP32-S3 N16R8 CAM, pantalla IPS ILI9341 de 3,2 pulgadas, resolución 320 × 240 y teclado matricial de 5 × 10. El repositorio también documenta consumo de RAM y flash, conflictos de GPIO, decisiones de cableado y errores corregidos durante el arranque del hardware.
El sistema está escrito en C++17 y utiliza LVGL 9.x, una librería gráfica muy usada en sistemas embebidos. Esa elección tiene sentido: LVGL permite construir interfaces con widgets, estilos, eventos y renderizado ligero sin depender de un sistema operativo pesado. Para una calculadora, donde cada milisegundo de latencia se nota al moverse por menús o escribir expresiones, la eficiencia de la interfaz importa tanto como el motor matemático.
Un esquema simplificado de una pantalla de calculadora con LVGL podría parecerse a esto:
#include "lvgl.h"
static void on_key_pressed(lv_event_t* event) {
lv_obj_t* label = static_cast<lv_obj_t*>(lv_event_get_user_data(event));
lv_label_set_text(label, "sin(x)^2 + cos(x)^2 = 1");
}
void create_calculator_screen() {
lv_obj_t* screen = lv_scr_act();
lv_obj_t* output = lv_label_create(screen);
lv_label_set_text(output, "NumOS Ready");
lv_obj_align(output, LV_ALIGN_TOP_LEFT, 12, 12);
lv_obj_t* button = lv_btn_create(screen);
lv_obj_align(button, LV_ALIGN_BOTTOM_RIGHT, -12, -12);
lv_obj_t* text = lv_label_create(button);
lv_label_set_text(text, "EXE");
lv_obj_add_event_cb(button, on_key_pressed, LV_EVENT_CLICKED, output);
}
Este ejemplo no representa el código real de NumOS, pero ayuda a entender el tipo de arquitectura: una interfaz con eventos, pantalla activa, botones, etiquetas y lógica asociada. Para estudiantes o desarrolladores que quieran aprender programación embebida, una calculadora abierta puede ser una herramienta muy útil: hay input físico, pantalla, memoria limitada, renderizado, almacenamiento, parsing matemático y restricciones reales de hardware.
El apartado matemático es el más delicado. La web del proyecto habla de un motor CAS compacto, mientras que la documentación pública menciona integración con Giac C++ como backend simbólico. Giac/Xcas es un sistema de álgebra computacional conocido en el ámbito educativo y matemático, y existen trabajos específicos para ejecutarlo en calculadoras como NumWorks mediante ?CAS.
Comparativa: NeoCalculator frente a modelos comerciales
La promesa de NeoCalculator se entiende mejor al ponerla frente a calculadoras conocidas. No todas compiten exactamente en el mismo segmento: algunas están muy orientadas a exámenes, otras a CAS avanzado, otras a Python educativo y otras a graficación. Además, el precio real depende del país, tienda, impuestos y disponibilidad. Aun así, la comparación muestra por qué un proyecto abierto de bajo coste puede resultar atractivo.
Modelo |
Enfoque |
Pantalla |
Memoria / hardware publicado |
Programación |
Apertura |
Precio orientativo |
NeoCalculator / NumOS |
Calculadora científica y gráfica open source |
ILI9341 IPS 320 × 240 |
ESP32-S3 N16R8, 16 MB flash, 8 MB PSRAM |
C++17, roadmap con scripting |
Proyecto abierto en desarrollo |
Objetivo en torno a 15 euros/dólares de hardware |
TI-84 Plus CE |
Calculadora gráfica educativa clásica |
320 × 240, 2,8″, color |
3 MB Flash ROM y 149/154 KB RAM disponibles según región |
TI-BASIC, edición Python en modelos concretos |
Ecosistema propietario |
Variable según mercado |
NumWorks |
Calculadora gráfica educativa con Python |
IPS 320 × 240, 2,8″ |
ARMv7 a 216 MHz, 8 MB Flash, 256 KB RAM |
Python integrado |
Diseño más abierto que la media, pero producto comercial |
124,99 dólares en tienda oficial de EE. UU. |
Casio fx-CG50 |
Calculadora gráfica con 3D y modo examen |
Color de alta resolución |
16 MB Flash y 61 KB RAM en fichas comerciales |
Programación propia de Casio |
Propietaria |
139,99 euros en web de Casio España |
HP Prime G2 |
Calculadora gráfica avanzada con CAS |
320 × 240, 3,5″, táctil |
Cortex-A7 a 528 MHz, 256 MB RAM, 512 MB Flash |
Lenguaje HP PPL |
Propietaria |
Gama alta, precio variable |
Texas Instruments publica para la TI-84 Plus CE una pantalla de 320 × 240 píxeles, 3 MB de memoria Flash para datos y aplicaciones, batería recargable y alrededor de 149 KB de RAM libre en su página estadounidense, mientras que la página australiana habla de 154 KB de RAM disponible. NumWorks publica para su calculadora una CPU ARMv7 a 216 MHz, 8 MB de Flash, 256 KB de RAM estática, pantalla IPS 320 × 240 y batería de 1.450 mAh. Casio sitúa la fx-CG50 en 139,99 euros en España y la presenta como una calculadora gráfica avanzada con 3D Graph, modo examen y pantalla a color. HP Prime G2 juega en otra liga técnica, con pantalla táctil, CAS, 256 MB de RAM y 512 MB de Flash, según fichas especializadas de distribuidores de calculadoras HP.
La lectura técnica es clara: NeoCalculator no necesita superar a HP Prime en potencia bruta para ser relevante. Su campo natural estaría más cerca de NumWorks, Casio fx-CG50 o TI-84 Plus CE, pero con una diferencia de filosofía: que el usuario pueda ver, tocar y cambiar el sistema.
Lo que aporta al mundo del código
Para desarrolladores, NumOS es interesante por varias razones. La primera es que obliga a trabajar con restricciones reales. En un PC, desperdiciar memoria o CPU suele pasar desapercibido. En una calculadora basada en microcontrolador, cada buffer, cada refresco de pantalla y cada estructura de datos importan. La documentación del proyecto habla de RAM medida en decenas de kilobytes usados, no en gigabytes disponibles.
La segunda es que combina varias disciplinas: firmware, UI embebida, drivers de pantalla, lectura de teclado, almacenamiento, parser matemático, renderizado de gráficas y álgebra simbólica. Es un proyecto ideal para aprender cómo se organiza software real en hardware pequeño.
Una función básica de evaluación matemática en un sistema así podría dividirse en capas:
struct EvalResult {
bool ok;
double value;
const char* error;
};
EvalResult evaluate_expression(const char* input) {
// 1. Tokenizar la expresión
// 2. Construir AST o DAG
// 3. Validar operadores y funciones
// 4. Evaluar numéricamente
// 5. Devolver resultado o error legible
return EvalResult{
.ok = true,
.value = 42.0,
.error = nullptr
};
}
En una calculadora comercial, todo esto ocurre dentro de un sistema cerrado. En un proyecto como NumOS, cada capa puede convertirse en material de aprendizaje. ¿Cómo se representa una expresión? ¿Cómo se simplifica una derivada? ¿Cómo se dibuja una función sin bloquear la interfaz? ¿Cómo se evita fragmentar memoria? ¿Cómo se actualiza un firmware sin romper el dispositivo?
La tercera razón es educativa. Muchas calculadoras permiten programar, pero pocas invitan a entender el sistema completo. NumWorks fue una mejora importante en esa dirección por su enfoque más moderno y por incluir Python, pero sigue siendo un producto comercial con decisiones propias de fabricante. NeoCalculator intenta ir un paso más allá: hardware y software pensados para abrirse desde el principio. Quien quiera bucear en el código, en los esquemas o en el roadmap puede hacerlo directamente desde el repositorio del proyecto en GitHub.
Los retos que tendrá que resolver
El proyecto es prometedor, pero no conviene venderlo como sustituto inmediato de una calculadora comercial. Entre un prototipo funcional y un dispositivo que puede recomendarse en un aula hay mucha distancia. Hace falta una carcasa resistente, buen teclado, batería estable, actualizaciones seguras, precisión matemática, documentación para docentes, modo examen y compatibilidad con normativas educativas.
También está el problema de la certificación. Las calculadoras usadas en exámenes no se aceptan solo por sus prestaciones, sino por sus restricciones. Un dispositivo abierto con CAS, scripting, conectividad o firmware modificable puede encontrar más barreras que uno cerrado, precisamente porque permite hacer más cosas. Si NumOS quiere entrar en educación reglada, tendrá que ofrecer modos bloqueados, verificables y fáciles de auditar.
El coste objetivo también debe interpretarse con cuidado. Un BOM bajo no equivale a precio final. Fabricar, montar, probar, certificar, empaquetar, distribuir y ofrecer soporte puede multiplicar el coste. El valor del proyecto no depende solo de que llegue exactamente a 15 euros, sino de demostrar que una calculadora gráfica abierta puede ser mucho más barata y transparente que la media del mercado.
Aun así, la iniciativa tiene valor incluso si no se convierte en un producto masivo. Puede servir como plataforma de aprendizaje, como proyecto maker, como base para talleres de programación embebida o como demostración de que los dispositivos educativos no tienen por qué ser opacos.
Juan Ramón está abordando un problema real desde una perspectiva poco habitual: no crear una app más, sino un dispositivo completo. Para un joven de 15 años, el salto técnico es notable. Para la comunidad de programación, el proyecto recuerda algo que a veces se olvida: el código también puede cambiar objetos cotidianos, no solo servicios web.
Preguntas frecuentes
¿Qué es NumOS?
NumOS es un sistema operativo open source para una calculadora científica y gráfica basada en ESP32-S3. Forma parte del proyecto NeoCalculator.
¿Puede competir ya con una TI-84 Plus CE o una NumWorks?
Todavía debe verse como un proyecto en desarrollo. Técnicamente apunta a ese segmento, pero competir en aulas exige estabilidad, carcasa, batería, soporte, modo examen y validación educativa.
¿Por qué es interesante para programadores?
Porque combina C++17, programación embebida, LVGL, hardware limitado, interfaz gráfica, parsing matemático y cálculo simbólico en un dispositivo real.
¿El precio de 15 euros es el precio final?
No necesariamente. Es un objetivo de coste de hardware o referencia del proyecto. El precio final de un producto fabricado sería mayor al incluir montaje, carcasa, certificaciones, distribución y soporte.
¿Qué calculadora comercial es más parecida a la idea de NeoCalculator?
Por filosofía educativa y programación, NumWorks es probablemente la referencia más cercana. Por segmento de calculadora gráfica escolar, también puede compararse con TI-84 Plus CE y Casio fx-CG50.
