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 usamossignal = 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
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.
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.