Embedded systems

Wat zijn 'embedded systemen'? 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 in huis, maar verstopt in andere apparaten. Denk aan de besturing van de CV ketel, je draadloze router, magnetron, slimme thermostaat: 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 en rond 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. Maar, vaak geen of klein beeldscherm, en beperkte mogelijkheden: toegesneden op de taak die verricht moet worden. Al zitten ze verstopt, soms kan je er wel bij, en is het leuk 'speelgoed', ofwel om de mogelijkheden uit te breiden (zoals bij mijn oude Canon fotokamera, of de Sonoff smart WiFi switch), 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 (plus Pico)

Het Raspberry Pi project is begonnen met de Raspberry Pi 1, de '$35 Linux computer'. Oorspronkelijk opgezet om kinderen weer in aanraking te laten komen met 'echte computers' in plaats van kant-en-klare kastjes is dit project wereldwijd in de belangstelling gekomen, en gegroeid tot een ideaal low-cost hobby-platform.

Zelf begonnen met de allereerste Pi (juli 2012, prototype met nog maar 256Mbyte geheugen) als vervanging voor mijn 'NSLU2' netwerkschijf, overgegaan naar de Raspberry Pi 3 (maart 2016) om toch net wat meer rekenkracht en geheugen te hebben. Echt embedded: staat in de meterkast servertjes te draaien en wordt vanaf afstand via SSH beheerd; er hangt geen scherm aan.

MicroPython in de terminal

Boot, en MicroPython direct op de Raspberry Pico draaiend...

Maar, er is nu (februari 2021) ook de Raspberry Pi Pico!!! Geen Linux, maar een '$4' embedded processor vergelijkbaar met de Arduino Nano (maar dan veel krachtiger). Heb ik nog geen eigen pagina voor gemaakt, komt wel. Heeft een door Raspberry Pi ontworpen RP2040 microcontroller chip met dual-core ARM M0+ op 133 MHz, en dual-core PIO: simpele cores voor allerlei real-time I/O zoals NeoPixel (WS2812) LEDs.

Vandaag binnengekregen en getest: in mijn Ubuntu systeem geprikt (microUSB), MicroPython er op gekopieerd, een terminal window geopend (rechts), en met wat regels Python op de Pico knippert de LED (een onafhankelijke timer-taak; je kan dus ondertussen gewoon verder met Python). Happy! Meer info op de Pico pagina.

Arduino, Atmel en ESP8266

Voor simpele (en low-cost) toepassingen kan je naast de Raspberry Pi Pico ook kijken naar andere kleine 8- of 32-bit embedded processoren/microcontrollers, zoals gemaakt door bijvoorbeeld Microchip (PIC's, of nu ook de eigenaar van de Atmel AVR processoren), of NXP (LPC's). Voor mij zijn dit een soort basis bouwblokjes, niet te vergelijken met een 'grote' Raspberry die meerdere taken voor zijn rekening neemt. Een soort Lego-blokjes, zeg maar, die je combineert met andere blokjes om een taak uit te voeren. Makkelijk te programmeren en te gebruiken, energie-zuinig, maar beperkter in de mogelijkheden.

Arduino Nano
De Arduino Nano module

Ik gebruikte verschillende typen losse processor-chips, met name 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).

Maar tegenwoordig is het makkelijker (en goedkoper) om niet met een losse chip te werken, maar met kant-en-klare bordjes zoals de Arduino Nano, een handige module met USB-aansluiting die je voor allerlei projectjes in kan zetten. Heeft een ATmega328, dus iets meer mogelijkheden dan de ATtiny, zoals analoge ingangen en meer geheugen. Zie ook de projectpaginas, bijvoorbeeld de besturing voor mijn keramiek-oven met de Arduino Nano, mijn retro Sous Vide kookplaat, en mijn Skype4Business mute knop.

Daarnaast aan het spelen met verschillende Arduino-compatible WiFi-bordjes met de ESP8266, zoals de WEMOS D1 mini, een 32-bit bordje met de ESP8266, en de Sonoff WiFi-bestuurde 220V schakelaar. En zie ook mijn projectpagina van mijn IoT Energieverklikker lamp.

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 we 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.