Skip to content

Activiteit

Nabijheids baken

Gevorderd | MakeCode, Python | LED scherm, Radio | Communicatie, Radiogolven, Wiskundige operatoren

Stap 1: Maak het

Wat is het?

Gebruik de radio om te zien hoe dichtbij een andere micro:bit is en maak dan een schattenjacht of gebruik het om mensen te helpen te weten te komen of ze op een veilige sociale afstand zijn.

Inleiding

Codeer instructies

Zo werkt het

  • Je hebt hier minstens 2 micro:bits voor nodig. We maken twee verschillende programma's, een voor het baken dat constant een laag-stroom radio bericht stuurt. Het andere programma gaat op de ontvanger.
  • Wanneer de ontvanger een bericht van het baken oppikt, slaat het zijn sterkte op in een variabele genaamd signaal en toont het op zijn LED display.
  • Radio signalen worden sterker naarmate je dichter bij de zender bent, dus als het signaal sterk is, betekent het dat de andere micro:bit waarschijnlijk dicht is.
  • Als het radiosignaal zwak is, is de andere micro:bit waarschijnlijk verder weg.
  • Het geeft een staafdiagram weer dat groter wordt naarmate het signaal sterker is en hoe dichterbij je bent. Het maakt gebruik van de wiskunde kaart blok om de nummers van de radiosignaalsterkte in kaart te brengen van het bereik -95 (zwak) tot -42 (sterk) naar een bereik 0 tot 9 die we kunnen gebruiken om een staafdiagram te tekenen.

Python versie

  • Python heeft geen ingebouwde staafdiagram of kaart functie, dus het werkt een beetje anders. Alle LED's lichten op als je in de buurt van het baken komt, en hoe dichterbij je komt, hoe feller ze gaan branden.
  • Het vereist radio sterkte metingen met behulp van het radio.receive_full() commando. Dit geeft de boodschap, de signaalsterkte en een tijdstempel. We willen alleen de signaalsterkte weten, dus gebruiken we signaal = bericht[1] om dit uit te pakken en op te slaan in een variabele genaamd signal.
  • De signaalsterkte kan zich in het bereik bevinden -98 (zwakste) tot -45 (sterkste), en het Python-programma definieert een functie genaamd kaart om getallen in deze reeks om te zetten naar het bereik 0 - 9 dat we kunnen gebruiken om de helderheid van de LEDs: 0 betekent uit, 9 is het schoonste dat een LED kan zijn. (Je wilt deze functie misschien opnieuw gebruiken in andere Python-projecten, omdat het erg werkt zoals de kaart blok in MakeCode).
  • Het Python programma maakt een lege 5x5-afbeelding met de naam lichtmet het commando licht = Image(5,5) De helderheid ervan wordt gewijzigd met hetcommando light.fill().

Benodigdheden

  • 2 micro:bits en batterij pakketten
  • MakeCode of Python editor
  • batterijpakket (optioneel)

Step 2: Codeer het

Zender / baken

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

Ontvanger

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

Stap 3: Verbeter het

  • Combineer het baken en de ontvangercode zodat je één micro:bit hebt die beide taken uitvoert.
  • Maak polsbandjes zodat je jouw nabijheids detectoren kunt dragen.
  • Hoe sterk is het signaal als je 1 of 2 meter van elkaar verwijderd bent? Pas de code aan om een visueel of hoorbaar alarm te activeren wanneer iemand te dichtbij is.
  • Gebruik deze programma's om een schatkist spel te maken: verberg het baken en zet de ontvanger code op veel micro:bits
  • Als je buiten of in een grote ruimte bent, experimenteer dan door het zendvermogen te veranderen. Het kan elk getal zijn tussen 0 en 7