Een microcontroller netwerk
door Willem Ouwerkerk
'De grote gemene snuffelaar'
Een netwerk bestaat uit minimaal twee met elkaar verbonden computers die met elkaar communiceren via een afgesproken protocol. Op kantoor wordt het veelal gebruikt om belangrijke files centaal op te slaan en de dure laserprinter met elkaar te delen. Dankzij een netwerk kunnen computers hardware en informatie met elkaar delen (ook het internet is een voorbeeld hiervan).
Praten via een protocol
Om een netwerk betrouwbaar te laten functioneren moeten alle aangesloten computers zich aan bepaalde afspraken houden, anders loopt de communicatie fout. Over protocollen zijn boeken vol geschreven, ook zijn er internationaal vele afspraken gemaakt. Twee voorbeelden van zo'n protocol zijn, het TCP/IP protocol dat uw computer gebruikt om met het internet te praten en de I2C bus die in het 'Egel werkboek gebruikt wordt om een microcontroller diverse chips te laten besturen. De informatie wordt in pakketten met een voorgeschreven formaat verstuurd.
In het beschreven voorbeeld is gekozen voor een netwerk met maar een master, als dit niet zo is dan moet het protocol voorzien in een afhandeling van conflicten tussen de master computers. Als het netwerk maar een master kent, dan vinden deze conflicten niet plaats, omdat altijd dezelfde master het netwerk beheert.
Hardware voor een netwerk
Als we microcontrollers een netwerk willen laten vormen moeten we geschikte hardware vinden om de chips met elkaar te kunnen verbinden. Bij chips met een ingebouwde UART (RS232) kan deze unit gebruikt worden om de hardware laag van het netwerk te vormen. De uitgangs pennen genaamd TXD en RXD worden voor de werkelijke verbindingen gebruikt, de UART regelt de omzetting van byte naar bitstroom en vice versa. Hier zijn twee manieren om zo'n netwerk te bouwen:
Een voorbeeld
Er zijn vier sensor units, een motor-regelaar en een 8052 besturingscomputer, deze zes computers worden via een netwerk met elkaar verbonden. De sensoren en de motor-regelaar zijn de slave nodes van het netwerk, de 8052 besturingscomputer is de master. De computers zijn via methode b) (een bus) op elkaar aangesloten en de UART in de microcontrollers wordt gebruikt om de bus te besturen.
Alle vijf de slaves hebben een of meerdere identificatie- nummers. De master activeert een slave door een pakket van een byte over het netwerk te versturen. Dit pakket bevat het slave adres en een opdracht. De geadresseerde slave voert vervolgens deze opdracht uit.
Het lage nibble van elk een byte pakket bevat het slave adres, dit betekent dat er maximaal 16 nodes op de bus aan te sluiten zijn. De hoge nibble bevat data of een commando voor een van de nodes. Adres 0 is een speciaal geval, deze beschrijf ik later. De adressen 1 t/m 4 benaderen de vier sensor nodes, adres 5 t/m 11 benaderen de motor node en adres 12 t/m 15 zijn nog ongebruikt.
Er is een adres waarop alle nodes op reageren, je raad het al, dat is adres 0. Deze wordt gebruikt om te controleren of het netwerk nog in leven is. Als dit adres verzonden wordt door de master dan reageert elke node door een nummer terug te sturen. Door deze getallen bij elkaar op te tellen weet de master of alle nodes hebben gereageerd en nog werken. Hoe werkt een sensor node Als een sensor node geaddresseerd is, bekijkt het de data in het hoge nibble. Drie van de vier bits hiervan hebben een betekenis:
-- L U2 U1
U1 - Zet uitgang 1 aan of uit (hoog is actief),
U2 - Zet uitgang 2 aan of uit (hoog is actief),
L - Lees data van alle sensoren.
Een sensor stuurt na de leesopdracht L een datapakket van vier bytes terug naar de master. De eerste twee bytes zijn de afstand tot een obstakel gemeten door de ultrasoonsensor, het volgende byte de lichtintensiteit op de ingebouwde LDR en de laatste byte is een vlag die aangeeft of de PIR-sensor beweging heeft gedetecteerd.
Epiloog
Dankzij het toegepaste netwerk worden nu 11 sensoren, 2 motoren, 5 lampen, een hoorn en een spraakunit bestuurd en uitgelezen via vier draden (+24V, nul, TXD en RXD). Dit heeft mijn robot genaamd 'De grote gemene snuffelaar' onnoemelijk veel bedrijfszekerder gemaakt en veel eenvoudiger om te bedraden.