Saltar al contenido

Glosario

Los términos técnicos de todos los proyectos, explicados en criollo. Desde cualquier guía llegás acá tocando las palabras con subrayado punteado.

Electrónica

Arduino

Placa electrónica con un microcontrolador programable y comunicación USB/serial. Desde la computadora, un IDE permite escribir el código, compilarlo y cargarlo en la placa. Tiene entradas y salidas digitales (0 a 13) y entradas analógicas (A0 a A5).

Placa electrónica que contiene un microcontrolador programable y un sistema de comunicación (USB y serial) que permite al usuario cargarle diversos programas, así como también comunicarse con la misma. Del lado de la computadora se utiliza un IDE (entorno de desarrollo integrado) para generar el código, compilarlo y quemarlo en la placa. Existen múltiples IDE compatibles con las placas Arduino; en este proyecto usamos el Arduino IDE en su versión 2.x.

El microcontrolador posee entradas analógicas y digitales, así como salidas digitales, PWM y servo. Las entradas y salidas digitales son las que permiten leer o escribir estados del tipo binario: pueden adoptar la forma de 0 o 1, alto o bajo, verdadero o falso. Para prender y apagar los LED del semáforo utilizamos salidas digitales, que están nomencladas con números desde el 0 al 13.

Las entradas analógicas permiten leer información que puede adoptar diferentes niveles de tensión, tal como la lectura de un termómetro analógico o la posición de un potenciómetro. Las mismas están identificadas en la placa como A0 a A5.

Buzzer (zumbador)

Dispositivo que genera sonido a una frecuencia determinada. Al recibir alimentación comienza a sonar; controlándola se pueden generar sonidos continuos o pulsos. Sirve como mecanismo de señalización o aviso.

Un zumbador (en inglés buzzer) es un dispositivo que genera sonido con una frecuencia determinada. Al recibir alimentación eléctrica comienza a sonar, y controlando esa alimentación se pueden generar sonidos continuos o pulsos. Sirve como mecanismo de señalización o aviso.

Si se quisiera tener control fino de la frecuencia y el nivel del sonido generado, habría que usar otro tipo de dispositivo, como un parlante pequeño. En esta reedición el buzzer se maneja con la función tone(pin, frecuencia, duración), que produce un tono de la frecuencia indicada: así se pueden distinguir dos avisos distintos —un pitido agudo cuando la clave es correcta y un doble pitido grave cuando es incorrecta.

Display de 7 segmentos

Componente que representa números encendiendo o apagando siete LED con forma de línea, identificados con letras de la «a» a la «g». No tiene circuito de control propio: cada segmento se maneja desde una salida digital de la placa.

El display de siete segmentos es un componente que se utiliza para la representación de números en muchos dispositivos electrónicos. Está compuesto de siete LED con forma de línea que se pueden encender o apagar individualmente. Cada segmento está identificado con una letra, de la a a la g: por ejemplo, el segmento g es el trazo horizontal del centro. Combinando qué segmentos se encienden se forma cada cifra (para un 8 se encienden los siete; para un 1, solo los dos del lado derecho).

Dado que este dispositivo no tiene ningún tipo de circuito de control incorporado, se controla directamente el encendido o apagado de cada segmento desde las respectivas salidas digitales de la placa. Para mostrar un número determinado hace falta una conversión en la programación que decida cuáles segmentos representan a cada cifra; una forma habitual de resolverlo es guardar esa correspondencia en una tabla.

Generalmente tienen siete pines de conexión para los respectivos segmentos y, a veces, un pin adicional para encender un punto decimal en el margen inferior. Un último pin es el neutro común (GND en los modelos de cátodo común). Como cada segmento es un LED, cada uno necesita su resistencia limitadora en serie.

Display LCD

Pantalla de cristal líquido que muestra texto en filas y columnas; el clásico es de 16 columnas por 2 filas. Se puede conectar en modo paralelo (muchos pines) o por I2C (solo dos cables, SDA y SCL). No representa bien las tildes ni la letra Ñ.

Un display LCD (Liquid Crystal Display, pantalla de cristal líquido) permite mostrar texto en filas y columnas. El modelo clásico de estos proyectos es el 1602: 16 columnas por 2 filas de caracteres. Se lo usa para ver en el lugar los datos que mide el sistema, sin depender de la computadora.

Hay dos formas habituales de conectarlo a la placa, y en este proyecto cada plataforma usa una:

  • Modo paralelo, con el LCD Keypad Shield: una placa con formato de Arduino UNO que se apila directamente sobre él y se maneja con la librería LiquidCrystal usando seis pines de datos (en este proyecto, el 8, 9, 4, 5, 6 y 7). Trae además un potenciómetro (RP1) para ajustar el contraste. Es el que usa la variante Arduino UNO.
  • Por I2C, con un módulo I2C pegado al display: solo hace falta conectar dos cables de señal, SDA y SCL, y se maneja con la librería LiquidCrystal_I2C. Es el que usa la variante ESP32, porque el shield paralelo no encaja en esa placa.

En ambos casos el display muestra lo mismo. Un detalle a tener en cuenta: el LCD no representa bien las tildes ni la letra Ñ, así que los textos que se le envían se escriben sin ellas (por ejemplo, Temp. y Hum.).

Electroválvula

Actuador que permite o interrumpe el paso de un fluido. Se acciona a través de su propia alimentación, por lo que tiene únicamente dos pines: sus estados posibles son activada o no, y se puede controlar mediante una salida digital y un relé.

Se trata de un actuador que permite o interrumpe el paso de un fluido a través del mismo. Existen versiones que trabajan con 12 V así como también las que trabajan directamente con 220 V, permitiendo trabajar en un sistema de mayor nivel de caudal.

El accionamiento del mismo se realiza directamente a través de su alimentación, por lo que tiene únicamente dos pines para la conexión. Los estados posibles son activado o no, por lo que se puede controlar mediante una salida digital y un relé.

Es el tipo de válvula que suele encontrarse en los lavarropas, controlando el ingreso de agua. En esta reedición la práctica del aula usa una electroválvula de baja tensión (12 V); la conexión de válvulas de 220 V es una extensión exclusiva del docente, con instalación supervisada.

ESP32

Placa con un microcontrolador de Espressif que trae WiFi (y Bluetooth) integrados. Se programa desde el Arduino IDE igual que un Arduino, con pines llamados GPIO. En este proyecto reemplaza al conjunto Arduino UNO + módulo OBLOQ para el nivel IoT.

Es una familia de microcontroladores del fabricante Espressif que, a diferencia del Arduino UNO clásico, trae conectividad WiFi y Bluetooth integradas. Las placas de desarrollo como la ESP32 DevKit v1 se programan desde el mismo Arduino IDE (instalando el soporte de placas de Espressif) y con las mismas funciones que ya conocés: pinMode(), digitalWrite(), millis(), etc.

Sus pines se llaman GPIO (entrada/salida de propósito general) y se identifican por número. Algunos GPIO participan del proceso de arranque de la placa (0, 2, 12 y 15), por lo que conviene evitarlos como salidas y preferir pines seguros como 16, 17, 18, 19, 21, 22, 23, 25, 26 y 27.

En esta reedición del proyecto, el ESP32 reemplaza al conjunto Arduino UNO + módulo OBLOQ del material original de 2019: como la radio WiFi viene incluida en la placa, el nivel avanzado (IoT) no necesita ningún módulo adicional.

Higrómetro de suelo

Sensor que estima la humedad del suelo midiendo su conductividad eléctrica. Entrega una salida analógica que se conecta a una entrada A0–A5 del Arduino; sirve para distinguir un suelo seco de uno húmedo, no para una medición precisa.

Es un sensor que registra la humedad del suelo mediante la medición de su conductividad eléctrica. Se compone de una lanza (u horquilla) que se clava en la tierra y tiene contactos que cierran un circuito eléctrico en relación con la humedad de la misma. Este tipo de sensor no tiene la sensibilidad suficiente como para realizar una medición precisa de la humedad, pero sí se puede usar para diferenciar un suelo seco de uno húmedo.

El higrómetro de suelo tiene tres pines de conexión: dos se utilizan para la alimentación eléctrica (VCC y GND) y el tercero es la salida de información. Esa salida es analógica: entrega un nivel de tensión en relación con la humedad registrada, por lo que se conecta a una entrada analógica del Arduino (A0 a A5) para poder leer la información.

Un detalle clave de estos módulos resistivos (como el FC-28) es que la lectura es inversa: a mayor valor leído, el suelo está más seco (hay menos agua conduciendo, así que la resistencia es mayor). Por eso, en el código, el umbral de “seco” es el valor alto y el de “húmedo” es el valor bajo. Conviene tenerlo presente, porque es un punto donde es fácil equivocarse.

LDR (fotorresistencia)

Componente cuya resistencia varía con la intensidad de la luz que recibe: baja (hasta 50 ohm) con luz incidiendo y muy alta (1 megaohm o más) a oscuras. Se usa en control automático de iluminación, robots seguidores de luz o barreras láser.

Es un componente electrónico cuya propiedad es ofrecer resistencia al flujo de corriente. El LDR se distingue de los resistores tradicionales por estar elaborado de un material que es sensible a la luz: al variar la intensidad de luz a la que se expone, varía proporcionalmente la resistencia eléctrica del componente.

El valor de resistencia de un LDR es bajo cuando hay luz incidiendo en él (puede descender hasta 50 ohm) y muy alto cuando está a oscuras (1 megaohm o más). El componente tiene dos patas de conexión; en este proyecto lo usamos en forma de módulo de tres pines (VCC, GND y señal), cuya salida analógica se conecta a una entrada analógica de la placa.

Algunos casos de aplicación pueden ser un robot seguidor de luz, el control automático de iluminación, el control automático de brillo en una pantalla o barreras láser.

LED

Componente electrónico tipo diodo que emite luz. Tiene polaridad: la pata larga es la positiva y la corta (o el lado plano del encapsulado) la negativa. Conectado al revés no se daña, pero no enciende.

Componente electrónico tipo diodo que emite luz. Es necesario tomar en cuenta su polaridad para ponerlo en funcionamiento: conectándolo con la polaridad invertida generalmente no va a traer mayores consecuencias que la imposibilidad de hacer que encienda.

Existen dos formas de distinguir la polaridad: podemos identificar la pata negativa como la pata más corta, u observando el lado plano en el encapsulado del componente. La pata larga es la positiva, y es la que se conecta (a través de la resistencia o directamente, según el circuito) al pin de salida de la placa.

LED RGB

LED que combina tres colores primarios de luz —rojo (R), verde (G) y azul (B)— en un mismo encapsulado. Regulando la intensidad de cada color se pueden formar millones de tonos, incluido el blanco.

Un LED RGB es en realidad tres LED en un mismo encapsulado: uno rojo (red), uno verde (green) y uno azul (blue), de ahí la sigla RGB. Regulando por separado la intensidad de cada uno de esos tres colores primarios de luz y aprovechando que se mezclan a la vista, se pueden formar más de 16 millones de tonos distintos, incluido el blanco cuando los tres encienden al máximo.

En el robot de este proyecto los LED RGB vienen integrados al frente de la placa controladora. Se programan con un bloque que permite elegir el color deseado, sin necesidad de cablear nada: el kit ya resuelve la conexión. Se usan como señalización —por ejemplo, para que el robot sea más visible mientras se desplaza— o simplemente para personalizarlo.

Motor DC

Motor eléctrico de dos terminales (+ y −), común en vehículos y ventiladores. Gira mientras recibe corriente y su velocidad depende de la potencia entregada. Requiere un circuito intermediario (driver) que le dé la potencia que la placa no puede entregar por sí sola.

El motor DC es el tipo de motor más popular entre los dispositivos que nos rodean. Estos motores pueden girar en ambos sentidos libremente, y su velocidad de giro es directamente proporcional a la potencia que se les entrega. Sirven para mover ruedas de vehículos, aspas de ventiladores, mecanismos dosificadores, etc. No permiten un control preciso de la posición del eje ni de la cantidad de vueltas recorridas. Existen motores DC que traen integrada una caja de engranajes (una reducción) para ajustar el rango de velocidad y de fuerza que se le otorga al sistema mecánico.

Se conectan mediante dos pines (+ y −): controlando la señal que les proveemos podemos definir la velocidad y el sentido de giro del motor. Debido a que los motores requieren un nivel de potencia mayor del que una placa Arduino es capaz de manejar por un pin, siempre se necesita un circuito electrónico intermediario (un driver) que se encargue de “amplificar” esa señal para que el motor reciba la energía necesaria.

Cuando solo se necesita encender y apagar el motor en un único sentido de giro —como al mover un dosificador de alimento por un ratito—, ese driver puede ser tan simple como un módulo ULN2003. Si en cambio hiciera falta invertir el giro (marcha adelante y atrás), se usa un puente H, que controla los dos sentidos.

Potenciómetro

Resistor cuyo valor de resistencia se ajusta de forma manual con una perilla. Conectando sus extremos a VCC y GND, la pata central entrega un nivel de tensión que representa la posición de la perilla y se lee por una entrada analógica del Arduino.

Un potenciómetro es un resistor cuyo valor de resistencia se puede modificar y controlar de forma manual o mecánica, girando una perilla o desplazando un cursor. Se usa para trabajar con bajos niveles de potencia, a modo de señal de control: en un parlante regula el volumen, en un monitor el brillo. En este proyecto lo usamos para que la persona fije la temperatura deseada de la habitación.

Internamente tiene una resistencia fija del valor especificado y un cursor que puede pararse en cualquier punto intermedio de esa resistencia. Para leer su posición conectamos las dos patas de los extremos a VCC y GND; en la pata central (el cursor) aparece entonces un valor de tensión que representa la posición actual de la perilla.

Ese valor es analógico, así que se conecta a una entrada analógica de la placa (A0 a A5 en el Arduino UNO; un pin con ADC en el ESP32). La placa lo lee como un número: en el UNO, de 0 (0 V) a 1023 (5 V); en el ESP32, de 0 a 4095, porque su conversor es de mayor resolución. Ese número se convierte por código a la escala que necesitemos —por ejemplo, una temperatura de 0 a 30 °C—.

Protoboard

Placa experimental para el prototipado rápido de circuitos: sus orificios permiten insertar y conectar componentes sin soldadura. Las líneas superior e inferior recorren la placa de punta a punta y suelen usarse para la alimentación.

Es una placa experimental que permite el prototipado rápido de circuitos electrónicos. Tiene orificios para insertar las patas de los componentes, permitiendo que se conecten sin tener que recurrir a la soldadura.

Posee una grilla de orificios que se encuentran conectados entre sí siguiendo un esquema fijo: las líneas de conexión superior e inferior recorren la placa de punta a punta y suelen utilizarse para la alimentación del circuito, mientras que las filas centrales (cortas) se suelen utilizar para interconectar componentes. Hay que tomar en cuenta que esas filas se interrumpen en el canal central de la placa.

Generalmente se utilizan cables del tipo dupont para realizar conexiones en la protoboard.

Puerto COM

Puerto de comunicaciones por el cual el sistema operativo se comunica con un dispositivo externo, como la placa. Se asigna automáticamente al conectarla por USB y puede cambiar de número; en el IDE hay que indicar cuál usar.

Es el puerto de comunicaciones a través del cual un sistema operativo informático se comunica con un dispositivo externo, tal como una placa Arduino o ESP32. La asignación suele realizarse de forma automática al conectar la placa vía USB.

Dicha asignación suele ser dinámica, lo que significa que a veces cambia el número al conectar una misma placa en otro puerto USB o al conectar varias placas. En todos los IDE de programación es necesario especificar el puerto a través del cual nos comunicaremos con la placa. En Windows se ven como puertos COM numerados (COM3, COM4…); en Linux y macOS aparecen como dispositivos del tipo /dev/ttyACM0 o /dev/ttyUSB0.

Pulsador

Interruptor que normalmente está abierto y, mientras se lo mantiene presionado, cierra el circuito entre sus patas. Se usa como botón para que el usuario interactúe con el dispositivo, o como sensor de contacto (fin de carrera).

Un pulsador es un interruptor eléctrico que se encuentra normalmente abierto: al presionarlo se cierra el circuito entre sus patas, y al soltarlo vuelve a abrirse. Se suele usar como botón para que el usuario pueda interactuar con un dispositivo, así como también como sensor para detectar cuándo un móvil se topa con un obstáculo (sensor de choque o de fin de carrera).

Para que la placa lea de forma estable si el pulsador está presionado o no, la entrada necesita una resistencia que la “ate” a un valor conocido cuando el botón está suelto. En esta reedición usamos la resistencia interna de pull-up del microcontrolador (INPUT_PULLUP): el botón se conecta directo entre el pin y GND, sin resistencias externas, y el pin lee ALTO en reposo y BAJO al presionarse.

Relé

Dispositivo electromagnético que funciona como un interruptor controlado por un circuito eléctrico: un electroimán abre o cierra contactos de otros circuitos independientes. Permite controlar con bajo voltaje dispositivos que utilizan mayor voltaje.

Dispositivo electromagnético que funciona como un interruptor controlado por un circuito eléctrico. Por medio de un electroimán se acciona uno o varios contactos que permiten abrir o cerrar otros circuitos eléctricos independientes.

Se utiliza comúnmente para aislar eléctricamente dos circuitos, así como también para permitir controlar con bajo voltaje a dispositivos que utilizan mayor voltaje: la placa trabaja con señales de 5 V (o 3,3 V en el caso del ESP32) que, mediante un relé, permiten controlar la activación o desactivación de dispositivos de mayor tensión, como una lámpara.

En este proyecto usamos un módulo relé: el relé ya montado en una placa con sus tres pines de control (VCC, GND y señal) y sus bornes de salida para la carga. Por seguridad, la práctica del aula conmuta una lámpara de baja tensión; la conexión de cargas de 220 V es una extensión exclusiva del docente, con instalación supervisada.

Resistencia

Componente que se opone al paso de la corriente eléctrica. Su valor se mide en ohm (Ω). Se usa para determinar la cantidad de corriente de una rama del circuito, por ejemplo para evitar que un LED se queme por exceso de corriente.

La resistencia eléctrica es una característica de todo material conductor eléctrico de hacer oposición al paso de la corriente eléctrica, y es uno de los componentes más utilizados en la electrónica. El valor resistivo se mide en ohm y se representa con el símbolo Ω. Existen resistencias de valores que van desde menos de 1 ohm hasta varios millones.

Se suelen utilizar para determinar la cantidad de corriente de una rama de circuito, por ejemplo para evitar que se queme el LED por exceso de corriente. En este proyecto, cada LED del semáforo lleva una resistencia de 220 ohm entre su pata negativa y GND.

Robótica educativa

Disciplina que integra mecánica, electrónica y programación para construir y controlar robots. En el aula se trabaja con kits que traen la estructura, los motores, los sensores y una controladora ya integrados, para concentrarse en el diseño y la lógica.

La robótica es la disciplina que combina la mecánica (la estructura y el movimiento), la electrónica (los motores, los sensores y la controladora que los gobierna) y la programación (las instrucciones que deciden qué hace el robot y cuándo). Un robot es, en el fondo, un sistema que percibe su entorno con sensores, decide con un programa y actúa sobre el mundo con motores u otros actuadores.

En el ámbito educativo se suele trabajar con kits de robótica: cajas que ya traen las piezas estructurales, los motores, los sensores y una placa controladora pensados para encastrarse entre sí. Así el trabajo se concentra en dos cosas: diseñar la forma del robot según lo que se quiere que haga y programar su comportamiento, sin tener que armar circuitos en una protoboard ni soldar. El kit Robobloq Qoopers de este proyecto es un ejemplo: se ensambla con piezas de metal, ruedas y orugas, y se programa por bloques con su propio software.

Sensor de distancia ultrasónico

Sensor que mide distancias emitiendo un pulso de sonido ultrasónico y midiendo el tiempo hasta que el eco regresa tras rebotar en un obstáculo. Tiene cuatro pines: VCC y GND para la alimentación, Trigger para disparar el pulso y Echo para detectar su llegada.

Es un tipo de sensor que se utiliza para medir distancias. El principio de funcionamiento del mismo se basa en emitir un pulso de sonido ultrasónico y medir el tiempo que pasa hasta registrar que dicho pulso regresó a la fuente tras rebotar en un obstáculo. El tiempo transcurrido es directamente proporcional a la distancia a la que se encuentra el objeto; esto se debe a que la velocidad de propagación del sonido en el aire es lineal.

Este tipo de sensor tiene cuatro pines de conexión: dos se utilizan para la alimentación eléctrica del mismo (VCC y GND) y los dos restantes se utilizan para generar el pulso (Trigger) y para detectar la llegada del mismo (Echo).

La utilización del mismo requiere programar el mecanismo de disparo, la medición de tiempo y el sensado de la llegada del rebote. En general, la mayoría de los entornos de programación facilitan alguna biblioteca que resuelve de manera simple la gestión de estos procesos, pudiendo acceder como usuario directamente a la información en centímetros de la medición realizada. En esta reedición, el código incluye su propia función de medición comentada línea por línea, para que se vea el mecanismo completo.

Sensor de lluvia

Módulo que detecta la presencia de lluvia. Una placa colectora con pistas conductoras se moja y, junto a un comparador, entrega una salida digital que indica «llueve / no llueve». Se conecta a un pin digital y su umbral de detección se ajusta con un potenciómetro.

El sensor de lluvia detecta la presencia de agua en el ambiente. Consta de dos partes: una placa colectora (la que se expone a la lluvia), recorrida por dos pistas conductoras separadas en forma de peine, y una plaquita electrónica con un comparador (el integrado LM393) y un potenciómetro de ajuste.

Cuando cae agua sobre la placa colectora, el agua cierra el circuito entre las pistas y aumenta su conductividad. El comparador traduce esa variación en una salida digital: un valor que indica presencia o ausencia de lluvia. Por eso el sensor se conecta a un pin digital de la placa (en el esquema del original, el pin 3) y se lee con digitalRead(). El módulo tiene cuatro pines útiles: alimentación (VCC y GND), una salida analógica (AO) y la salida digital (DO) que usamos en este proyecto.

Antes de medir, conviene calibrar el umbral con el potenciómetro azul de la plaquita: en la calibración del original, cuando el sensor detecta agua su salida digital queda en estado BAJO (0 V), y cuando no detecta lluvia queda en estado ALTO (5 V). El programa lee ese estado para mostrar en el display «Lluvia: SI» o «Lluvia: NO».

Es un componente de baja tensión, pero la placa colectora se moja por diseño: conviene ubicar la plaquita electrónica y la placa Arduino resguardadas del agua, dejando expuesta solo la placa colectora.

Sensor de presión BMP180

Sensor barométrico que mide la presión atmosférica (y también temperatura). Digitaliza la lectura y se comunica por el bus I2C (pines SDA y SCL). La presión se expresa en hectopascales (hPa) y necesita una librería que gestione el protocolo.

El BMP180 es un sensor barométrico diseñado para leer la presión atmosférica: la fuerza que ejerce el aire (la atmósfera) sobre la superficie de la Tierra. Como dato del clima es muy útil, porque las bajas presiones suelen asociarse a condiciones inestables del tiempo y, ocasionalmente, a lluvia, mientras que la presión alta se asocia con condiciones más estables. La presión se expresa en hectopascales (hPa); un valor típico a nivel del mar ronda los 1013 hPa.

El sensor integra un circuito que digitaliza la medición y se comunica con la placa mediante el protocolo I2C, un bus serial que usa solo dos líneas de señal: SDA (datos) y SCL (reloj). En el Arduino UNO, esos pines son A4 (SDA) y A5 (SCL); en el ESP32, GPIO 21 (SDA) y GPIO 22 (SCL). Para leerlo hace falta una librería que resuelva la comunicación por I2C: en esta reedición usamos la Adafruit BMP085 Library, compatible con el BMP180.

Una particularidad linda del I2C: es un bus compartido. En el ESP32, el BMP180 y el display LCD por I2C conviven en las mismas dos líneas (SDA y SCL), y cada uno responde a su propia dirección: el LCD en 0x27 y el BMP180 en 0x77. Así, dos dispositivos distintos comparten el mismo par de cables sin estorbarse.

El BMP180 tiene cinco patas: dos de alimentación (VCC y GND), un pin 3.3 V que se usa para alimentación en otras situaciones, y los pines SDA y SCL de la comunicación I2C.

Sensor DHT11

Sensor digital que mide temperatura y humedad del aire en un mismo integrado. Digitaliza la lectura internamente y la entrega por un pin digital (no es analógico: no va a A0). Necesita una librería para leerlo y no admite más de una lectura por segundo.

El DHT11 es un sensor que mide humedad y temperatura del aire. El sensor de temperatura es un termistor (un componente que cambia su resistencia según la temperatura); el de humedad es un sustrato higroscópico (que atrae vapor de agua) conectado a dos electrodos que miden su resistencia. El DHT11 combina el sensado de ambas variables e integra un pequeño circuito digital que digitaliza esa información y la transmite al Arduino a modo de paquete de datos.

Por eso es un sensor digital, no analógico: no se conecta a una entrada A0–A5, sino a un pin digital de la placa (en el esquema del original, el pin 2). Y por eso, para usarlo, hace falta una librería que se encargue de la comunicación entre la placa y el sensor: en esta reedición usamos la DHT sensor library de Adafruit.

El sensor posee cuatro pines: dos son alimentación (VCC y GND), uno es el de datos y el cuarto no tiene uso. En algunos casos se lo consigue montado en una plaqueta con solo tres pines, que descarta el que no se usa.

Una limitación importante: el DHT11 no admite más de una lectura por segundo. Es su límite físico; pedirle lecturas más seguidas devuelve el valor anterior o un error. Por eso el programa mide cada 2 segundos.

Sensor PIR

Sensor de movimiento infrarrojo que reacciona ante fuentes de calor como el cuerpo humano o el de los animales. Solo detecta presencia o ausencia de movimiento (1 o 0), en un rango de un par de metros, y trae trimmers para regular sensibilidad y tiempo de disparo.

Los sensores de movimiento infrarrojo (habitualmente llamados PIR, por piroeléctricos) son sensores que reaccionan solo ante determinadas fuentes de energía, tales como el calor que emite el cuerpo humano o el de los animales. Pueden reconocer el movimiento de una persona en un rango máximo de un par de metros.

Solo detectan presencia o ausencia de movimiento, sin realizar ningún tipo de dimensionamiento del mismo: su salida vale 1 cuando hay movimiento y 0 cuando no. Suelen tener dos trimmers para regular la sensibilidad y el tiempo que dura el disparo cada vez que se detecta algo.

Se suelen utilizar para sistemas de alarma domiciliaria o para reflectores automáticos activados por movimiento. Generalmente tienen dos pines para la alimentación (VCC y GND) y un tercer pin para la salida de información, que se conecta a una entrada digital de la placa.

Servomotor

Motor que se ubica en un ángulo específico (los comunes, de 0° a 180°) y se mantiene ahí. Se programa indicando el ángulo deseado; tiene tres cables: alimentación (VCC, GND) y señal.

Un servomotor (habitualmente llamado “servo”) es un dispositivo que se compone de un motor y un sistema de control que le permite ubicarse en una posición específica y mantenerse estable en ella. Los servos más comunes pueden moverse en un rango de 0° a 180°, sin poder girar de forma continua. Se suelen utilizar en aplicaciones tipo barreras o brazos mecánicos. La programación es muy simple: solo hay que especificar el ángulo al que se lo quiere posicionar.

Existen también servos de “rotación continua”, que permiten un control del movimiento del eje sin estar acotado a un rango, pero requieren una lógica de programación un poco más compleja que la de los servos estándar.

Los servos tienen tres pines de conexión: dos para la alimentación eléctrica (VCC, cable rojo o marrón, y GND, cable negro) y un tercero de señal (cable naranja o amarillo), que se conecta a una salida digital de la placa. Para controlar el servo, la placa genera una señal con una frecuencia particular cuyo ciclo de trabajo determina el ángulo de posicionamiento (no confundir con PWM).

Shield

Placa modular que se monta encimada sobre una placa Arduino, encastrando en sus pines, para agregarle funciones (pantalla, sensores, comunicación). Suele diseñarse para un modelo concreto: el LCD Keypad Shield tiene el formato del Arduino UNO y no encaja en un ESP32.

Un shield es una placa de circuito que se monta encima de una placa Arduino, encastrando en sus pines, para agregarle nuevas funcionalidades sin cablear nada en una protoboard. Existen shields de muchos usos: pantallas, sensores, comunicación, sonido, interconexión con otros sistemas, etcétera.

En general, un shield tiene la misma forma que la placa a la que se acopla y sus pines encastran perfectamente con los de esa placa. Justamente por eso suele estar pensado para un modelo concreto: el LCD Keypad Shield que usamos en el nivel intermedio tiene el formato físico del Arduino UNO y se apila sobre él, pero no se enchufa en un ESP32. Cuando se trabaja con ESP32, esa misma función (mostrar texto) se resuelve con un display que se conecta por I2C, en lugar de un shield.

Teclado matricial (de membrana)

Teclado cuyas teclas se organizan como una matriz de filas y columnas: cada tecla es el cruce de una fila con una columna. En el de membrana, dos láminas flexibles con pistas conductoras hacen contacto al presionar. Se lee con la librería Keypad.

El teclado de membrana está compuesto por dos láminas flexibles con circuitos impresos sobre una tinta conductora. Al presionar una tecla, las membranas hacen contacto cerrando el circuito.

Su diseño eléctrico es matricial: en lugar de un cable por tecla, hay pines que representan cada fila y cada columna. La pulsación de cada tecla equivale a un cruce entre una fila y una columna. Un teclado de 4x4 (16 teclas) necesita así solo 8 pines —4 filas + 4 columnas— en vez de 16. La placa recorre las filas y columnas (un proceso llamado escaneo) para identificar qué cruce se cerró, es decir, qué tecla se presionó.

Para no tener que programar ese escaneo a mano se usa la librería Keypad de Arduino: se le describe el mapa de teclas y los pines de filas y columnas, y ella se encarga de devolver la tecla presionada con getKey().

ULN2003

Circuito integrado que actúa como driver de motores: convierte la señal de control de baja potencia de la placa (una salida digital) en la potencia necesaria para mover un motor DC. No invierte el giro: enciende y apaga el motor en un solo sentido.

El ULN2003 es un circuito integrado que nos sirve para realizar la conversión de una señal de control de baja potencia (la salida digital de la placa Arduino o ESP32) en una señal con la potencia necesaria para poder hacer que se mueva un motor. No es posible conectar motores DC directamente a las salidas de la placa, ya que los motores requieren un nivel de potencia mayor del que un pin puede entregar.

Internamente, el ULN2003 es un arreglo de transistores (tipo Darlington) que solo pueden dejar pasar o cortar la corriente hacia el motor: por eso funciona como un interruptor de potencia. Comanda el motor en un único sentido (encendido o apagado), sin posibilidad de invertir el giro. Se cablea la señal del pin a una de sus entradas (IN1, IN2…), la salida correspondiente (OUT1, OUT2…) a un borne del motor, el otro borne a una fuente aparte, y la masa (GND) en común con la de la placa.

Si en una extensión de un proyecto se quisiera que un motor pudiera retroceder o invertir el sentido de giro, habría que reemplazar el ULN2003 por un doble puente H, que sí controla los dos sentidos.

Programación

Código bloqueante

Código que detiene todo el procesamiento hasta que se cumple una condición, como delay(), que deja al programa 'colgado' durante el tiempo indicado. En IoT es conflictivo: impide atender tareas simultáneas como la publicación de datos y la conexión a internet.

Se llama código bloqueante al que detiene todo el procesamiento del programa hasta que se cumpla una condición. El caso típico es la función delay(): brinda un tiempo de espera fácil de comprender y de programar, pero cuando el programa entra en esa función queda “colgado” por el período de tiempo establecido, sin poder hacer ninguna otra cosa.

Al utilizar IoT, es conflictivo utilizar código bloqueante, ya que al detenerse el procesamiento se impide también que el sistema realice otras operaciones que funcionan en simultáneo, como las tareas de publicación y el mantenimiento constante de la conexión a internet.

La alternativa es el código no bloqueante: usar la función millis(), que funciona como un cronómetro en milisegundos desde que se inició el sistema. Consultándola en cada vuelta del programa se puede saber cuánto tiempo transcurrió y decidir cuándo actuar, sin detener las demás tareas.

Condicional (If)

Bloque que ejecuta una acción solo si se cumple una condición. El «If» compara un valor (por ejemplo, la altura del dron) con otro y, si la condición es verdadera, corre los bloques que contiene; si no, sigue con el bloque que está a continuación.

Un bloque condicional permite que el programa decida qué hacer según lo que ocurra. El condicional If («si») evalúa una condición y, según si se cumple o no, sigue por un camino o por otro. Esto prepara al programa para actuar de manera distinta ante distintos panoramas.

En la app Tello EDU, el If suele combinarse con un bloque Operator que compara dos valores. Por ejemplo, se guarda la altura del dron en la variable Altura y se compara con 800 cm:

  • Si la condición se cumple (la altura es mayor a 800 cm), se ejecutan los bloques que están contenidos dentro del If.
  • Si no se cumple (la altura es menor a 800 cm), esos bloques se saltean y el programa sigue con el primer bloque que esté a continuación del condicional.

Los condicionales son, junto con las secuencias, los ciclos y las variables, uno de los pilares del pensamiento computacional.

Driver (controlador)

Programa que le permite al sistema operativo comunicarse con un dispositivo de hardware. Sin el driver correcto, la computadora no reconoce el dispositivo (por ejemplo, la placa del robot conectada por USB).

Un driver (o controlador) es un programa que le permite al sistema operativo de la computadora comunicarse con un dispositivo de hardware concreto. Actúa como traductor entre el software y el dispositivo: sin el driver adecuado, la computadora no sabe cómo dialogar con él y directamente no lo reconoce.

En este proyecto, al conectar el robot por USB la computadora necesita el driver del puerto serie para poder verlo y comunicarse con su placa. Por eso, la primera vez que usamos el software Robobloq hay que instalar ese driver (una sola vez). Es distinto del driver de motor que aparece en otros proyectos: aquel es un circuito que amplifica la señal para mover un motor; este es un programa que habilita la comunicación con un dispositivo.

Máquina de estados

Forma de organizar un programa donde una variable guarda el estado actual del sistema y, en cada vuelta del loop, solo se ejecuta lo que corresponde a ese estado. El semáforo no bloqueante usa ocho estados que se recorren según el tiempo transcurrido.

Es una forma de organizar un programa en la que el sistema puede encontrarse, en cada momento, en uno de un conjunto finito de estados. Una variable guarda el estado actual y, en cada vuelta de loop(), el programa ejecuta únicamente las acciones que corresponden a ese estado; las transiciones (los saltos de un estado a otro) ocurren cuando se cumple una condición, por ejemplo, que haya transcurrido cierto tiempo medido con millis().

En el semáforo de este proyecto la máquina tiene ocho estados: poner en verde, esperando en verde, poner en amarillo, esperando en amarillo, poner en rojo, esperando en rojo, poner en rojo y amarillo y esperando en rojo y amarillo. Los estados “poner en…” encienden las luces y anotan el instante; los estados “esperando en…” solo consultan el cronómetro y, cumplido el tiempo de esa luz, pasan al estado siguiente.

Esta organización permite que el programa nunca quede bloqueado: entre decisión y decisión, el procesador queda libre para otras tareas, como mantener la conexión a internet y publicar datos.

Programación por bloques

Forma de programar armando secuencias con piezas visuales que se arrastran y sueltan (Drag & Drop), en lugar de escribir código. Cada bloque es una instrucción; se apilan en orden y se ejecutan una tras otra. La app Tello EDU la usa para el vuelo del dron.

La programación por bloques es una forma de programar en la que las instrucciones se representan con piezas visuales que se arrastran y se sueltan (Drag & Drop), en lugar de escribirse como texto. Cada bloque es una instrucción, y los bloques se apilan en orden para formar una secuencia que se ejecuta una acción tras otra.

En la app Tello EDU, los bloques se agrupan por categorías: Motion (movimientos como take off, land, forward, up), Control (ciclos y condicionales), Sensing (mediciones del sensor del dron), Variables y Operator (operaciones y comparaciones).

Toda secuencia de vuelo empieza con el bloque Take Off (despegar) y termina con Land (aterrizar); si no, la secuencia no puede ejecutarse. Esta modalidad baja la barrera de entrada a la programación: permite concentrarse en la lógica del recorrido —secuencia, repetición, variables y condiciones— sin preocuparse por la sintaxis de un lenguaje de texto.

Variable

Espacio en la memoria del programa donde se guarda un dato para usarlo en otra parte. Su nombre no puede empezar con un número ni contener espacios. En el dron se usan variables como «Min», «Max» o «Altura» para almacenar mediciones del sensor.

Una variable es un espacio en la memoria del programa que permite guardar un dato para utilizarlo en otra parte de la secuencia. En la programación por bloques de la app Tello EDU, las variables se crean desde la sección Variables con el botón «Make a Variable».

Al ponerle nombre a una variable hay que respetar dos reglas: no puede comenzar con un número ni contener espacios. Por eso, en este proyecto se usan nombres cortos como Min, Max o Altura.

Una vez creada, la variable se completa con un bloque Set, que le asigna un valor: por ejemplo, la temperatura mínima que mide el sensor del dron o la altura a la que está volando. Ese valor guardado puede después leerse en un operador o en un bloque condicional para tomar decisiones durante el vuelo.

Internet de las Cosas

Adafruit IO

Plataforma online de uso gratuito, orientada al uso educativo, que centraliza y gestiona la información que reportan los dispositivos IoT. Permite crear feeds y paneles de control para monitorear los datos desde cualquier dispositivo.

Los sistemas IoT trabajan apoyándose en un servidor que se encarga de centralizar y gestionar la información que reportan los diversos sensores y dispositivos, así como de responder a las consultas de quienes buscan acceder a dicha información (mostrarla en pantalla, tomar decisiones, etc.).

Adafruit IO (io.adafruit.com) es una plataforma online con posibilidad de uso gratuito que ofrece este servicio de gestión de la información. Ofrece un alto grado de compatibilidad con diversos estándares de trabajo IoT (como el protocolo MQTT) y se encuentra principalmente orientada al uso educativo. En ella se crean los feeds donde los dispositivos publican sus datos y los paneles de control (dashboards) con indicadores, gráficos y botones para visualizarlos y operarlos a distancia.

Feed

Fuente de datos en la que se puede publicar y a la que uno puede suscribirse. Permite enviar datos para que se almacenen en el tiempo, y también leerlos recibiendo las actualizaciones de quienes publican allí.

Fuente de datos en la que uno puede publicar y a la que puede suscribirse. Es decir, permite enviar datos para que estos sean almacenados en el tiempo, así como también leerlos, recibiendo las actualizaciones de quienes estén publicando allí.

Es una forma de almacenar información en una gran base de datos de forma ordenada, utilizando el concepto de etiquetas tanto al momento de escribirla como al de leerla. En este proyecto usamos los feeds semaforo1 y semaforo2 de Adafruit IO para publicar el estado de cada semáforo, con la convención 1 = verde, 2 = amarillo, 3 = rojo (y 4 = rojo y amarillo).

IoT (Internet de las Cosas)

Interconexión digital de objetos cotidianos con internet. Permite, por ejemplo, enviar los datos de un sensor a una central y visualizarlos desde un dispositivo móvil. Requiere un dispositivo capaz de conectarse a internet y un servidor que reciba y aloje los datos.

Internet de las Cosas (en inglés Internet of Things, abreviado IoT) es un concepto que refiere a la interconexión digital de objetos cotidianos con internet. Esta interconexión puede tener diversas funciones: por ejemplo, puede utilizarse para monitorear la temperatura de un ambiente, enviando los datos obtenidos por un sensor a una central donde se recopile la información. De esta manera podría visualizarse en un dispositivo móvil la temperatura de un laboratorio, de un invernadero o de una sala de un hospital.

Para incorporar IoT a un proyecto es necesario contar con: (1) un dispositivo capaz de conectarse a internet, y (2) un servidor que reciba y aloje los datos. En este proyecto, el dispositivo es la placa ESP32 con su WiFi integrado, y el servidor es la plataforma Adafruit IO.

Fabricación digital

Código G

Conjunto de acciones que la impresora 3D (o cualquier máquina CNC) debe realizar para completar un trabajo. Se genera analizando un archivo STL, y es específico de cada modelo de impresora.

Es el nombre que recibe el conjunto de acciones que va a tener que realizar la impresora 3D, o cualquier otro tipo de máquina CNC, para completar el trabajo solicitado.

Estas instrucciones se generan partiendo del análisis de un archivo STL y realizando el cálculo de todos los movimientos y trayectorias que realizará cada componente de la impresora (motores, avance de filamento, calentador de extrusor, calentador de la base, etc.) para materializar el objeto en cuestión.

Debido a que cada marca y modelo de impresora 3D tiene diferentes características mecánicas, el código G generado para imprimir cierto objeto solo va a servir para ejecutarse en un modelo de impresora específico.

Formato .stl

Formato de archivo que contiene la forma de un objeto sólido 3D, sin color, texturas ni propiedades físicas. Es el más usado para intercambiar e imprimir modelos 3D; funciona como la 'exportación final' de un diseño, como un PDF de un documento de texto.

El .stl es un formato de archivo que contiene la forma de un objeto sólido. No incluye información como color, texturas o propiedades físicas. Los archivos STL son objetos ya consolidados, por lo que resultan útiles para el intercambio y la impresión de modelos.

Este formato no resulta práctico en caso de necesitar editar la geometría del objeto, porque no contiene información paramétrica sobre la generación de las diversas formas, curvas o capas que se utilizan a la hora de diseñar. Se lo puede considerar como la bajada o exportación final de un diseño: en ciertos aspectos es equivalente a exportar un documento PDF a partir de un documento de texto. Es posible generar archivos STL partiendo desde distintos tipos de entornos de diseño y modelado en 3D.