| embedded en applicatie software |
| |
De software voor het followme project bestaat uit 2 delen. De firmware die in de followme-box draait is verantwoordelijk voor het verwerken van de DMX-informatie. De applicatie op de PC stelt de gebruiker in staat het systeem te bedienen.
De firmware in de box bestaat ook weer uit 2 delen, te weten de firmware voor de ATMega128 processor en de code die draait op de PIC16F87. Beide zijn 8-bit processoren waarbij de Mega128 de voornaamste is en de voornaamste taken binnen het systeem voor haar rekening neemt.
|
| |
 |
ATMega128 |
| De firmware voor deze processor maakt gebruik van het open source besturingssysteem Nut/OS. Dit besturingssysteem wordt door PragmaLab ook in andere embedded projecten toegepast en is betrouwbaar en stabiel gebleken. Nut/OS valt het beste te beschrijven als een semi-realtime OS dat coöperative multithreading ondersteunt. In gewoon nederlands betekent dit dat het systeem in principe geen gegerandeerde responsetijd heeft en dat taken (threads) niet per definitie onderbroken zullen worden door taken met een hogere prioriteit (zoals dat bij het pre-emptive model wel het geval is). Nut/OS komt met een redelijk uitgebreide driver-bibliotheek waardoor het mogelijk is met veel gangbare componenten te communiceren. De ethernetcontroller (RTL8019AS) is daar een voorbeeld van. De reden dat Nut/OS in steeds meer embedded projecten verschijnt is ongetwijfeld de meegeleverde TCP/IP stack met daarbij ondersteuning voor de meest gangbare internetprotocollen, zoals HTTP en FTP, maar ook met ondersteuning voor protocollen als ARP en DHCP. |
| |
Vanwege het coöperative gedrag dat threads vertonen in Nut/OS, worden de tijdkritsche taken allemaal onder interrupt uitgevoerd om voorspelbaar gedrag te verkrijgen. Voor het ontvangen en versturen van de DMX-data (250 KBaud/s) wordt een UART ingezet en verder is de ATMega128 het grootste deel van de tijd bezig met het uitwisselen van data via de netwerkverbinding. Het updaten van teksten op het alfanummerieke LCD (2x16 karakters) hoort ook tot de taken van de Mega128.
Voor het bouwen van de code voor de Mega128 wordt de ImageCraft compiler ingezet. In principe voldoet de GCC-compiler hier ook uitstekend, maar op deze manier wordt ervaring opgedaan met een alternatieve compiler. Hetgeen wellicht van pas kan komen bij volgende projecten. |
 |
 |
|
|
| |
| |
 |
PIC 16F87 |
| Naast de firmware voor de Mega128, wordt ook een klein embedded programma ontwikkeld voor de PIC-processor. Dit houdt niet meer in dan het scannen van een 7-tal toetsen; 5 gewone druktoetsen en 2 druktoetsen die gecombineerd zijn met de encoderwheels. Ook het uitlezen van de encoderwheels zelf gebeurt door de PIC. |
| |
| Om het volgsysteem zo breed mogelijk te kunnen inzetten, is het ook mogelijk de pan-, tilt- en hoogte informatie in te geven via een RC-besturing. Deze, uit de modelbouw afkomstige, besturingen zijn vaak uitgevoerd met een joystick voor de verticale en een joystick voor de horizontale beweging van het vliegtuig. De FM-gemoduleerde data wordt draadloos doorgestuurd naar de ontvangers die in dit geval in de followme-box zijn ingebouwd. De ontvangers sturen normaal gesproken een PWM signaal naar de servomotoren van het modelvliegtuig. In deze toepassing wordt het PWM-signaal (we maken gebruik van 3 verschillende kanalen) aan de PIC aangeboden. De PIC herleidt de stand van de joystick uit het PWM signaal en stuurt deze als pan, tilt en hoogte waardes door naar de Mega128. Ook de data afkomstig van de druktoetsen en de encoderwheels wordt naar de Mega128 gestuurd. Hiervoor wordt een snelle SPI-bus ingezet. |
 |
 |
|
|
| |
| De Mega128 stuurt op haar beurt deze data weer door naar de PC-applicatie zodat daar op het indrukken van toetsen en het draaien aan de encoderwheels gereageerd kan worden. |
| |
 |
 |
PC-applicatie |
|
| Hoewel de Mega128 met z'n 16 MIPS niet echt langzaam te noemen valt, zou hij bij het uitvoeren van het algoritme rekenkracht te kort komen. Aangezien het aantal slaves, en daarmee de uit te rekenen informatie, tot 20 kan oplopen, dient er in het tijdsbestek van 1 DMX-frame heel wat gerekend te worden. Vandaar dat in deze versie gekozen is een PC in te zetten voor het rekenwerk. Maar niet alleen voor het rekenwerk. Wil men met het systeem gaan werken, dan dient er vooraf informatie over de lampen verstrekt te worden aan de followme-box. Dat gebeurt met de PC-applicatie. Zo moet de followme-box bijvoorbeeld weten op welke DMX-kanalen de master- en slave informatie te vinden is. |
| |
| Daartoe worden de lampen die in het volgsysteem mee gaan doen, gepatched in het programma. Patchen wil gewoon zeggen dat met aangeeft welke type lamp mee doet en welk startadres deze heeft. Er zijn honderden verschillende type lampen geschikt om in het volgsysteem te gebruiken. Daarom bevat het followme-programma een uitgebreide bibliotheek van beschikbare lampen. Staat een lamp er niet bij (omdat hij zojuist op de markt gebracht is), dan kan de ontbrekende lamp mbv een simpele editor ingevoerd worden. We noemen dit het aanmaken van een fixture. |
| |
| In het geval van het followme-programma hoeven we slechts een paar eigenschappen van de fixture in te geven: uiteraard op welke kanalen de pan en tilt zitten, op welk kanaal de dimmer zit en op welk kanaal eventueel een iris te vinden is. Ook de iris wordt namelijk vanuit het algoritme meegestuurd, zodat de bundels, voor zover mogelijk natuurlijk, op iedere plek op de toneelvloer even groot zijn. |
 |
 |
|
|
| |
| Als de lampen gepatched zijn, dan dient iedere lamp gekalibreerd te worden. Ook dat gebeurt vanuit het PC-programma. Aan de hand van een stap-voor-stap wizard wordt de gebruiker gevraagd de lamp in kwestie op 4 kalibratie punten te richten en de positie te bevestigen. Pan en tilt worden per lamp, per kalibratie punt bewaard en als de informatie voor alle 4 de punten is ingegeven, zal het kalibratie algoritme haar werk gaan doen. Kalibreren is belangrijk: de nauwkeurigheid waarmee gevolgd kan gaan worden hangt sterk af van de nauwkeurigheid waarmee gekalibreerd werd. |
| |
De kwaliteit van de kalibratie zal per lamp meteen worden weergegeven dmv een kleur: groen, oranje of rood. Bij groen bleef de fout in de kalibratie onder een ingestelde grens. Bij oranje is er twijfel: er kan bij het volgen een ongewenst grote afwijking optreden. Men kan de betreffende lamp opnieuw kalibreren, maar het hoeft niet. Bij rood kon geen geldig resultaat verkregen worden, of lag de fout dermate hoog dat volgen geen zin zou hebben (de bundels zouden elkaar onvoldoende vinden).
Het resultaat van het kalibreren wordt opgeslagen in het programma zodat er maar 1 keer gekalibeerd hoeft te worden. Wanneer men naar een andere ruimte gaat, of in het algemeen, wanneer de lampen die bij het volgen betrokken zijn verhangen worden, dan dienen die lampen opnieuw gekalibreerd te worden. |
 |
 |
|
|
| Bij het richten van de lampen op de kalibratiepunten, kan men de encoderwheels op de followmebox gebruiken. Omdat dit een een karwei is dat met een zekere nauwkeurigheid moet worden uitgevoerd, is het gebruik van de wheels prettiger dan het werken met een joystick of trackball. Met behulp van deze wheels kan men gemakkelijk een enkele stap voor de pan of tilt besturing uitvoeren. Wel zo handig als men het midden van de bundel zo exact op het kalibratiepunt wil richten. Voor het volgen zelf zijn de encoderwheels niet geschikt. |
| |
| Een stap verder is het definiëren van een groep van lampen in het programma. Een lamp kan onderdeel zijn van meerdere groepen. Nu is het mogelijk om de groep aan te klikken en daarna op de trackball control. Alle lampen in de groep zullen elkaar nu volgen. |
| |
| De meest geavanceerde manier om het volgen te starten, is door gebruik te maken van een zogeheten 'actie'. Het aanmaken van een actie houdt in, dat de gebruiker een groep aanwijst en een uitgangspositie bepaalt. |
 |
 |
|
|
| |
| Deze uitgangspositie is het punt op de toneelvloer waar de actie de betrokken lampen naar toe zal sturen indien de actie gestart wordt. Verder kan nog per lamp een dimmerwaarde worden ingegeven en een waarde voor de iris. Op deze manier is een volgactie compleet voor te bereiden. Acties kunnen worden opgeslagen in het programma en iedere voorstelling weer opnieuw gebruikt worden. |
| |
| Naast de hierboven beschreven functies kent het programma nog veel andere opties en mogelijkheden. Momenteel wordt het 'Help'- document geschreven en dit document zal, zodra het compleet genoeg is, op deze pagina ter download worden aangeboden. |
| |
| |
| |
| |
| |
| |