Skip to content

Atividade

Detector de proximidade

Avançado | MakeCode, Python | Rádio, Visor LED | Comunicação, Ondas de rádio, Operadores aritméticos

Primeiro passo: o projeto

O que é?

Use a comunicação via rádio no intuito de detectar a proximidade entre micro:bits para ajudar as pessoas a manter o distanciamento social. Além disso, também é possível criar o jogo de caça ao tesouro.

Introdução

Código

Como funciona:

  • Para este projeto, serão necessários pelo menos 2 micro:bits. Por isso, criaremos dois programas diferentes: um para o transmissor (beacon), que envia constantemente uma mensagem de rádio de baixa potência, e outro para o receptor;
  • Quando o receptor detecta uma mensagem do transmissor, a força do sinal é armazenada em uma variável chamada signal (sinal) que a mostra em seu visor LED.
  • Quanto mais perto do transmissor, mais forte é o sinal de rádio. Logo, se o sinal estiver forte, é provável que o outro micro:bit esteja próximo.
  • Se o sinal de rádio estiver fraco, é possível que o outro micro:bit esteja mais distante;
  • É exibido um gráfico de barras que aumentará conforme a proximidade e a força do sinal. Ele utiliza o bloco de matemática (Math) map (mapear) para correlacionar os números da força de sinal, que varia de -95 (fraco) até -42 (forte), ao intervalo que vai de 0 a 9, o qual pode ser usado para se obter o gráfico de barras.

Versão do Python

  • O Python não tem integrado a função gráfico de barras nem a função mapear. Nele o funcionamento é um pouco diferente. Todos os LEDs acendem ao se aproximar do transmissor: quanto mais perto, mais forte é o brilho;
  • Isso é feito por meio da leitura de força de rádio usando o comando radio.receive_full(). A leitura fornece a mensagem, a força do sinal e um registro de data e hora. Queremos apenas saber a força do sinal, então usamos signal = message[1] para extraí-la e armazená-la em uma variável chamada signal;
  • A intensidade do sinal varia de -98 (mais fraco) a -45 (mais forte), então o programa Python define uma função chamada map (mapear) para converter números desse intervalo para o intervalo de 0 a 9, que podemos usar para alterar o brilho dos LEDs: o valor 0 significa desligado e o valor 9 é o mais brilhante que um LED pode ficar. É possível que você queira reutilizar essa função em outros projetos Python, pois ela funciona de maneira muito parecida com o bloco map (mapear) do MakeCode;
  • O programa Python cria uma imagem 5x5 em branco chamada light (luz) usando o comando light = Image(5,5)
    Seu brilho é alterado usando o comandolight.fill();

Itens necessários:

  • Dois micro:bits;
  • Editor MakeCode ou Python;
  • Conjuntos de baterias (opcional).

Segundo passo: é hora de programar

Transmissor / sinalizador

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

Terceiro passo: vamos deixar o código ainda melhor

  • Combine o transmissor e o receptor em um micro:bit para ele realizar as duas tarefas;
  • Faça pulseiras para você poder usar seus detectores de proximidade;
  • Qual é a força do sinal quando você está a 1 ou 2 metros de distância? Modifique o código para acionar um alarme visual ou audível quando alguém estiver muito perto;
  • Use estes programas para fazer um jogo de caça ao tesouro: esconda o sinalizador e coloque o código do receptor em vários micro:bits;
  • Se você estiver em um ambiente externo ou em um espaço amplo, experimente mudar potência do transmissor, que pode ser qualquer número entre 0 e 7.