sheen.bot-logo

← Insigte

Waarom micro:bit-radioboodskappe ophou opdaag wanneer die hele klas gelyktydig toets

19 Okt. 2026·Sheen Robotics
Waarom micro:bit-radioboodskappe ophou opdaag wanneer die hele klas gelyktydig toets

Wanneer twintig micro:bits op die verstekradiogroep in 'n klaskamer uitsaai, bring pakkiebotsings en oorlaaide ontvangsgeheue jou projek tot stilstand. Hier is hoe om groepe, uitsendingsintervalle en loonvragte vir rotsvaste toetsing te struktureer.

Wanneer twee leerders 'n micro:bit-radioskrip alleen by 'n lessenaar toets, werk dit byna altyd. Wanneer twintig pare dieselfde skrip gelyktydig toets, stort die netwerk in duie: boodskappe daag sekondes laat op, kom met tussenposes deur, of verdwyn heeltemal. Die hardeware is nie stukkend nie, en die skool se Wi-Fi veroorsaak nie steurings nie. Jou klaskamer het reg van voor teen twee fundamentele netwerkknelpunte vasgeloop: onbeperkte fisiese pakkiebotsings en die oorstroming van die ontvangsbuffer.

Die twee onsigbare knelpunte

Om die probleem op te los, moet 'n mens verstaan wat die BBC micro:bit werklik doen wanneer dit die MakeCode-radioblokke uitvoer. Die micro:bit gebruik 'n Nordic Semiconductor-sender-ontvanger (die nRF51 op v1, of nRF52 op v2) wat op die 2,4 GHz-spektrum werk. By verstek funksioneer dit sonder 'n draergolfbespeuringshanddruk (carrier-sensing handshake) of 'n outomatiese herprobeerprotokol.

Wanneer 'n lesskrip 'n micro:bit opdrag gee om 'n sein te stuur, skep dit twee afsonderlike probleme op groot skaal:

  • Lugtydbotsings: As twee micro:bits op presies dieselfde oomblik op dieselfde frekwensieband uitsaai, oorvleuel hul radioseine in die lug. Die ontvangsantenna tel 'n verminkte mengsel van albei transmissies op. Die micro:bit kontroleer die pakkie se sikliese oortolligheidstoets (CRC), ontdek die korrupsie, en gooi die pakkie stilweg weg. Geen foutboodskap word gegee nie; die data verdwyn bloot.
  • RX-bufferuitputting: Die micro:bit se sagteware-looptydomgewing (CODAL / DAL) stoor inkomende radiopakkies in 'n klein hardeware-gesteunde ontvangsbuffer, wat tipies net vier pakkies hou voordat dit na jou gebruikerkode oorgedra word. As vier micro:bits boodskappe stuur terwyl die ontvanger sy 5×5-LED-skerm bywerk of binne 'n pouse-blok wag, word daardie buffer onmiddellik vol. Elke daaropvolgende boodskap wat tydens daardie venster opdaag, word laat vaar.

Die werklike probleem: Die brandslang van die "forever"-lus

In byna elke klaskamer waar dinge skeefloop, is die sondebok 'n beginnerskoderingspatroon wat so lyk:

basic.forever(function () {
    radio.sendNumber(input.acceleration(Dimension.X))
})

Binne 'n standaard-forever-lus sonder enige uitdruklike vertraging, sal 'n micro:bit tussen 30 en 50 pakkies elke enkele sekonde uitsaai. Een paar leerders wat 40 pakkies per sekonde genereer, gebruik 'n beskeie deeltjie van die plaaslike lugtyd. Vermenigvuldig dit met vyftien pare wat gelyktydig in 'n enkele klaskamer werk, en die vertrek word skielik oorstroom met 600 pakkies per sekonde.

Omdat basiese radiokode blindelings versend—wat beteken dat die micro:bit nie wag vir 'n skoon kanaal voordat dit stuur nie, en ook nie vir 'n bevestiging vra nie—waarborg uitsendings teen hoë frekwensie feitlik dat elke transmissie in die lug met 'n ander toestel se pakkie sal bots.

Hoe om betroubare klaskamerradio te struktureer

Om radio-onbetroubaarheid reg te stel, verg nie gevorderde netwerkprotokolle nie. Dit vereis vier basiese koderingsdissiplines in die klaskamer.

1. Moet nooit die verstekradiogroep gebruik nie

Handleidings sê dikwels vir leerders om radio.setGroup(1) te skryf. As die hele klas groep 1 gebruik, verwerk elke ontvanger elke sender se pakkies, selfs al filtreer jy dit later in sagteware. MakeCode ondersteun groepe van 0 tot 255. Ken aan die begin van die kwartaal aan elke lessenaar of paar hul eie permanente groepnommer toe:

  • Paar 1 gebruik radio.setGroup(10)
  • Paar 2 gebruik radio.setGroup(20)
  • Paar 3 gebruik radio.setGroup(30)

Groep-ID's verander die netwerkadreskonfigurasie op die mikroskyfie. Terwyl groepe wat naby mekaar is steeds dieselfde algemene 2,4 GHz-kanaalruimte deel, verhoed filtrering op hardeware-adresvlak dat vreemde pakkies 'n naburige paar se ontvangswagry oorstroom.

2. Verbied onbeperkte lusse

Buiten vir seldsame hoëfrekwensie-fisikatelemetrie is daar feitlik geen skoolprojek wat 50 bywerkings per sekonde benodig nie. 'n Afstandsbeheerde karretjie of kantelbeheerder reageer vlot teen 5 tot 10 bywerkings per sekonde. Dwing 'n uitdruklike pouse binne elke deurlopende uitsendingslus af:

basic.forever(function () {
    radio.sendValue("speed", currentSpeed)
    basic.pause(100) // maksimum 10 pakkies per sekonde
})

Nog beter, beweeg weg van aftasting (polling) na gebeurtenisgedrewe uitsending. 'n Beheerder behoort slegs uit te saai wanneer die gebruiker 'n knoppie druk, verby 'n beduidende drempelwaarde kantel, of 'n hindernis bespeur. As niks verander het nie, behoort die radio stil te bly.

3. Voeg tydsberekening-jitter by

As elke micro:bit in 'n vertrek streng elke 100 millisekondes uitsaai, sinchroniseer hul horlosies uiteindelik in gelid—wat beteken dat twee toestelle herhaaldelik in elke siklus sal bots. Jy kan ritmiese botsings uitskakel deur skynlukrake "jitter" by die lusvertraging te voeg:

basic.pause(100 + Math.randomRange(0, 30))

Hierdie geringe ewekansigheid van 0–30 millisekondes verseker dat selfs as twee toestelle op een raam bots, hul volgende uitsendings uit fase sal val, sodat die pakkies skoon deurkom.

4. Maak jou loonvrag so kompak moontlik

Radiotransmissie neem fisiese tyd; hoe langer die pakkie, hoe groter is die botsingsvenster. MakeCode laat jou toe om lang stringe met radio.sendString("FORWARD_LEFT") te stuur, maar stringe verbruik tientalle grepe. Gebruik eerder heelgetalle of enkelkarakter-waardepare:

Beoogde aksieSwak loonvrag (baie lugtyd)Gedissiplineerde loonvrag (min lugtyd)
Stuurbevelradio.sendString("DRIVE_LEFT")radio.sendNumber(1)
Telemetrie-uitleesradio.sendValue("temperature_c", 24)radio.sendValue("T", 24)
Stopseinradio.sendString("EMERGENCY_STOP")radio.sendNumber(0)

Wat om te doen wanneer die hele klas met een ontvanger moet kommunikeer

In groepstemaktiwiteite of die aanteken van weerstasiedata moet vyftien leerdermicro:bits data na 'n enkele spilpunt-micro:bit stuur. Hierdie argitektuur is veral vatbaar vir bufferineenstorting.

Om dit sonder verlore data te laat werk, keer die kommunikasievloei om: implementeer 'n ondervragingsargitektuur (polling) in plaas van 'n vry-vir-almal-uitsending. Die sentrale spilpunt-micro:bit saai 'n versoek vir 'n spesifieke ID uit (stuur byvoorbeeld die nommer 1). Slegs die leerdertoestel wat as toestel 1 opgestel is, stuur sy loonvrag. Sodra dit ontvang is, roep die spilpunt toestel 2 op. Hierdie beurtelingse struktuur skakel die risiko van botsings heeltemal uit en verseker dat die ontvangende micro:bit nooit meer as een pakkie op 'n slag in sy buffer het wat wag nie.

Vir gestruktureerde programme wat dosyne leerders bestuur wat aan netwerkhardewareprojekte bou, sit Sheen Robotics modulêre kurrikulum- en klaskamerkonfigurasies uiteen deur Infinity for Schools om te help om praktiese hardewarelesse voorspelbaar te laat verloop eerder as om onsigbare spektrumbotsings te probeer ontfout.

#microbit#radio#klaskamerbestuur#koderingsonderrig#foutopsporing

Meer Insigte