Embedded systems

Wat zijn 'embedded systems'? We kennen allemaal 'de computer', wat dan vaak een PC of MAC is. Een duidelijk herkenbare kast, met als doel computer te zijn. Maar, er zijn veel meer computers, maar dan verstopt in andere apparaten. Denk aan de besturing van de CV ketel, je draadloze router, je magnetron; in al deze apparaten zitten kleine computertjes die voor de besturing en het display zorgen. De gemiddelde Nederlander heeft meer heel wat meer computers dan alleen de PC's in huis.

Een niet-volledig lijstje van min-of-meer verstopte computers in mijn huis:

UPC modem, draadloze router, PC, DVD-speler, magnetron, CV-ketel, fototoestel, GSM, oven, printer, TV, netwerkdisk, UPC decoder, auto, ...

Dit soort ingebouwde computers noemen we 'embedded systems', met daarin vaak een gespecialiseerde een 'embedded processor' (soms ook wel 'microcontroller'). Vaak veel energie-vriendelijker dan PC's: de processor gebruikt typisch minder dan 1 Watt vergeleken met meer dan 50 Watt in een PC, en meestal geen beeldscherm, en beperkte mogelijkheden: toegesneden op de taak die verricht moet worden. Maar toch, in een aantal gevallen kan je er wel bij, en is het leuk 'speelgoed', ofwel om de mogelijkheden uit te breiden (zoals bij mijn Canon fotokamera), ofwel om heel nieuwe dingen mee te doen.

Ben altijd geïnteresseerd geweest in (embedded) processoren. Al heel vroeg (rond 1980, nog voor de PC) heb ik mijn eerste computersysteem gebouwd (zie mijn zelfbouw-geschiedenis pagina's). Naast de HCC: Hobby Computer Club ben ik ook lid van de EmSE: Stichting Embedded Systems Eindhoven. Ook mijn werk stond in het teken van het ontwerpen van embedded (signaal-) processoren (DSPs), en nu meer algemene embedded processoren. Een paar concrete privé-voorbeelden in mijn geval (ieder met uitgebreidere aparte pagina's met details):Raspberry Pi Logo

De Raspberry Pi

Raspberry Pi, de $25 Linux computer? OK, de zaak ligt iets genuanceerder maar het is toch een heel interessant project. Oorspronkelijk opgezet om kinderen weer in aanraking te laten komen met 'echte computers' in plaats van kant-en-klare kastjes is dit wereldwijd in de belangstelling gekomen als een ideaal low-cost hobby-platform (een vergelijkbaar maar kleiner project is de recentere BBC micro:bit, meer gericht op kinderen).

Begonnen met de allereerste Pi (juli 2012, prototype met nog maar 256Mbyte geheugen) als vervanging voor mijn NSLU2, nu aan het overgaan naar de Raspberry Pi 3 (maart 2016) om toch net wat meer rekenkracht en geheugen te hebben. Maar, echt embedded: staat in de meterkast servertjes te draaien en wordt indien nodig vanaf afstand bestuurd.

Arduino, Atmel en ESP8266

Seriele programmerVoor nog simpeler (en low-cost) toepassingen kan je ook kijken naar kleine 8- of 32-bit embedded processoren/microcontrollers, zoals gemaakt door bijvoorbeeld Atmel (de AVR processoren), Microchip (de PIC's) of NXP (LPC's). Ik gebruik verschillende types: de kleinste is de Atmel ATtiny2313, een 20-pins IC met daarin alles om een (heel klein) embedded systeem te maken. Veel meer dan een 3 tot 5-Volt voeding is er niet nodig (plus natuurlijk dat wat je wilt besturen). Voor voorbeelden en informatie zie mijn ATtiny2313 pagina's.

Wil je niet met een losse chip werken, maar met kant-en-klare bordjes: ik ben ook wat aan het spelen met de Arduino Nano, een handige module met USB-aansluiting die je voor allerlei projectjes in kan zetten. Heeft een ATmega328, dus meer mogelijkheden dan de ATtiny, zoals analoge ingangen en meer geheugen. Zie ook de projectpagina: Besturing voor mijn keramiek-oven met de Arduino Nano.

Daarnaast aan het spelen met verschillende Arduino-compatible Wfif-bordjes met de ESP8266, zoals de WEMOS D1 mini, een 32-bit bordje met de ESP8266, met ingebouwde WiFi. Zie ook de projectpagina: de IoT Energieverklikker, lamp met de ESP8266.

EmSE robot met cola-blikjeStichting Embedded Systems Eindhoven (EmSE)

Ik ben lid van de stichting Embedded Systems Eindhoven, waarvoor hier ook even reclame... Ben daar op het moment met een groepje ooit begonnen met een robot voor wedstrijden, en speciaal een wedstrijd waarbij in een parcours cola-blikjes moeten worden verzameld. We hebben een verrijdbare robot met arm en grijper, en een usb camera voor de navigatie door middel van vision. Zelf was ik daar bezig met de arm-besturing (arm in de zin van ledemaat, niet de arm processor) op basis van intelligente servo's, plus de power-electronics in de base (PWM voor de 12V/1A motoren etc). Dat laatste is toch weer heel wat anders dan het milliWatt-gedoe van de andere topics op deze pagina... Maar dat project is inmiddels verlaten, en zijn met andere dingetjes bezig, zie de agenda.

In het Archief

Enkele pagina's heb ik naar het archief verbannen, zijn ondertussen vervangen door meer recentere systemen. Veel van geleerd, maar tijd om in de geschiedenis te verdwijnen.

Archief: Canon PowerShot A710is

Veel Canon camera's hebben ook firmware die uitgebreid kan worden. Ik heb een simpele en compacte Canon PowerShot A710IS; met daarop de CHDK uitbreiding (RAW formaat; live histogram, scripting, ...). Geen hele pagina hierover, maar wel wat meer info op mijn site, zie CHDK: softwarematig uitbreiden van je Canon camera.

NSLU2Archief: De Linksys NSLU2

De Linksys NSLU2 is van oorsprong een klein kastje om tussen een USB harde schijf en je thuisnetwerk aan te sluiten, zodat je van elke PC er bij kunt. Er zit een vrij krachtige processor in, waar een Linux operating systeem op draait. Meer info op mijn NSLU pagina's. Ik gebruik het nu (naast de netwerkdisk) ook als internet gateway om vanaf het net veilig aan mijn thuisnetwerk te kunnen verbinden, als foto-browser, en nog het een en ander.

De RCM5700 printArchief: Rabbit RCM5700

De Rabbit RCM5700 is een single-board computertje van 3 bij 5 cm. Minder krachtig dan de NSLU2, maar toch krachtig genoeg om bijvoorbeeld een web server te kunnen draaien, om vanaf je PC gebruikersvriendelijk toepassingen aan kunt sturen. Ik gebruik het voor 'home control'-achtige toepassingen. Meer info op mijn Rabbit pagina.

Software (OS, stacks)

Bij lichtgewicht computertjes hoort ook lichtgewicht software...

  • Operating systems/kernels: Mocht je zelf op een microcontroller een real-time kernel of OS nodig hebben: ook hier zijn diverse open-source/freeware alternatieven, zoals FreeRTOS (lichtgewicht) en eCos (incl I²C, TCP/IP stack, etc). Nog lichter (voor Atmel AVR processoren en zo) is Femto-OS (multi-tasking, footprint 2-4 Kbyte flash, 20..40 bytes/task).
  • TCP/IP stacks: Als je zelf op een microcontroller een internet-enabled applicatie wilt maken heb je TCP/IP driver software nodig: een zogeheten stack. Open Source/freeware stacks zijn bijvoorbeeld LWIP, OpenTCP, TinyTCP, uC/IP en uIP (voor kleine micros).
  • Maar, voor iets zwaardere systemen zou ik toch voor een embedded Linux gaan. Vaak meegeleverd, of bij de fabrikant van het bord verkrijgbaar.