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 

2026-02-06 18_06_21-Greenshot image editor.png

E instala estas instrucciones

2026-02-08 00_24_01-WhatsApp.png

En este programa visualiza el nivel de luz (el sensor esta integrado en la placa microbit) en el OLED:

  1. Inicializa la pantalla OLED como 128x64 pixeles
  2. limpia de anteriores mensajes
  3. Enseña la frase (con salto de línea)
  4. Enseña frase sin salto de línea
  5. Enseña número con salto de línea

2026-02-07 23_46_39-Greenshot.png

El resultado:

2026-02-07 23_48_52-WhatsApp.png

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 

2026-02-06 18_06_21-Greenshot image editor.png

La instrucción esta un poco escondida

2026-02-07 22_11_14-Greenshot.png

Para ver su funcionamiento, vamos a visualizar su valor en la pantalla OLED :

2026-02-07 22_13_43-Greenshot.png

https://makecode.microbit.org/S31229-07212-54331-00904

El resultado 

2026-02-07 22_16_10-WhatsApp.png

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

2026-02-08 00_08_57-WhatsApp.png

Esto nos instala estas dos instrucciones:

2026-02-08 00_11_14-C__Users_HP_Downloads_2026-02-08 00_08_57-WhatsApp.png - Greenshot image editor.png

El siguiente programa:

  1. Prepara OLED
  2. Esta rutina permite visualizar por el OLED si hay algún error
  3. Grabamos en la variable TEMPERATURA el valor que lee la sonda en el P1
  4. Visualizamos el valor

2026-02-08 00_18_11-WhatsApp.png

https://makecode.microbit.org/S42317-53460-45843-40235



Aquí podemos ver que marca cerca de 90ºC en una infusión:

2026-02-08 00_18_55-WhatsApp.png

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º

  1. Creamos una variable angulo y al principio le asignamos el valor de 0 por lo tanto obligamos que empiece con ese valor
  2. 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
  3. si la variable ángulo supera los 180 que vuelva a "resetearse" a 0
  4. la variable ángulo se va incrementando de 10 en 10 con otra pausa. Estos valores se pueden cambiar para conseguir la velocidad deseada

2026-02-08 10_41_35-C__Users_HP_Downloads_2026-02-08 10_25_18-WhatsApp.png - Greenshot image editor.png

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/

Para este sensor no utilizaremos ningúna extensión especial, la instrucción lectura de pin analógico correspondiente es suficiente y fiable, no tiene protocolo de datos como los otros sensores :

  1. Inicializamos el OLED
  2. Grabamos en una variable nueva AGUA el valor del pin analógico P2
  3. Visualizamos la lectura

2026-02-08 00_29_18-WhatsApp.png

https://makecode.microbit.org/S42209-00876-15805-47351

Aquí vemos el resultado

2026-02-08 00_35_39-WhatsApp.png

RETO: VISUALIZALO EN FORMA DE TANTO POR CIEN:
La variable analógica va de 0 a 1024 si quieres que visualice valores de 0 a 100 tienes que "mapear" o "cambio de variable" una forma de hacerlo es con la instrucción. (también hay otra de mapear en "Pines").
O de forma casera, con una regla de 3, es decir multiplicarlo por 100/1024
2026-02-08 00_38_34-WhatsApp.png

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 :

  1. Inicializamos el OLED
  2. Grabamos en una variable la lectura del pin P4
  3. Visualizamos en el OLED la lectura

Para este sensor no utilizaremos ningúna extensión especial, la instrucción lectura de pin analógico correspondiente es suficiente y fiable, no tiene protocolo de datos como los otros sensores :

2026-02-08 10_05_17-WhatsApp.png

https://makecode.microbit.org/S85526-52667-76006-02288


2026-02-08 10_08_19-WhatsApp.png

RETO: VISUALIZALO EN FORMA DE TANTO POR CIEN:
La variable analógica va de 0 a 1024 si quieres que visualice valores de 0 a 100 tienes que "mapear" o "cambio de variable" una forma de hacerlo es con la instrucción. (también hay otra de mapear en "Pines").
O de forma casera, con una regla de 3, es decir multiplicarlo por 100/1024
2026-02-08 00_38_34-WhatsApp.png

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

  1. 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)
  2. 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)
  3. Apaga la luz si es de día
  4. Enciende la luz si es de noche

2026-02-08 10_25_18-WhatsApp.png

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.
2026-02-09 12_25_59-Greenshot.png
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.
2026-02-09 12_27_59-Inbox - jjquintana@educa.aragon.es - Mozilla Thunderbird.png
Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/

Para este sensor no utilizaremos ningúna extensión especial, la instrucción lectura de pin analógico correspondiente es suficiente y fiable, no tiene protocolo de datos como los otros sensores :

Vamos a hacer una alarma sencilla:

  1. Inicializamos el OLED
  2. Si la lectura del sensor es mayor que 100 (valor arbitrario) es que hay "alguien"
  3. Si hay alguien
    1. lo visualizo por el OLED
    2. sale la palabra INTRUSO
    3. y reproduce un tono de alarma
  4. Si no hay nadie
    1. sale el valor por el OLED
    2. sale que no hay nadie
  5. una breve pausa para no saturar la placa

2026-02-08 10_53_55-C__Users_HP_Downloads_2026-02-08 10_25_18-WhatsApp.png - Greenshot image editor.png

PROPUESTA: Ajusta el valor arbitrario del paso 2 para que detecte personas pero no animales

https://makecode.microbit.org/S47327-01515-95700-67184

RETO: VISUALIZALO EN FORMA DE TANTO POR CIEN:
La variable analógica va de 0 a 1024 si quieres que visualice valores de 0 a 100 tienes que "mapear" o "cambio de variable" una forma de hacerlo es con la instrucción. (también hay otra de mapear en "Pines").
O de forma casera, con una regla de 3, es decir multiplicarlo por 100/1024
2026-02-08 00_38_34-WhatsApp.png

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 😍
2022-04-14 08_10_43-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png2022-04-14 08_11_21-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png

Software

La extensión recomendada es la que instala el fabricante ELECFREAKS en la extensión Environment 

2026-02-06 18_06_21-Greenshot image editor.png

Y en una sección que pone Octopus

2026-02-08 11_07_48-WhatsApp.png

Vamos a hacer un programa que visualice las mediciones:

  1. Preparamos la OLED
  2. En una variable nueva DISTANCIA recoge la medida del sensor que está conectado en el pin P13
  3. visualiza la DISTANCIA en el OLED

2026-02-08 11_08_48-WhatsApp.png

https://makecode.microbit.org/S66928-56344-60970-73771

En la foto me he colocado a aproximadamente 11cm de los "ojos"

2026-02-08 11_11_43-WhatsApp.png