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, 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 computer 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). 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.

Atmel: ATtiny2313 en Arduino

Seriele programmerVoor nog simpeler (en low-cost) toepassingen kan je ook kijken naar kleine 8-bit embedded processoren/microcontrolers, zoals gemaakt door bijvooorbeeld Atmel (de AVR processoren), Microchip (de PIC's) of NXP (LPC's). Ik gebruik 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). Ook hiermee heb ik wat gewerkt, zie mijn ATtiny2313 paginas. 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.

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 bezig met een robot voor wedstrijden, met name 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 ben 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... Hopelijk komt er nog info over dit project op de EmSE pagina.

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.

Andere embedded systems

Nog wat soms wat verouderde links (naast de gespecialiseerde links op de bovengenoemde pagina's naar de NSLU, de ATtiny, etc) naar embedded systems:

  • Kant-en-klare bordjes met low-cost Atmel processor? Kijk eens op de Arduino paginas; is een uitgebreide gebruikers-community bij. Leuk bordje is bijvoorbeeld de Arduino Duemilanove.
  • Informatie over microcontrollers? Kijk bijvoorbeeld op: ePanorama (algemeen) en EmbDev (Embedded Development), met forums
  • Lichtgewicht met Ethernet: de Rabbit RCM5700 is gebaseerd op een opgevoerde Z80 op 50 MHz, met ethernet en inclusief bijvoorbeeld een web server, om via je browser applicaties op de RCM aan te kunnen sturen. Ook beschikbaar in een draadloze uitvoering RCM5600W (ontwikkelkit op het moment $99)
  • Van Make: de ontwikkelversie van de Chumby, een soort mediaspeler. ARM, 3.5" kleuren-LCD/touch-screen, USB, WiFi, Linux, $99.
  • Het LPC2368 Development Board ziet er ook aardig uit (ARM, Ethernet, USB, A/D-D/A, CAN, $73)
  • Of super-miniatuur: de Picotux Linux-Based RJ45-Sized Computer (ongeveer zo groot als een netwerksteker). Ook in een draadloze versie.
  • Ook de compacte TS-7500 ziet er aardig uit: ARM, Ethernet, USB master/slave, boot Linux in 2 seconds, rond de $100
  • Nog een dan (en er zijn er honderden meer): SBC6000X Single Board Computer, ARM, Ethernet, USB etc, Windows/CE of Linux, $129..$239 (afhankelijk van LCD)
  • Ook zijn er natuurlijk tig apparaten met een ingebouwde embedded processor, nooit bedoeld om zelf te hacken maar toch heel geschikt (en goedkoop), zoals de NSLU2 netwerk file server van Linksys

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.