Skip to content

Actividad

Sensor de proximidad

Avanzado | MakeCode, Python | Pantalla LED, Radio | Comunicación, Ondas de radio, Operadores aritméticos

Paso 1: Hazlo

¿Qué es?

Usa la radio para detectar cómo de cerca está otro micro:bit y luego haz un juego de búsqueda del tesoro o úsalo para ayudar a la gente a saber que está a una distancia social segura.

Introducción

Guía de codificación

Cómo funciona

  • Necesitas al menos 2 micro:bits para esto. Crearemos dos programas diferentes, uno para la baliza que envía constantemente un mensaje de radio de baja potencia. El otro programa va en el receptor.
  • Cuando el receptor recibe un mensaje de la baliza, guarda su intensidad en una variable llamada signal y la muestra en su pantalla de LED.
  • Las señales de radio se vuelven más fuertes cuanto más cerca está el transmisor, así que si la señal aumenta significa que probablemente el otro micro:bit esté cerca.
  • Si la señal es débil, el otro micro:bit posiblemente esté más lejos.
  • El micro:bit muestra un gráfico de barras que se agranda cuanto más fuerte es la señal y más cerca esté. Utiliza el bloque matemático map para asignar a la intensidad de señal de radio, que va de -95 (débil) a -42 (fuerte), números en el rango de 0 a 9 que son utilizados para dibujar un gráfico de barras.

Versión de Python

  • Python no tiene un gráfico de barras o función de mapa incorporados, así que funciona de una forma algo diferente. Todas las luces LED se encienden cuando te acercas a la baliza, y cuanto más te acerques, más brillan.
  • Las lecturas de la intensidad de radio se obtienen con el comando radio.receive_full() Éste devuelve el mensaje, la intensidad de la señal de radio y una marca de tiempo. Solo nos interesa saber la fuerza de la señal, por lo que utilizamos signal = message[1] para extraerla y almacenarla en la variable llamadasignal.
  • La intensidad de la señal se encuentra en un rango de -98 (más débil) a -45 (más fuerte), y el programa de Python define una función llamada mappara convertir los números en ese rango en unos del 0 al 9 que podemos utilizar para cambiar el brillo de las luces LED: 0 es apagado y 9, el nivel de luz más brillante. (Puede que quieras reutilizar esta función en otros proyectos de Python ya que funciona como el bloque map en MakeCode).
  • El programa de Python crea una imagen en blanco de 5x5 llamada light utilizando el comando light = Image(5,5)
    Su brillo cambia con el comando light.fill().

Lo que necesitas

  • 2 micro:bits con pilas
  • Editor de MakeCode o de Python
  • pilas (opcionales)

Paso 2: Prográmalo

Transmisor / baliza

1from microbit import *
2import radio
3radio.config(group=1, power=1)
4radio.on()
5
6while True:
7    radio.send('1')
8    sleep(200)
9

Receptor

1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9    fromRange = fromMax - fromMin
10    toRange = toMax - toMin
11    valueScaled = float(value - fromMin) / float(fromRange)
12    return toMin + (valueScaled * toRange)
13
14while True:
15    message = radio.receive_full()
16    if message:
17        signal = message[1]
18        brightness = map(signal, -98, -44, 0, 9)
19        light.fill(round(brightness))
20        display.show(light)
21

Paso 3: Mejóralo

  • Combina el código de la baliza y el receptor para tener un micro:bit que cumpla ambas funciones.
  • Fabrica muñequeras para que puedas llevar tus detectores de proximidad.
  • ¿Cómo de fuerte es la señal cuando estás a 1 o dos metros? Modifica el código para que se active una alarma visual o sonora cuando alguien está demasiado cerca.
  • Usa estos programas para crear un juego de búsqueda del tesoro: esconde la baliza y coloca el código receptor en una gran cantidad de micro:bits
  • Si estás al aire libre o en un lugar grande, experimenta cambiando la potencia del transmisor. Puede ser cualquier número del 0 al 7