EuraStudy
Apuntes/Tecnología e Ingeniería/Programación e internet de las cosas
Apuntes · Tecnología e IngenieríaES · Selectividad

Programación e internet de las cosas

Este tema reúne los fundamentos de la programación (variables, tipos, operadores, estructuras de control y funciones), el diseño y la depuración de algoritmos mediante diagramas de flujo y pseudocódigo, y la arquitectura del «internet de las cosas» (IoT): sensores, actuadores, microcontroladores y conectividad. Es contenido evaluable de Selectividad en Tecnología e Ingeniería: se pide razonar la salida o el coste de un algoritmo, trazar/corregir un programa, diseñar la lógica de un sistema con un microcontrolador y describir la cadena IoT extremo-a-extremo. Cierra el bloque de informática de la materia conectando la lógica del software con la electrónica de los proyectos tecnológicos.

4 secciones·~22 min de lectura·3 competencias·Nivel Estándar 3 · Profundización 1·Revisado · 07/2026

T·0888 / 11
Perfil de examen
Desarrollar y depurar programas sencillos aplicando algoritmos y estructuras de programación (secuencia, selección e iteración) y funciones para resolver problemas, verificando su corrección.Diseñar e implementar soluciones basadas en el internet de las cosas integrando programación, sensores, actuadores, microcontroladores y conectividad en proyectos tecnológicos reales o simulados.Expresar algoritmos con notaciones normalizadas (pseudocódigo y diagramas de flujo) y razonar su funcionamiento, su salida y su corrección.
Operadores:analizaexplicacalculajustificainterpretarazonarelacionadiseñatraducedepura

nivel básico

Como materia de modalidad, todo el tema es de nivel de profundización; lo mínimo exigible es saber leer y trazar un algoritmo con las tres estructuras de control, expresarlo en pseudocódigo y diagrama de flujo, y describir la cadena IoT sensor → microcontrolador → conectividad → actuador.

nivel avanzado

El dominio pleno añade la depuración sistemática (clasificar y corregir errores de sintaxis, ejecución y lógica), el cálculo del coste de un bucle y el diseño completo de la lógica de control de un sistema IoT con condiciones de histéresis y temporización.

Profundidad

Profundidad de lectura: En profundidad

Texto

Tamaño de texto: Estándar

Contenido · 4 secciones▾
  1. Programación e internet de las cosas
    • 01Fundamentos de la programación: variables, control y funciones◐
    • 02Diseño de algoritmos: diagramas de flujo y pseudocódigo◐
    • 03Depuración y verificación de programas◐
    • 04Internet de las cosas (IoT) aplicado a proyectos●
§ 01

Fundamentos de la programación: variables, control y funciones#

●●○EstándarLPBOE-A-2022-5521 · tecnologia-e-ingenieria · Programación e internet de las cosas · Fundamentos de la programación

Anatomía de un programa: datos, operadores y control

Anatomía de un programaGrafo, Datos → Funciones, Operadores → Funciones, Control → Funciones, Funciones → Solución del problemaDatosOperadoresControlFuncionesSolución delproblema

Puntos clave

Programar es escribir, en un lenguaje que la máquina pueda ejecutar, la secuencia exacta de instrucciones que resuelve un problema. Todo programa se construye con un puñado de piezas elementales —datos que se guardan, operaciones que los transforman y decisiones que ordenan el flujo— y con la disciplina de que la computadora hace literalmente lo que se le dice, ni más ni menos. Por eso la precisión es la primera virtud del programador: un punto y coma de más, un operador confundido o una condición mal escrita producen un comportamiento incorrecto aunque la idea fuera buena.
Una variable es un espacio de memoria con un nombre al que se le asigna un valor que puede cambiar durante la ejecución; una constante es análoga pero su valor no varía. La asignación `x = 5` (o `x ← 5` en pseudocódigo) significa «guarda 5 en x», no una igualdad matemática: por eso `x = x + 1` es perfectamente válido y aumenta el contenido de x en uno. Cada variable tiene un tipo de dato que determina qué valores admite y qué operaciones tienen sentido: entero (`int`), real o coma flotante (`float`), carácter/cadena (`char`/`string`), booleano (`true`/`false`) y los compuestos como vectores o listas (`array`).
Los operadores combinan datos para producir nuevos valores. Los aritméticos (`+`, `-`, ``, `/`, el módulo `%` que da el resto de la división entera, y la potencia) operan sobre números; los relacionales (`==` igualdad, `!=` distinto, `<`, `<=`, `>`, `>=`) comparan y devuelven un booleano; y los lógicos (`AND`/`&&`, `OR`/`||`, `NOT`/`!`) combinan booleanos siguiendo el álgebra de Boole. La precedencia importa: en `2 + 3 4` la multiplicación se evalúa antes, dando 14; los paréntesis fuerzan el orden, `(2 + 3) * 4 = 20`. El operador módulo es clave en programación: `n % 2 == 0` comprueba si n es par y `n % 2 == 1` si es impar.
Las estructuras de control gobiernan el orden en que se ejecutan las instrucciones y son solo tres (teorema de la programación estructurada, Böhm-Jacopini). La secuencia ejecuta las instrucciones una tras otra de arriba abajo. La selección elige un camino según una condición booleana: `SI condición ENTONCES … SINO …` (en código `if … else`), con variantes anidadas o múltiples (`else if`, `switch`). La iteración o bucle repite un bloque: `MIENTRAS condición HACER …` (`while`, comprueba la condición antes de cada vuelta y puede no ejecutarse nunca), `REPETIR … HASTA condición` (`do…while`, se ejecuta al menos una vez) y `PARA i DESDE a HASTA b HACER …` (`for`, con un contador que recorre un rango conocido). Véase la Fig. 2 con la tabla-resumen de las tres estructuras.

Las tres estructuras de control y su sintaxis

Las tres estructuras de controlTabla con 3 columnas y 3 filas, Datos: Estructura · Pseudocódigo · Código; Secuencia · instr1; instr2; … · a; b; c;; Selección · SI cond ENTONCES … SINO · if … else; Iteración · MIENTRAS / REPETIR-HASTA / PARA · while / do-while / forESTRUCTURAPSEUDOCÓDIGOCÓDIGOSECUENCIAinstr1; instr2; …a; b; c;SELECCIÓNSI cond ENTONCES … SINOif … elseITERACIÓNMIENTRAS /REPETIR-HASTA /PARAwhile / do-while / for
Las funciones (o subprogramas, procedimientos, métodos) encapsulan un bloque de código con un nombre, recibe datos de entrada por sus parámetros y normalmente devuelve un resultado. Permiten descomponer un problema grande en piezas pequeñas y reutilizables —el principio «divide y vencerás»— y evitan repetir código. Una variable declarada dentro de una función es local (solo existe ahí); una declarada fuera es global. Modularizar con funciones mejora la legibilidad, facilita la depuración y permite probar cada pieza por separado.
x←x+1x \leftarrow x + 1x←x+1

Asignación (incremento)

El nuevo contenido de la variable x es su valor anterior más uno; la flecha (o el signo =) indica asignación, no igualdad matemática.

n mod 2=0  ⟺  n es parn \bmod 2 = 0 \iff n \text{ es par}nmod2=0⟺n es par

Operador módulo y paridad

El resto de dividir n entre 2 es cero exactamente cuando n es par; de forma análoga, d \mid n equivale a (n \bmod d = 0).

Ejemplo resuelto

Traza de un bucle con contador y condición

Dado el siguiente pseudocódigo, indica el valor final de la variable `suma`. INICIO; suma ← 0; PARA i DESDE 1 HASTA 6 HACER: SI (i módulo 2 = 0) ENTONCES suma ← suma + i; FIN PARA; ESCRIBIR suma; FIN.

  1. 01Inicialización

    Antes del bucle, suma vale 0. El contador i recorrerá los valores 1, 2, 3, 4, 5, 6.

  2. 02Condición del SI

    Solo se acumula i cuando i es par, es decir cuando (i mod 2) = 0.

  3. 03Vueltas i=1,2,3

    i=1 (impar): no suma → 0. i=2 (par): suma ← 0+2 = 2. i=3 (impar): no suma → 2.

  4. 04Vueltas i=4,5,6

    i=4 (par): suma ← 2+4 = 6. i=5 (impar): no suma → 6. i=6 (par): suma ← 6+6 = 12.

  5. 05Comprobación

    Se han sumado los pares de 1 a 6: 2 + 4 + 6, que efectivamente es 12.

Resultado: La variable `suma` vale 12 al finalizar: el programa acumula los números pares entre 1 y 6.

Objetivo Selectividad

  • Trazar a mano la ejecución de un fragmento con bucles y condiciones, anotando el valor de cada variable en cada vuelta hasta dar la salida final.
  • Evaluar expresiones aplicando correctamente la precedencia de operadores y el significado del módulo `%` (par/impar, divisibilidad, dígitos).
  • Distinguir y justificar cuándo usar `while`, `do…while` o `for`, y reconocer cuándo un `while` no se ejecuta ninguna vez.

Errores frecuentes

  • Confundir la asignación `=` con la comparación `==`: escribir `if (x = 5)` (asigna) en lugar de `if (x == 5)` (compara) es un error lógico clásico.
  • Olvidar actualizar la variable de control dentro de un `while`, lo que provoca un bucle infinito porque la condición nunca cambia.
  • Tratar la asignación como una ecuación y rechazar `x = x + 1` por «imposible», cuando significa «el nuevo valor de x es el antiguo más uno».

Repaso activo

Escribe en pseudocódigo un programa que lea un número entero N y muestre cuántos de los números del 1 al N son múltiplos de 3. Indica qué tipo de dato usas para cada variable y razona qué estructura de control empleas.

Recuerdo activo

Recuerda los puntos clave — luego revela.

Fuentes: Real Decreto 243/2022 — enseñanzas mínimas del Bachillerato (saberes básicos, Anexo II) (Gobierno de España — Boletín Oficial del Estado (BOE))

§ 02

Diseño de algoritmos: diagramas de flujo y pseudocódigo#

●●○EstándarLPBOE-A-2022-5521 · tecnologia-e-ingenieria · Programación e internet de las cosas · Desarrollo de programas: diseño de algoritmos

Símbolos normalizados del diagrama de flujo (ISO 5807)

SIMBOLOGÍA NORMALIZADAinicio/finE/S datosprocesodecisiónflujo

Puntos clave

Antes de escribir una sola línea de código conviene diseñar el algoritmo: la descripción precisa, ordenada y finita de los pasos que resuelven un problema. Un algoritmo correcto debe cumplir tres propiedades fundamentales: ser finito (terminar en un número limitado de pasos), preciso (cada paso definido sin ambigüedad) y definido (con las mismas entradas produce siempre la misma salida). El diseño del algoritmo es independiente del lenguaje de programación: primero se piensa la lógica y solo después se traduce a un lenguaje concreto.
El pseudocódigo expresa el algoritmo en un lenguaje intermedio entre el natural y el de programación: usa palabras clave estandarizadas (INICIO/FIN, LEER, ESCRIBIR, SI…ENTONCES…SINO, MIENTRAS, PARA) y la indentación para marcar los bloques, pero sin la sintaxis estricta de ningún lenguaje real. Su ventaja es que cualquiera lo entiende y se traduce fácilmente a código; por eso es la herramienta habitual para comunicar la lógica de un programa en un examen o en la documentación de un proyecto.
El diagrama de flujo (u ordinograma) representa el mismo algoritmo de forma gráfica con símbolos normalizados (norma ISO 5807): el óvalo o terminal marca el inicio y el fin; el romboide o paralelogramo, la entrada/salida de datos (LEER/ESCRIBIR); el rectángulo, un proceso o cálculo (una asignación); el rombo, una decisión con dos salidas (Sí/No, Verdadero/Falso); y las flechas indican el sentido del flujo. Un diagrama bien construido tiene un único inicio y un único fin, y cada rombo de decisión gobierna una bifurcación o un bucle. Véase la Fig. 3.

Diagrama de flujo: contar los pares de 1 a N

Diagrama de flujo: contar los pares de 1 a NGrafo, INICIO → Leer N, Leer N → cont←0 ; i←1, cont←0 ; i←1 → ¿i ≤ N?, ¿i ≤ N? → ¿i mod 2 = 0?, ¿i ≤ N? → Escribir cont, ¿i mod 2 = 0? → cont←cont+1, ¿i mod 2 = 0? → i←i+1, cont←cont+1 → i←i+1, i←i+1 → ¿i ≤ N?, Escribir cont → FININICIOLeer Ncont←0 ; i←1¿i ≤ N?¿i mod 2 = 0?cont←cont+1i←i+1Escribir contFINSíNoSíNo
Los bucles aparecen en el diagrama de flujo cuando una flecha «vuelve hacia atrás» a un punto anterior, formando un ciclo que se cierra a través de un rombo de decisión: mientras la condición sea verdadera se repite el cuerpo; cuando es falsa, el flujo sale del bucle. Es esencial que dentro del ciclo se modifique alguna variable que acabe haciendo falsa la condición —de lo contrario el bucle es infinito—. El contador (variable que cuenta repeticiones) y el acumulador (variable que va sumando o concatenando) son los dos patrones clásicos que aparecen casi siempre dentro de los bucles.
Pseudocódigo y diagrama de flujo son dos representaciones equivalentes del mismo algoritmo y la Selectividad pide a menudo traducir de una a otra. La traducción es sistemática: una asignación del pseudocódigo es un rectángulo; un SI es un rombo del que parten dos ramas; un MIENTRAS es un rombo con una rama que retrocede al propio rombo; un LEER/ESCRIBIR es un romboide. Saber pasar de la idea al pseudocódigo, de este al diagrama y finalmente al código de un lenguaje real es la competencia central del diseño de programas.
Ejemplo resuelto

De pseudocódigo a diagrama: factorial de un número

Se da el algoritmo en pseudocódigo: INICIO; LEER n; f ← 1; i ← 1; MIENTRAS (i <= n) HACER: f ← f * i; i ← i + 1; FIN MIENTRAS; ESCRIBIR f; FIN. Calcula la salida para n = 4 y describe los símbolos del diagrama de flujo equivalente.

  1. 01Inicialización

    Se lee n = 4. Se ponen el acumulador f ← 1 y el contador i ← 1. En el diagrama: un romboide LEER n y un rectángulo con las dos asignaciones.

  2. 02Rombo del bucle

    El MIENTRAS (i <= n) se dibuja como un rombo de decisión; mientras es verdadero el flujo entra en el cuerpo, cuando es falso sale hacia ESCRIBIR.

  3. 03Iteraciones

    i=1: f ← 1·1 = 1, i ← 2. i=2: f ← 1·2 = 2, i ← 3. i=3: f ← 2·3 = 6, i ← 4. i=4: f ← 6·4 = 24, i ← 5.

  4. 04Salida del bucle

    Con i = 5 la condición (5 <= 4) es falsa: el flujo sale del rombo y llega al romboide ESCRIBIR f.

  5. 05Resultado

    Se imprime f = 24, que es el factorial de 4.

Resultado: Para n = 4 el algoritmo calcula 4! = 24; el diagrama tiene un terminal de inicio, un romboide de lectura, un rectángulo de inicialización, un rombo de decisión que cierra el bucle, un rectángulo de proceso (f·i, i+1), un romboide de salida y un terminal de fin.

Objetivo Selectividad

  • Traducir un algoritmo dado en pseudocódigo a su diagrama de flujo con los símbolos normalizados correctos, o viceversa.
  • Identificar en un diagrama el rombo que cierra un bucle y la variable cuya modificación garantiza que el bucle termina.
  • Reconocer los patrones de contador y acumulador y explicar su función dentro de un algoritmo.

Errores frecuentes

  • Usar el rectángulo (proceso) donde debe ir un rombo (decisión) o un romboide (entrada/salida), confundiendo la semántica de los símbolos.
  • Dibujar un diagrama con varias salidas finales o sin un terminal de fin, rompiendo la regla de un único inicio y un único fin.
  • Olvidar inicializar el acumulador o el contador antes del bucle, de modo que arrancan con un valor indeterminado.

Repaso activo

Diseña el algoritmo que lee 5 números enteros y muestra el mayor de ellos. Exprésalo primero en pseudocódigo y después dibuja su diagrama de flujo, señalando el rombo de decisión y la variable acumuladora `maximo`.

Recuerdo activo

Recuerda los puntos clave — luego revela.

Fuentes: Currículo de Bachillerato (LOMLOE) — materias y saberes básicos (Ministerio de Educación, Formación Profesional y Deportes — educagob)

§ 03

Depuración y verificación de programas#

●●○EstándarLPBOE-A-2022-5521 · tecnologia-e-ingenieria · Programación e internet de las cosas · Depuración y verificación de programas; resolución de errores

Puntos clave

Escribir un programa que funcione a la primera es raro: la depuración —encontrar y corregir los errores o «bugs»— es parte esencial del desarrollo. Verificar un programa es comprobar que produce la salida correcta para todas las entradas previstas, incluidos los casos límite. La depuración es metódica, no se basa en cambiar cosas al azar: se reproduce el fallo, se localiza la línea o el bloque responsable, se entiende la causa, se corrige y se vuelve a probar.
Los errores se clasifican en tres grandes tipos. Los errores de sintaxis violan las reglas del lenguaje (un paréntesis sin cerrar, una palabra clave mal escrita, un punto y coma olvidado); el compilador o intérprete los detecta y el programa ni siquiera arranca. Los errores de ejecución (o en tiempo de ejecución, runtime) aparecen al ejecutarse: el programa arranca pero se detiene con un fallo, como una división entre cero, el acceso a una posición inexistente de un vector o el desbordamiento de un tipo. Los errores lógicos o semánticos son los más insidiosos: el programa se ejecuta sin avisar pero da un resultado incorrecto porque la lógica está mal —una condición invertida, un bucle que cuenta una vuelta de más o de menos (error «por uno», off-by-one)—.
Las técnicas de depuración van de lo manual a lo asistido. La traza de escritorio consiste en ejecutar el programa «a mano» en una tabla, anotando el valor de cada variable en cada paso, hasta detectar dónde se desvía del resultado esperado; es la técnica que más se pide en Selectividad. Insertar mensajes de salida (`ESCRIBIR` / `print`) en puntos clave permite observar el estado de las variables durante la ejecución. Y los depuradores (debuggers) de los entornos de programación permiten poner puntos de ruptura (breakpoints), ejecutar paso a paso e inspeccionar el contenido de las variables en vivo. Véase la Fig. 5 con el ciclo de depuración.

Ciclo de depuración y tipos de error

Ciclo de depuraciónGrafo, 1. Reproducir el fallo → 2. Localizar (traza), 2. Localizar (traza) → 3. Corregir la causa, 3. Corregir la causa → 4. Verificar, 4. Verificar → 1. Reproducir el fallo1. Reproducir elfallo2. Localizar(traza)3. Corregir lacausa4. Verificar
La verificación se apoya en el diseño de casos de prueba que cubran el comportamiento esperado. Conviene probar el caso típico, los casos límite (el valor cero, el vector vacío, el primer y el último elemento) y los casos inválidos (una entrada negativa donde se esperaba positiva). El error «por uno» (off-by-one) es típico en bucles: usar `<` donde debía ir `<=` (o al revés) hace que el bucle se ejecute una vez de menos o de más; probar con el primer y el último valor del rango lo destapa enseguida.
Buenas prácticas que previenen errores antes de que aparezcan: nombres de variables descriptivos, comentarios que expliquen el porqué del código, indentación coherente, modularización en funciones pequeñas y verificables, e inicialización explícita de toda variable antes de usarla. Un código limpio y bien estructurado no solo tiene menos errores: cuando aparece uno, se localiza mucho antes.
Ejemplo resuelto

Diagnóstico de un error «por uno» mediante traza

Un alumno escribe este código para sumar 1+2+...+10 y obtiene 45 en vez de 55: `s ← 0; PARA i DESDE 1 HASTA 9 HACER s ← s + i; ESCRIBIR s`. Identifica el tipo de error, demuéstralo con la traza y corrígelo.

  1. 01Tipo de error

    El programa compila y se ejecuta sin detenerse, pero da un resultado equivocado: es un error LÓGICO, en concreto un error «por uno» en el límite del bucle.

  2. 02Traza del rango

    El PARA va de i=1 a i=9, así que acumula 1+2+3+4+5+6+7+8+9 y nunca añade el 10.

  3. 03Suma obtenida

    La suma de 1 a 9 es 45, exactamente el resultado erróneo que se observa.

  4. 04Corrección

    El límite superior debe ser 10, no 9: `PARA i DESDE 1 HASTA 10 HACER s ← s + i`. El cambio es de 9 a 10 (típico off-by-one).

  5. 05Verificación

    Con i de 1 a 10 la suma es la correcta, lo que confirma la corrección.

Resultado: Es un error lógico «por uno»: el bucle llegaba hasta 9 y sumaba 45; cambiando el límite a 10 el programa suma correctamente 55.

Objetivo Selectividad

  • Hacer la traza de escritorio de un fragmento (tabla de variables vuelta a vuelta) para encontrar el valor erróneo y la línea que lo provoca.
  • Clasificar un error concreto como de sintaxis, de ejecución o lógico, y proponer la corrección adecuada.
  • Detectar un error «por uno» en un bucle y razonar el cambio de `<` a `<=` (o la inicialización del contador) que lo arregla.

Errores frecuentes

  • Pensar que «si compila, está bien»: un programa sin errores de sintaxis puede contener errores lógicos que dan resultados incorrectos.
  • Cambiar el código al azar hasta que «parezca» funcionar, en lugar de localizar y entender la causa real del fallo.
  • No probar los casos límite (entrada vacía, valor cero, primer/último elemento), donde se esconden la mayoría de los errores «por uno».

Repaso activo

El siguiente bucle pretende sumar los números del 1 al 10 pero da 55-1=... un resultado erróneo: `s ← 0; PARA i DESDE 0 HASTA 9 HACER s ← s + i`. Haz la traza, identifica el tipo de error, di cuánto da realmente y corrígelo para que sume de 1 a 10.

Recuerdo activo

Recuerda los puntos clave — luego revela.

Fuentes: Real Decreto 243/2022 — enseñanzas mínimas del Bachillerato (saberes básicos, Anexo II) (Gobierno de España — Boletín Oficial del Estado (BOE))

§ 04

Internet de las cosas (IoT) aplicado a proyectos#

●●●ProfundizaciónLPBOE-A-2022-5521 · tecnologia-e-ingenieria · Programación e internet de las cosas · Internet de las cosas (IoT): sensores, actuadores, microcontroladores y conectividad; aplicación a proyectos

Lógica de control con histéresis (banda muerta del actuador)

Histéresis del riego: banda muerta entre 30 y 60Gráfica de ON (regando), ordenada en el origen y = 1, en el intervalo x de 0 a 60, Gráfica de OFF, raíces en x = 30, 30.035, 30.07, 30.105, 30.14, 30.175, 30.21, 30.245, 30.28, 30.315, 30.35, 30.385, 30.42, 30.455, 30.49, 30.525, 30.56, 30.595, 30.63, 30.665, 30.7, 30.735, 30.77, 30.805, 30.84, 30.875, 30.91, 30.945, 30.98, 31.015, 31.05, 31.085, 31.12, 31.155, 31.19, 31.225, 31.26, 31.295, 31.33, 31.365, 31.4, 31.435, 31.47, 31.505, 31.54, 31.575, 31.61, 31.645, 31.68, 31.715, 31.75, 31.785, 31.82, 31.855, 31.89, 31.925, 31.96, 31.995, 32.03, 32.065, 32.1, 32.135, 32.17, 32.205, 32.24, 32.275, 32.31, 32.345, 32.38, 32.415, 32.45, 32.485, 32.52, 32.555, 32.59, 32.625, 32.66, 32.695, 32.73, 32.765, 32.8, 32.835, 32.87, 32.905, 32.94, 32.975, 33.01, 33.045, 33.08, 33.115, 33.15, 33.185, 33.22, 33.255, 33.29, 33.325, 33.36, 33.395, 33.43, 33.465, 33.5, 33.535, 33.57, 33.605, 33.64, 33.675, 33.71, 33.745, 33.78, 33.815, 33.85, 33.885, 33.92, 33.955, 33.99, 34.025, 34.06, 34.095, 34.13, 34.165, 34.2, 34.235, 34.27, 34.305, 34.34, 34.375, 34.41, 34.445, 34.48, 34.515, 34.55, 34.585, 34.62, 34.655, 34.69, 34.725, 34.76, 34.795, 34.83, 34.865, 34.9, 34.935, 34.97, 35.005, 35.04, 35.075, 35.11, 35.145, 35.18, 35.215, 35.25, 35.285, 35.32, 35.355, 35.39, 35.425, 35.46, 35.495, 35.53, 35.565, 35.6, 35.635, 35.67, 35.705, 35.74, 35.775, 35.81, 35.845, 35.88, 35.915, 35.95, 35.985, 36.02, 36.055, 36.09, 36.125, 36.16, 36.195, 36.23, 36.265, 36.3, 36.335, 36.37, 36.405, 36.44, 36.475, 36.51, 36.545, 36.58, 36.615, 36.65, 36.685, 36.72, 36.755, 36.79, 36.825, 36.86, 36.895, 36.93, 36.965, 37, 37.035, 37.07, 37.105, 37.14, 37.175, 37.21, 37.245, 37.28, 37.315, 37.35, 37.385, 37.42, 37.455, 37.49, 37.525, 37.56, 37.595, 37.63, 37.665, 37.7, 37.735, 37.77, 37.805, 37.84, 37.875, 37.91, 37.945, 37.98, 38.015, 38.05, 38.085, 38.12, 38.155, 38.19, 38.225, 38.26, 38.295, 38.33, 38.365, 38.4, 38.435, 38.47, 38.505, 38.54, 38.575, 38.61, 38.645, 38.68, 38.715, 38.75, 38.785, 38.82, 38.855, 38.89, 38.925, 38.96, 38.995, 39.03, 39.065, 39.1, 39.135, 39.17, 39.205, 39.24, 39.275, 39.31, 39.345, 39.38, 39.415, 39.45, 39.485, 39.52, 39.555, 39.59, 39.625, 39.66, 39.695, 39.73, 39.765, 39.8, 39.835, 39.87, 39.905, 39.94, 39.975, 40.01, 40.045, 40.08, 40.115, 40.15, 40.185, 40.22, 40.255, 40.29, 40.325, 40.36, 40.395, 40.43, 40.465, 40.5, 40.535, 40.57, 40.605, 40.64, 40.675, 40.71, 40.745, 40.78, 40.815, 40.85, 40.885, 40.92, 40.955, 40.99, 41.025, 41.06, 41.095, 41.13, 41.165, 41.2, 41.235, 41.27, 41.305, 41.34, 41.375, 41.41, 41.445, 41.48, 41.515, 41.55, 41.585, 41.62, 41.655, 41.69, 41.725, 41.76, 41.795, 41.83, 41.865, 41.9, 41.935, 41.97, 42.005, 42.04, 42.075, 42.11, 42.145, 42.18, 42.215, 42.25, 42.285, 42.32, 42.355, 42.39, 42.425, 42.46, 42.495, 42.53, 42.565, 42.6, 42.635, 42.67, 42.705, 42.74, 42.775, 42.81, 42.845, 42.88, 42.915, 42.95, 42.985, 43.02, 43.055, 43.09, 43.125, 43.16, 43.195, 43.23, 43.265, 43.3, 43.335, 43.37, 43.405, 43.44, 43.475, 43.51, 43.545, 43.58, 43.615, 43.65, 43.685, 43.72, 43.755, 43.79, 43.825, 43.86, 43.895, 43.93, 43.965, 44, 44.035, 44.07, 44.105, 44.14, 44.175, 44.21, 44.245, 44.28, 44.315, 44.35, 44.385, 44.42, 44.455, 44.49, 44.525, 44.56, 44.595, 44.63, 44.665, 44.7, 44.735, 44.77, 44.805, 44.84, 44.875, 44.91, 44.945, 44.98, 45.015, 45.05, 45.085, 45.12, 45.155, 45.19, 45.225, 45.26, 45.295, 45.33, 45.365, 45.4, 45.435, 45.47, 45.505, 45.54, 45.575, 45.61, 45.645, 45.68, 45.715, 45.75, 45.785, 45.82, 45.855, 45.89, 45.925, 45.96, 45.995, 46.03, 46.065, 46.1, 46.135, 46.17, 46.205, 46.24, 46.275, 46.31, 46.345, 46.38, 46.415, 46.45, 46.485, 46.52, 46.555, 46.59, 46.625, 46.66, 46.695, 46.73, 46.765, 46.8, 46.835, 46.87, 46.905, 46.94, 46.975, 47.01, 47.045, 47.08, 47.115, 47.15, 47.185, 47.22, 47.255, 47.29, 47.325, 47.36, 47.395, 47.43, 47.465, 47.5, 47.535, 47.57, 47.605, 47.64, 47.675, 47.71, 47.745, 47.78, 47.815, 47.85, 47.885, 47.92, 47.955, 47.99, 48.025, 48.06, 48.095, 48.13, 48.165, 48.2, 48.235, 48.27, 48.305, 48.34, 48.375, 48.41, 48.445, 48.48, 48.515, 48.55, 48.585, 48.62, 48.655, 48.69, 48.725, 48.76, 48.795, 48.83, 48.865, 48.9, 48.935, 48.97, 49.005, 49.04, 49.075, 49.11, 49.145, 49.18, 49.215, 49.25, 49.285, 49.32, 49.355, 49.39, 49.425, 49.46, 49.495, 49.53, 49.565, 49.6, 49.635, 49.67, 49.705, 49.74, 49.775, 49.81, 49.845, 49.88, 49.915, 49.95, 49.985, 50.02, 50.055, 50.09, 50.125, 50.16, 50.195, 50.23, 50.265, 50.3, 50.335, 50.37, 50.405, 50.44, 50.475, 50.51, 50.545, 50.58, 50.615, 50.65, 50.685, 50.72, 50.755, 50.79, 50.825, 50.86, 50.895, 50.93, 50.965, 51, 51.035, 51.07, 51.105, 51.14, 51.175, 51.21, 51.245, 51.28, 51.315, 51.35, 51.385, 51.42, 51.455, 51.49, 51.525, 51.56, 51.595, 51.63, 51.665, 51.7, 51.735, 51.77, 51.805, 51.84, 51.875, 51.91, 51.945, 51.98, 52.015, 52.05, 52.085, 52.12, 52.155, 52.19, 52.225, 52.26, 52.295, 52.33, 52.365, 52.4, 52.435, 52.47, 52.505, 52.54, 52.575, 52.61, 52.645, 52.68, 52.715, 52.75, 52.785, 52.82, 52.855, 52.89, 52.925, 52.96, 52.995, 53.03, 53.065, 53.1, 53.135, 53.17, 53.205, 53.24, 53.275, 53.31, 53.345, 53.38, 53.415, 53.45, 53.485, 53.52, 53.555, 53.59, 53.625, 53.66, 53.695, 53.73, 53.765, 53.8, 53.835, 53.87, 53.905, 53.94, 53.975, 54.01, 54.045, 54.08, 54.115, 54.15, 54.185, 54.22, 54.255, 54.29, 54.325, 54.36, 54.395, 54.43, 54.465, 54.5, 54.535, 54.57, 54.605, 54.64, 54.675, 54.71, 54.745, 54.78, 54.815, 54.85, 54.885, 54.92, 54.955, 54.99, 55.025, 55.06, 55.095, 55.13, 55.165, 55.2, 55.235, 55.27, 55.305, 55.34, 55.375, 55.41, 55.445, 55.48, 55.515, 55.55, 55.585, 55.62, 55.655, 55.69, 55.725, 55.76, 55.795, 55.83, 55.865, 55.9, 55.935, 55.97, 56.005, 56.04, 56.075, 56.11, 56.145, 56.18, 56.215, 56.25, 56.285, 56.32, 56.355, 56.39, 56.425, 56.46, 56.495, 56.53, 56.565, 56.6, 56.635, 56.67, 56.705, 56.74, 56.775, 56.81, 56.845, 56.88, 56.915, 56.95, 56.985, 57.02, 57.055, 57.09, 57.125, 57.16, 57.195, 57.23, 57.265, 57.3, 57.335, 57.37, 57.405, 57.44, 57.475, 57.51, 57.545, 57.58, 57.615, 57.65, 57.685, 57.72, 57.755, 57.79, 57.825, 57.86, 57.895, 57.93, 57.965, 58, 58.035, 58.07, 58.105, 58.14, 58.175, 58.21, 58.245, 58.28, 58.315, 58.35, 58.385, 58.42, 58.455, 58.49, 58.525, 58.56, 58.595, 58.63, 58.665, 58.7, 58.735, 58.77, 58.805, 58.84, 58.875, 58.91, 58.945, 58.98, 59.015, 59.05, 59.085, 59.12, 59.155, 59.19, 59.225, 59.26, 59.295, 59.33, 59.365, 59.4, 59.435, 59.47, 59.505, 59.54, 59.575, 59.61, 59.645, 59.68, 59.715, 59.75, 59.785, 59.82, 59.855, 59.89, 59.925, 59.96, 59.995, 60.03, 60.065, 60.1, 60.135, 60.17, 60.205, 60.24, 60.275, 60.31, 60.345, 60.38, 60.415, 60.45, 60.485, 60.52, 60.555, 60.59, 60.625, 60.66, 60.695, 60.73, 60.765, 60.8, 60.835, 60.87, 60.905, 60.94, 60.975, 61.01, 61.045, 61.08, 61.115, 61.15, 61.185, 61.22, 61.255, 61.29, 61.325, 61.36, 61.395, 61.43, 61.465, 61.5, 61.535, 61.57, 61.605, 61.64, 61.675, 61.71, 61.745, 61.78, 61.815, 61.85, 61.885, 61.92, 61.955, 61.99, 62.025, 62.06, 62.095, 62.13, 62.165, 62.2, 62.235, 62.27, 62.305, 62.34, 62.375, 62.41, 62.445, 62.48, 62.515, 62.55, 62.585, 62.62, 62.655, 62.69, 62.725, 62.76, 62.795, 62.83, 62.865, 62.9, 62.935, 62.97, 63.005, 63.04, 63.075, 63.11, 63.145, 63.18, 63.215, 63.25, 63.285, 63.32, 63.355, 63.39, 63.425, 63.46, 63.495, 63.53, 63.565, 63.6, 63.635, 63.67, 63.705, 63.74, 63.775, 63.81, 63.845, 63.88, 63.915, 63.95, 63.985, 64.02, 64.055, 64.09, 64.125, 64.16, 64.195, 64.23, 64.265, 64.3, 64.335, 64.37, 64.405, 64.44, 64.475, 64.51, 64.545, 64.58, 64.615, 64.65, 64.685, 64.72, 64.755, 64.79, 64.825, 64.86, 64.895, 64.93, 64.965, 65, 65.035, 65.07, 65.105, 65.14, 65.175, 65.21, 65.245, 65.28, 65.315, 65.35, 65.385, 65.42, 65.455, 65.49, 65.525, 65.56, 65.595, 65.63, 65.665, 65.7, 65.735, 65.77, 65.805, 65.84, 65.875, 65.91, 65.945, 65.98, 66.015, 66.05, 66.085, 66.12, 66.155, 66.19, 66.225, 66.26, 66.295, 66.33, 66.365, 66.4, 66.435, 66.47, 66.505, 66.54, 66.575, 66.61, 66.645, 66.68, 66.715, 66.75, 66.785, 66.82, 66.855, 66.89, 66.925, 66.96, 66.995, 67.03, 67.065, 67.1, 67.135, 67.17, 67.205, 67.24, 67.275, 67.31, 67.345, 67.38, 67.415, 67.45, 67.485, 67.52, 67.555, 67.59, 67.625, 67.66, 67.695, 67.73, 67.765, 67.8, 67.835, 67.87, 67.905, 67.94, 67.975, 68.01, 68.045, 68.08, 68.115, 68.15, 68.185, 68.22, 68.255, 68.29, 68.325, 68.36, 68.395, 68.43, 68.465, 68.5, 68.535, 68.57, 68.605, 68.64, 68.675, 68.71, 68.745, 68.78, 68.815, 68.85, 68.885, 68.92, 68.955, 68.99, 69.025, 69.06, 69.095, 69.13, 69.165, 69.2, 69.235, 69.27, 69.305, 69.34, 69.375, 69.41, 69.445, 69.48, 69.515, 69.55, 69.585, 69.62, 69.655, 69.69, 69.725, 69.76, 69.795, 69.83, 69.865, 69.9, 69.935, 69.97, 70.005, 70.04, 70.075, 70.11, 70.145, 70.18, 70.215, 70.25, 70.285, 70.32, 70.355, 70.39, 70.425, 70.46, 70.495, 70.53, 70.565, 70.6, 70.635, 70.67, 70.705, 70.74, 70.775, 70.81, 70.845, 70.88, 70.915, 70.95, 70.985, 71.02, 71.055, 71.09, 71.125, 71.16, 71.195, 71.23, 71.265, 71.3, 71.335, 71.37, 71.405, 71.44, 71.475, 71.51, 71.545, 71.58, 71.615, 71.65, 71.685, 71.72, 71.755, 71.79, 71.825, 71.86, 71.895, 71.93, 71.965, 72, 72.035, 72.07, 72.105, 72.14, 72.175, 72.21, 72.245, 72.28, 72.315, 72.35, 72.385, 72.42, 72.455, 72.49, 72.525, 72.56, 72.595, 72.63, 72.665, 72.7, 72.735, 72.77, 72.805, 72.84, 72.875, 72.91, 72.945, 72.98, 73.015, 73.05, 73.085, 73.12, 73.155, 73.19, 73.225, 73.26, 73.295, 73.33, 73.365, 73.4, 73.435, 73.47, 73.505, 73.54, 73.575, 73.61, 73.645, 73.68, 73.715, 73.75, 73.785, 73.82, 73.855, 73.89, 73.925, 73.96, 73.995, 74.03, 74.065, 74.1, 74.135, 74.17, 74.205, 74.24, 74.275, 74.31, 74.345, 74.38, 74.415, 74.45, 74.485, 74.52, 74.555, 74.59, 74.625, 74.66, 74.695, 74.73, 74.765, 74.8, 74.835, 74.87, 74.905, 74.94, 74.975, 75.01, 75.045, 75.08, 75.115, 75.15, 75.185, 75.22, 75.255, 75.29, 75.325, 75.36, 75.395, 75.43, 75.465, 75.5, 75.535, 75.57, 75.605, 75.64, 75.675, 75.71, 75.745, 75.78, 75.815, 75.85, 75.885, 75.92, 75.955, 75.99, 76.025, 76.06, 76.095, 76.13, 76.165, 76.2, 76.235, 76.27, 76.305, 76.34, 76.375, 76.41, 76.445, 76.48, 76.515, 76.55, 76.585, 76.62, 76.655, 76.69, 76.725, 76.76, 76.795, 76.83, 76.865, 76.9, 76.935, 76.97, 77.005, 77.04, 77.075, 77.11, 77.145, 77.18, 77.215, 77.25, 77.285, 77.32, 77.355, 77.39, 77.425, 77.46, 77.495, 77.53, 77.565, 77.6, 77.635, 77.67, 77.705, 77.74, 77.775, 77.81, 77.845, 77.88, 77.915, 77.95, 77.985, 78.02, 78.055, 78.09, 78.125, 78.16, 78.195, 78.23, 78.265, 78.3, 78.335, 78.37, 78.405, 78.44, 78.475, 78.51, 78.545, 78.58, 78.615, 78.65, 78.685, 78.72, 78.755, 78.79, 78.825, 78.86, 78.895, 78.93, 78.965, 79, 79.035, 79.07, 79.105, 79.14, 79.175, 79.21, 79.245, 79.28, 79.315, 79.35, 79.385, 79.42, 79.455, 79.49, 79.525, 79.56, 79.595, 79.63, 79.665, 79.7, 79.735, 79.77, 79.805, 79.84, 79.875, 79.91, 79.945, 79.98, 80.015, 80.05, 80.085, 80.12, 80.155, 80.19, 80.225, 80.26, 80.295, 80.33, 80.365, 80.4, 80.435, 80.47, 80.505, 80.54, 80.575, 80.61, 80.645, 80.68, 80.715, 80.75, 80.785, 80.82, 80.855, 80.89, 80.925, 80.96, 80.995, 81.03, 81.065, 81.1, 81.135, 81.17, 81.205, 81.24, 81.275, 81.31, 81.345, 81.38, 81.415, 81.45, 81.485, 81.52, 81.555, 81.59, 81.625, 81.66, 81.695, 81.73, 81.765, 81.8, 81.835, 81.87, 81.905, 81.94, 81.975, 82.01, 82.045, 82.08, 82.115, 82.15, 82.185, 82.22, 82.255, 82.29, 82.325, 82.36, 82.395, 82.43, 82.465, 82.5, 82.535, 82.57, 82.605, 82.64, 82.675, 82.71, 82.745, 82.78, 82.815, 82.85, 82.885, 82.92, 82.955, 82.99, 83.025, 83.06, 83.095, 83.13, 83.165, 83.2, 83.235, 83.27, 83.305, 83.34, 83.375, 83.41, 83.445, 83.48, 83.515, 83.55, 83.585, 83.62, 83.655, 83.69, 83.725, 83.76, 83.795, 83.83, 83.865, 83.9, 83.935, 83.97, 84.005, 84.04, 84.075, 84.11, 84.145, 84.18, 84.215, 84.25, 84.285, 84.32, 84.355, 84.39, 84.425, 84.46, 84.495, 84.53, 84.565, 84.6, 84.635, 84.67, 84.705, 84.74, 84.775, 84.81, 84.845, 84.88, 84.915, 84.95, 84.985, 85.02, 85.055, 85.09, 85.125, 85.16, 85.195, 85.23, 85.265, 85.3, 85.335, 85.37, 85.405, 85.44, 85.475, 85.51, 85.545, 85.58, 85.615, 85.65, 85.685, 85.72, 85.755, 85.79, 85.825, 85.86, 85.895, 85.93, 85.965, 86, 86.035, 86.07, 86.105, 86.14, 86.175, 86.21, 86.245, 86.28, 86.315, 86.35, 86.385, 86.42, 86.455, 86.49, 86.525, 86.56, 86.595, 86.63, 86.665, 86.7, 86.735, 86.77, 86.805, 86.84, 86.875, 86.91, 86.945, 86.98, 87.015, 87.05, 87.085, 87.12, 87.155, 87.19, 87.225, 87.26, 87.295, 87.33, 87.365, 87.4, 87.435, 87.47, 87.505, 87.54, 87.575, 87.61, 87.645, 87.68, 87.715, 87.75, 87.785, 87.82, 87.855, 87.89, 87.925, 87.96, 87.995, 88.03, 88.065, 88.1, 88.135, 88.17, 88.205, 88.24, 88.275, 88.31, 88.345, 88.38, 88.415, 88.45, 88.485, 88.52, 88.555, 88.59, 88.625, 88.66, 88.695, 88.73, 88.765, 88.8, 88.835, 88.87, 88.905, 88.94, 88.975, 89.01, 89.045, 89.08, 89.115, 89.15, 89.185, 89.22, 89.255, 89.29, 89.325, 89.36, 89.395, 89.43, 89.465, 89.5, 89.535, 89.57, 89.605, 89.64, 89.675, 89.71, 89.745, 89.78, 89.815, 89.85, 89.885, 89.92, 89.955, 89.99, 90.025, 90.06, 90.095, 90.13, 90.165, 90.2, 90.235, 90.27, 90.305, 90.34, 90.375, 90.41, 90.445, 90.48, 90.515, 90.55, 90.585, 90.62, 90.655, 90.69, 90.725, 90.76, 90.795, 90.83, 90.865, 90.9, 90.935, 90.97, 91.005, 91.04, 91.075, 91.11, 91.145, 91.18, 91.215, 91.25, 91.285, 91.32, 91.355, 91.39, 91.425, 91.46, 91.495, 91.53, 91.565, 91.6, 91.635, 91.67, 91.705, 91.74, 91.775, 91.81, 91.845, 91.88, 91.915, 91.95, 91.985, 92.02, 92.055, 92.09, 92.125, 92.16, 92.195, 92.23, 92.265, 92.3, 92.335, 92.37, 92.405, 92.44, 92.475, 92.51, 92.545, 92.58, 92.615, 92.65, 92.685, 92.72, 92.755, 92.79, 92.825, 92.86, 92.895, 92.93, 92.965, 93, 93.035, 93.07, 93.105, 93.14, 93.175, 93.21, 93.245, 93.28, 93.315, 93.35, 93.385, 93.42, 93.455, 93.49, 93.525, 93.56, 93.595, 93.63, 93.665, 93.7, 93.735, 93.77, 93.805, 93.84, 93.875, 93.91, 93.945, 93.98, 94.015, 94.05, 94.085, 94.12, 94.155, 94.19, 94.225, 94.26, 94.295, 94.33, 94.365, 94.4, 94.435, 94.47, 94.505, 94.54, 94.575, 94.61, 94.645, 94.68, 94.715, 94.75, 94.785, 94.82, 94.855, 94.89, 94.925, 94.96, 94.995, 95.03, 95.065, 95.1, 95.135, 95.17, 95.205, 95.24, 95.275, 95.31, 95.345, 95.38, 95.415, 95.45, 95.485, 95.52, 95.555, 95.59, 95.625, 95.66, 95.695, 95.73, 95.765, 95.8, 95.835, 95.87, 95.905, 95.94, 95.975, 96.01, 96.045, 96.08, 96.115, 96.15, 96.185, 96.22, 96.255, 96.29, 96.325, 96.36, 96.395, 96.43, 96.465, 96.5, 96.535, 96.57, 96.605, 96.64, 96.675, 96.71, 96.745, 96.78, 96.815, 96.85, 96.885, 96.92, 96.955, 96.99, 97.025, 97.06, 97.095, 97.13, 97.165, 97.2, 97.235, 97.27, 97.305, 97.34, 97.375, 97.41, 97.445, 97.48, 97.515, 97.55, 97.585, 97.62, 97.655, 97.69, 97.725, 97.76, 97.795, 97.83, 97.865, 97.9, 97.935, 97.97, 98.005, 98.04, 98.075, 98.11, 98.145, 98.18, 98.215, 98.25, 98.285, 98.32, 98.355, 98.39, 98.425, 98.46, 98.495, 98.53, 98.565, 98.6, 98.635, 98.67, 98.705, 98.74, 98.775, 98.81, 98.845, 98.88, 98.915, 98.95, 98.985, 99.02, 99.055, 99.09, 99.125, 99.16, 99.195, 99.23, 99.265, 99.3, 99.335, 99.37, 99.405, 99.44, 99.475, 99.51, 99.545, 99.58, 99.615, 99.65, 99.685, 99.72, 99.755, 99.79, 99.825, 99.86, 99.895, 99.93, 99.965, en el intervalo x de 30 a 10020406080100−0.20.20.40.60.811.21.4UON = 30UOFF = 60ON (regando)OFFestado bombahumedad del suelo (%)

Puntos clave

El internet de las cosas (IoT, del inglés Internet of Things) es la interconexión a través de redes —típicamente internet— de objetos físicos cotidianos dotados de electrónica, sensores y conectividad, capaces de captar datos del entorno, procesarlos y actuar sobre él, a menudo sin intervención humana directa. Es la convergencia de la programación de este tema con la electrónica y los sistemas de control de la materia: un sistema IoT es, en esencia, un sistema de control realimentado al que se le añade conectividad y procesamiento de datos. Domótica, agricultura de precisión, vehículos conectados, salud y ciudades inteligentes son sus campos de aplicación.
La arquitectura de un sistema IoT se describe como una cadena de capas. La capa de percepción capta el mundo con sensores y actúa sobre él con actuadores. La capa de procesamiento local reside en un microcontrolador, que ejecuta el programa, lee los sensores y gobierna los actuadores. La capa de conectividad transmite los datos por una red (Wi-Fi, Bluetooth, Zigbee, LoRa, redes móviles). La capa de aplicación, normalmente en la nube, almacena, analiza y visualiza los datos y permite el control remoto. La Fig. 6 muestra esta cadena sensor → microcontrolador → conectividad → nube → actuador.

Cadena IoT: del mundo físico a la nube y de vuelta

Arquitectura IoTGrafo, Sensor (mide) → Microcontrolador, Microcontrolador → Conectividad (Wi-Fi/LoRa), Conectividad (Wi-Fi/LoRa) → Nube, Microcontrolador → Actuador (actúa), Actuador (actúa) → Sensor (mide)Sensor (mide)MicrocontroladorConectividad(Wi-Fi/LoRa)NubeActuador(actúa)entorno (lazocerrado)
Un sensor es un transductor que convierte una magnitud física (temperatura, luz, humedad, distancia, presión, movimiento) en una señal eléctrica que el microcontrolador puede leer; un actuador hace lo contrario: convierte una señal eléctrica en una acción física (un motor que gira, un relé que cierra un circuito, un LED que se enciende, un servo que posiciona). El microcontrolador —un pequeño ordenador en un chip con procesador, memoria y pines de entrada/salida, como los de las placas Arduino o ESP32— es el cerebro: lee las entradas (digitales y analógicas, estas vía un conversor analógico-digital), ejecuta la lógica programada y escribe en las salidas. Las señales digitales toman dos estados (0/1, HIGH/LOW); las analógicas, un rango continuo de valores.
Programar un microcontrolador combina todo lo anterior: el programa típico tiene una parte de configuración inicial (declarar qué pines son entradas y cuáles salidas) y un bucle principal que se repite indefinidamente leyendo sensores, decidiendo con estructuras de selección y accionando actuadores. La lógica de control suele responder al patrón «si la lectura del sensor cruza un umbral, activa el actuador»; para evitar que el actuador conmute sin parar cuando la medida oscila alrededor del umbral se usa la histéresis (dos umbrales, uno de activación y otro de desactivación, separados por una banda muerta). Es el mismo lazo cerrado de los sistemas de control: el sensor realimenta el estado, el programa compara con la consigna y el actuador corrige.
Aplicar el IoT a un proyecto tecnológico exige diseñar la cadena completa: elegir los sensores y actuadores adecuados al problema, seleccionar el microcontrolador y la tecnología de conectividad según el alcance, el consumo y el volumen de datos, escribir y depurar el programa de control, y prever la seguridad (los dispositivos IoT son objetivo de ataques) y el consumo energético (muchos funcionan con batería). La verificación se hace montando el circuito real o simulándolo en herramientas como Tinkercad o Wokwi antes de desplegarlo. Conviene recordar la dimensión ética: la captación masiva de datos plantea cuestiones de privacidad y de protección de datos.
si h<UON⇒bomba ON;si h>UOFF⇒bomba OFF\text{si } h < U_{\text{ON}} \Rightarrow \text{bomba ON};\quad \text{si } h > U_{\text{OFF}} \Rightarrow \text{bomba OFF}si h<UON​⇒bomba ON;si h>UOFF​⇒bomba OFF

Control con histéresis

Con dos umbrales U_{ON} < U_{OFF} (aquí 30 y 60) y una banda muerta entre ellos, el actuador no conmuta cuando la lectura h oscila cerca de un único valor.

Ejemplo resuelto

Lógica de un termostato IoT con histéresis

Un sistema IoT de climatización lee la temperatura T de una sala. La consigna es 21 °C. Para evitar arranques continuos del calefactor se usa histéresis: enciende si T baja de 20 °C y apaga si T sube de 22 °C. Escribe la lógica del bucle de control e indica el estado del calefactor si T pasa por 19, 21 y 23 °C estando inicialmente apagado.

  1. 01Identificar componentes

    Sensor: sonda de temperatura (entrada analógica → ADC). Actuador: calefactor mediante relé (salida digital). Microcontrolador: ejecuta el bucle.

  2. 02Definir umbrales

    Umbral de encendido U_ON = 20 °C y de apagado U_OFF = 22 °C; entre ambos hay una banda muerta de 2 °C alrededor de la consigna de 21 °C.

  3. 03Lógica del bucle

    REPETIR: leer T; SI (T < 20) ENTONCES calefactor ← ON; SI (T > 22) ENTONCES calefactor ← OFF; (entre 20 y 22 se mantiene el estado anterior).

  4. 04T = 19 °C

    19 < 20, se cumple la condición de encendido: el calefactor pasa a ON.

  5. 05T = 21 °C

    21 no es < 20 ni > 22: cae en la banda muerta, así que el calefactor MANTIENE el estado anterior (sigue ON).

  6. 06T = 23 °C

    23 > 22, se cumple la condición de apagado: el calefactor pasa a OFF.

Resultado: Estados sucesivos: 19 °C → ON, 21 °C → sigue ON (banda muerta), 23 °C → OFF. La histéresis de 2 °C evita que el calefactor conmute sin parar cuando la temperatura ronda los 21 °C.

Objetivo Selectividad

  • Describir la arquitectura de un sistema IoT por capas y situar correctamente sensor, microcontrolador, conectividad, nube y actuador en la cadena.
  • Clasificar componentes concretos como sensor o actuador y como señal digital o analógica, justificando cada caso.
  • Diseñar la lógica de control de un sistema IoT sencillo (umbral, condición y actuación), idealmente con histéresis para evitar conmutaciones espurias.

Errores frecuentes

  • Confundir sensor con actuador: el sensor mide (entrada), el actuador ejecuta una acción física (salida); un mismo dispositivo no es ambas cosas.
  • Creer que todas las señales son digitales y olvidar que las magnitudes analógicas (temperatura, luz) requieren un conversor analógico-digital para ser leídas.
  • Diseñar la lógica con un único umbral, lo que provoca conmutaciones continuas del actuador cuando la medida oscila justo en ese valor (falta de histéresis).

Repaso activo

Diseña, en pseudocódigo, la lógica de control de un sistema IoT de riego automático: un sensor de humedad del suelo da un valor de 0 (seco) a 100 (saturado); si la humedad baja de 30 se enciende la bomba y no se apaga hasta que sube por encima de 60 (histéresis). Indica qué elementos son sensor, actuador, entrada y salida, y dibuja la cadena IoT del sistema.

Recuerdo activo

Recuerda los puntos clave — luego revela.

Fuentes: Real Decreto 243/2022 — enseñanzas mínimas del Bachillerato (saberes básicos, Anexo II) (Gobierno de España — Boletín Oficial del Estado (BOE))

Contenido

Sección -- / 04

    • 01Fundamentos de la programación: variables, control y funciones◐
    • 02Diseño de algoritmos: diagramas de flujo y pseudocódigo◐
    • 03Depuración y verificación de programas◐
    • 04Internet de las cosas (IoT) aplicado a proyectos●

0/4 Leídos

De los apuntes a la práctica

Programación e internet de las cosas

Refuerza este tema con preguntas de la base de preguntas.

~22
min
3
Competencias
Practicar

Referencias y fuentes

Fuentes

Gobierno de España — Boletín Oficial del Estado (BOE)

  • Real Decreto 243/2022 — enseñanzas mínimas del Bachillerato (saberes básicos, Anexo II)

Ministerio de Educación, Formación Profesional y Deportes — educagob

  • Currículo de Bachillerato (LOMLOE) — materias y saberes básicos

Tema anterior

Sistemas automáticos de control

Tema siguiente

Automatización y robótica

EuraStudy·Apuntes T·08·MMXXVI

Continúa con el tema siguiente: el itinerario se conserva.