Radio

Hvordan vi skal få Microbits til å kommunisere over radio.

Eksperimentet krever følgende utstyr:

Utstyret skal når det er ferdig programmert koples opp slik:

Sendere (MB1,MB2,MB3,MB4)

MicroBit MB1 er programmert slik:

input.onButtonPressed(Button.A, function () {
    led.unplot(1, 2)
    led.plot(1, 1)
    radio.sendString("MB1:A")
})
input.onButtonPressed(Button.B, function () {
    led.unplot(1, 1)
    led.plot(1, 2)
    radio.sendString("MB1:B")
})
radio.setGroup(6)

led.plot() og led.unplot() er lagt inn kun for at vi skal se at microbiten er i live når vi trykker på en av de to knappene (A eller B).

Radioen i Microbit identifiseres med radio.setGroup(id). Vi må vel forstå dette som en frekvens. Vi kan i følge dokumentasjonen velge mellom 256 grupper eller frekvenser. Det er selvsagt nødvendig at senderene MB1..4 bruker samme frekvens (group) som mottageren, se nedenfor.

Maks styrke på radioen er 7 og default er 6. Hva dette innebærer i rekkevidde er avhengig av omgivelsene. Dokumentasjonen antyder maks 70m med god sikt.

Det er tekstkonstantene "MB1:A" og "MB1:B" som identifiserer Microbiten og hvilken knapp som er trykket.

Mottager (MB5)

MB5 tar da imot radiosignaler fra de 4 andre MBene og har kontakt med PCen. MB5 er programmert slik:

radio.onReceivedString(function (receivedString) {
    led.toggle(1, 1)
    serial.redirectToUSB()
    serial.writeLine(receivedString)
})
input.onButtonPressed(Button.A, function () {
    led.toggle(1, 1)
    serial.redirectToUSB()
    serial.writeLine("Hallo")
})
radio.setGroup(6)

input.onButtonpressed() er lagt inn for at vi ett kan se at MB5 er i live, og at vi har kontakt med programmet på datamaskinen.

Processing

Programmet som tar imot signaler fra MB5 over en USB-inngang er skrevet i Processing. Dette er en minimalistisk versjon som ikke gjør annet enn å bekrefte hva som mottas i konsollet uner kodeeditoren.

import processing.serial.*;
Serial port;
/* simple communication test*/

void setup(){
  size(100,100);
  // print available ports
  printArray(Serial.list());
  // index 2 may have to be changed:
  port = new Serial(this, Serial.list()[2], 115200);
  port.bufferUntil(10);
}

void draw(){
  background(255,255,255);
}

void serialEvent(Serial port) {
   String inData = port.readString();
   // write to console
	println(inData.trim());
}

Etablering

Dette kan gjøres enklere enn det som vises nedenfor, men hvis du tar deg bryet med å gjøre det systematisk så har du samtidig en backup som gjør det lettere å finne igjen koden

  1. Opprett en katalog der du kan plassere alle filene, kall den f.eks. radiotst
  2. Opprett følgende filer inn i katalogen:
  3. Lag et nytt prosjekt i MB-editoren som du kaller clicker og kopier koden fra clicker1.js. Du kan editere den i blockkode format eller som JavaScript.
  4. Lagre som microbit-clicker1.hex på den opprettede katalogen (radiotst). Du får autmatisk microbit- prefix og .hex ekstension når du lagrer som clicker1. Ikke lagre direkte på Microbiten.
  5. Gjenta følgende for de tre andre Microbitene: "MB1"-texten endres til hhv. "MB2", "MB3", "MB4", og du lagrer resultatet i den opprettede katalogen (ikke direkte på Microbiten) som hhv. microbit-clicker2.hex, microbit-clicker3.hex, microbit-clicker4.hex
  6. Tilsvarende prosedyre for coordinator. Lag et prosjekt, kopier koden og lagre som microbit-coordinator.hex i katalogen
  7. Da er all koden på plass i din mappe (radiotst) på PC'en. Det som gjenstår er å kopiere koden fra mappa til de 5 microbitene. Ta dem i tur og orden og kople dem til PCen med den usb-kabelen som leveres med Microbit. Microbiten vil manifestere seg som en drive i filutforskeren, typisk D:/microbit. Kopier den riktige hex fila fra din katalog til microbiten.
  8. Da er du klar til kjøre. Kobl opp Microbit 5 med usb, lukk microbit-driven i filutforskeren og start processingskissen(dobbeltklikk på radio.pde).

Problemer?

Websiden Microbit-Processing tar opp noen problemer som kan oppstå når MB5 skal kommunisere med PCen.