IoT - Una breve historia (Parte 1)
La tecnología de Internet de las Cosas (IoT) ha estado en desarrollo durante décadas, pero es en la era actual, impulsada por la rápida expansión de la conectividad 5G, que ha comenzado a florecer y captar la atención generalizada. Sin embargo, su origen se remonta mucho más atrás en el tiempo.
La primera tostadora conectada, precursora de la IoT moderna.
La semilla de la IoT se plantó en los laboratorios de investigación y desarrollo a finales del siglo XX, cuando los primeros dispositivos conectados comenzaron a emerger en entornos controlados como laboratorios y campus universitarios. Estos dispositivos, a menudo rudimentarios en comparación con los de hoy, sentaron las bases para lo que se convertiría en una red interconectada de objetos físicos capaces de recopilar y compartir datos.
A medida que la tecnología avanzaba, la IoT encontró aplicaciones en una variedad de campos, desde la automatización industrial hasta la gestión de la cadena de suministro y la salud digital. Sin embargo, su adopción masiva fue limitada por la disponibilidad y la velocidad de las conexiones de red.
Con la llegada de la tecnología 5G, la IoT está experimentando un renacimiento. Las conexiones ultrarrápidas y de baja latencia proporcionadas por el 5G están desbloqueando todo el potencial de la IoT, permitiendo la proliferación de dispositivos inteligentes en hogares, ciudades, industrias y más allá.
Al sumergirnos en esta emocionante era de la IoT habilitada por 5G, es esencial comprender cómo estos avances tecnológicos se traducen en la creación práctica de dispositivos IoT modernos. Nos adentraremos en el mundo del hardware y los microcontroladores, componentes fundamentales de este ecosistema tecnológico.
Es importante destacar la diferencia entre una CPU (Unidad Central de Procesamiento) y una MCU (Microcontrolador). Las CPUs, como las que encontramos en nuestras computadoras personales, son dispositivos de propósito general diseñados para ejecutar una amplia variedad de aplicaciones. Por otro lado, las MCUs son chips integrados que combinan una CPU con memoria, E/S y otros periféricos en un solo paquete. Las MCUs son ideales para aplicaciones embebidas donde el tamaño, el consumo de energía y el costo son consideraciones importantes.
Al embarcarnos en este proyecto, hemos decidido descartar plataformas de desarrollo como Arduino. Aunque Arduino es popular y fácil de usar, está diseñado principalmente para proyectos de aficionados y prototipos. Para un dispositivo IoT robusto y escalable, necesitamos tecnologías más industriales como los microcontroladores STM32, ESP32 o las MCUs de Texas Instruments.
Características | Arduino Mega | STM32F4 | ESP32 | Texas Instruments MSPM0G3 |
---|---|---|---|---|
Tipo de microcontrolador | Microcontrolador de 8-bit o 32-bit | Microcontrolador ARM Cortex-M de 32-bit | Microcontrolador Xtensa de 32-bit | Microcontrolador de 16-bit o 32-bit |
Velocidad de reloj | 16 MHz | Hasta 180 MHz (dependiendo del modelo específico) | Hasta 240 MHz | Varía según el modelo, hasta varios cientos de MHz |
Memoria Flash | 256 KB | Desde 512 KB hasta varios MB | Entre 512 KB y 4 MB | Varía según el modelo, desde KB hasta varios MB |
Memoria RAM | 8 KB | Desde 64 KB hasta 1 MB | Hasta 520 KB | Varía según el modelo, desde KB hasta varios MB |
GPIO | 54 | Depende del modelo, típicamente entre 16 y 168 | Depende del modelo, típicamente entre 34 y 82 | Varía según el modelo, típicamente entre 10 y 200 |
Conexiones SPI | 4 (Con pins MISO, MOSI, SCK) | Depende del modelo, generalmente múltiples interfaces SPI disponibles | 4 (Con pins MISO, MOSI, SCK) | Depende del modelo, generalmente múltiples interfaces SPI disponibles |
Conexiones I2C | 2 (Con pins SDA, SCL) | Depende del modelo, generalmente múltiples interfaces I2C disponibles | 2 (Con pins SDA, SCL) | Depende del modelo, generalmente múltiples interfaces I2C disponibles |
Conectividad | USB, UART, I2C, SPI, Ethernet | Puerto USB, UART, I2C, SPI, Ethernet, etc. | Wi-Fi, Bluetooth, Ethernet (en algunas variantes) | Varía según el modelo, puede incluir USB, UART, I2C, SPI, Ethernet, etc. |
Soporte de desarrollo | Amplia comunidad de usuarios y documentación disponible | Amplio soporte de la comunidad y documentación disponible | Comunidad activa y documentación disponible | Soporte de la comunidad y documentación disponible |
Lenguajes de programación | Principalmente Arduino IDE con lenguaje basado en C/C++ | C/C++, soporte para múltiples IDEs como STM32CubeIDE | C/C++, soporte para múltiples IDEs como Arduino IDE, PlatformIO | C/C++, algunos modelos pueden admitir otros lenguajes como TI-RTOS, Energia, etc. |
Aplicaciones típicas | Proyectos de hobby, prototipos simples | Aplicaciones industriales, sistemas embebidos avanzados | Proyectos IoT, sistemas embebidos avanzados | Aplicaciones industriales, sistemas embebidos, dispositivos IoT |