Oplossingen · hoofdstuk 37Embedded systemen en IoT
Een verbonden sensor moet ook op tijd, zuinig en veilig blijven werken
Uitgewerkte oplossingen bij de 11 opdrachten van het werkboek. Voor de leerkracht, en voor wie zichzelf wil verbeteren nadat hij het eerst zelf probeerde.
Een draadloos netwerk verbindt onderdelen met verschillende timing- en energiebehoeften.
Voor de leerkrachtDeze pagina bevat de antwoorden. Druk het werkboek af zonder deze pagina.
Oefenen
Oefenen
één stap, direct toepassen
37.1
Timerwaarde
Oefenen6Rekenen25 min
16 MHz, prescaler 64, compare-teller begint op 0.
a
Bereken ticktijd en comparewaarde voor 2 ms.
Tick=64/16 MHz=4 µs.2 ms/4 µs=500 ticks; comparewaarde 499 als 0 t/m499 geteld worden. Controleer de specifieke timerstand; in een andere modus kan de registerbetekenis verschillen.
37.2
Tellerkwantisatie
Oefenen6Rekenen25 min
53 flanken in 5 s, acht poolparen.
a
Bereken f, n en één-countresolutie. Waarom geen harde overtoerenbeveiliging hiermee?
f=10,6 Hz; n=79,5 tpm; één count=0,2 Hz=1,5 tpm. Het gemiddelde meldt pas na 5 s; snelle overspeed kan eerder ontstaan. Gebruik een apart snel en getest beveiligingspad.
37.3
Qo S en actie
Oefenen6Begrijpen25 min
Een pompstart via Qo S1 komt tweemaal binnen.
a
Wat garandeert Qo S1 en hoe voorkom je een tweede pompbeurt?
Qo S1 staat minstens-eenmaalaflevering toe. De applicatie bewaart request-ID en resultaat; een duplicaat krijgt dezelfde bevestiging en start geen nieuwe actie. De fysieke voltooide actie wordt apart bevestigd. Alleen sequence per MQTT-pakket volstaat niet voor een actuatoropdracht.
Toepassen
Toepassen
meerdere stappen, in een context
37.4
Rollover narekenen
Toepassen7Programmeren25 min
laatst=4294967290, nu=14 inuint 32_t.
a
Bereken dt en vergelijk met nu> laatst+periode; geef een test voor een 5 s-venster over rollover.
Modulo 2³² aftrekken geeft 20 ms. Een gewone geordende vergelijking over een tellerwrap is onbetrouwbaar en de som kan zelf wrap veroorzaken. Test starttijd net vóór 2³², bied flanken vóór en na de wrap en roep loop na 5000 ms echte scenariotijd aan; de getelde dt moet 5000 en het toerental identiek blijven.
37.5
UART en taakdeadline
Toepassen7Analyseren25 min
Een taak moet elke 20 ms gereed zijn. Ze print 240 bytes bij 115200bit/s8N1 en rekent 3 ms.
a
Bereken de minimale totale tijd bij blokkerend printen. Ontwerp een begrensde oplossing.
Serialisatie 2400/115200=20,833 ms, plus 3 ms=23,833 ms: deadline gemist. Verlaag payload/ritme, gebruik een begrensde TX-buffer en laat de kritieke taak alleen kopiëren; meet ook kopieertijd en schedulerblokking.
b
Welke nieuwe foutmodus introduceert een buffer?
Een volle buffer vraagt expliciet beleid: oudere niet-kritieke samples laten vallen met teller of opslag uitstellen; alarmen krijgen reserve. Onbegrensd bufferen verschuift het probleem naar geheugenuitputting.
37.6
I²C-golfvorm toetsen
Toepassen7Labo35 min
R=2,2 kΩ, C=500 p F,100kbit/s.
a
Voorspel tᵣ en bepaal of de 1000 ns-grens gehaald wordt. Beschrijf de oscilloscoopmeting en een hersteloptie.
tᵣ=0,8473×2200×500 p F=932 ns, bijna de grens. Meet SDA/SCL tussen 30% en 70% met probes die weinig capaciteit toevoegen; bekijk worst-case bekabeling. Kortere kabel, kleinere geschikte pull-up met voldoende sinkstroom of lokale gateway geeft marge. Nominaal net slagen is geen robuust ontwerp.
Zo wordt dit beoordeeld
meting
30–70%, probe-effect en worst-case kabel.
afweging
Stroom en RC gezamenlijk getoetst.
37.7
Slaap eerlijk begroten
Toepassen7Rekenen25 min
Een knoop gebruikt 120 m A voor 2 s plus reconnect 4 s,0,05 m A gedurende 54 s; batterij 2000 m Ah,80% bruikbaar.
a
Bereken gemiddelde stroom en autonomie; vergelijk met de 2 s-activiteit uit het handboek.
I=(120×6+0,05×54)/60=12,045 m A. Autonomie 1600/12,045=132,84 h=5,53 dagen. Zonder reconnect was 16,47 dagen mogelijk in het rekenmodel. De verbinding kost dus meer dan tweederde van de autonomie. Meet hele bord, kou en regelaarverlies afzonderlijk.
Uitdagen
Uitdagen
transfer, open problemen, leerlijnen combineren
37.8
Een bericht is ongeldige invoer
Uitdagen9Programmeren45 min
Breid bericht_contract.py uit.
a
Ontwerp tests voor ontbrekende sleutel, NaN, oud, duplicaat, herstart en teruglopende sequence. Geef elk verwacht resultaat.
Ontbrekende key→schemafout; temperatuur NaN→getalfout; leeftijd 91 s→oud/bereik; dezelfde(node, boot, seq)→duplicaat/volgorde; nieuwe boot metseq 0 en verse tijd→aanvaard; lagerseq binnenzelfde boot→duplicaat/volgorde. Voeg maximale payload, type van node/boot en kalendertijdmapping toe voordat externe data wordt gebruikt.
b
Wat kan deze offlinevalidator niet bewijzen?
Geen authenticatie, TLS, radioverlies, broker ACL of realistische scheduling. Die vragen integratie-, netwerk- en hardwaretests. De validator neemt reeds geauthenticeerde identiteit aan.
37.9
Netwerkuitval als proef
Uitdagen9Onderzoeken55 min
Wifi wordt 120 min uitgeschakeld terwijl lokale regeling doorgaat.
a
Geef een meetbaar testplan voor lokale deadlines, buffer, replay, veroudering en herstel.
Registreer lokale taakperioden en maxima; geen noodstop of alarm mag broker nodig hebben. Genereer 120 min records, controleer begrensde buffer en tellers voor verlies. De Pi markeert na 90 s centrale telemetrie oud; lokale sensoren blijven bruikbaar volgens hun eigen deadline. Na reconnect worden oude records als archief ingelezen, actuele alarmen blijven voorrang houden en een oud commando wordt geweigerd. Controleer boot-ID/seq na herstart en rapporteer gemiste samples en herstelduur.
Zo wordt dit beoordeeld
lokale plicht
Deadline en veiligheidsactie zonder netwerk.
data
Oud archief en actuele invoer onderscheiden.
37.10
Het sensornet van Habitat
Uitdagen9Habitat75 min
Ontwerp het netwerk voor module, meetkas, luchtknoop en turbine.
a
Teken architectuur met busadressen, voeding en eigenaars; geef MQTT-contract en beveiliging.
Pi host broker; Mega en Uno behouden lokale sturing. Gateways verbinden lokale UART/I²C met wifi; behoud SHT310x44, RTC0x68, INA2260x40/41 per modulebus en ADS11150x48/BME2800x76 op de luchtknoop. Vast gevoede alarmknopen; slaap alleen voor niet-kritieke telemetrie. Qo S1, boot/seq, tijd/kwaliteit,60 s-telemetrie,90 s-leeftijd centraal; commando met ID/verval, geen retained, begrensdsetpoint. Eigencredentials, ACL, TLS-verificatie en update/rollbackmanifest.
b
Geef drie storingstests en objectieve acceptatiecriteria.
Wifi 2 h: lokale deadlines gehaald en oude centrale data binnen 90 s gemarkeerd. Duplicaatbevel: één actie en dezelfdeack. Vreemdecredential: topicpublicatie geweigerd. Aanvullend resetgateway: oudeboot niet als verse volgorde aanvaard, actuele meting herstelt zonder dubbel pompbevel.
Zo wordt dit beoordeeld
architectuur
Voeding, bussen, netwerk en actor-eigenaar zichtbaar.
contract
Eenheid, tijd, kwaliteit, ID en verval.
beveiliging
Identiteit, ACL, TLS en herstel toetsbaar.
37.11
Een verboden retained-start
Uitdagen9Ontwerpen25 min
Een nieuwe subscriber ontvangt een retained bericht 'pomp 120 s'.
a
Analyseer de fout en ontwerp een status/commandoverdeling die reconnect veilig maakt.
Het bericht kan oud zijn en onbedoeld een actie starten. Scheid status-topic(magretained, mettijd/kwaliteit) vancommando-topic(niet retained, ID, verval). De pompcontroller accepteert alleen geauthenticeerde verse aanvragen in geschikte modus, bevestigt aanvaard/weigering en bewaart deduplicatie. Reconnect is geen toestemming om een eerder bevel opnieuw uit te voeren.