Smart Agriculture Kit micro:bit Introducción ¿Qué es Smart Agriculture Kit para micro:bit ? Es un kit que por menos de 100€ tenemos muchas posibilidades : Sensores y actuadores pensados en una domótica en un entorno de agricultura Detectores de presencia Detectores ambientales de temperatura y humedad Detectores de suelo  Detectores sumergibles de temperatura y nivel de agua Actuadores: Servo y luces Además de los propios sensores y actuadores de la micro:bit Visualización y registro de los datos  Pantalla OLED ESP32 que permite conexión a Internet, por lo tanto visualización de datos utilizando las técnicas más modernas de IoT Instrucciones de seguridad (extraido de la Wiki de Elecfreaks) Antes de utilizar el Kit de Agricultura Inteligente, lea atentamente las siguientes precauciones. Los usuarios deben seguir estrictamente todas las precauciones y asegurarse de que el Kit de Agricultura Inteligente esté correctamente ensamblado y en buen estado de funcionamiento. Por favor, siga estos principios de funcionamiento: -El Kit de Agricultura Inteligente es un dispositivo electrónico. No derrame agua ni otros líquidos sobre el Kit de Agricultura Inteligente -No modifique ni dañe la estructura de sus componentes electrónicos de ninguna manera. -No doble, toque ni presione los pasadores de la fila de pasadores. -No coloque el kit de agricultura inteligente en un lugar donde pueda caerse. -Después de cada uso del Kit de Agricultura Inteligente, guarde los componentes electrónicos correspondientes en una caja seca y ordenada. Fuente Robotopia.es Se suministran los elementos por separado Fuente Robotopia.es Opcionalmente se puede conseguir una maqueta de cartón, para ambientar educativamente todo el conjunto, las instrucciones las tienes aquí (no hagas caso de las conexiones) Fuente Robotopia.es Conexiones La maqueta es fácil de montar, pero las conexiones requieren destreza. Las conexiones a la placa micro:bit que proponemos son las siguientes: Elemento Conexión Observación Termómetro sumergible DS18B20 P1 Analógico Sensor de nivel de agua P2 Analógico Led Neopixel P14 Datos Sensor humedad del suelo P4 Analógico Servo P9 Pulsos digitales Sensor movimiento PIR P3 Analógico Sensor distancia ultrasonidos P13 Pulsos digitales Sensor DHT11 P15 Datos digitales El Pin3 es compartido con la matriz de leds con la columna vertical. Como el sensor PIR es pull up ( ver sensores ) cuando no detecta es un 1, por lo tanto se enciende la columna vertical de la matriz de leds de la micro:bit  cuando no detecta movimiento. Ojo , el fabricante propone otra configuración que no estamos de acuerdo pues hay que respetar que algunos sensores son analógicos por lo tanto tienen que estar en los pines analógicos de la micro:bit que son P1, P2, P3, P4 y P10. Las conexiones hay que respetar la polaridad: El cable negro a masa, también marcado como G Ground El rojo el del medio que es la alimentación V Voltios El amarillo los datos, también marcado como S salida La polaridad también se tiene que respetar en los diferentes elementos, pero es dificil equivocarse pues tiene una pestaña que impide su conexión al revés : Los diferentes elementos se pueden unir a la maqueta de cartón con bridas, tornillos o alambres forrados: Sensores Esta sección es una visión rápida de las posibles entradas de los robots.  NO LEAS TODOS SINO LOS QUE TIENE TU ROBOT Un poco de teoría... Cualquier sistema de control podríamos decir que funciona de una manera similar a un ser humano, salvando las distancias. Nosotros recibimos la información del mundo exterior gracias a nuestros sentidos (oído, olfato, gusto, vista y tacto), nuestro cerebro procesa esa información y a través de nuestros músculos o de nuestra voz realizamos diferentes acciones. Pues lo mismo sucede con los sistemas de control, reciben información del exterior gracias a los diferentes  SENSORES , procesan esa información en sus PLACAS CONTROLADORAS (sus cerebros) tales como Arduino y dan una respuesta utilizando sus diferentes ACTUADORES . Un sensor es un objeto capaz de detectar magnitudes físicas o químicas y transformarlas en variables eléctricas. Los sensores o periféricos de entrada nos permiten obtener información del mundo real para utilizarla desde el programa de Arduino. En la actualidad la cantidad de sensores disponibles es tan extensa como las variables que queramos medir, desde sensores de temperatura, humedad, luminosidad,... hasta acelerómetros, giroscopios, GPS,... pasando por detectores de gases, de pulsos cardiacos, sensores de efecto HALL,... Tipos de sensores DIGITAL : un sensor digital sólo tiene dos estados: activado/desactivado, ON/OFF, 1/0, Alto/Bajo, ... En este caso  conectaremos el sensor a una de las entradas digitales de Arduino para leer el estado. Ejemplo: un pulsador es un tipo de sensor sencillo que sólo nos da dos estados, “pulsado o no pulsado”. Conectado a la placa Arduino debe generar 0v en reposo y 5v al pulsarlo. De esta forma desde el programa de Arduino podremos leer el estado del botón. ANALÓGICO : el sensor nos puede dar un rango de valores, normalmente se traduce en un valor de tensión o de  corriente variable en función de la señal captada al sensor. En este caso conectaremos el sensor a una de las entradas analógicas de Arduino (A0,..., A5). El rango de entrada será una tensión entre 0v (GND) y 5v. Ejemplo: Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Su valor varía entre 0 y 5 v. la cantidad de valores que pueden leer las entradas analógicas de Ardunio son de 10 bits es decir 1024 valores. De tal modo que 0 = 0 v. y 1023 = 5V. DATOS : el sensor ofrece su información a través de una interfaz de comunicación. La forma de comunicación puede ser por sistemas estándar como I2C o SPI o algunos sensores usan su propio protocolo para codificar la información y debemos realizar desde el software la decodificación correcta para interpretar los datos del sensor (normalmente los desarrolladores de este tipo de sensores ofrecen una librería software para Arduino que hace todo el trabajo). Ejemplo: el sensor DHT11. Por un solo pin envía los datos de temperatura y humedad. Sensores modulares. En  la  actualidad  existen  infinidad  de  sensores  que  los  fabricantes  presentan  en  forma modular.  Esto  hace  que  su  conexión  y  utilización  sea  mucho  más  sencilla  que  la  tradicional, olvidándonos de resistencias, polaridades, cableados,… para su correcto funcionamiento. Sensor pulsador Es un sensor digital, que presenta dos estados; cuando se presiona el botón,  emite  una  señal  de  bajo (0V), cuando suelta el botón, emite una señal de bajo alto (5V).  Datasheet Un ejemplo de uso en el robot mClon   Otra manera más "barata" de sustituir este módulo pulsador es poner un pulsador normal y una resistencia (±10k), al pulsar se produce una entrada en el Arduino, hay dos configuraciones, que al pulsar se emita un 0 lógico (configuración  Pull up ) o que al pulsar emita un 1 lógico (configuración  Pull down )  ¿Por qué hay que poner una resistencia? Lo "normal" es que al pulsar se emita un '1' configuración Pull down , pero hay pulsadores que funcionan Pull up y los llaman lógica invertida , por eso en la programación por bloques podemos encontrar esto: Sensor Táctil Capacitivo.  Este  pequeño  sensor  puede  "sentir"  a  las  personas  y  el  tacto  y  la retroalimentación de metales a un nivel de voltaje alto / bajo. Incluso aislado por alguna tela y papel, todavía puede sentir el tacto. Su sensibilidad disminuye a medida que la  capa de aislamiento se hace más gruesa. En nuestra opinión lo preferimos frente al  Sensor pulsador  pues es muy económico, duradero y fiable. Un ejemplo de uso en Disparo láser en Arduino con ArduinoBlocks Apertura de puerta en Domotica con Arduino Potenciómetro y joystick Un potenciómetro es una resistencia variable, es decir, cambia de valor mecánicamente, lo tenemos en multitud de dispositivos. El joystick es internamente dos potenciómetros con un pulsador integrado en un solo mando. Este sensor es analógico , su salida puede ser cualquier valor entre Vcc y GND (si está en divisor de tensión como en la placa Edubásica no llega a esos valores extremos), por lo tanto hay que conectarlo a una entrada analógica de Arduino y como cualquier entrada analógica, proporcionará valores entre 0 y 1023. Ejemplos de uso: Arduino con código: Mapeo del potenciómetro Arduino con código: Regular la luz con potenciómetro Arduinoblocks en el aula En Arduino con Echidna , con joystick Domótica con Arduino con joystick  Sensor Fotocélula LDR.  El  uso  de  fotocélulas  es  muy  común  en  nuestras  vidas,  las  encontramos  en  el  encendido automático de  farolas, apertura de  puertas,…  La  fotocélula  es un  semiconductor. Es  ampliamente utilizado  en  campos  de  interruptores  de  control  automático  como cámaras,  luces  solares  de  jardín,  lámparas  de césped,  detectores  de  dinero,  relojes  de cuarzo, tazas de música, cajas de regalo, mini luces  nocturnas,  interruptores  de  control  de luz y sonido, etc.   Es un sensor analógico dando valores entre 0 y 5V y como entrada analógica de un Arduino se traduce en un rango de 0 a 1023 valores.  Un ejemplos de uso : el interruptor crepuscular del curso Arduino con ArduinoBlocks Medir la luz en Rover con Arduino Medir la oscuridad en Arduino con mBlock Hinchar un balón en Arduino con mBlock Una manera más económica de montar este sensor es utilizar una resistencia y un LDR: El LDR cuando más oscuridad, más resistencia En una configuración PULL DOWN, cuanto más luz, la resistencia del LDR baja, por lo tanto más tensión en A6 Los módulos LDR que se venden suelen esta configuración Pull down, es decir, cuanto más luz,  más tensión: La instrucción con Arduinoblocks ya cuenta con esta configuración Pull downUp de que cuando más luz, más valor tiene la entrada analógica. Hay módulos LDR ya montados,  que tienen componentes activos  es decir, llevan circuitos electrónicos, transistores que amplifican etc... y dan la salida  digital  con un potenciómetro para definir el rango de luz que cambia de estado lógico. Puedes ver en la figura que tiene una salida digital D0 . O hay algunos que tienen 4 pines como en la figura que ofrecen las dos cosas: salida analógica A0 y digital D0 . Nosotros aconsejamos el divisor de tensión por tres razones: más barato, no implica gran circuitería y es visible su funcionamiento frente a estos encapsulados. Sensor de Ultrasonidos. Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. No es un sensor preciso , con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC     Trig (Disparo del ultrasonido)    Echo (Recepción del ultrasonido) y  GND  aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo. La distancia se calcula con esta fórmula: Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2 Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo. Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍 Ejemplos de uso: Alarma en Domótica con Arduino Piano invisible en Arduino con ArduinoBlocks ,  Sensor parking en Arduino con ArduinoBlocks Piano invisible en Arduino con mBlock Sensor parking en Arduino con mBlock Sensor de distancia de ultrasonidos con Picobricks Sensor DHT11 (Temperatura y Humedad). Este sensor de temperatura y humedad DHT11  nos permite determinar las zonas de confort para un rango de temperaturas entre 0ºC y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Una salida digital para dos variables cómo lo hace? Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad (en BCD) y los 16 restantes es la temperatura (en BCD) los 8 restantes son de comprobación Checksum (en binario) como la letra del DNI. Por ejemplo 0100 0111 0000 0011 0001 1001 0000 0000 0001 1000   es 0100 0111 0000 0011 = 47.03% de humedad y 0001 1001 0000 0000 = 19.00ºC y la comprobación es la suma de 4+7+0+3+1+9+0+0=24= 11000 Ejemplos de uso: Medir H y T con Blink en Rover con Arduino Estación meteorológica Arduino con Arduinoblocks Arduinoblocks en el aula SMART HOME con Micro:bit No es un sensor con gran sensibilidad, pero para propósitos educativos cumple sus funciones. Por dentro tiene una resistencia NTC que decrementa su resistencia si aumenta la temperatura. Hay otros que van al revés, los PTC. Tanto los NTC como los PTC se llaman  thermistores.  Para la humedad, mide la capacidad de un condensador que es sensible a la humedad, o sea, un  sensor capacitivo. Tenemos dos opciones comerciales: Encapsulado que lo tienes preparado para conectar la alimentación y leer por el pin de datos, o sin encapsular , que hay que colocar una resistencia de aproximadamente 10k entre Vcc y Data Ejemplo de uso de un DHT11 sin encapsular: Fuente Luis LLamas CC-BY-NC-SA https://www.luisllamas.es/arduino-dht11-dht22/ Si queremos mejorar la sensibilidad, podemos utilizar el DHT22 que es igual pero de color blanco y más caro. Si lo que queremos es sólo la temperatura es mejor utilizar el LM35D que tiene un rango de temperaturas desde 0ºC a 100ºC con una sensibilidad de 2mV/ºC Es un sensor bastante mediocre, si necesitas una precisión el doble, te recomendamos el DHT22 que funciona exáctamente igual pero es de color blanco y más caro ⁓3€. Ver https://www.luisllamas.es/arduino-dht11-dht22/ Sensor IR Es un sensor para distancias cortas hasta 2cm y no da la distancia, simplemente si hay o no hay obstáculo, pero son muy baratos, unos 0.30€. Aquí tienes un ejemplo de evita obstáculos en un rover marciano con Raspberry Para saber más te recomendamos esta página de Luis Llamas IR Sensor Module for Arduino Projects | 3D Model by Veer AI on Sketchfab Sensor llama Este sensor de llama se puede utilizar para detectar fuego u otras luces cuya longitud de onda se encuentra entre 760 nm ~ 1100nm. Un ejemplo de su uso: Alarma por fuego en Domótica con Arduino Sensor de Gas (MQ2). Detecta gases inflamables : GLP, I-butano, propano, metano, alcohol, hidrógeno, humo... con más sensibilidad en algunos que en otros. Siempre detecta el conjunto. Son usados en electrónica de consumo y mercados industriales. Sensibilidad Tiene alta sensibilidad y se puede ajustar girando el potenciómetro. Tiempo de respuesta : Internamente posee un calentador para aumentar su temperatura y que estos gases reaccionen con la resistencia interna que tiene, por lo tanto tardan algo en responder la primera vez que se conectan, incluso horas en algunos modelos. Una vez calentados son rápidos en la respuesta. Tipo de salida : Analógico pero si tiene 4 pines como el de la figura, incorpora un pin digital. Ejemplos de uso: Smart Home Microbit Smart Home ESP32 Sensor de humedad de suelo. Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo. El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.  Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023. Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/arduino-humedad-suelo-fc-28/ Se puede utilizar este sensor para hacer un dispositivo de riego automático, puede detectar si las plantas “tienen sed” y evitar que se marchiten .   La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0V (en el aire) a 2,3V (totalmente sumergido en agua). Smart Agriculture Kit micro:bit Sensor de humedad. Este sensor analógico está diseñado para identificar y detectar la presencia de agua y su cantidad. Puede servir para detectar el nivel de agua, para disparar una alarma en caso de una fuga de agua, también para hacer un limpiapalabrisas automático.... puedes ver un ejemplo de uso en : Curso de Domótica con Arduino Smart Agriculture Kit micro:bit Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos. Sensor de efecto Hall. Este es un sensor de inducción magnética. Detecta los materiales magnéticos dentro de un rango de detección de hasta 3 cm. El  rango de detección y la fuerza del campo magnético son proporcionales. La salida es digital. Sensor Hall.                              Edwin Helber Hall De Desconocido - Popular Science Monthly Volume 64, Dominio público Edwin Helbert Hall  descubrió en 1879 que en presencia de un campo magnético, un conductor que conduzca una corriente se le producía un campo eléctrico porque las cargas eléctricas se desviaban de su trayectoria principal, nuestro sensor simplemente mide ese campo eléctrico: De  Luis Llamas  CC-BY-NC El sensor tiene un led de color rojo que indica que hay una lectura de campo magnético. Un ejemplo de uso lo puedes ver aquí:  medir rocas magnéticas con el Rover con Arduino Sensor inclinación Este sensor funciona al hacerle vibrar, emitiendo una señal digital de todo o nada. El módulo del sensor viene provisto de un potenciómetro para poder regularlo. Sensor de golpe Es un sensor digital que al ser golpeado este sensor envía una señal momentánea. Sensor de pulso cardíaco. Este módulo utiliza un LED infrarrojo (IR) ultrabrillante y un fototransistor para detectar el pulso en el dedo. Principio de funcionamiento: Se debe colocar el dedo entre el LED infrarrojo ultrabrillante (parte superior) mientras que el fototransistor, que queda en el otro lado, recoge la cantidad de luz transmitida. La resistencia del fototransistor variará levemente a medida que la sangre pase a través de su dedo. Sensor de Alcohol. Este sensor de gas analógico MQ-3 es adecuado para detectar alcohol. Se puede usar en un analizador de aliento. También tiene una alta sensibilidad al alcohol y baja sensibilidad a la bencina (éter de petróleo). La sensibilidad se puede ajustar con el potenciómetro. Sensor de CO2 Hay sensores que utilizan el protocolo I2C, este protocolo permite conexiones serie y pueden compartir el mismo cable pues cada elemento tiene una dirección diferente. Esto lo veremos en el Display LCD. Se identifican por los pinen SDA y SCL Resistencia Flex Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k Para utilizar esta resistencia haremos un  DIVISOR DE TENSIÓN  que consistirá en poner dos resistencias en serie y repartirá la tensión total entre 0V y 5V en las dos resistencias,  el punto medio  será un punto que tendrá una tensión variable en función de las dos resistencias, como la es variable, esa tensión es variable y ya tenemos la entrada  analógica : Es decir: La resistencia entre masa GND del ARDUINO (cable negro) y un punto en la placa protoboard ese punto medio conectarlo a una entrada analógica, por ejemplo A0 (cable amarillo) Una resistencia de valor parecida a la Flex de decenas de K entre ese punto y +5V (cable rojo en la foto) Este sensor tiene posibilidades para usarlo en "ropa inteligente". Sensor de movimiento  Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad.  Los sensores PIR  se basan en la medición de la radiación infrarroja . Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piro eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica. En realidad  cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica. De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital. El otro elemento restante para que todo funcione es  la óptica del sensor . Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR. De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma. Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/ Puedes ver ejemplos de uso en robótica en :  Smart Home para Microbit Smart Agriculture Kit para Microbit Más sensibles son los  sensores de microondas . Son un radar que por efecto Doppler pueden captar cualquier objeto en movimiento dentro de un alcance de 5-7 metros en cualquier dirección e independiente de su temperatura. Es un buen sensor para alarmas, activación de luz por presencia..... Para saber más  ver la página de Luis Llamas Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores.  Curiosamente, la gran ventaja técnica de los de microondas es un gran inconveniente para usarlo en el aula , con cualquier movimiento se dispara, luego para clase es mejor el sensor PIR   Esta página esta adaptada de  este enlace.   José Andrés Echevarría @cantabRobots CC-BY-NC-SA. Actuadores Esta página es un repaso rápido de las posibles salidas de los robots NO LEAS TODOS SÓLO LOS QUE TIENE TU ROBOT ¿Qué es un actuador? Un actuador es el nombre genérico que empleamos para cualquier  dispositivo capaz de realizar acciones en el mundo físico y que podremos controlar desde un autómata o procesador como Arduino. En particular, usamos el nombre actuador para los dispositivos que son capaces de generar movimiento.    Luis LLamas CC-BY-NC-SA ACTUADORES                                                                                                    Motores baja potencia Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador. Ejemplo de uso Smart Home para microbit Motores con algo de potencia Si quieres usar un motor para mover unas ruedas, ya pide más corriente, no se puede conectar directamente al la placa (Arduino, esp32 etc..). El de la figura es típico en robótica y lleva reductores dentro para bajar la velocidad : Necesita una alimentación extra, como el LM298N y las pilas., o el B6612FNG o una shield específica. CC-BY-NC  Luis Llamas Ejemplos de uso lo puedes ver en  Curso mClon con nanoArduino con el  B6612FNG  Curso Rover con Arduino con la shield L293D ESP-12E para el NODE MCU que internamente tiene el LM298N Curso Arduino con código con LM298N y también con un transistor Los motores pueden (y deben) de estar conectados a  salidas PWM  de tal manera que se pueda regular la potencia y por lo tanto la velocidad. Servos Un  servo convencional  es un motor donde fijamos el ángulo desde 0º a 180º, pero si queremos una rotación, existen  servos rotatorios  que simplemente tienen su velocidad de rotación controlada Ejemplos de uso de servos: Curso Arduino con código Curso brazo robótico del mClon con nanoArduino Apertura de barrera por ultrasonidos en curso Arduino con ArduinoBlocks Tractor entrando en el corral Arduino con EchidnaShield Apertura de puerta Domótica con Arduino Servo con PicoBrick Apertura ventana y puerta en Smarth Home para microbit Smart Agriculture Kit para micro:bit Relés Un relé es un interruptor activado por un electroimán, lo que permite independizar los circuitos. En el dibujo se ve que el circuito rojo de 220V esta separado del verde, de sólo 1.5V. Pero es el circuito verde que al funcionar, hace que el electroimán mueva el interruptor del relé y encienda la bombilla. El objetivo es que he podido encender una bombilla de 220V sin tocar los 220V peligrosos. En el circuito verde, el interruptor puede ser un Arduino. Experiméntalo en este simulador . Un ejemplo con Arduino en  Luis LLamas Un ejemplo de uso en Picobricks Electroimán El electroimán no se puede conectar directamente, utilizaremos una etapa de potencia, por ejemplo el transistor el  IRF520N que amplifique la señal del Arduino, pues las salidas de Arduino no tienen potencia para mover el electroimán. Para dar esa potencia utilizaremos otra fuente externa, unas pilas: Las conexiones son : SIG del IRF520N a una salida digital por ejemplo D13 VCC del IRF5020N al 5V del ARDUINO Los dos GND del IRF520N a GND del ARDUINO V+ y V- del IRF5020N al solenoide, da igual qué cable pues no tiene polaridad. VIN del IRF520N al VIN del ARDUINO (son los voltios de la pilas) Motor paso a paso Igual que el  electroimán , necesitamos un controlador que nos de la potencia necesaria para mover el motor, el ULN2003 Imagen BY-NC-SA de  Luis Llamas También igual que el electroimán, necesitamos una potencia extra con las pilas: Conexión : Cuatro pines digitales del ARDUINO al IN1,IN2,IN3,IN4 del ULN2003 por ejemplo D10,D11,D12,D13 El conector blanco del ULN2003 al motor paso a paso El (+) del ULN2003 al Vin del ARDUINO El (-) del ULN2003 al GND del ARDUINO La configuración más sencilla es la rotación simple en sentido horario (llamada fase1) : Imagen BY-NC-SA de  Luis Llamas Es decir: Paso IN1=D10 IN2=D11 IN3=D12 IN4=D13 Paso 1 ON OFF OFF OFF Paso 2 OFF ON OFF OFF Paso 3 OFF OFF ON OFF Paso 4 OFF OFF OFF ON Si has entendido este ejemplo serás capaz de realizar las configuraciones que desees. OTRAS SALIDAS                                                                                            No son actuadores pues no representan movimiento pero son también  salidas  del Arduino como los actuadores, luego lo vemos en esta página Buzzer activo Reproduce un tono de una frecuencia determinada por el fabricante cuando recibe un '1' digital. Su conexión es muy simple: GND  a GND y  VCC  a 5V (ojo que están a los dos extremos, marcados en rojo y en negro) OUT  o también señalado como I/O a un pin digital, por ejemplo D13 Ejemplos de uso: Domótica con Arduino:  Apertura puerta con mBlock Domótica con Arduino  Apertura puerta con código Buzzer pasivo La diferencia de un buzzer activo con el pasivo es que el pasivo hay que mandar la onda que se tiene que reproducir, como Arduino no puede reproducir onda puras (senoidales analógicas), se le envía ondas cuadradas con la frecuencia que se pretende reproducir. Como se puede ver en la figura, no tiene elementos auxiliares para reproducir un tono, es simplemente un altavoz. Ejemplos de uso Timbre Arduino con Echidna Arduino blocks en el aula LEDS Y OTROS ELEMENTOS VISUALIZADORES                                              Led normal Un diodo es la unión de dos semiconductores P-N que sólo permite la corriente en un sentido. Un diodo LED es un diodo, que al pasar esta corriente emite una luz. Hay de 3mm y de 5mm de grosor, transparentes, traslúcidos y de colores (realmente son traslúcidos tintados) Tenemos pues que respetar su polaridad para que funcione: Fuente Luis LLamas CC-BY-NC  Encender LED con Arduino Si alimentamos el LED con una tensión inferior a su tensión de polarización directa Vd ±1,4V-3,8V el led no luce. si alimentamos con una tensión superior, la corriente que circula se dispara por lo que se rompe. Conclusión: Hay que poner una resistencia limitante. Para calcularla te recomiendo la página de Luis Llamas    Encender LED con Arduino Aquí puedes ver un ejemplo de semáforo  en el curso Arduino con código Se puede conectar directamente pues las salidas de Arduino tienen una limitación interna de 20mA como en este ejemplo  https://www.youtube.com/watch?v=EFFSLvIF9rY Los LEDS igual que los motores pueden se encendidos o todo o nada con salidas digitales 0 y 1 o salidas PWM de esta manera conseguimos luminosidades medias,  en esta práctica con el potenciómetro  se regula la intensidad de la luz de un LED Led RGB Se trata de un encapsulado que integra 3 leds de los tres colores básicos. Cada color básico se puede regular desde 0 a 255 de intensidad, luego tenemos 16 millones de tonalidades diferentes. Un ejemplo de su uso lo puedes ver en Domótica con Arduino, interruptor crepuscular Intermitente RGB en Arduino con ArduinoBlocks Existen LEDS RGB que se comunican unos a otros, ( ver este ejemplo en el curso mClon ) como las tiras de leds RGB que cambian de color todos simultáneamente. Neopixel La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual podemos tener el control de cada pixel y de cada color, ya sea rojo, verde y azul a través de un solo cable de datos. Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea). Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”. Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad....  A los LED WS2812B también se les denomina NeoPixel Luis Llamas CC-BY-NS-SA https://www.luisllamas.es/arduino-led-rgb-ws2812b/  Smart Home para Microbit con 4 leds RGB Neopixel Smart Home para ESP32 Smart Agriculture Kit micro:bit Láser El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente, si enviamos un 1 emite un rayo láser. Un ejemplo de uso lo puedes ver en la  Alarma por láser en Domótica con Arduino Si quieres saber más de este componente, te recomendamos  esta página de Luis Llamas . Si tienes que comprar uno, es importante que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [ +info ]. El modelo que proponemos es de  1mW , no obstante,  EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS  especialmente con niños. Display LCD Si queremos visualizar datos de forma independiente del ordenador, existen matrices de led que puedes ver en los cursos de mBot o mClon pero lo mejor es una pantalla Liquid Crystal Display y la mejor forma de conectar esta interfaz es en serie utilizando el  protocolo I2C.  Ejemplo de uso : en  Arduino con código Arduinoblocks en el aula Smart Home para Microbit CC-BY-SA  Luis Llamas No confundas Display LCD con  matriz de LEDs , o una OLED Aclarando conceptos: Protocolo I2C                                                                                    Es un protocolo de emitir los datos con sólo dos cables SDA (los datos) y SCL (reloj) y además pueden compartir varios dispositivos SLAVE) para ello la placa Arduino ESP32, microbit... (MASTER) tiene que saber qué dirección tiene cada dispositivo IMPORTANTE : Fuente Luis Llamas ArduinoI2C CC-BY-SA Aclarando conceptos: Lógica invertida                                                                                    Igual que vimos en sensores, con las configuraciones Pull up y Pull down, las salidas de cualquier actuador  PUEDEN SER LÓGICA INVERTIDA,  mira en este NodeMCU (básicamente es un Arduino con wifi, aquí está conectado con el servidor Blynk) como funciona al revés, cuando apretamos, por lo tanto enviamos un uno a la salida,  se apaga la salida  !! Objetivos y contenidos Objetivos Capacidad de desarrollar retos  STEAM  con un amplio nivel educativo: primaria hasta secundaria Retos  STEAM  de nivel principiante con manejo de sensores y actuadores con lenguaje de bloques. Retos  STEAM  de nivel medio medio/avanzado en las comunicaciones Bluetooth . Retos  STEAM  de nivel medio/avanzado con proyectos IoT (Internet de las cosas) Contenidos ¿Qué es Smart Acriculture para micro:bit? Introducción sobre lenguajes, actuadores y sensores Jugando sólo  con la placa micro:bit  con lenguaje por  bloques Makecode Jugando con la  maqueta  y lenguaje por  bloques Makecode Jugando con  Bluetooth Jugando con  IoT Jugando sólo con la micro:bit Software : El entorno de trabajo de MakeCode El punto de partida para el estudio de un lenguaje de programación pasa inevitablemente por los lenguajes gráficos o de bloques que facilitan su estudio al mostrar de forma visual las instrucciones del algoritmo programado. (Morales, 2023) Vamos a utilizar MakeCode  ofrece un entorno integrado, simple e intuitivo de codificación por bloques . Hay que decir que en el entorno de MakeCode también están disponibles los lenguajes Java y Python , con la ventaja de que un programa desarrollado mediante bloques puede ser traducido instantáneamente a cualquiera de los otros dos lenguajes.  Aquí tienes un esquema de dónde se sitúa Makecode, encaja dentro de los programas de bloque se se carga en la placa Para acceder al entorno basta con abrir en un navegador cualquiera el enlace: https://makecode.microbit.org/.  Si nuestro navegador tiene desactivadas las cookies o navega en modo incógnito, aparecerá un mensaje de advertencia: Pulsando sobre el botón de continuar aparecerá la ventana principal de MakeCode. Para iniciar el entorno de programación habremos de pulsar sobre el botón de nuevo proyecto: MakeCode nos pedirá seguidamente dar un nombre cualquiera al proyecto y pulsar el botón de crear , tras lo cual se abrirá la ventana del editor. Entorno Microsoft MakeCode. Captura de pantalla Para trabajar con MakeCode no se requiere registro. No obstante, pulsando sobre el icono de la esquina superior derecha, situado en la barra de herramientas, es posible acceder a MakeCode desde una cuenta de Google o de Microsoft. Esta característica permite guardar en la nube los diseños realizados y acceder a ellos desde cualquier ordenador. Podemos ajustar el  idioma de la interfaz pulsando sobre la rueda dentada de la esquina superior derecha. Están disponibles 33 idiomas, incluyendo el español. El panel de la izquierda representa el anverso de una placa micro:bit. Se trata de un  simulador , que mostrará en tiempo real el efecto del programa en desarrollo. Nótese que no es necesario disponer de una placa real para realizar los primeros pasos en programación con micro:bit. Con el puntero del ratón se puede interactuar con la placa y pulsar sus botones, agitarla o cambiar las condiciones simuladas de luz o de ruido. Por otro lado, los controles situados bajo la placa nos permiten: Apagar o encender el simulador. Reiniciar el simulador, es decir, el programa en ejecución. Entrar en modo de depuración para localizar y solucionar errores. Activar o desactivar el altavoz del ordenador. Tomar una fotografía de la placa. Mostrar el simulador en pantalla completa.  El panel central es una caja de herramientas en forma de menú desplegable con todos los bloques de programación disponibles. Los bloques pueden ser arrastrados directamente con el ratón desde el menú. Cada color del menú se identifica con un tipo de acción o de estructura de control. Por ejemplo, el color verde se reserva para los bloques que permiten ejecutar acciones repetitivas o bucles. La caja de búsqueda colocada sobre el menú desplegable es muy útil para encontrar rápidamente el bloque más adecuado para realizar la acción deseada en cada momento. El panel de la derecha es el área de programación . Aquí se escriben los programas arrastrando y encajando los bloques de código. Cuando se abre el navegador aparecen por defecto dos bloques azules de eventos del  menú básico : Al iniciar , es la estructura que contendrá el algoritmo que será ejecutado por la placa sólo una vez, tras ser encendida o reiniciada. Para siempre , es el bucle que contendrá el algoritmo que se ejecutará indefinidamente, una y otra vez, cuando acabe la ejecución del algoritmo de inicio. Pulsando con el botón derecho del ratón sobre un bloque se desplegará un menú contextual que dará varias opciones, como duplicar, borrar u obtener ayuda sobre el uso del bloque. C Al colocar el puntero del ratón sobre un bloque, el editor mostrará una etiqueta de ayuda con una breve explicación sobre la función del bloque.  https://makecode.microbit.org/reference contiene explicaciones detalladas de los bloques de MakeCode. En la parte inferior de la ventana de MakeCode se dispone la barra de herramientas , con botones para realizar acciones como descargar el programa en un placa micro:bit conectada al ordenador, guardar el programa en nuestro ordenador o en un repositorio en línea, hacer y deshacer y ampliar o reducir la imagen. Nuestro primer programa El primer programa que se realiza cuando se comienza a aprender un nuevo lenguaje consiste casi siempre en presentar un saludo por pantalla . Micro:bit es más original, puesto que propone como primer programa un corazón palpitante . Vamos a combinar el saludo inicial con el corazón. De esta forma ilustraremos el funcionamiento de los bloques de eventos al inicio y para siempre . Se trata de seguir los pasos explicados en la página anterior y crear un programa llamado Hola . Tras la apertura del editor pulsaremos sobre el menú Básico y arrastraremos y encajaremos los bloques para configurar el siguiente programa: Para escribir el texto ¡Hola! basta con hacer clic sobre la caja blanca del bloque  mostrar cadena . De igual forma, los iconos de los bloques mostrar icono y los números de los bloques pausa (ms) pueden seleccionarse pulsando sobre las flechas, acción que despliega menús de selección. Como en el caso de la caja de texto, también puede teclearse directamente el número de milisegundos del bloque pausa (ms) . ¿Qué hace el programa? Cuando se enciende la placa, el  algoritmo de inicio mostrará una vez mediante la matriz de LED la cadena de texto "¡Hola!". Como la pantalla es muy pequeña, micro:bit deslizará el texto horizontalmente, de derecha a izquierda. Seguidamente, el algoritmo principal mostrará en pantalla el icono de un corazón grande y entrará en pausa 500 milisegundos, es decir, medio segundo. Pasado este tiempo, micro:bit mostrará un corazón pequeño y esperará otro medio segundo. Este algoritmo se ejecutará indefinidamente hasta que se apague la placa, se pulse el botón de reinicio o se acaben las pilas. El efecto visual será el de un corazón palpitante . Nada más terminar de colocar el último bloque, el simulador de MakeCode mostrará en pantalla el resultado del programa en ejecución. Para reiniciar el programa hay que pulsar sobre el icono de reinicio, situado justo bajo el dibujo de la placa micro:bit. Cargar el programa en micro:bit Hay que conectar primero la placa al ordenador por medio del cable USB. Después de unos instantes, el sistema operativo, (Linux, Windows o MacOS) reconocerá a la tarjeta micro:bit conectada como si se tratase de una unidad USB con el nombre MICROBIT. La unidad Micro:bit en el escritorio de Linux Mint Si la tarjeta es nueva, llevará cargado de fábrica un programa de demostración que empezará a ejecutarse nada más ser conectada al puerto USB. El programa mostrará mensajes, iconos en movimiento y sonidos y pedirá al usuario que calibre el compás magnético. METODO RÁPIDO: EMPAREJAMIENTO (recomendable) La primera vez que le damos a descargar, nos pide que conectemos la MICRO:BIT La primera vez nos muestra la opción de EMPAREJAR  Nos pregunta por la tarjeta que tiene que estar conectada al USB Una vez emparejado, ya sale la opción de descargar Empieza a cargarse  Y YA ESTA 🥳🥳🥳 La siguiente vez que utilices esa micro:bit automáticamente pasa a descargar de forma muy rápida.  METODO QUE NO FALLA : DESCARGAR COMO ARCHIVO Y COPIAR Y PEGAR EN LA NUEVA UNIDAD USB CREADA Seguidamente hay que pulsar sobre el botón  Descargar , acción que abrirá el diálogo de guardado de archivos del sistema operativo. Bastará con seleccionar la unidad MICROBIT y confirmar la descarga.  Si tienes Vitalinux, te recomendamos visitar https://libros.catedu.es/books/vitalinux-y-robotica/page/r8-microbit Mientras dure la transferencia de datos, el  LED ámbar situado junto al conector USB de micro:bit parpadeará rápidamente , quedando fijo cuando el programa haya sido transferido. La transferencia de archivos a micro:bit lleva algo de tiempo, especialmente si el programa es largo. Tras la transferencia, el programa empezará a ejecutarse inmediatamente sobre la tarjeta micro:bit. La desventaja es que es un método LENTO y no se reduce la velocidad en los siguientes intentos, no como en el método anterior ¿Y ahora qué? Pues simplemente la placa ejecutará el programa cargado cuando se le alimente. Sólo es posible cargar un programa a la vez en micro:bit, por lo que cada nuevo programa se reescribe sobre el anterior. Si se desea que micro:bit funcione desconectado del ordenador, simplemente hay que alimentarlo por medio de la caja de pilas o mediante una batería externa o un cargador USB. El programa se ejecutará de igual forma, pues se encuentra guardado en la memoria de la placa. Retos básicos INDICE DE RETOS EN https://libros.catedu.es/books/microbit-car/chapter/retos-con-microbit Panel LED Jugando con los LED: bloques básicos de código Sensor temperatura Sensor luminosidad y sonido Pulsadores Acelerómetro Brújula Radio Pines entrada y salida Retos avanzados Los tienes en https://libros.catedu.es/books/microbit-car/chapter/retos-avanzados-con-microbit Mejorando el termómetro Aprender con un led la diferencia entre analógico y digital Bloques de entradas: sonómetro, magnetómetro y acelerómetro con una sola línea de código Nivel de burbuja usando el giroscopio Lectura puerto USB por MakeCode o Coolterm Música y sonido con micro:bit Lo tienes en https://libros.catedu.es/books/microbit-car/chapter/musica-y-sonido-con-microbit Una pequeña melodía Grabadora de sonidos Fray Santiago Controles de volumen, tempo y tono Inteligencia artificial Create AI Lo tienes en https://libros.catedu.es/books/microbit-car/chapter/create-ai Qué es CreateAI Es una aplicación web en  a https://createai.microbit.org/ ideada para realizar estos pasos: R... Vestibles Para proyectos con CreateAI es recomendable fijar la micro:bit a una pulsera.  Fuente Ro-botic... Paso 1 Collect data por Bluetooth y 1 micro:bit Si trabajamos con un PC sin bluetooth no puedes usar esta página, mira esta página Conectamos nu... Paso 2 Test model Grabando una acción  Vamos a darle una acción, elegimos un icono, uno nombre y una acción, en es... Paso 3 Code Una vez testeado nuestro modelo pulsamos a Edit in MakeCode AHORA ES NUESTRO MOMENTO DE PROGRA... Sin Bluetooth y 2 micro:bit La idea es utilizar una micro:bit que haga de "puente inalámbrico" utilizando la conexión vía rad... Entendiendo a mi peluche Vamos a a reconocer diferentes gestos de un muñeco peluche. Extraído de https://microbit.org/proj... Más proyectos CreateAI Con el mismo principio de detectar con la AI movimientos con el acelerómetro, se pueden hacer div... Programas básicos con Smart Agriculture Kit OLED Un OLED (Organic light-emitting diode) es un tipo de LED en el que la capa emisiva es está formada por un compuesto orgánico que emite luz en respuesta a la electricidad... ...Las pantallas OLED tienen la ventaja de tener un consumo muy bajo, en torno a 20mA, dado que solo se enciende el pixel necesario y no requieren de backlight. Esto es especialmente interesante en aplicaciones que funcionan con baterías. Además, tienen una mejor visibilidad en ambientes luminosos, como bajo el sol. Aunque el pequeño tamaño de estas pantallas OLED de 0.96” pueden ser un problema para su correcta visualización. Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/conectar-arduino-a-una-pantalla-oled-de-0-96/ La pantalla OLED nos permitirá visualizar variables y mensajes muy fácilmente : Para tener las instrucciones OLED instalaremos la extensión de ELECFREAKS  E instala estas instrucciones En este programa visualiza el nivel de luz (el sensor esta integrado en la placa microbit) en el OLED: Inicializa la pantalla OLED como 128x64 pixeles limpia de anteriores mensajes Enseña la frase (con salto de línea) Enseña frase sin salto de línea Enseña número con salto de línea El resultado: https://makecode.microbit.org/S69148-73800-11713-89082 DHT11 La lectura de este sensor que es doble, lleva un protocolo que lo hemos visto en el apartado de  sensores  por lo que utilizaremos alguna función definida de alguna extensión. La extensión recomendada es la que instala el fabricante ELECFREAKS en la extensión Environment  La instrucción esta un poco escondida Para ver su funcionamiento, vamos a visualizar su valor en la pantalla OLED : https://makecode.microbit.org/S31229-07212-54331-00904 El resultado  RETO que el OLED indique la ZONA DE CONFORT en el que te encuentras: Fuente Federico Coca https://fgcoca.github.io/Guia-de-trabajo-para-microbit/conceptos/dhtxx/   Sonda sumergible DS18B20 El sensor DS18B20 es un sensor barato y, sin embargo, bastante avanzado. Dispone de un rango amplio de medición de -55ºC a +125ºC y una precisión superior a ±0.5°C en el rango –10°C de +85°C. Una de las ventajas del DS18B20 es que se comercializa tanto en un integrado TO-92 como en forma de sonda impermeable, lo que permite realizar mediciones de temperatura en líquidos y gases. Luis LLamas CC-BY-NC-SA https://www.luisllamas.es/temperatura-liquidos-arduino-ds18b20/ Esto nos permite hacer mediciones en agua incluso hirviendo. Recomendamos usar una extensión específica para esta sonda, buscar como DS TEMP Esto nos instala estas dos instrucciones: El siguiente programa: Prepara OLED Esta rutina permite visualizar por el OLED si hay algún error Grabamos en la variable TEMPERATURA el valor que lee la sonda en el P1 Visualizamos el valor https://makecode.microbit.org/S42317-53460-45843-40235 Aquí podemos ver que marca cerca de 90ºC en una infusión: Servo Nos da mucho juego y permite muchos proyectos. El fabricante sólo proporciona uno 😢 ¡¡¡ que sólo cuesta 2€ !! Para utilizarlo  no hace falta ninguna extensión en pines tenemos las instrucciones correspondientes Vamos a hacer un programa para que veas  que sólo puede girar de 0º a 180º Creamos una variable  angulo y al principio le asignamos el valor de 0 por lo tanto obligamos que empiece con ese valor Fijamos el ángulo del servo que esta en el pin P9 al valor de la variable ángulo dentro del bucle para siempre. Una pausa breve de ms  que podemos bajar si queremos que vaya más rápido si la variable ángulo supera los 180 que vuelva a "resetearse" a 0 la variable ángulo se va incrementando de 10 en 10 con otra pausa. Estos valores se pueden cambiar para conseguir la velocidad deseada https://makecode.microbit.org/S99415-22198-23132-97526 RETO: Crear un programa que alimente automáticamente a los animales, mediante una programación semanal, es decir dado una fecha, que se active el servo que abrirá la compuerta del silo durante un tiempo determinado. Solución RETO : Crear un programa que proteja las plantas de la luz directa, es decir si la luz es mayor que un cierto valor, se acive el servo que pondrá una sombra a la planta. Solución Sensor de agua Este tipo de sensores  detectan la presencia de lluvia por la variación de conductividad del sensor al entrar en contacto con el agua.  Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/arduino-lluvia/ Este sensor no tiene protocolo de datos como los otros sensores, se puede leer en bruto el valor de P2 : Inicializamos el OLED Grabamos en una variable nueva AGUA el valor del pin analógico P2 Visualizamos la lectura https://makecode.microbit.org/S42209-00876-15805-47351 RECOMENDADO :Pero los valores que muestran van del 0 al 1024, y mapearlos es dificil pues no es un sensor lineal, una opción es utilizar la función que tiene la extensión IoT, y te da los valores en tanto por cien %.  En este ejemplo se muestra tanto el valor del suelo como el del nivel del agua: https://makecode.microbit.org/S64895-39903-08613-08722 Aquí vemos el resultado Humedad del suelo Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo. El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.  Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023. Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/arduino-humedad-suelo-fc-28/ Te proponemos este sencillo programa para poder calibrar y medir las humedades del suelo : Inicializamos el OLED Grabamos en una variable la lectura del pin P4 Visualizamos en el OLED la lectura Este sensor no tiene protocolo de datos como los otros sensores, puedes usar directamente la lectura del pin 4 : https://makecode.microbit.org/S85526-52667-76006-02288 RECOMENDADO : Pero los valores que muestran van del 0 al 1024, y mapearlos es difícil pues no es un sensor lineal, una opción es utilizar la función que tiene la extensión IoT, y te da los valores en tanto por cien %. En este ejemplo se muestra tanto el valor del suelo como el del nivel del agua: https://makecode.microbit.org/S64895-39903-08613-08722 https://makecode.microbit.org/S64895-39903-08613-08722 RETO : Este sensor junto con el servo pide a gritos un proyecto de riego automático: ¿Te atreves? Led Neopixel Los leds Neopixels son "chulos" cuando hay muchos, pues los datos van pasando de un led a otro y tiene mucho juego pero en este caso el fabricante sólo ha puesto uno 😢 Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea). Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”. Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad....  A los LED WS2812B también se les denomina NeoPixel Luis Llamas CC-BY-NS-SA https://www.luisllamas.es/arduino-led-rgb-ws2812b/ Para utilizar este elemento tenemos que descargarnos la Extensión Neopixel y tendremos las instrucciones adecuadas. Vamos a hacer UNA LUZ CREPUSCULAR PARA LA GRANJA es decir que cuando sea de noche se encienda la luz Inicializamos el led neopixel en el pin P14 con 1 led y formato GRB (se refiere al orden de envío de las instrucciones, primero el green, luego red y luego blue, hay otro formato que es más común el RGB) Si la luz ambiental (detectado por el sensor integrado en la placa micro:bit) es menor que 50 (un valor arbitrario para detectar si es de noche o es de día) Apaga la luz si es de día Enciende la luz si es de noche https://makecode.microbit.org/S47979-61604-21560-37629 Sensor de movimiento PIR Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad.  Los sensores PIR  se basan en la medición de la radiación infrarroja . Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piro eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica. En realidad  cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica. De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital. El otro elemento restante para que todo funcione es  la óptica del sensor . Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR. De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma. Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/ Este sensor no tiene protocolo de datos como los otros sensores, se puede leer en bruto el valor de P2 : Vamos a hacer una alarma sencilla: Inicializamos el OLED Si la lectura del sensor es mayor que 100 (valor arbitrario) es que hay "alguien" Si hay alguien lo visualizo por el OLED sale la palabra INTRUSO y reproduce un tono de alarma Si no hay nadie sale el valor por el OLED sale que no hay nadie una breve pausa para no saturar la placa PROPUESTA: Ajusta el valor arbitrario del paso 2 para que detecte personas pero no animales https://makecode.microbit.org/S47327-01515-95700-67184 Sensor distancia de ultrasonidos Hardware Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. No es un sensor preciso , con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC     Trig (Disparo del ultrasonido)    Echo (Recepción del ultrasonido) y  GND  aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo. La distancia se calcula con esta fórmula: Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2 Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo. Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍 Software La extensión recomendada es la que instala el fabricante ELECFREAKS en la extensión Environment  Y en una sección que pone Octopus Vamos a hacer un programa que visualice las mediciones: Preparamos la OLED En una variable nueva DISTANCIA recoge la medida del sensor que está conectado en el pin P13 visualiza la DISTANCIA en el OLED https://makecode.microbit.org/S66928-56344-60970-73771 En la foto me he colocado a aproximadamente 11cm de los "ojos" Bluetooth BLUETOOTH un poco de teoría ONDAS Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse). Dependen de 3 parámetros principalmente: Amplitud: altura máxima de la onda. Hablando de sonido representaría el volumen. Si nos referimos a una onda eléctrica estaríamos representando normalmente el voltaje. Longitud de onda λ: distancia entre el primer y último punto de un ciclo de la onda (que normalmente se repite en el tiempo). Frecuencia f : Número de veces que la onda repite su ciclo en 1 segundo (se mide en hertzios). Periodo T es simplemente es la inversa de la frecuencia. T=1/f La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda. TRANSMISIÓN INALÁMBRICA: BLUETOOTH.    Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para teléfonos sino para cientos de dispositivos. Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos). Utiliza una parte del espectro electromagnético llamado “ Banda ISM ”, reservado para fines no comerciales de la industria, área científica y medicina. Dentro de esta banda también se encuentran todas las redes WIFI que usamos a diario. En concreto funcionan a 2,4GHz. (Un G son 10 9 ) luego entre FM y Microondas. ¿Sabias que? Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre.  Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar: También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo: Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo. kb = 1.024 b     M = 1.024 k     G = 1.024 M ¿Te atreves a calcularlo … . ? ¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es la longitud de onda? Solución  a)  f = 2.4G b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06 ¿Te atreves a calcularlo...? ¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth? Un vídeo de 7Mb usando versión 2 clase 2 Una imagen de 2.5Mb usando versión 3 clase 1 Un archivo de texto de 240KB usando versión 1.2 clase 1 Solución  1) 7Mb / 3Mbs = 2.3 seg. 2) 2.5Mb / 24Mbs = 0.1 seg. 3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg.  ¿Bluetooth clásico o Bluetooth Low Energy = BLE ? Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos En robótica, el clásico device que utiliza BLE es la Micro:bit . Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth) Por eso a la hora de elegir la APP tienes que tener en cuenta: Si acepta Bluetooth clásico o BLE Que la APP acepte leer datos desde el robot como escribir  o enviar Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal BLUETOOTH extensión en Makecode En Makecode instalaremos la siguiente extensión Entramos en Extensiones Buscamos Bluetooth y elegimos la esta : Nos dirá que es incompatible con la radio, y hay que eliminar la radio y poner Bluetotth, aceptamos : Por si acaso... En Makecode, si vamos a la rueda dentada - Project settings  Hay que tener que cualquiera se puede conectar via Bluetooth Sólo con la microbit: BLUETOOTH programa en Makecode Realizamos un programa que : En inicio se active el servicio UART para el envío y recepción de mensajes, muestra un mensaje del nombre de la micro:bit, ver más abajo Al conectar Bluetooth que muestre un check Al desconectar Bluetooth que muestre X Al recibir datos , hasta # (puede ser otro carácter) que muestre la frase recibida Al presionar el botón A Que muestre un mensaje Que muestre la temperatura ¿Para qué mostrar el nombre de la micro:bit? Para saber a qué micro:bit conectarte. En una clase con muchas micro:bit es importante este dato. El nombre del equipo está en https://makecode.microbit.org/S60585-58735-21378-05922 BLUETOOTH programa Serial Bluetooth Terminal Entramos con el móvil a Google Play e instalamos esta aplicación https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal Tiene la ventaja de Enviar mensajes Recibir mensajes Permitir conexiones BLUETOOTH LE (Low emision)  que es lo que utiliza MICRO:BIT Entramos en Devices y en Bluetooth LE y nos conectamos a la Micro:bit Una vez conectado, podemos: enviar un mensaje, que como hemos definido anteriomente en Makecode tiene que ir entre #  recibir un mensaje, se visuaizará lo que nos envíe la micro:bit que en Makecode lo hemos programado al apretar el botón A Avanzado: BLUETOOTH con App Inventor. Extensiones Descargas e instalación Necesitamos estas extensiones para poder crear una APP que pueda enviar y recibir con nuestra micro:bit Página de descargas https://iot.appinventor.mit.edu/#/ Una vez descargadas, vamos al APP INVENTOR  https://ai2.appinventor.mit.edu y las instalamos en extensiones :   Una vez instaladas, se visualizan como extensiones abajo del menú. Las dos últimas son las que utilizaremos: La extensión Bluetooth tiene diversas funciones que tienes su descripción  aquí (English). Para poder instalarla, vamos al APP INVENTOR https://ai2.appinventor.mit.edu Avanzado: BLUETOOTH App Inventor programa. Sólo con la micro:bit En DESIGNER incorporamos: HorizontalArrangment para que los botones queden alineados horizontalmente Botones Scan Stop Conectar Desconectar Label que dirá el estado de la conexión. Lo llamaremos LabelEstado ListView que lo llamaremos ListBLE donde mostrará los diferentes dispositivos Bluetooth LE que detecta TextBox para poner el texto que queramos a enviar a micro:bit Un botón Enviar el texto anterior Un Label que lo llamaremos LabelTextoRecibido que mostrará el mensaje desde micro:bit Añadimos los elementos de las extensiones que hemos instalado anteriormente Microbit_UART_Simple BluetoothLE En Blocks Cuando escaneemos, que el elemento empiece el escaneado y la lista se vuelva visible, además de que LabelEstado diga que esta escaneando Si ha encontrado un dispositivo, que lo vaya añadiendo a la lista ListBLE Cuando le digamos que pare, simplemente se lo mandamos al dispositivo y LabelEstado lo informa Cuando le demos a conectar, pues conecta con el seleccionado en ListBLE y LabelEstado informa Si conecta, pues LabelEstado informa y ListBLE no es necesaria por lo tanto se oculta, pues entorpece la visión Si queremos desconectar, pues le decimos al elemento BluetoothLE que desconecte Si se ha desconectado (voluntariamente al dar al botón anterior, o involuntariamente pues el dispositivo se ha desconectado, o esta muy lejos... etc) que informe Si apretamos el botón enviar, le enviamos el texto que esta en TextBox entre "#" pues así lo hemos definido en el programa Makecode Si se ha recibido un mensaje, pues que lo visualice, pero primero comprueba que el mensaje no este vacío NOTA el mensaje " message " lo arrastras desde la instrucción " when .." tal y como señala la línea roja basicoBluetoothLE.aia La APP a tu móvil Tienes dos opciones EN VIVO CONNECT - AI COMPANION esta opción es la más rápida, y realmente lo simula a través de la APP INVENTOR. Tienes que tener instalada la APP MIT AI2 COMPANION Se le pasa el código de tu APP a la APP OTRAS OPCIONES Ver https://appinventor.mit.edu/explore/ai2/setup OPCIÓN EN VIVO AI COMPANION Instalas la APP MIT AI2 COMPANION En APP INVENTOR  Y sale un código y un QR asociado al código Abrimos la APP MIT AI2 COMPANION y metemos el código anterior (o lo escaneamos con el QR) En APP INVENTOR verás que sale una barra de progreso enviando tu APP a tu móvil. Cuando termina automáticamente lo ejecuta. A jugar... Ahora con la granja Una vez visto cómo podemos controlar la micro:bit usando Bluetooth, vamos a hacer lo mismo con la granja Empezamos instalando la Extensión Bluetooth que hemos visto en las páginas anteriores También pondremos la Extensión Iot-environment kit de Elecfreak para poder usar la OLED, DHT11 etc.. de la granja tal y como lo hemos trabajado en el capítulo Programas básicos con Smart Agriculture Kit En el bucle Al inicial , inicializamos la OLED , y también inicializamos el Bluetooth  pero aquí el nombre de dispositivo que lo visualice por la OLED que es más cómodo, y así sabemos a qué microbit tenemos que conectarnos si estamos en una clase con muchos: Añadimos el bucle "Al conectar Bluetooth" y " Al desconectar Bluetooth " que también lo hemos visto en las páginas anteriores, pero esta vez le decimos que los mensajes lo visualice por la OLED Vamos a jugar ahora que si detecta agua en el sensor de nivel de agua, que mande un mensaje de inundación : Vamos a jugar más y si aprieto el botón A de la micro:bit que salga un mensaje y además que nos diga la temperatura y la humedad de la granja: No podemos abandonar el reto sin poner comunicación en el otro sentido, es decir de la APP a la granja: Vamos a hacer que si se envía desde la APP #abre# pues que el servo se ponga a 0º y se envía desde la APP #cierra# pues que el servo se mueva a 180º. El servo podría estar unido a una puerta, ventana, a un silo de alimentación.... El proyecto https://makecode.microbit.org/S87280-53966-04815-61300   Y el resultado : ¿Qué es IoT? El Internet de las cosas (Internet of Thing IoT) describe objetos físicos —o grupos de estos— con sensores, capacidad de procesamiento, software y otras tecnologías que se conectan e intercambian datos con otros dispositivos y sistemas a través de internet u otras redes de comunicación.​ El Internet de las cosas se ha considerado un término erróneo porque los dispositivos no necesitan estar conectados a la Internet pública. Sólo necesitan estar conectadas a una red y ser direccionables individualmente Fuente Wikipedia IoT Internet de las cosas CC-BY-SA De Drawed by Wilgengebroed on FlickrTranslated by Prades97 CC BY-SA 3.0 Estamos hablando de dispositivos que se conectan a internet de forma desatendida, por vía hardware (o mejor dicho firmware) a diferencia de un ordenador, tablet o móvil, donde tienes que configurar por software el dispositivo y hay un diálogo entre usuario y dispositivo sobre el uso de Internet (el software solicita tal página web, tales datos etc por voluntad del usuario o por diálogo con el usuario) Aquí los dispositivos están ya configurados de los datos que se comunican. Es decir "conectar y olvidar".  Piensa en la diferencia entre un enchufe inteligente y un ordenador, el primero es lo que se considera dentro de IoT Desventajas : El acceso a Internet de dispositivos caseros puede generar problemas a nivel mundial: - el caso Mirai - aspiradores que nos espían IoT en los cursos de Aularagón Blynk: lo que nos gusta de esta herramienta es que es casi "instantánea" o "síncrona". Esto es imprescindible con ciertos robots como el Rover Marciano con Arduino . Necesitamos que "gire" para evitar un obstáculo, no podemos esperar !!!. Veremos con BLYNK un protocolo que entre el dispositivo electrónico (nuestro robot) y nosotros (en ordenador, en una APP en el móvil) la comunicación es instantánea, gracias a un servidor que hará de intermedio, que puede ser local (BLYNK LEGACY) o en Internet (BLYNK IoT). Blynk legacy es la que se va a trabajar en Rover Marciano con Arduino Arduinoblocks en el aula ESP32 en el aula Blynk IoT es la que se va a trabajar con En ESP32 en el aula En Smart Home ESP32 ThinkSpeak y SmartioSpace Smart Agriculture Kit para Micro:bit MQTT   El emisor envía datos, se almacenan en un servidor, y cuando puede, lo vuelca al cliente. Cliente y emisor pueden ser el dispositivo electrónico y nosotros o viceversa. Veremos que esto es lo que hace el protocolo MQTT y está tremendamente extendido por lo barato y fácil que es. Hace que los servidores no estén tan ocupados, por lo tanto hay varios proveedores que ofrecen este servicio gratuitamente. Hay robots como los que tienen la placa TDR STEAM IMAGINA que envía datos de temperatura, humedad, .. y pueden recibir datos pero no precisan de esta exigencia instantánea como un rover. ESP32 EN EL AULA En Smart Home ESP32 TELEGRAM ESP32 EN EL AULA En Smart Home ESP32 Arduino cloud IoT Arduino Alvik Cyberpi y mBot2 Iot con Cyberpi Conexión Wifi Hardware Para poder utilizar las características IoT necesitamos conectar nuestra Micro:bit a Internet, pero la placa micro:bit no tiene Wifi  para lograrlo se hace con la placa IoT:bit. En la placa tiene un ESP32 (que es una evolución del ESP8266 ) , y podemos ver : El pin de recepción lo tiene en el Pin 8 El pin de transmisión lo hace por el Pin 12 OJO TENEMOS QUE ALIMENTAR LA PLACA pues el ESP32 no se puede alimentar a través de micro:bit.  SOFTWARE Para conectarlo a Internet usaremos una extensión en Makecode IoT environment: Y se nos instalan nuevas instrucciones, nos vamos a fijar en las verdes ESP8266 : Y las utilizamos para poner en el bucle inicio : Establecemos que el ESP32 tiene los pines de recepción y transmisión por los números definidos anteriormente Ponemos el nombre de nuestra wifi y su contraseña (a veces los routers "capan" estas conexiones, por lo que recomendamos usar la conexión compartida, zona wifi o broadcast del móvil) Si no hay conexión (pues no es instantáneo) entramos en un bucle con una cara triste Si se sale del bucle anterior, es que estamos conectados y mostramos cara sonriente Y de paso preparamos la OLED que es muy útil para visualizar variables Definimos OLED 128x64 pixeles Ponemos la OLED en blanco Definimos la ESP32 con los pines de transmisión y recepcción en P8 y P12 Ponemos la clave de la Wifi Mientras no este conectado muestra cara triste Sale del bucle, luego esta conectado, muestra cara contenta Mensaje en la OLED que esta preparado SMARTIO SPACE Que es SMARTIOT Antes se llamaba KidsIoT y está adaptado a los alumnos, ahora se llama https://www.smartiot.space/ Vamos a ver uno ejemplo con la cantidad de luz Podemos hacerlo con  cualquier tipo de sensor ponemos estos dos ejemplos pero puede ser con la humedad, con el nivel de agua, con la distancia, con la temperatura, humedad, sonda, presencia..... Crear cuenta Creamos una cuenta, esto implica que los alumnos tienen que tener un email 😣😠 o que los alumnos utilicen la cuenta del profesor Crear un dispositivo y sus campos Una vez logueados, creamos un dispositivo nuevo  Rellenamos  con el nombre que queramos poner al dispositivo y ponemos tantos campos como queramos, según las variables que queramos visualizar o controlar. Instrucciones en Makecode Para conectarlo a Internet usaremos una extensión en Makecode IoT environment: Y se nos instalan nuevas instrucciones : Visualización de la cantidad de luz Bucle INICIO Ponemos las típicas instrucciones de  Inicio Definimos OLED 128x64 pixeles Ponemos la OLED en blanco Definimos la ESP32 con los pines de transmisión y recepcción en P8 y P12 Ponemos la clave de la Wifi Mientras no este conectado muestra cara triste Sale del bucle, luego esta conectado, muestra cara contenta Mensaje en la OLED que esta preparado Bucle por siempre.. Ponemos estas instrucciones  El TOKEN que puedes ver en la ilustración de más adelante dónde está Comprobamos que estamos conectados Creamos una variable nueva LUZ y le asignamos la lectura del sensor LUZ Determinamos que en SmartIoT el dato1 es la variable LUZ Lo subimos a SmartIoT Enseñamos también la variable LUZ en el OLED Un check para visualizar que se ha subido una pausa para no saturar al servidor Una aspa en el caso de que no estemos conectados Resultado en SMARTIOT Entramos en la web logueados y vemos que muestra una gráfica según la luz que incide a la placa: También puedes ver dónde esta el TOKEN EXPERIMENTA Ahora cambia LUZ POR CUALQUIER OTRO SENSOR Y MIRA LOS CAMBIOS EN SMARTIOT ThingSpeak ThingSpeak: Cuenta, canal y API KEY Creamos una cuenta en https://thingspeak.mathworks.com/ CREAR CANAL Una vez que hemos creado la cuenta ThingSpeak le damos a crear canal Y rellenamos los campos, un nombre y que campos tendrá por ejemplo si queremos visualizar dos variables temperatura y humedad : Field 1 temperatura Field 2 humedad Etc.. Y nos queda algo así API KEY Es importante este dato, está en la pestaña “API Keys”. Write API Key : código identificativo para enviar los datos. PUBLICO Por último haz el canal público Vamos a ver unos ejemplos Temperatura y humedad con el DHT11 Temperatura con la sonda DS18B20 Podemos hacerlo con  cualquier tipo de sensor ponemos estos dos ejemplos pero puede ser con la humedad, con el nivel de agua, con la distancia, con la luz, presencia..... Visualizar temperatura y humedad del DHT11por thinkspeak Realizamos un programa que: Inicializamos y conectamos a la Wifi como hemos visto Nos conectamos a Thingspeak Una pausa de 2 segundos Si estamos conectados a Thingspeak pues procedemos a: Leemos los datos de temperatura y humedad y lo almacenamos en unas variables nuevas llamadas TEMPERATURA y HUMEDAD Hacemos una comprobación de que se cumplan las siguientes condiciones, que temperatura sea mayor de - 30 y la humedad mayor que 0. Esto es debido a que el sensor DHT11 frecuentemente da errores y los valores que devuelve son -999 y 0. Con esta comprobación nos aseguramos que los valores leídos son correctos Grabo por el canal que he creado de Thinkspeak dos campos, el primero la temperatura, y el segundo la humedad IMPORTANTE HAY QUE PONER EL API KEY DE ESCRITURA Subo a Thinkspeak muestro un check https://makecode.microbit.org/S21198-38927-33091-18971 el resultado lo puedes ver en https://thingspeak.mathworks.com/channels/1700342 SONDA DS18B20 Vamos a ver otro ejemplo, en este caso lo visualiza por el OLED y lo envía a Thingspeak para ver la evolución, vamos a poner una taza de agua caliente, la sonda conectada al Pin 1 : El programa: Inicializamos el OLED Inicializamos y conectamos la Wifi Si hay error en la sonda que lo visualice Conectamos a Thingspeak Si estamos conectados, almacenamos en una variable nueva TEMPERATURA la lectura de la sonda DS18B20 lo asociamos al campo 1 de nuestro canal lo subimos al servidor lo visualizamos en el oled y mostrar un check Proyecto https://makecode.microbit.org/S52558-17116-07305-38404   POR QUÉ SE UTILIZA UNA TAZA PARA DESAYUNAR VELOCIDAD DE TRANSFERENCIA DE CALOR Igual que velocidad es espacio partido por tiempo. La velocidad de transferencia de calor es  v = Q / t Q es el calor transmitido en calorias v la velocidad de transmisión de calor en cal/seg t es el tiempo en segundos Si un material tiene una velocidad de transmisión de calor muy alta, (por ejemplo los metales) es mal aislante y si es muy baja es que es buen aislante del calor. El calor se puede medir con la fórmula Q = m cesp (Tf - To) m masa en gr que en el caso del agua pondremos la mitad de una taza o un vaso, luego aproximadamente son 100ml que son aproximadamente 100 gr Tf la temperatura final en ºC To la temperatura inicial en ºC cesp calor específico que en el caso del agua es 1 cal/gr ºC PONEMOS UNA TAZA A  la mitad de agua, bien caliente, y con la sonda DSB18 y Thingspeak y medimos : El resultado fue: Podemos también exportar como CSV los datos y en un fichero excell importarlos como texto, delimitado por coma y espacios Y obtenemos las medidas:  16 minutos con 32 segundos son 992 segundos Calculamos el calor Q = m cesp (Tf - To) = 100 * 1 * 22.4616= 2246.16 calorías perdidas  Calculamos la velocidad de transferencia de calor v = Q / t = 2246.16 / 992= 2.26 cal/seg PONEMOS UN VASO DE CRISTAL La misma cantidad de agua (la vertemos en un vaso), bien caliente, y con la sonda DSB18 y Thingspeak y medimos : y hacemos igual, el resultado es: 15 minutos con 37 segundos son 937 segundos Calculamos el calor Q = m cesp (Tf - To) = 100 * 1 * 31.9375 = 3193.75 calorías perdidas  Calculamos la velocidad de transferencia de calor v = Q / t = 3193.75/ 937 = 3.41 cal/seg CONCLUSIÓN Pues que si utilizamos un vaso, perdemos 1.14 calorías cada segundo que si utilizáramos la taza. Por eso desayunamos con taza y no con vaso de cristal, para que se mantenga los líquidos calientes. AGRADECIMIENTOS a José Francisco Muñoz www.almeribot.com que la idea de este experimento es suya. Libro IoT con micro:bit Reto 1 Humedad del suelo y nivel del agua Enunciado Mostrar en la pantalla OLED la temperatura y la humedad del aire, el nivel de humedad del suelo y el nivel del depósito de agua Solución Para la humedad y temperatura del aire vamos a Octopus y cogemos las funciones correspondientes. Para la humedad del suelo y el nivel del agua también vimos que en esa extensión, hay funciones que te da los valores en tanto por cien %.  https://makecode.microbit.org/S64895-39903-08613-08722 Reto2 Riego automático Enunciado RIEGO AUTOMÁTICO realizar un programa que detecte la humedad del suelo, y cuando llegue a cierto margen de "sequía", por ejemplo el 30% de humedad que active el servo para regar. El servo vuelve a su posición cuando el detecto de humedad vuelve a recuperar la humedad desesada. Mecanismo de riego Solución 1 cutre con una pajita Venga, ya lo sé, es chapucero, pero funciona 👿👿👿:   RIEGO AUTOMÁTICO este vídeo es una propuesta de hacerlo realidad, con una simple pajita y algo de maña: Solución 2 Con palitos, hacer una acequia casera Esta solución es la que idearon en el CRIET CALAMOCHA: Solución 3 Más profesional Si se quiere hacer más "profesional" el servo que active un interruptor de la motobomba, una sencilla cuesta 1€ y con unos tubos de 0.60€ apañao:  Fuente Adaptado de ElecFreaks  https://wiki.elecfreaks.com/en/microbit/wisdom-life/microbit-smart-home-kit/smart_home_case_05/?highlight=water PROGRAMA Vamos a utilizar el programa anterior y crear una función de la visualización de datos de la humedad y del agua con todo ese código para que "no moleste" Vamos a crear una condición, si la humedad del suelo es menor del 30% pues que mueva arriba y abajo el servo : https://makecode.microbit.org/S58732-03354-26551-26627 Reto 3 Alarma depósito vacío Enunciado En este caso vamos a añadir al programa anterior que suene una alarma si el depósito se queda vacío. La alarma puede consistir en parpadeo rojo del led neopixel y alternancia de tono agudo y grave Solución Llevamos el riego automático a una función Añadimos una función de lógica si el depósito esta bajo al 10% que haga la alarma, en caso contrario que el led este verde Recuerda que hay que usar la extensión NEOPIXEL inicializar el strip neopixel al pin 14 y solo un led https://makecode.microbit.org/S17469-80061-38311-73745 Solución mejor ¿Tiene que regar si no hay agua en el depósito? ¿Puedes crear una función Alarma para "limpiar el código" ? Como puedes ver ahora la función RIEGOAUTOMATICO esta dentro de la condición de que el depósito esta lleno Y hemos creado una función ALARMA para que le código quede más "limpio" Reto 4 Intruso Estamos hartos que los jabalíes vengan a estropearnos la cosecha, vamos a asustarlos si se acercan Enunciado Si se acerca un objeto a menos de 20 cm a nuestra cosecha, que suene la alarma Solución Añadimos una variable DISTANCIA y lo ponemos en la función de vissualizar y el resto de programa es MUY SENCILLO PUES APROVECHAMOS LA FUNCIÓN ALARMA AQUÍ PODEMOS APROVECHAR PARA ENFATIZAR EL VALOR DE REUTILIZAR CÓDIGO https://makecode.microbit.org/S51550-75797-73915-29343 Reto 5 Mejorando intrusos Enunciado El sensor de ultrasonidos es un pesado, da falsas alarmas, añade el sensor PIR para quitarlas. Solución 1 ver, https://wiki.elecfreaks.com/en/microbit/wisdom-life/microbit-smart-agriculture-kit/microbit-Smart-Agriculture-Kit-case-04/ https://makecode.microbit.org/S25361-76721-60771-88083 Solución 2 Aquí se utiliza la función AND  pero en la función VER ya definimos PIR con su valor y lo visualizamos https://makecode.microbit.org/S46838-99630-55860-40869 Reto 6 : Envío por Internet la humedad del suelo Enunciado Queremos visualizar remotamente la humedad del suelo Solución En Smart.io https://www.smartiot.space/    creamos nuestro device y en Field 1 le vamos a decir SUELO tal y como vimos en https://libros.catedu.es/books/smart-agriculture-kit-microbit/page/que-es-smartiot Ponemos un componente, por ejemplo el medidor de aguja y el visualizador de gráfica En el programa, primero al inicio que se conecte a una Wifi Y luego una función que simplemente conecta con el tópico 1 y que si conecta que envíe el Data 1 la variable SUELO que recoge la humedad del suelo El resultado es muy bueno: RETO : PON MÁS CAMPOS A TU DEVICE !!! distancia, humedad, temperatura, ... https://makecode.microbit.org/S30944-15750-08422-29951 Reto 7 Regar a distancia Enunciado Como controlamos a distancia la humedad, podemos decir si regar o no. Hacer un pulsador que por Internet se active el riego Solución Es muy fácil, en Smart IoT añadimos un interruptor Y en el programa añadimos esta instrucción, super fácil Pero para que no se contradiga con el riego automático, hay que cambiar la función de riego automático a este bloque: https://makecode.microbit.org/S90110-41926-70439-69394 Muro Pon aquí ejemplos tuyos o de los demás https://padlet.com/CATEDU/smart-agriculture-kit-para-micro-bit-l5lbmbamv9txumnd Made with Créditos Autores: Javier Quintana Peiró CATEDU 2026 Cualquier observación o detección de error en soporte.catedu.es Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.