[RASPBERRY PI & ARDUINO] -...

23
2015 2016 Module Computersystemen 3 Pieter-Jan De Groof [RASPBERRY PI & ARDUINO]

Transcript of [RASPBERRY PI & ARDUINO] -...

Page 1: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

2015 2016

Module Computersystemen 3

Pieter-Jan De Groof

[RASPBERRY PI & ARDUINO]

Page 2: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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

Page 3: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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

Page 4: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 5: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 6: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 7: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 8: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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 .

Page 9: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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)

Page 10: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 11: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 12: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 13: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 14: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 15: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 16: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 17: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 18: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 19: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 20: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 21: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 22: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

Page 23: [RASPBERRY PI & ARDUINO] - Telenetusers.telenet.be/pieterjan.degroof/Eindwerk_RaspberryPI_Arduino.pdf · Raspberry Pi & Arduino Pagina 3 van 22 Pieter-Jan De Groof 10 juni 2016 RASPBERRY

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.

++++++++++++++++++