[raspberry pi & arduino] -...
TRANSCRIPT
2015 2016
Module Computersystemen 3
Pieter-Jan De Groof
[RASPBERRY PI & ARDUINO]
Raspberry Pi & Arduino
Pagina 1 van 22 Pieter-Jan De Groof 10 juni 2016
Inhoud INLEIDING ...........................................................................................................................................2
RASPBERRY PI & ARDUINO / GENUINO ...............................................................................................2
RASPBERRY PI .....................................................................................................................................3
Versies en specificaties. ..................................................................................................................3
Generatie 1 .................................................................................................................................3
Generatie 2 .................................................................................................................................5
Generatie 3 .................................................................................................................................6
Programmeertaal / talen .................................................................................................................8
Python ........................................................................................................................................8
C .................................................................................................................................................8
C++ .............................................................................................................................................9
Java .............................................................................................................................................9
Scratch ........................................................................................................................................9
Ruby ...........................................................................................................................................9
Limieten ........................................................................................................................................ 10
Mogelijkheden .............................................................................................................................. 10
Reden tot succes ........................................................................................................................... 10
Toepassingsgebied ........................................................................................................................ 11
Toekomst ...................................................................................................................................... 11
Arduino (Genuino in Europa) ............................................................................................................ 12
Versies en Specificaties ................................................................................................................. 13
Beginners (entry level) .............................................................................................................. 14
Gevorderden (Extra Features) ................................................................................................... 16
Internet of Things ...................................................................................................................... 17
Programmeren met de Genuino .................................................................................................... 18
Code schrijven ........................................................................................................................... 18
Compileren ............................................................................................................................... 19
Mogelijkheden .............................................................................................................................. 19
Limieten ........................................................................................................................................ 20
Redenen tot succes ....................................................................................................................... 20
Toepassingsgebied ........................................................................................................................ 21
Toekomst ...................................................................................................................................... 21
Besluit .............................................................................................................................................. 22
Raspberry Pi & Arduino
Pagina 2 van 22 Pieter-Jan De Groof 10 juni 2016
INLEIDING
RASPBERRY PI & ARDUINO / GENUINO
Raspberry pi en Arduino / Genuino zijn beiden kleine computertjes die je voor een lage prijs kunt
aanschaffen en je leren om te gaan met programmeren.
Zowel beginners, maar ook experts maken gebruik van deze computertjes voor het maken van
datacentra, mediacentra en andere toepassingen. Maar er zijn toch wel een pak verschillen tussen de
twee, zowel op hardware- als op softwarevlak.
Mijn idee achter dit eindwerk is dan ook het vergelijken van deze twee technologische wondertjes op
verscheidene vlakken zoals de onderdelen & specificaties, de (programmeer)talen, enkele
mogelijkheden en limieten en meer.
We zullen als eerste de Raspberry Pi onderhanden nemen, aangezien ik vertrouwder ben met deze
single-board computer, en minder met Arduino (Genuino in Europa).
Raspberry Pi & Arduino
Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016
RASPBERRY PI
De Raspberry Pi is een serie van single-board computers, niet veel groter dan een credit card,
ontwikkeld in het verenigd koninkrijk door de mensen van het Raspberry Pi Foundation.
Deze organisatie ontstond in 2009 om de studie “Basic Computer Science” te promoten in scholen en
ontwikkelingslanden.
Alle versies van Raspberry Pi hebben dezelfde configuraties dankzij gelicencieerde
productieakkoorden met Newark element14, RS Components en Egoman.
De hardware is altijd dezelfde voor elke producent.
Versies en specificaties.
Er zijn ondertussen al verscheidene versies van de Raspberry Pi:
- De eerste generatie (Pi 1) werd uitgebracht in februari 2012 met twee modellen: Model A en
een Model B, met betere specificaties dan model A.
Een jaar later kwamen ook de modellen A+ en B+ uit.
- Pas in 2015 werd de tweede generatie geïntroduceerd, namelijk de Raspberry Pi 2 Model B,
en in februari 2016 de 3e generatie Model B.
Alle modellen zijn geprijsd tussen US$20 en US$35.
- In april 2014 werd dan de Pi Zero ontwikkeld en uitgebracht in november 2015. Deze zou een
gelimiteerde versie zijn van de vorige modellen, met minder IO- mogelijkheden, maar ook
een kleinere economische voetafdruk. Deze single-board computer zou amper US$5 kosten!
Generatie 1
Model A
De eerste versie van de Raspberry Pi’ computer, uitgebracht
in februari 2012, bevat slechts 256MB, één enkele USB-poort
en geen ethernet-poort. Dit model A heeft een SDHC-slot
voor externe opslagruimte.
Raspberry Pi & Arduino
Pagina 4 van 22 Pieter-Jan De Groof 10 juni 2016
Deze 1e generatie-computers gebruikten allemaal een 700 MHz single-core ARM1176JZF-S
processor, waarbij ARM11 de processorstructuur aanduid. Ook gebruikten ze allemaal een Broadcom
VideoCore IV grafische processor.
Als Operating Systeem draait de 1e generatie op verschillende Linux-based systemen, waarvan de
voornaamste Raspbian is, maar ook RISC OS, FreeBSD, NetBSD, Plan9, Inferno en AROS worden
gebruikt .
Dit model verbruikt slechts 1,5 Watt en de prijs hiervoor was US$20.
Enkele specifieke onderdelen
700 MHz single-core ARM1176JZF-S processor
Deze processor maakt gebruik van de ARM11 microarchitectuur, wat een aantal verbeteringen
voortbracht ten opzichte van de vorige (ARM9) structuur.
Enkele van deze verbeteringen zijn dat de processorcache fysiek adresseerbaar zijn, wat ervoor zorgt
dat cache aliasing problemen veel minder voorkwamen.
Ook zorgt deze structuur ervoor dat de processoren minder hitte genereren, en een lager
oververhittingsrisico hebben.
De grootste update is dat men de pipeline geherstructureerd heeft, zodat processorsnelheden tot
1GHz ondersteunt worden.
SDHC-slot (opslag)
Een datatype dat niet vluchtig is en een bepaalde soort SD-kaartjes kan gebruiken voor dataopslag.
Raspbian
Een gratis operating systeem gebaseerd op Debian (wat dan weer gebaseerd is op de Linuxkernel)
dat geoptimaliseerd is voor de Raspberry Pi’s. Dit kan met of zonder extra paketten gedownload
worden, waarvan er meer dan 35.000 bestaan.
Model B
Dit Model is een upgrade ten opzichte van het model A, met
2x zoveel RAM (512MB), twee USB-poorten en een 100Mb
ethernet-poort. Voor de rest zijn hier geen verbeteringen aan.
Model A+
Deze upgrade van model A heeft een aantal impactvolle upgrades
gekregen.
Ten eerste zijn er meer GPIO pins (40 ipv 26), maar kan je nog altijd
apparaten gebruiken die op de 26 pins aansluiten.
Raspberry Pi & Arduino
Pagina 5 van 22 Pieter-Jan De Groof 10 juni 2016
Ook is er nu een MicroSD slot voor dataopslag, wat veel meer gebruikt wordt dan de oude SDHC. De
energieconsumptie is ook gehalveerd, dankzij switches die 0.5W tot 1W minder verbruiken.
Daarnaast is er oon een beter audiocircuit door middel van een eigen power supply die zelf bijna
geen geluid maakt.
Als laatste is de form factor ook verbeterd. De USB-poorten staan nu gelijk met de rand van het
bordje, de video-aansluiting is omgezet naar een 3.5mm jack, en er zijn gaatjes op de hoeken voor als
je het bord wilt monteren. Daarmee is het A+ model ook 2 cm korter dan zijn voorganger!
Model B+
Dit model kreeg dezelfde GPIO pin upgrade als
Model A+, namelijk 40 in plaats van 26 pins.
Ook een MicroSD slot, lager verbruik, betere audio
én een betere form factor zijn van de partij bij dit
nieuwe model.
Maar de grootste upgrade is dat dit model nu 4 USB2.0 poorten heeft, 2x zoveel als op het model B.
Ook heeft het een betere hotplug en is beter bestand tegen een te hoge stroom.
Generatie 2
Model B, kortweg RPi 2
De RPi2 werd uitgebracht in 2015 en ziet er op het eerste zicht hetzelfde uit als model B+ van de 1e
generatie, maar niets is minder waar.
In plaats van een single core 700MHz processor, gebruikt dit vernieuwde model een 900MHz quad-
core ARM Cortex-A7 CPU en ook het RAM is verdubbeld, deze keer naar 1GB.
Verder heeft dit 2e generatie Model B onder andere weer 4 USB poorten, een full HDMI poort,
3.5mm audio & composiete video jack.
Dankzij de nieuwe processor is het nu ook mogelijk om nieuwe OS’en te draaien, waaronder
Microsoft Windows 10 IoT en het Ubuntu-OS van linux.
Uitleg nieuwe termen:
Windows 10 IoT:
Een versie van Windows 10 die speciaal ontworpen werd voor goedkope apparaten en “Internet of
Things” scenarios.
Raspberry Pi & Arduino
Pagina 6 van 22 Pieter-Jan De Groof 10 juni 2016
IoT scenarios zijn scenarios waarin men het internet van toepassing maakt op alledaagse gebruiken,
zoals een koelkast die je een melding geeft als je opnieuw inkopen moet doen, en je suggesties geeft
over waar deze producten te kopen via het internet.
ARM Cortex-A7 CPU:
De meest efficiente processor qua verbruik en prestaties voor multi-core processoren.
Deze CPUs worden gebruikt voor zowel smartphones die minder dan US$100 kosten, als voor high-
end draagbare apparaten.
Raspberry Pi Zero
De goedkoopste én meest compacte versie van de Raspberry
Pi’s, de RPi Zero is het perfecte cadeau voor een beginnende
programmeur. Voor slechts US$5 is deze computer namelijk
al van u.
Hij bevat een Broadcom BCM2835 application processor, ofwel een 1GHz ARM11 single core
processor (40% sneller dan de processor van de 1e generatie!), 512MB LPDDR2 SDRAM, een MicroSD
slot, een mini-HDMI slot dat 1080p beelden kan verzenden aan 60 beelden per seconde.
Ook zit er 40-pin GPIO op, dezelfde als op model A+, B+ en generatie 2B, een composiet video header
en dat alles op het kleinste moederbord tot nu toe; 65mm x 30mm x 5mm.
Je kan op deze computer programma’s laten lopen zoals Scratch, een programma dat de logica
achter het programmeren speels uitlegt, het spel Minecraft en Sonic Pi.
Generatie 3
Raspberry Pi 3
Zeer recent, nl. op 29 February 2016, werd de eerste computer van de 3e generatie van Raspberry
Pi’s uitgebracht , de RPi 3.
De upgrades die dit model kreeg tegenover het model 2B is
- dat er nu een 1.2GHz 64-bit quad-core ARMv8 CPU in zit,
- dat men via 802.11n draadloos LAN kan connecteren met de RPi 3, Bluetooth 4.1 en
Bluetooth Low Energy (BLE).
Alle andere aspecten zijn niet veranderd.
Raspberry Pi & Arduino
Pagina 7 van 22 Pieter-Jan De Groof 10 juni 2016
Uitleg nieuwe termen
ARMv8 CPU:
De eerste ARM-structuur die 64-bit processoren ondersteunt, met een focus op energie-efficiëntie,
maar dat ook nog altijd kan werken met 32-bit software.
802.11n:
Een draadloze standaard van het Institute of Electrical and Electronics Engineers (IEEE) die de
verwerkingscapaciteit en het bereik aanzienlijk verbeterd t.o.v. oudere 802.11 standaarden.
Bluetooth 4.1:
Een versie van Bluetooth die op 4 december 2013 geïntroduceerd werd, en die er voor zorgde dat
- de performantie verbeterd werd,
- er naar 802.11n-apparaten kon geconnecteerd worden (wat nodig was voor gen. 3 model 3)
- en dat apparaten meerdere rollen tegelijk konden op zich nemen.
Astro Pi
Astro Pi is een project van het UK Space Agency dat
begonnen is in 2014.
De wedstrijd was officieel geopend in januari voor
alle leerlingen van lagere en middelbare scholen in
het Verenigd Koninkrijk.
De Britse ESA astronaut Tim Peake zou de computers op het ISS aansluiten, en tijdens zijn reis door
de ruimte de winnende code uploaden, de gegenereerde data verzamelen en deze terug naar de
aarde sturen, waar ze uitgedeeld werden aan de winnende teams .
Raspberry Pi & Arduino
Pagina 8 van 22 Pieter-Jan De Groof 10 juni 2016
Programmeertaal / talen
De Raspberry Pi’s kunnen gebruik maken van verschillende programmeertalen, waarvan men
aanraad om Python te gebruiken als men het programmeren wilt (aan)leren. Maar eender welke taal
die gecompileerd kan worden door ARMv6 (Pi 1), ARMv7 (Pi 2) of ARMv8 (Pi 3) kan gebruikt worden.
De programmeertalen die standaard geïnstalleerd zijn op de RPi’s zijn Python, C, C++, Java, Scratch
en Ruby.
Python
Als meest aangeraden programmeertaal voor beginnende programmeurs,
staat deze high-level geïnterpreteerde dynamische programmeertaal
bekend om zijn leesbaarheid van de code, en om de syntax die toestaat om concepten in minder
lijnen code uit te voeren, in vergelijking met andere talen zoals C++ of Java.
Uitleg nieuwe termen
High level:
Een high-level programmeertaal is een taal die meestal bestaat uit mensentaal, en dus zeer
verschillend is van wat de computer uitvoert, na vertaling.
Geïnterpreteerde programmeertaal:
Dit is een programmeertaal die de programmacode lijn per lijn leest en onmiddellijk uitvoert. Het
tegenovergestelde is een gecompileerde taal.
Dynamische programmeertaal:
Dynamische programmeertalen zijn talen die pas tijdens de runtime (wanneer het programma aan
het lopen is) algemene opdrachten uitvoeren die andere talen al doen bij het compileren.
C
Deze programmeertaal is al een stuk ingewikkelder, in vergelijking met Python. Deze taal is een low-
level programmeertaal, en zit dus veel dichter bij wat er door de computer gelezen wordt.
Dit zorgt er natuurlijk voor dat, als alles juist geprogrammeerd is, dat C een van de snelste en
efficiëntste talen is op de markt.
Zelfs Windows maakt hiervan gebruik voor de kernel (de core van het besturingssysteem)
Raspberry Pi & Arduino
Pagina 9 van 22 Pieter-Jan De Groof 10 juni 2016
C++
Een van de opvolgers van C, C++ is nog altijd gefocust op performantie en efficiëntie op systemen die
niet zo krachtig zijn, zonder verlies van flexibiliteit.
Het is ook een procedurele en object-georiënteerde taal, wat wilt zeggen dat er stap per stap kan
gewerkt worden, en dat men “velden” maakt die een bepaald(e) waarde of datatype bevatten.
Java
Een van de meest gebruikte programmeertalen, te vinden in apparaten die gaan van een
gewone computer, tot een printer, tot zelfs auto’s.
Het unieke aan deze taal is dat ze een “Write once, Run anywhere” principe heeft, wat
wil zeggen dat de code maar eenmalig moet gecompileerd worden, waarna deze de
volgende keren gewoon kan lopen, zonder opnieuw gecompileerd te moeten worden.
Scratch
Een gratis visuele programmeertaal gebruikt door studenten, leraren en ouders alom, om
gemakkelijk animaties, spelletjes en meer te maken, en is een steun voor zij die zich dieper in het
programmeren willen verdiepen.
Scratch gebruikt event-gedreven programming met meerdere actieve objecten, ook wel “sprites”
genoemd.
Deze sprites kunnen zowel in het programma zelf getekend worden als van externe bronnen komen,
waaronder je webcam.
Ruby
Een dynamische en reflectieve programmeertaal, die is ontworpen met productiviteit
en genot van de programmeur in het achterhoofd.
Het design is dan ook gebaseerd op genot van de gebruiker, niet de computer.
Raspberry Pi & Arduino
Pagina 10 van 22 Pieter-Jan De Groof 10 juni 2016
Limieten Alhoewel de Raspberry Pi zeer (ver)nieuw(end) is, zijn er toch nog altijd limieten aan het kleine
wondertje.
Zo was tot voor kort bijvoorbeeld de helft van de processor “closed source”, wat wil zeggen dat
programmeurs dit deel niet konden gebruiken.
Ook is het niet zo evident om alles klaar te maken voor gebruik. Je hebt bijvoorbeeld een 5V micro-
USB adapter nodig die ook 700mA kan doorlaten, en deze zit niet inbegrepen bij de aankoop.
Ook USB-apparaten die meer dan 100mA verbruiken kunnen mogelijks niet gebruikt worden.
Maar laat je hierdoor niet beïnvloeden, dit zijn allemaal zaken die je op voorrand kan plannen.
Aangezien de Raspberry Pi’s op linux draaien, is eigenlijk één van de enige echte limieten de kennis
van de eigenaar.
Mogelijkheden Het is bv mogelijk om meerdere RPi’s samen te laten werken als server,
al heb je er dan wel een aantal nodig vooraleer je deze echt als server
kunt beschouwen en gebruiken.
Een ander project is het opnieuw maken van een oude arcade-game,
behuizing incluis.
Ook het maken van een geanimeerd fotokader is mogelijk.
En voor de dierenliefhebbers onder ons kan je zelfs een automatische
dierenvoeder maken met behulp van de RPi.
Al deze projecten hebben meerdere online handleidingen voor elk van deze projecten.
Reden tot succes De Raspberry Pi is ongetwijfeld gekend bij bijna elke IT’er. Maar waarom?
De belangrijkste reden is - volgens mij - hoe vernieuwend het is. Een single-board computer die in je
zak past, even krachtig is als een computer van een decennia terug.
Daar bovenop is er ook de lage prijs die er voor zorgt dat de drempel waar men over moet om de
aankoop te bevestigen, zeer klein is.
Raspberry Pi & Arduino
Pagina 11 van 22 Pieter-Jan De Groof 10 juni 2016
Maar er zijn ook redenen voor die objectief zijn, en niet subjectief:
- Zo is de Raspberry Pi dominant op de beurs met zijn aandelen.
- Ook het aantal websites die positief nieuws hebben over de RPi, is bijna niet te tellen.
Zo heeft bijvoorbeeld de Britse krant “The Guardian” al meer dan 50 artikels erover
gepubliceerd, waarvan het eerste in Januari 2012.
- Maar ook de gebruiksvriendelijkheid is een groot verkoopspunt.
Zo zouden zelfs kinderen er mee kunnen leren programmeren of spelen.
Er zijn over het algemeen dus weinig nadelen die niet overtroffen kunnen worden door de voordelen.
Toepassingsgebied De voornaamste projecten waarvoor men de Raspberry Pi gebruikt is momenteel als bestandsserver,
aangezien SD-kaartjes momenteel zeer compact zijn voor wat ze aanbieden als opslag, en een
bestandsserver hoeft niet veel kracht te hebben op vlak van hardware.
Daarnaast kan men met de Raspberry Pi ook een mailserver opzetten, met mogelijks viruscontrole op
de ontvangen e-mails.
Als derde optie is er het maken van een NAS, ofwel network-attached storage. Het grootste verschil
tussen een NAS en een bestandsserver is dat een NAS geen besturingssysteem draait, zoals
bijvoorbeeld Windows Server 2012.
Als hobbyist kan je met de RPi ook meer dan voldoende informatie vinden omtrent het maken van
een HTPC (Home Theater PC) of om er een retro-gamesysteem mee te maken, met behulp van een
emulator (software die een oude console nabootst, waardoor men oude spelletjes kan draaien op
moderne computers).
Toekomst Dit lijkt met echt een product voor de toekomst.
De snelle groei van de informaticawereld zal ervoor zorgen dat ook de Raspberry Pi zal kunnen
blijven groeien. Zelfs als de ontwikkelingen vertragen, zal de Raspberry Pi met zijn lage prijs en
grootte altijd wel de aandacht trekken van mensen die zich in die wereld willen verdiepen.
Voor zij die al een model hebben, hoop ik dat er genoeg redenen zijn om, net als met een gewone
computer, regelmatig te upgraden. Want het zijn hun projecten die publiciteit genereren in
informaticabladen en –websites.
Samengevat denk ik dus dat het verhaal van de Raspberry Pi nog lang niet is afgelopen.
Raspberry Pi & Arduino
Pagina 12 van 22 Pieter-Jan De Groof 10 juni 2016
Arduino (Genuino in Europa)
Arduino is een open source computerplatform dat rond de ATmega168-microcontroller en het
softwareontwikkelplatform Processing is opgebouwd.
Dit platform is bedoeld voor kunstenaars, artiesten, hobbyisten en iedereen die geïnteresseerd is in
het maken & ontwerpen van creatieve en slimme objecten die kunnen inspelen en reageren op hun
omgeving.
Het is mogelijk om apparaten en objecten te creëren met Arduino die, op basis van zowel digitale als
analoge inputsignalen, een autonome actie initiëren door middel van een “arduinoschakeling”.
Deze inputsignalen kunnen gegenereerd worden door onder andere schakelaars, lichtsensoren,
afstands- en bewegingsmeters, temperatuursensoren, of op basis van commando’s die men via het
internet, een radiomodule of ander apparaat met een seriële interface krijgt.
De outputsignalen kunnen bijvoorbeeld lampjes, beeldschermen, pompjes of motoren aansturen,
maar ook een input zijn voor andere arduinomodules.
Daarnaast bestaan er ook “Shields”. Deze integreren vaak verschillende sensoren en modules in 1
printplaat, en kunnen gemakkelijk op de Arduino aangesloten worden dankzij de I/O pinnen.
Veel van deze shields worden apart verkocht en moeten dus nog zelf gesoldeerd worden.
De meest voorkomende shields zijn de WiFi- en GPS-kits.
Je kan ook een ProtoShield kopen dat dienst doet als “Breadboard” om op te experimenteren.
De eerste Arduino was uitgebracht in 2005, met een soortgelijk doel als dat van de Raspberry Pi,
namelijk een goedkoop en gemakkelijk platform aanbieden aan mensen die willen leren
programmeren en apparaten laten werken met behulp van de omgeving.
Veelgemaakte apparaten zijn kleine robotjes, thermostaten en bewegingsdetectoren.
Raspberry Pi & Arduino
Pagina 13 van 22 Pieter-Jan De Groof 10 juni 2016
Woordverklaringen
ATmega168-microcontroller:
De ATmega168 is een microcontroller (=MCU) ontworpen door Atmel. Deze controllers hebben
tussen de 16kB programmageheugen, 32 pins om op aan te sluiten, waarvan23 I/O pins zijn. Ook
heeft deze MCU een kloksnelheid van 20MHz
Processing (platform):
Een open source platform dat programmeren visueel maakt. Het is een java-uitbreiding, dus Java-
structuren met een vereenvoudigde syntax worden ook ondersteund.
Shields: dit zijn printplaten die aansluiten op de Arduino, en functies aanbieden zoals een GPS,
Ethernet, LCD schermen of “Breadboarding”
Breadboard:
Dit is een bordje dat gebruikt wordt om elektrische schakelingen
tijdelijk op te bouwen. De componenten hoeven immers niet
gesoldeerd te worden.
Versies en Specificaties
Arduino’s bestaan in zeer veel verschillende vormen en vormfactoren, maar spijtig genoeg zijn er een
pak minder verkrijgbaar in Europa. Hierin bespreek ik de borden en modules die in Europa
verkrijgbaar zijn onder de naam Genuino.
Raspberry Pi & Arduino
Pagina 14 van 22 Pieter-Jan De Groof 10 juni 2016
Beginners (entry level)
Genuino Uno
Als eerste hebben we de Genuino Uno, een bordje
gebaseerd op de ATmega328P microcontroller.
Het heeft 14 digitale input/output-pins (waarvan 6 gebruikt
kunnen worden als PWM outputs), 6 analoge inputs, een
16MHz kwarts kristal, 1 usb verbinding, power jack, een
ICSP header en een resetknop. De Genuino Uno bevat ook alles wat nodig is om de microcontroller
te ondersteunen.
Verbindt de Genuino met een computer gewoon via de USB-aansluiting of zorg voor stroom met een
AC --> DC adapter of batterij om te beginnen.
Woordverklaringen
PWM outputs:
Pulse width modulation, of afgekort PWM. Deze outputs kunnen stroom tussen 0V en 5V genereren,
wat bijvoorbeeld gebruikt kan worden om de lichtsterkte van lampjes te controleren.
16MHz kwarts kristal:
Dit is een kristaloscillator die als frequentiebepalend element een kristal heeft, een kwartskristal in
dit geval.
Het voordeel van deze kristallen is de relatief precieze en stabiele oscillatiefrequentie.
ICSP header:
In-Circuit Serial Programming, ofwel In-system programming (ISP) is een header die het mogelijk
maakt om de Arduino te programmeren na installatie van een systeem.
Als dit er niet zou ingezeten hebben, zou de chip op voorhand geprogrammeerd moeten worden.
Genuino 101
Een leer- en ontwikkelingsbord dat de performantie en de lage
energieconsumptie van de intel Curie Module aanbiedt, met de
simpliciteit van Genuino aan een lage prijs.
Raspberry Pi & Arduino
Pagina 15 van 22 Pieter-Jan De Groof 10 juni 2016
Dit model heeft dezelfde vormfactor en randapparatuurlijst als de Genuino Uno, maar heeft er een
onboard Bluetooth LE mogelijkheid bijgekregen, samen met een snelheidsmeter en gyroscoop die
beiden 6 assen hebben om over te bewegen (alle kanten dus).
De module bevat twee verschillende cores; namelijk een x86 Quark core en een 32-bit ARC core die
allebei een kloksnelheid van 32MHz hebben.
Het real-time Operating Systeem (ROTS) en framework van intel zijn sinds maart 2016 open source.
Hierdoor is het mogelijk om te koppelen via USB of bluetooth.
De 101 heeft 14 digitale I/O pins (waarvan slechts 4 als PWM kunnen gebruikt worden).
Het bordje heeft slechts 3.3V nodig, maar is beschermd tegen een voltage van 5V.
Woordverklaringen
x86 Quark core:
Een 32-bit microcontroller ontworpen door Intel, met een laag verbruik en klein formaat in het
achterhoofd.
32-bit ARC:
Dit is een 32-bit ingebedde processor, die zijn roots heeft in de Super FX chip van de SNES console.
Genuino MICRO
Deze genuino is, zoals de naam al doet vermoeden, het kleinste bordje van
de Genuino-familie, waardoor deze nog gemakkelijker in alledaagse
objecten te integreren is.
Het bordje bevat een ATmega32U4 microcontroller, dat is ontworpen in samenwerking met Adafruit.
Het heeft 20 digitale I/O pins, waarvan er 7 als PWM outputs en 12 als analoge outputs kunnen
gebruikt worden. Ook dezelfde 16MHz kristaloscillator is weer van de partij, samen met een ICSP
header en een resetknop.
Wat wel veranderd is, is dat er nu een micro-USB aansluiting is. Ook de form factor is aangepast
zodat deze zeer gemakkelijk op een breadboard past.
Op de foto bovenaan P9 ziet u dat dit geen volwaardig bordje is, maar eigenlijk een module is.
Raspberry Pi & Arduino
Pagina 16 van 22 Pieter-Jan De Groof 10 juni 2016
Woordverklaring
ATmega32U4:
Een 8-bit AVR RISC-gebaseerde microcontroller met 32KB zelf-programmerend flash
programmageheugen, 1KB EEPROM, 2.5KB SRAM en een USB2.0 apparaat.
Gevorderden (Extra Features)
Genuino MEGA 2560
Dit is het eerste bordje in de lijst dat extra mogelijkheden
heeft, en dat is ook te zien aan de vormfactor.
De MEGA 2560 is ontworpen voor meer complexe projecten, en heeft hiervoor onder andere 54
digitale I/O pins gekregen, 16 analoge inputs en een grotere sketchruimte. Dit is hét aanbevolen bord
voor 3D printers en robotprojecten. Het bord heeft ook 4 UARTs, een 16 MHz kristaloscillator, een
USB connector, power jack, ICSP header en resetknop.
De MEGA 2560 is compatibel met de meeste shields die ontworpen zijn voor de Uno en arduino-
bordjes Duemilanova en Diecimila.
Woordverklaring
UART
Is een universal asynchronous receiver / transmitter, oftewel een stukje hardware dat data omzet
tussen parallelle en seriële vormen (meerdere binaire bits tegelijk / bit per bit)
Genuino ZERO
Het ZERO-model is een simpele maar krachtige 32-bit extensie van het
platform dat is vastgezet door de Uno.
De doelstelling van dit bord is een platform maken voor innovatieve projecten in IoT-apparaten,
draagbare technologie, automatisering van een hoger niveau, robotica en nog zoveel meer.
Raspberry Pi & Arduino
Pagina 17 van 22 Pieter-Jan De Groof 10 juni 2016
Dit bord breidt de familie uit door middel van zijn verhoogde performantie, waardoor een hoop
aantal nieuwe projecten kunnen gemaakt en ontworpen worden. Ook is dit een geweldig apparaat
voor het aanleren van de ontwikkeling van 32-bit apps.
De ZERO heeft 20 digitale I/O pins, waarvan enkel pin 2 & 7 niet als PWM kunnen gebruikt worden.
Ook heeft het bord 2 UARTs, 6 analoge inputs en 1 analoge output pin.
Opgepast! Dit bord gebruikt slechts 3.3V en is NIET beschermd tegen een hoger voltage.
Internet of Things
Genuino MKR1000
Dit bordje is hét model dat een gevorderd iemand
wil, als hij of zij de functionaliteit van de ZERO
wenst te combineren met een Wi-Fi shield, voor
een kosten- efficiënte prijs.
Het is gebaseerd op de Atmel ATSAMW25 SoC, dat deel uitmaakt van de SmartConnect familie van
Atmel draadloze apparaten.
De ATSAMW25 bestaat uit 3 blokken:
1. SAMD21 Cortex-M0+ 32bit low power ARM microcontroller
2. WINC1500 low power 2.4GHz IEEE802.11 b/g/n Wi-Fi
3. ECC508 Crypto-authentication
De ATSAMW25 bevat ook een enkele 1x1 stream PCB antenne.
Opgepast!
Ook dit bord gebruikt 3.3V. En ook al kan het outputten naar apparaten die 5V gebruiken,
communicatie ermee is af te raden zonder level shifting.
Woordverklaring
level shifting:
Dit is het omzetten van één voltageniveau naar een ander voltageniveau.
Raspberry Pi & Arduino
Pagina 18 van 22 Pieter-Jan De Groof 10 juni 2016
Programmeren met de Genuino
Code schrijven
Om te beginnen programmeren met je Genuino bord, moet je eerst een verbinding maken met je
computer om het programma van je computer op de Genuino te zetten. Het juiste programma kan je
van de officiële downloadpagina halen.
Eens je het programma opent, zou je iets moeten zien dat lijkt op de
foto. Dit is waar je je code ingeeft die je wilt compilen en naar de
Genuino sturen.
Om te beginnen open je het menu Tools en selecteer je bij Board de
juiste versie. Eenmaal gekozen kan je beginnen programmeren.
De code die je schrijft voor je Genuino wordt een “Sketch”
genoemd, en is geschreven in de C++ taal.
Elke sketch heeft twee void functies nodig, namelijk setup() en loop().
Een void-functie geeft geen waarden terug als deze uitgevoerd wordt.
Het gedeelte na setup() wordt uitgevoerd wanneer het bordje stroom
krijgt, en de loop() functie voert de code die daaronder staat continu uit.
Je code zou er dus (in het begin) moeten uitzien als de foto links. Je code
begint dan op lijn 3 voor setup, en lijn 8 voor het loopgedeelte.
We zullen de Genuino Uno nemen als voorbeeld. Je ziet bovenaan het bordje twee zwarte
rechthoeken met vierkante gaatjes in. Dit zijn de headers. Headers zorgen ervoor dat je gemakkelijk
componenten kan connecteren met je Genuino.
Waar ze connecteren met de Genuino zijn de pins. Het is zéér belangrijk dat je weet welke pin
waarmee verbonden is, want dit is essentiëel voor het programmeren met een Genuino. De
nummers van de pins staan naast de headers, in het wit op het bordje.
Als je bevoorbeeld het onboard LED wilt controleren, moet je verbinden met pin 13. In
de programmacode maak je eerst een variabele door bovenaan setup dit in te geven:
Daarna zet je in het setup() gedeelte dat je ledPin in output-
mode zetten. Dit doe je door de functie pinMode() te
gebruiken, dat twee variabelen gebruikt. De eerste is het
pinnummer, en de tweede of het een in- of outputpin is. In
ons geval is dit een outputpin. Voeg nu de code toe zoals op de afbeelding.
Raspberry Pi & Arduino
Pagina 19 van 22 Pieter-Jan De Groof 10 juni 2016
In de loop gaan we eerst de LED uitzetten, zodat we zeker zijn
dat het programma werkt, aangezien het LEDje automatisch
aangaat bij het opstarten.
Dit doen we met de DigitalWrite() code, die ook twee variabelen neemt. Er is bij de tweede variabele
keuze tussen High en Low, oftewel aan en uit.
Compileren
Als dit de eerste keer is dat je code compileert voor je Genuino,
ga naar het tools menu en klik op Serial Port, en onthoud wat er
momenteel staat. Verbind nu je Genuino met je computer.
Ga nu terug naar het Serial Port menu en je ziet dat er 1 of 2 nieuwe verbindingen zijn. Kies op een
Apple computer voor de tty. verbinding, en op Windows de COM-verbinding.
Eens geselecteerd kan je op de knop met de pijl naar rechts klikken. Eens je hierop geklikt hebt
zouden enkele LEDs op je Genuino moeten beginnen aan en uit gaan. Dit is een teken dat je
computer met je Genuino aan het communiceren is. Eens dit gedaan is, zou de LED uit moeten zijn,
een teken dat je programma aan het werken is.
Hertyp nu de LOW van je DigitalWrite() naar HIGH, klik op upload en je LED zou moeten aanspringen!
Nu wordt het interessant.
We gaan ervoor zorgen dat de LED automatisch aan
en uit gaat. Hiervoor gebruiken we de code Delay(),
met tussen de haakjes de tijd in milliseconden (1s =
1000 ms). We kiezen hier voor een delay van 2s,
oftewel 2000 ms. Zorg ervoor dat je code eruit ziet
zoals de code op de afbeelding. Klik daarna op upload en geniet van je recente prestatie!
Mogelijkheden
Er zijn al een aantal mogelijkheden opgesomd bij de genuino’s zelf, maar dat wil niet zeggen dat dat
alles was.
Zelfs de nieuwe 3D-printing technologie kan nagebouwd worden met
behulp van enkele Genuino bordjes die de hoeveelheid plastic die
gespoten wordt controleren tot het bewegen van het platform zelf.
Een andere uitvinding is een autonome kaarsjesuitblazer. “Puff” de
draak bestaat uit 1 genuino, 2 motors en lichtsensoren. Hierdoor kan
hij een warmtebron vinden, er naartoe rijden, en deze uitblazen.
Zonder menselijke input!
De Genuino’s kunnen ook samenwerken met muzieksoftware. Zo heeft
ene Stephen Hobley een laserharp gemaakt met behulp van een
Boarduino (versie van arduino’s).
Kortom, Genuino’s kunnen dus voor bijna elke bedenkbare toepassing gebruikt worden.
Raspberry Pi & Arduino
Pagina 20 van 22 Pieter-Jan De Groof 10 juni 2016
Limieten
De enige limieten die ik kan bedenken is dat de code niet te groot mag zijn, aangezien deze anders
niet kan opgeslagen worden in het geheugen van de Genuino, en dus ook niet zal uitgevoerd worden.
Ook het aantal apparaten dat je kan aansluiten is gelimiteerd, ofwel wegens het gebrek aan
aansluitingen, ofwel omdat er niet genoeg stroom is zonder over de limiet te gaan.
Redenen tot succes
1. De programmeersoftware werkt op alle besturingssystemen.
Dit komt omdat het programma gebaseerd is op Processing, een programmeertaal
die populair is bij kunstenaars en designers, en die al zeer lang bestaat.
Deze is ook verpakt in de Java-programmeertaal, waardoor het zeer gemakkelijk over
te zetten is, en fouten er kunnen uitgehaald worden.
2. Loopt rechtstreeks op het bordje.
De code loopt rechtstreeks op het bordje, waardoor performantie zo hoog mogelijk
is. Reden hiervoor is de geweldige AVR compiler. Het is geen geïnterpreteerde taal
zoals .NET of BASIC. Het is snel, klein, licht, en je kan een HEX-file gebruiken om
meerdere chips tegelijk te programmeren.
3. Sensoren.
Een van de vele redenen dat de Arduino en Genuino zo succesvol zijn, is vanwege de
analoge naar digitale inputmogelijkheden. Met andere woorden; je kan sensor-data
zoals licht, temperatuur en geluid gebruiken en je apparaat insturen.
Ook is er een gemakkelijke overgang voor digitale sensoren. De Arduino’s en
Genuino’s zijn hier zo goed in dat ze zelfs op andere apparaten worden aangesloten,
enkel en alleen al voor hun omzettingsmogelijkheden.
4. Simpel, maar niet te simpel.
Veel soortgelijke bordjes zijn zeer complex in gebruik, en hebben een grote
voorkennis nodig vooraleer je ermee kan beginnen. Ook hebben deze veel extra
onderdelen, zoals LCDs, knoppen, LEDs of gesegmenteerde displays.
Arduino’s en Genuino’s hebben enkel de minimum. Wil je iets extra? Koop dan een
shield en sluit deze aan, en je probleem is opgelost.
5. Lage kost.
De goedkoopste Genuino is momenteel verkrijgbaar voor slechts €18 + BTW, ofwel
~€21.78. Voor deze prijs kan je dagenlang werken aan verschillende projecten,
zonder ook maar iets bij te hoeven kopen. En als beginprijs voor een goede hobby
lijkt mij dit zeker aanvaardbaar.
Raspberry Pi & Arduino
Pagina 21 van 22 Pieter-Jan De Groof 10 juni 2016
6. Open Source.
Ook al is het leuk dat de Genuino’s open source zijn, en je commerciële klonen mag
produceren, is dit niet de hoofdreden voor het succes. Wat zeker niet wilt zeggen dat
dit geen impact heeft.
Je kan speciale onderdelen (laten) maken zonder het te moeten vragen. Ook scholen
en bedrijven kunnen deze dus massaal inkopen zonder een licentie aan te schaffen.
Er is dus ook geen (groot) risico dat men stopt met het produceren van Genuino’s en
de software te ondersteunen. Want als duizenden tot miljoenen mensen ergens deel
van zijn, geven ze er natuurlijk meer om.
Al deze redenen zijn redenen waarom de Arduino’s en Genuino’s gewonnen hebben van andere (en
dus minder bekende) modellen. Al hoop ik wel dat er toch eentje het hoofd opsteekt, zodat er
competitie ontstaat tussen de twee en ze elkaar proberen te overtreffen.
Toepassingsgebied
Zoals al is besproken in de vorige pagina’s, is de Genuino vooral gebruikt voor privé-projecten, en dus
veel minder voor in de professionele wereld. Dit komt waarschijnlijk vanwege het kleine geheugen,
en dat men extra’s moet aankopen als men extra functionaliteit wilt, met name de shields.
Gelukkig is de marketing van de Arduino’s en Genuino’s niet gericht op de professionele aspecten, en
eerder op privé gebruik.
Toekomst
De toekomst van de Arduino’s en Genuino’s lijkt me wat wazig, zeker met de opkomst van de
Raspberry Pi’s. De bordjes zijn iets minder toegankelijk in vergelijking met RPi’s, waardoor enkel de
ietwat gevorderden zullen beslissen om deze microcontrollers te kopen. Maar ook hun uitbreidingen
kunnen voor sommigen een nadeel zijn. Het feit dat men extra’s moet aankopen om te doen wat een
ander kan zonder uitbreiding, is iets wat zeker niet in hun voordeel speelt. Er zijn wel starter kits, en
deze bevatten enkele shields, maar de prijs van zo’n starter kit ligt veel hoger (~€75) waardoor het
goedkope aspect ervan niet meer geldt.
Wat dan weer wel enorm in hun voordeel speelt, is het feit dat bijna alles open source is. Zo kunnen
particulieren hun eigen microcontrollers maken op basis van schema’s die online gepubliceerd zijn.
En met zo veel mogelijke versies zal een geïnteresseerd iemand zeker iets vinden dat perfect inspeelt
op zijn vragen. En dit zal, volgens mij, de voornaamste reden zijn dat de Arduino-familie zal blijven
bestaan. Dat en de massale groep van mensen die al overtuigd zijn om deze microcontrollers te
gebruiken.
Raspberry Pi & Arduino
Pagina 22 van 22 Pieter-Jan De Groof 10 juni 2016
Besluit
Raspberry Pi en Arduino / Genuino. Het zijn beiden kleine computertjes, met hun eigen doeleinden
en mogelijkheden.
Beiden zijn ze gericht op het aanleren van programmeren, maar bij de Arduino’s zit er nog een deel
mechanica bij, zoals het solderen van apparaten en zorgen dat alle verbindingen correct zijn
aangesloten.
Persoonlijk ben ik een grotere fan van de Raspberry Pi’s, vanwege hun gebruiksgemak, het feit dat ze
veel dichter aansluit bij computers en all-in-one principe zijn daarbij de grootste factoren. Wat zeker
niet wil zeggen dat Arduino’s slechter zijn. Maar ik ben er gewoon vrij zeker van, dat ze maar op
enkele vlakken te vergelijken zijn, en voor de rest compleet anders zijn.
Zo zullen volgens mij RPi’s veel vaker gebruikt worden voor projecten die voornamelijk software
gebruiken, terwijl Arduino’s meer bestemd zijn voor projecten die volop gebruik maken van de
aanwezige hardware.
Kortom raad ik aan om eerst onderzoek te doen in verband met wat je wilt maken, en je daarop te
baseren om een keuze te maken tussen een Raspberry en een Genuino.
++++++++++++++++++