SlideShare a Scribd company logo
1 of 98
Download to read offline
MECHATRONISCHE COCKTAILSHAKER
Nick Van Dyck
Kristoff Geris
Promotoren
Ing. Vincent Claes XIOS Hogeschool Limburg
Ing. Patrick Hilven XIOS Hogeschool Limburg
Ing. Steven Palmaers XIOS Hogeschool Limburg
Dhr. Tristan Fransen XIOS Hogeschool Limburg
Bachelorproef academiejaar 2012-2013
XIOS Hogeschool Limburg
DEPARTEMENT N-TECHNOLOGIE
Mechatronische cocktailshaker
Nick Van Dyck
Kristoff Geris
Afstudeerwerk ingediend tot het behalen van het diploma van
Bachelor in de Elektronica-ICT
Bachelor in de toegepaste informatica
Promotoren: Ing. V. Claes (XIOS Hogeschool Limburg)
Ing. P. Hilven (XIOS Hogeschool Limburg)
Ing. S. Palmaers (XIOS Hogeschool Limburg)
Dhr. T. Fransen((XIOS Hogeschool Limburg)
Academiejaar 2012 – 2013
4
Mechatronische cocktailshaker
Dankbetuiging
Dit woord van dank is gericht aan de vele mensen die ons geholpen hebben met de
totstandkoming van deze bachelorproef. Wij willen graag van deze gelegenheid gebruikmaken
om toch een aantal mensen te bedanken voor hun steun, vertrouwen en inzet.
Eerst en vooral zouden wij graag onze promotoren, Ing. Vincent Claes en Ing. Steven Palmaers
willen bedanken dat ze ons de kans gaven om stage te kunnen lopen, maar ook voor hun
uitstekende begeleiding tijdens het werken aan het project Mechatronic System Design. Hun
kennis en expertise hebben een duidelijke meerwaarde betekend voor onze stage. Ook
stonden ze altijd klaar met bijkomende informatie en/of uitleg.
Daarnaast willen wij de XIOS Hogeschool Limburg bedanken voor het interessante
lessenpakket dat zij aanbieden; het was een opleiding waarvan wij genoten hebben. Ons dank
gaat tevens uit naar onze opleidingshoofden en stagecoördinatoren Patrick Hilven en Tristan
Fransen voor hun begeleiding tijdens de stage.
Vervolgens zouden wij al onze vrienden willen bedanken omdat werken niet kan zonder
afwisseling, ontspanning en afleiding!
Ten slotte willen wij onze familie bedanken voor de steun die zij geboden hebben tijdens deze
periode. En vooral onze ouders voor de kans om deze studies aan te vatten. Ook hebben zij
ons nauwlettend op de voet gevolgd en indien nodig een luisterend oor geboden.
Nick Van Dyck
Kristoff Geris
5
Mechatronische cocktailshaker
Inhoudsopgave
Dankbetuiging..............................................................................................................................4
Inhoudsopgave.............................................................................................................................5
Abstract .......................................................................................................................................8
Afkortingen en begrippen.............................................................................................................9
Afkortingen.......................................................................................................................................... 9
Begrippen.......................................................................................................................................... 10
Lijst van gebruikte figuren........................................................................................................... 11
1. Het Bedrijf .......................................................................................................................... 13
2. Inleiding.............................................................................................................................. 14
Elektronica ICT - Nick Van Dyck
3. Gebruikte technologieën ..................................................................................................... 15
3.1 Bluetooth 4.0..................................................................................................................... 15
3.1.1 Algemeen/toepassingsmogelijkheden..................................................................... 15
3.1.2 BLE-structuur............................................................................................................ 16
3.1.3 BLE packets............................................................................................................... 18
3.1.4 Single Mode vs. Dual Mode...................................................................................... 19
3.2 FPGA.................................................................................................................................. 20
3.2.1 Wat is FPGA? ............................................................................................................ 20
3.2.2 FPGA & µC ................................................................................................................ 23
3.3 Delta robot ........................................................................................................................ 24
3.3.1 algemeen.................................................................................................................. 24
3.3.2 Opbouw van een delta robot systeem..................................................................... 25
3.4 LabVIEW ............................................................................................................................ 26
3.4.1 Ontwerpen in LabVIEW............................................................................................ 27
4. Opbouw van het project...................................................................................................... 29
4.1 NI sbRIO-9602.................................................................................................................... 29
Real-time systemen.................................................................................................................. 31
4.2 Printed Circuit Board......................................................................................................... 32
4.2.1 DesignSpark.............................................................................................................. 32
4.2.2 Interface ................................................................................................................... 35
4.2.3 BT23.......................................................................................................................... 35
4.3 DC-servomotor.................................................................................................................. 35
4.3.1 Aansturen van de dc servomotor............................................................................. 36
6
Mechatronische cocktailshaker
4.4 LabVIEW Project................................................................................................................ 37
4.4.1 FPGA Vi..................................................................................................................... 38
4.4.2 Host VI...................................................................................................................... 41
4.4.3 Bitfile ........................................................................................................................ 47
4.4.3.3 Het genereren van een bitfile................................................................................... 48
5. Probleemstelling ................................................................................................................. 49
5.1 BLE112-licentie:................................................................................................................. 49
5.2 BLED112-verbindingsproblemen:...................................................................................... 49
5.3 Androidtablet-verbindingsproblemen: ............................................................................. 49
5.4 Motorsturings PCB: ........................................................................................................... 51
5.5 UART.................................................................................................................................. 51
6. Resultaat ............................................................................................................................ 52
Toegepaste Informatica - Kristoff Geris
7. Technologieën..................................................................................................................... 53
7.1 Android.............................................................................................................................. 53
7.2 Java.................................................................................................................................... 54
7.3 XML / JSON........................................................................................................................ 54
7.3.1 Inleiding XML............................................................................................................ 54
7.3.2 Inleiding JSON........................................................................................................... 54
7.3.3 XML vs JSON ............................................................................................................. 55
7.3.4 Opbouw van JSON.................................................................................................... 55
7.4 REST................................................................................................................................... 57
7.5 RESTful web service........................................................................................................... 57
7.6 JAX-RS................................................................................................................................ 58
8. Gebruikte tools ................................................................................................................... 59
8.1 Eclipse................................................................................................................................ 59
8.2 Apache Tomcat.................................................................................................................. 59
8.3 CloudBees.......................................................................................................................... 59
8.4 BitBucket ........................................................................................................................... 59
9. Onderzoeksprobleem.......................................................................................................... 60
10. Design................................................................................................................................. 61
10.1 Opdracht............................................................................................................................ 61
10.2 MySQL ............................................................................................................................... 62
10.3 RESTful web service........................................................................................................... 63
10.4 Bluetooth........................................................................................................................... 63
7
Mechatronische cocktailshaker
10.5 Graphical User Interface ................................................................................................... 63
10.6 Besturing deltarobot ......................................................................................................... 63
11. Implementatie .................................................................................................................... 64
11.1 Android-applicatie............................................................................................................. 64
11.1.1 Selecteren cocktail ................................................................................................... 64
11.1.2 Maken van een cocktail............................................................................................ 65
11.1.3 Aanpassen en toevoegen van cocktails.................................................................... 66
11.1.4 Aanpassen en toevoegen van ingrediënten............................................................. 67
11.1.5 Besturen van deltarobot .......................................................................................... 68
11.1.6 Bluetooth verbinding ............................................................................................... 69
11.2 RESTful web service........................................................................................................... 72
Algemeen
12. Conclusie ............................................................................................................................ 74
12.1 Mogelijke uitbreidingen .................................................................................................... 74
13. Lijst met referenties ............................................................................................................ 75
14. Bijlagen............................................................................................................................... 78
14.1 Appendix A: Patent Deltarobot......................................................................................... 78
14.2 Appendix B: Berekeningen kinematica ............................................................................. 90
8
Mechatronische cocktailshaker
Abstract
Het doel van deze bachelorproef is het ontwerp van een mechatronica-demonstrator. De te
bouwen demonstrator bevat FPGA- en Bluetooth 4.0-technologie en heeft als functie het
aanmaken van cocktails, vandaar de benaming van de demonstrator “Cocktailshaker”. De
mechanische constructie die gebruikt wordt is een bestaande deltarobotopstelling.
Een FPGA (Field Programmable Gate Array) is een geïntegreerde schakeling bestaande uit
programmeerbare logische functies. De demo-opstelling voorziet een communicatieplatform
tussen de FPGA en de Bluetooth-module. Bluetooth 4.0 wordt ook wel Bluetooth low energy
genoemd door zijn zeer lage energieverbruik: een 10-tal mA en in rust een 10-tal nA, waardoor
de module het potentieel heeft om jaren mee te gaan op één enkele coin-cellbatterij.
De interface tussen de deltarobot, FPGA en Bluetoothmodule werd ontworpen in het
programma Designspark.
Deze print is ontworpen door gebruik te maken van Pmod-standaard zodat hij op vrijwel alle
boards aangesloten kan worden. Ook is er gedacht aan uitbreidingsmogelijkheden en zijn er
extra I/O voorzien.
Een Android-applicatie wordt gebruikt om de input van een gebruiker te verwerken. Via deze
applicatie kan de gebruiker kiezen tussen verschillende cocktails om ze vervolgens te laten
maken door de deltarobot.
In de applicatie is het ook mogelijk om nieuwe cocktailrecepten te maken of bestaande
cocktailrecepten te veranderen. Deze recepten worden opgeslagen op een online MySQL-
database die verbonden is met een RESTful webservice. Deze webservice is opgesteld in Java
en wordt gehost op een Tomcat-server. De webservice kan dan de gevraagde recepten uit de
database halen en deze vervolgens doorsturen naar de Android-applicatie.
Wanneer de Android-tablet cocktaildata heeft verstuurd naar de FPGA met behulp van
Bluetooth-technologie, dan wordt deze eerst in de Bluetooth-module omgezet naar seriële
data, om zo doorgegeven te worden aan de FPGA. Hierna wordt de data gedecodeerd binnen
de LabVIEW-programmeeromgeving. Ten slotte wordt de verwerkte data doorgegeven aan de
motorsturing, waardoor de gewenste cocktail verkregen wordt.
9
Mechatronische cocktailshaker
Afkortingen en begrippen
Afkortingen
FPGA Field Programmable Gate Array
PCB Printed Circuit Board
HMI Human Machine Interface
MSD Mechatronic System Design
PWO Projectmatig Wetenschappelijk Onderzoek
BLE Bluetooth low energy
EDR Enhanced Data Rate
HS High Speed
GFSK Gaussian frequency-shift keying
DSS Direct Spread Spectrum
ISM – band Industrial, scientific and medical radio bands
RAM Random-access memory
RF Radio frequency
PDU Protocol data unit
CRC Cyclic redundancy check
MIC Message Integrity Check
CLB Configurable Logic Block
ASIC Application Specific Integrated Circuits
SRAM Static random-access memory
OTP One Time Programmable
IOB I/O – blocks
LED Light-emitting diode
BRAM Block random-access memory
LabVIEW Laboratory Virtual Instrumentation Engineering Workbench
VI Virtual Instrument
NI National Instruments
3D Driedimensionaal
DRAM Dynamic random-access memory
MB Megabyte
10
Mechatronische cocktailshaker
Base -TX Ethernet over twisted pair
DIO Digitale Input/Output
HF Hoog frequent
UART Universal Asynchronous Receiver/Transmitter
PWM Pulse width modulation
XML Extensible Markup Language
JSON JavaScript Object Notation
ICT Information and Communications Technology
REST Representational State Transfer
JAX-RS Java API for RESTful Web Service
SQL Structured Query Language
API Application Programming Interface
URI Uniform Resource Identifier
HTTP Hypertext Transfer Protocol
UUID Universally Unique Identifier
Begrippen
Request Een instructie op een computer om informatie te verkrijgen vanuit een
externe informatiebron.
Response Een antwoordt van een computer die de gevraagde informatie geeft van
een request.
Resource Een bron van informatie die beschikbaar is voor computers
Stateless protocol Een communicatie protocol dat elke request behandelt als een
onafhankelijke transactie die geen verband houdt met een eerdere
request.
11
Mechatronische cocktailshaker
Lijst van gebruikte figuren
Figuur 1 : flowchart bachelorproef
Figuur 2: Bluetooth symbool
Figuur 3: Advertising channels
Figuur 4: BLE packet header
Figuur 5: communicatiestack
Figuur 6: FPGA structuur
Figuur 7: CLB structuur
Figuur 8: geïntegreerd µC-FPGA board
Figuur 9: delta robot
Figuur 10: delta robot systeem
Figuur 11: NI LabVIEW
Figuur 12 : LabVIEW VI
Figuur 13: case structuur
Figuur 14: sbRIO-9602
Figuur 15: RIO I/O expansion cards
Figuur 16: Schematic design
Figuur 17: PCB schikking
Figuur 18: PCB routing
Figuur 19: 3D view PCB design
Figuur 20: servomotor
Figuur 21: PWM signaal
Figuur 22: LabVIEW project
Figuur 23: reference VI
Figuur 24: Frontpanel FPGA VI (PWM tab)
Figuur 25: Frontpanel FPGA VI (Bluetooth tab)
Figuur 26: Blockdiagram FPGA VI
Figuur 27: Frontpanel Host VI
Figuur 28: Overzicht van de Host VI
Figuur 29: Help function sub VI
Figuur 30: Angle to servo sub VI
Figuur 31: Parameters inverse kinematica
Figuur 32: Inverse kinematica
Figuur 33: Forward kinematica
12
Mechatronische cocktailshaker
Figuur 34: Het compile proces
Figuur 35: LabVIEW compile options dialog(Xilinx Options)
Figuur 36: Het genereren van een bitfile(Dialoog venster)
Figuur 37: Opbouw van een JSON Object
Figuur 38: Opbouw van een JSON Array
Figuur 39: Verschillende mogelijke waarden in JSON
Figuur 40: EER-schema van MySQL Database
Figuur 41: Selecteren van een cocktail
Figuur 42: Maken van een cocktail
Figuur 43: Aanpassen van een cocktail
Figuur 44: Aanpassen van een ingrediënt
Figuur 45: Besturing van deltarobot
13
Mechatronische cocktailshaker
1. Het Bedrijf
De XIOS Hogeschool Limburg is dé Vlaamse Autonome Hogeschool in Limburg met vestigingen
in Diepenbeek en Hasselt. XIOS staat voor eXpertisecentrum voor Innovatie, Industrie,
Onderwijs, Onderzoek en Samenleving. De XIOS hogeschool is dus niet enkel een hogeschool
maar ook een expertisecentrum. De kernopdrachten van XIOS zijn onderwijs, onderzoek en
dienstverlening. Door de voortdurende wisselwerking tussen deze kernopdrachten houdt XIOS
op alle vlakken een vinger aan de pols van de samenleving.
De XIOS hogeschool wil via zijn onderzoeksprojecten zijn studenten opleiden in een zo breed
mogelijk werkgebied. Dit onderzoek is nauw verbonden met de verschillende opleidingen en
geeft dus een duidelijke meerwaarde.
Dit project vond plaats in de Technologiepool, die vooral dient voor onderzoeks- en
dienstverleningsactiviteiten. Deze activiteiten worden bepaald door vragen van bedrijven,
social-profitorganisaties en non-profitorganisaties die niet onmiddellijk naar één specifieke
onderzoeksgroep georiënteerd kunnen worden.
Mechatronic System Design (MSD) is een PWO-onderzoeksproject waar in een multidisciplinair
team samengewerkt wordt aan een case waarin een machine gevirtualiseerd wordt die
regeltechnisch en via een mobiele applicatie aangestuurd wordt. In de eindfase van het project
wordt de machine ook daadwerkelijk gebouwd. Het team is samengesteld uit onderzoekers
van de opleidingen elektronica-ICT, elektromechanica en toegepaste informatica.
14
Mechatronische cocktailshaker
2. Inleiding
Zoals de titel al aangeeft handelt deze bachelorproef over het ontwerpen van een
mechatronische cocktailshaker. Deze implementatie wordt verwezenlijkt aan de hand van een
demo opstelling, een Androidtablet, Bluetoothmodule, sbRIO-9602 en een deltarobot die al
aanwezig was. Deze demo-opstelling is een non-professionele opstelling en is enkel bedoeld
als demonstrator om de volledige werking van het systeem te tonen. Nadien zou het eventueel
als case verder uitgewerkt kunnen worden tot een professionele opstelling.
De demonstrator gaat als volgt tewerk:
 Een Android-applicatie wordt gebruikt om de input van een persoon te verwerken,
deze wordt ook wel de HMI genoemd, via deze applicatie kan de gebruiker kiezen
tussen verschillende cocktails.
 De gegevens worden op hun beurt uitgewisseld via Bluetooth. Hierbij gaan de
Androidtablet en de Bluetooth module gekoppeld zijn.
 De Bluetoothmodule bevindt zich op een print die in rechtstreekse verbinding staat
met de single-board RIO en de data, het gebruikte protocol tussen de Bluetooth
module en de sbRIO is het serieel communicatieprotocol.
 In de sbRIO gaan we de wiskundige berekeningen uitvoeren aan de hand van de data
die we via de HMI binnenkrijgen.
 De verwerkte data wordt dan weer op haar beurt gebruikt voor het aansturen van de
deltarobot.
Figuur 1 : flowchart bachelorproef
15
Mechatronische cocktailshaker
Elektronica-ICT
3. Gebruikte technologieën
3.1 Bluetooth 4.0
3.1.1 Algemeen/toepassingsmogelijkheden
Bluetooth is een communicatietechnologie die draadloze verbinding voorziet voor lokale
connectiviteit tussen bijvoorbeeld een telefoon en headset. Die dient als vervanging van
kabels. De meest recente uitbreiding van Bluetooth is Bluetooth low energy (BLE). Zoals de
naam impliceert, is BLE ontworpen voor energiebeperkte toepassingen. BLE voorziet draadloze
connectiviteit voor kleine apparaten die op een coin-cellbatterij werken.
In de moderne wereld wordt draadloze connectiviteit beschouwd als een gegeven in apparaat.
De meest gekende tot op heden is Wi-Fi: het is een standaard die geïmplementeerd is in
laptops, Playstations en smartphones. Wi-Fi geeft aanzienlijke bandbreedte voor
gegevensoverdracht, maar zijn protocols zijn complex waardoor het stroomverbruik wat aan
de hoge kant ligt. Recente inspanningen om Wi-Fi-vermogensbehoefte te verminderen leverde
Low Energy Wi-Fi op, die beter geschikt is voor batterijaangedreven toepassingen, omdat deze
vaak niet veel gegevensoverdracht vereisen. De markt voor draadloze communicatie is nog
steeds heel divers. Dit is niet te wijten aan standaardisatiemoeilijkheden, maar omdat er geen
“one-size-fits-all” oplossing ter beschikking is.
Bluetooth word geacht zich in dezelfde categorie te bevinden als Wi-Fi ,dit is te wijten aan
factoren zoals gestandaardiseerde data-overdracht met een vrij hoog stroomverbruik. In de
oorspronkelijke release ondersteunde Bluetooth 1Mbit/sec gegevensoverdracht (Bluetooth
1.2). Sindsdien is dit aantal gestegen tot 3Mbit/sec met een Enhanced Data Rate versie
(Bluetooth 2.0 EDR), en zelfs nog verder met een snelle versie (Bluetooth 3.0 HS). Nu met de
Bluetooth 4.0-technologie gaat men de andere factoren aanpakken zoals het relatief hoog
stroomverbruik.
BLE kan worden beschouwd als een uitbreiding van Bluetooth, die gericht is op het lage
energieverbruik. Hierdoor is het ideaal voor applicaties waarbij sensoren aan te pas komen, dit
meestal in combinatie met batterijen zoals bijvoorbeeld in de medische sector (Body Area
16
Mechatronische cocktailshaker
Network (BAN)). Terwijl Bluetooth 2.0 EDR en Bluetooth 3.0 HS gefocust zijn op hogere
datasnelheden, richt Bluetooth 4.0 zich op de effectieve communicatie met de apparaten die
geen data streamen of hoge data throughput vereisen.
BLE is niet alleen gestandaardiseerd, maar zal ook gebruikt worden in meer dan 2 miljard
mobiele telefoons. In deze telefoons zal BLE gebruikt worden in opvulling van de gewone
Bluetooth, dus zullen beide geïmplementeerd worden.
Figuur 2: Bluetooth symbool
3.1.2 BLE-structuur
Doordat Bluetooth een draadloze communicatietechnologie is, gebruikt BLE de lucht als
medium en haalt hierbij datasnelheiden van 1 Mbit/s en gebruikt het hierbij GFSK-modulatie.
Dit is een minder complexe radio dan de Direct Spread Spectrum (DSS), maar het belangrijkste
is het hergebruik van de bestaande elementen van Bluetooth-radio's. Het werkt in de 2,4 GHz
ISM-band met behulp van een 40-kanaalspartitieruimte; deze partities liggen 2 MHz uit elkaar.
Om storingen tot een minimum te beperken, gebruikt BLE frequency hopping. In tegenstelling
tot de gewone Bluetooth, blijft BLE langer op eenzelfde kanaal. Er zijn drie vaste RF-kanalen
die gebruikt worden om advertisements te broadcasten; deze maken het mogelijk om
apparaten te detecteren. Wanneer er een verbindingsverzoek binnenkomt, worden dezelfde
kanalen gebruikt voor het uitwisselen van connectieparameters. Pas wanneer er een
verbinding tot stand komt, gaat men overschakelen op de gewone kanalen. Figuur 3 geeft een
weergave van de gebruikte advertising channels.
17
Mechatronische cocktailshaker
Figuur 3: Advertising channels
Een BLE-apparaat kan werken in verschillende modes, afhankelijk van de gewenste
functionaliteit. De hoofdmodes zijn de advertising mode, scanning mode, master device en
slave device. In de advertising mode zendt de BLE op periodieke wijze advertisements en kan
hij op verzoek van andere apparaten meer informatie verzenden om een verbinding tot stand
te brengen. Het scanning mode-apparaat, bevindt zich aan de andere kant, luistert naar
advertisements en kan aanvullende informatie vragen als actieve scanmodus is ingeschakeld.
Een scan-only-apparaat werkt in de passieve modus, hierbij luistert deze alleen voor
advertisements. Doordat de stack kan worden opgedeeld in secties, kunnen we de niet-
gebruikte delen weglaten en de stack optimaliseren waardoor kleinere FLASH/RAM-
geheugens gebruikt kunnen worden.
Om een verbinding tot stand te brengen, moet één apparaat in advertising mode staan en het
andere apparaat in initiator mode. Initiator mode is vergelijkbaar met de scanner mode, met
uitzondering dat het hierbij de bedoeling is om een verbinding tot stand te brengen. De
initiator scant voor advertising packets, en gaat een verzoek versturen om verbinding te
maken met het gewenste apparaat. Zodra een verbinding tot stand is gebracht, neemt de
initiator de rol van het masterapparaat en de advertiser wordt hierbij dan een slave-apparaat.
Slave-apparaten kunnen slechts verbonden zijn met één apparaat (de master), terwijl
masterapparaten met meerdere slaves tegelijkertijd verbonden kunnen worden. Doordat
slave- apparaten niet veel rekenkracht nodig hebben zijn de modules zeer klein en goedkoop.
18
Mechatronische cocktailshaker
3.1.3 BLE packets
BLE packets bevatten een 1 byte preamble, 4 byte toegangscode afhankelijk van het gebruikte
RF kanaal, een PDU met een grootte tussen de 2-39 bytes gevolgd door een 3 bytes van CRC.
Figuur 4 geeft een schematisch overzicht van de BLE packet header.
Figuur 4: BLE packet header
De PDU voor het advertisement kanaal bestaat uit een 16-bit PDU header, en zendt
afhankelijk van het soort advertisement maximaal 31 bytes informatie. Hierop kan de active
scanner tot 31 byte aan bijkomende informatie aanvragen zelfs zonder een verbinding te
maken.
Wanneer een verbinding tot stand is gebracht, levert de initiator(master) de advertiser(slave)
kritische gegevens die het kanaal en de timing van de master-slave gegevensuitwisseling
definiëren. Deze data specificeert twee belangrijke parameters: namelijk het connection
interval en slave latency. Het connection interval bepaalt de tijd tussen het begin van het
datapakket uitwisseling en het verbindingsgebeuren. slave latency, is het aantal Communicatie
intervallen dat een slave de master kan negeren zonder dat de verbinding verbroken wordt.
Dit geeft de slave de mogelijkheid om het stroomverbruik te optimaliseren. Zodra een
verbinding tot stand is gebracht, kan de slaaf een update van de communicatie parameters
vragen om zijn gegevens te updaten.
19
Mechatronische cocktailshaker
De PDU bestaat uit een datapacket header van maximaal 37 bytes aan nuttige informatie
gevolgd door 4 bytes Message Integrity Check (MIC) data, dit wanneer er encryptie gebruikt
wordt.
Elk communicatie-event wordt gestart door de master en het dient als referentiepunt voor
tijdsberekeningen te doen, dit om te weten wanneer het volgende transmissie-event
plaatsvindt. Tijdens de communicatie, gaan de master en slave afwisselend datapackets
zenden en ontvangen tot weerszijden geen te zenden packets meer heeft. De transmissie
wordt dan aanschouwd als afgesloten, hierbij gaat de uitwisseling van gegevens worden
opgeschort totdat er terug data ter beschikking is.
3.1.4 Single Mode vs. Dual Mode
Doordat BLE zeer lage-energie-eisen stelt is er een merkbaar verschil in Bluetooth en
Bluetooth LE-protocollen, maar tegelijkertijd hebben deze het voordeel dat ze het RF-
spectrum hergebruiken, waardoor eigenlijk het grootste deel van de wijzigingen plaatsvindt in
de protocol stack. De Bluetooth 4.0 implementeert 2 types: dual-mode apparaten welke de
Bluetooth LE ondersteunen in aanvulling op de oude Bluetooth BR/EDR, en single mode
apparaten die alleen Bluetooth LE-protocol ondersteunt.
De oude Bluetooth BR/EDR blijven nog steeds beschikbaar omdat er reeds 2 miljard gebruikers
zijn. Met de 4.0 release, zijn deze apparaten nog steeds bruikbaar omdat via dual-mode de
oudere technologieën nog steeds backwards compatible zijn.
20
Mechatronische cocktailshaker
Figuur 5: communicatiestack
De bovenstaande figuur is een vereenvoudigde weergave van een communicatiestack voor de
verschillende soorten Bluetooth technologieën. Dual mode welke geïntroduceerd is in
Bluetooth 4.0 ondersteunt zowel Low Energy als oudere apparaten zoals Bluetooth BR/EDR.
Single mode apparaten, dit typisch voor geldbesparende applicaties ondersteunen enkel de
BLE apparaten.
3.2 FPGA
3.2.1 Wat is FPGA?
Field programmable gate arrays (FPGA’s) zijn programmeerbare halfgeleider apparaten die
gebaseerd zijn op een matrix van Configurable Logic Blocks (CLB’s). deze CLB’s zijn verbonden
d.m.v. programmeerbare connecties. In tegenstelling tot Application Specific Integrated
Circuits (ASICs), waarbij het apparaat op maat gemaakt is voor een specifiek design, kan de
FPGA geprogrammeerd worden om aan specifieke design eigenschappen te voldoen. Het
meest gebruikte type van FPGA’s zijn diegene die gebaseerd zijn op het SRAM -type. Deze
types kunnen in tegenstelling tot One Time Programmable FPGA’s (OTP), meerdere keren
geprogrammeerd worden. Het voordeel van een FPGA is dat het ontwerp in een latere
ontwerpcyclus nog steeds kan aangepast worden.
21
Mechatronische cocktailshaker
Figuur 6: FPGA structuur
De CLB is een fundamentele logische eenheid in een FPGA structuur. Het exacte aantal en
functies varieert van FPGA tot FPGA, zo heeft degene die wij gebruiken (Spartan-3) duizenden
identieke CLB blocks ter beschikking. Deze CLB’s bestaan uit een configureerbare schakelmatrix
met 4 of 6 inputs, multiplexers en flipflops. De schakelmatrix is zeer flexibel en kan worden
geconfigureerd voor het gebruik van combinatorische logica, shift registers of RAM.
Doordat men beschikt over programmeerbare interconnecties is het mogelijk om de logische
blokken te verbinden tot grotere circuits om aan de vereiste functionaliteit te voldoen, dit
wordt ook wel routing genoemd. Routing is het connecteren van verschillende logische
schakelingen en één van de belangrijkste aspecten in FPGA-chips omdat dit de meeste
vertragingen veroorzaakt.
22
Mechatronische cocktailshaker
Figuur 7: CLB structuur
I/O-blokken (IOB) verbinden de interne logica (CLB) met de pinnen van de FPGA. De meeste
pinnen kunnen geconfigureerd worden voor zowel ingang, als uitgang en zijn dus bi-
directioneel. In deze IOB’s zit de nodige elektronica om een signaal naar binnen of buiten te
brengen. Zo kunnen we ingangen inlezen van zowel schakelaars als drukknoppen maar ook
sensoren, uitgangen aansturen zoals LED’s, motoren, etc.
Er zijn twee soorten pins:
 User pins
 Dedicated pins
In tegenstelling tot user pins welke geconfigureerd kunnen worden als zowel input, output of
bi-directioneel zijn de dedicated pins hard-gecodeerd. Hiermee bedoelen we dat ze niet
configureerbaar zijn door de gebruiker. Ook wordt er hierbij een onderscheid gemaakt tussen
power pins, configuration pins en dedicated inputs zoals de onboard clock.Als
geheugenbouwsteen wordt er in de meeste FPGA’s Embedded Block RAM-geheugen(BRAM)
voorzien, deze zorgt voor on-chip geheugen in het ontwerp. Xilinx FPGA's bieden tot 10Mbits
van on-chip geheugen.
23
Mechatronische cocktailshaker
3.2.2 FPGA & µC
De embedded systemen van vandaag worden steeds meer complex en vereisen een vorm van
flexibiliteit. Om aan deze eisen te voldoen gaat men gebruik maken van een geïntegreerde µC-
FPGA board met ingebouwde interface tussen de twee apparaten. Dit geïntegreerd µC-FPGA
board beschikt over zowel configureerbare hardware als software, hierdoor kan men custom
hardware en software implementeren.
Figuur 8: geïntegreerd µC-FPGA board
Een typische toepassing kan beginnen als een software-only Microcontroller design zonder
gebruik te maken van de FPGA, die op een later tijdstip gebruikt de FPGA voor snellere
logische functies als de noodzaak zich voordoet. Alternatief kan een project beginnen als FPGA
ontwerp en later de microcontroller van software of wiskundige functies, die gemakkelijker te
ontwikkelen in een microcontroller C programma uitvoeren gebruiken maar
snelheidsintensieve logica blijft plaatsvinden in de FPGA.
24
Mechatronische cocktailshaker
3.3 Delta robot
3.3.1 algemeen
De zogenaamde parallelle delta robot, werd uitgevonden in de begin jaren '80 in Zwitserland
door professor Reymond Clavel. De naam parallelle delta robot is ontstaan doordat de effector
en de basis altijd parallel zijn ten opzichte van elkaar, en hierdoor dus ook parallel met het
voorwerp dat wordt opgenomen. Voor de specificaties van een delta robot design kan u
verscheidene patenten raadplegen.
Het US patent bevind zich achteraan
in de bijlage (Zie appendix A).
1. Basis
2. Servomotoren
3. Scharnierpunt
4. been van de delta robot
5. effector
Figuur 9: delta robot
De delta robot bestaat uit twee platformen:
 Bovenste
 Onderste
Het bovenste platform wordt ook wel de basis genoemd, deze wordt gevormd door 3
servomotoren die 120° ten opzichte van elkaar verschoven zijn. Aan deze servomotoren
worden de benen bevestigd, door een draaiing van de servomotor kan men de benen richten.
Aan het uiteinde van de benen bevindt zich een scharnierpunt, deze scharnierpunten zijn
verbonden met stangen die naar de effector leiden. Door dit innovatief ontwerp waarbij de
basis en effector met elkaar verbonden zijn, is het mogelijk om de effector in het 3D vlak te
oriënteren door enkel de servomotoren te beïnvloeden. Ook wordt er in ons geval een 4de
25
Mechatronische cocktailshaker
servomotor gebruikt, deze bevindt zich op de basis en dient niet om de beweging te
beïnvloeden, maar voor het aanzuigen van vloeistoffen.
3.3.2 Opbouw van een delta robot systeem
Door het gebruik van een delta robot kan men zeer snelle pick & place systemen verkrijgen.
Delta robot systeem:
 De robot sturing is geïntegreerd in de Robotics controller(NI , NJ(OMRON))
 Er kunnen meerdere robots worden gestuurd met maar één controller
 Een hoge doorvoercapaciteit kan worden verkregen, meer dan 200 cycli/min per robot
Door de combinatie van hoge prestatie servomotoren met de lichtgewicht constructie van de
delta robot(kinematica), verkrijgt men een optimaal design voor Pick & Place applicaties.
Meestal gaat men een Robotics controller gebruiken waarbij men volledige controle heeft over
alle bewegende delen van de machine. Met deze controller kan men niet alleen één enkele as
aansturen, maar deze biedt ook de mogelijkheid om een groep assen aan te sturen waardoor
volledige controle verkregen wordt, dit met onafhankelijke of gesynchroniseerde bewegingen.
De synchronisatie met de verschillende transportbanden kan volledig worden
geprogrammeerd dankzij sofware die speciaal werd ontwikkeld voor de Pick & Place
applicaties.
26
Mechatronische cocktailshaker
Figuur 10: delta robot systeem
3.4 LabVIEW
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench)
is een grafische programmeeromgeving die ontwikkeld is door National Instruments. Het is
een omgeving die uitermate geschikt is voor besturingstechniek, data-acquisitie en voor het
communiceren met meetinstrumenten zoals bijvoorbeeld sensoren. De LabVIEW
programmeeromgeving bevat dezelfde taalconstructies en datastructuren als de
conventionele programmeertalen
Figuur 11 : NI LabVIEW
27
Mechatronische cocktailshaker
Programma’s of toepassingen die onder LabVIEW zijn geschreven worden omschreven VI(
Virtual Instrument). Een VI kan worden vergeleken met subroutines en functies die je in
andere programmeertalen gebruikt. een VI heeft twee aanzichten:
 Frontpanel
 Blokdiagram
De frontpanel kan eigenlijk aanzien worden als de human interface en zorgt voor de interactie
tussen mens en applicatie, dit is tevens het venster dat de eindgebruiker te zien zal krijgen.
Hierop kan je niet alleen parameters meegeven, dit door het gebruik van de
bedieningsorganen, maar ook kan men waardes uitlezen door gebruik te maken van
indicatoren. Daarnaast geeft het blokdiagram een schematische weergave van de werking,
deze wordt aanzien als de code.
Figuur 12 : LabVIEW VI
3.4.1 Ontwerpen in LabVIEW
Het creëren van een programma in de LabVIEW-programmeeromgeving gebeurt volledig
grafisch. In de frontpanel worden de parameters toegevoegd, hierbij genereert het
blokdiagram een bijpassend blokje. Deze blokjes kunnen dan onderling verbonden worden via
gekleurde lijnen. De kleur van het blokje is afhankelijk van het gebruikte datatype. Bij het
verbinden van blokjes stellen de lijnen de variabelen voor en de kleuren het data type. Zo staat
de kleur oranje voor een real type en de kleur blauw voor een integer type. De dikte van een
lijn kan variëren, zo stelt een dikke lijn een één dimensionale array voor en een dubbeldikke
lijn een multidimensionale array.
28
Mechatronische cocktailshaker
Figuur 13: case structuur
Lussen en case-statements worden aangeduid met rechthoeken. Alles wat zich binnen deze
rechthoeken bevindt zal door de lus worden uitgevoerd. De gekleurde lijnen die de
functieblokken met elkaar verbinden, dienen twee zaken. Eerst en vooral zorgen de
verbindingen voor de gegevensoverdracht, tussen de functieblokken. Daarna zorgt de volgorde
waarin de functieblokken voorkomen ook voor de volgorde waarin ze worden uitgevoerd. Als
bij het verbinden gebruik wordt gemaakt van vertakkingen brengt dit met zich mee dat
meerdere functies gelijktijdig worden uitgevoerd, dit wordt ook wel multi-threading genoemd.
Multi-threading is het parallel afhandelen van processen bijvoorbeeld bij het inlezen van
meetgegevens kan men gelijktijdig de data analyseren, presenteren en opslaan. Deze
processen zullen allemaal op hun eigen tempo data afhandelen. Wanneer er data moet
worden uitgewisseld tussen parallel lopende processen, is het noodzakelijk dat beide lussen
synchroon lopen. Om dit te garanderen zijn er verschillende methodes die men kan gebruiken
voor synchronisatie.
Doordat LabVIEW een grafische programmeeromgeving is, sluit het goed aan op de manier
waarop ingenieurs en technici denken. Zij gebruiken namelijk constant blokdiagrammen en
flowcharts om processen te verklaren. Wanneer een proces op een duidelijke manier wordt
geprogrammeerd, kan een deskundige die het proces kent, maar geen kennis heeft van
LabVIEW meestal in één oogopslag zien of het proces goed is gemodelleerd.
29
Mechatronische cocktailshaker
4. Opbouw van het project
4.1 NI sbRIO-9602
Figuur 14 : sbRIO-9602
Voor deze bachelorproef wordt er gebruikgemaakt van de sbRIO-9602. Deze single-board RIO
van National Instruments is een herconfigureerbaar controle- en acquisitiesysteem dat
gebruikmaakt van een real-time processor, een Spartan-3 FPGA met ingebouwde I/O die
herprogrammeerbaar zijn.
De volgende lijst geeft de specificaties weer van de sbRIO-9602:
• 2M gate Xilinx Spartan-3 FPGA
• 400 MHz real-time processor
• 128 MB DRAM
• 256 MB niet -vluchtig geheugen
• 10/100BASE-TX Ethernet port
• 4 RS232 seriële poorten
• 110 3,3V DIO Lines
• bedrijfstemperatuur van -20 tot 55 °C
30
Mechatronische cocktailshaker
In toevoeging tot de ingebouwde I/O, heeft de NI Single-Board RIO de mogelijkheid om zijn I/O
uit te breiden door gebruik te maken van de C-Series-module of een RIO Mezzanine Card-
connector. De RIO Mezzanine Card-connector is een high-speed, high-bandwidth connector die
directe toegang biedt tot FPGA zijn digitale I/O-lijnen evenals bepaalde processorspecifieke
functies. Dit maakt het mogelijk om de NI Single-Board RIO verder uit te breiden om aan
specifieke toepassingen te voldoen die een combinatie van I/O vereisen.
Je kan maximaal drie board-only C-Series-modules op de NI Single-Board RIO plaatsen zonder
gebruik te maken van de RIO Mezzanine Card-connector. Board-only C-series apparaten zijn
hetzelfde in opbouw als de C-Series-modules van de CompactRIO, maar dan zonder de
behuizing speciaal voor het gebruik met de NI Single-Board RIO. Door het verwijderen van de
behuizing kan je de modules dichter bij elkaar plaatsen en zo de grootte van het systeem (de
footprint) minimaliseren. Doordat we de behuizingen(afscherming) verwijderen, maken we de
module wel gevoeliger voor omgevingscondities zoals stof, temperatuursveranderingen etc.
Figuur 15 : RIO I/O expansion cards
De NI sbRIO heeft een voeding die een totaal levert van 2A externe belasting bij 5V. Dit
is inclusief de C-Series-module die 200 mA vereist per module. Als bijvoorbeeld drie C-Series-
modules worden gebruikt dan is er slechts 2A - (3 x 200mA) = 1,4A beschikbaar voor gebruik
op de I/O pins. Elke headerpin is geschikt voor maar liefst 2A.
Zoals u kan zien zijn er veel mogelijkheden om de single-board RIO uit te breiden om aan
specifieke toepassingen te voldoen. Het kan voorkomen dat je geen module vindt die beschikt
over de gewenste I/O. Je kan hierbij nog steeds C-Series-modules combineren, maar het
nadeel hiervan is dat dit vrij prijzig kan uitkomen. Voor deze bachelorproef hebben we geen
gebruik gemaakt van C-Series modules omdat het budget beperkt was. Er is dus beslist om zelf
een print te ontwerpen die dan als uitbreiding van de I/O dient.
31
Mechatronische cocktailshaker
Real-time systemen
Dit zijn systemen waarin de computer of controller zijn taken moet uitvoeren binnen de
tijdsbeperkingen van een bepaald proces of systeem. Meestal moet de computer of controller
sneller werken dan het systeem dat hij helpt zodat deze in staat is snel en efficiënt in te
grijpen.
In een real-time controle en real-time procesbesturingssysteem, moet de computer de
gegevens verwerken van het systeem. Deze gegevens kunnen inputs en/of outputs zijn. Als
input gebruikt men sensoren voor het monitoren van bepaalde regelparameters. De output
daarentegen genereert een signaal dat door het systeem of proces wordt berekend. Het
signaaltype gaat variëren naargelang de functies van de controller, hierbij gaat men een
onderscheid maken tussen analoge en digitale signalen welke verkregen worden door het
gebruik van sensoren, schakelaars etc.
In real-time systeem hebben we hulp nodig van een computer of real-time controller om het
werk op een snelle manier of te handelen. In real-time robotica systeem maakt de computer
of controller deel uit van de robot. Meestal is de computer of controller ingebed in de machine
zelf, dan spreekt men over een slimme machine of embedded systeem. Dit embedded
besturingssysteem is een systeem dat is uitgerust voor één of meerdere specifieke taken, die
geïntegreerd zijn in het apparaat.
Real-time systemen kunnen opgedeeld worden in:
 Hard realtime-systemen
 Soft realtime-systemen
Bij hard realtime-systemen heeft de gebruiker de garantie dat de taak(opdracht) binnen de
opgegeven tijd wordt uitgevoerd. Dit is bedoeld voor taken waarbij het missen van de
deadlines catastrofale gevolgen kan hebben en dus niet voor mogen komen. Daarom zal men
bij de ontwikkeling van het besturingssysteem er op toezien dat vertragingen zo veel mogelijk
beperkt worden
Bij soft realtime-systemen worden er minder eisen gesteld op het gebied van tijd(het halen
van deadlines). Het besturingssysteem zal hierbij de taken afhandelen op basis van een
prioriteitsniveau. Het nadeel van dit type is dat men niet de garantie heeft dat onder eender
32
Mechatronische cocktailshaker
welke omstandigheden de deadlines gehaald worden, hierdoor zijn soft realtime-systemen
minder geschikt voor industriële toepassingen en robotica. Wel blijft het systeem geschikt voor
toepassingen waarbij het missen van deadlines geen ernstige gevolgen heeft.
4.2 Printed Circuit Board
Om alle hardware met elkaar te verbinden is er een Printed Circuit Board (PCB) ontwikkeld. Dit
was nodig omdat er al een print voor de motorsturing aanwezig was, en deze niet rechtreeks
gekoppeld kon worden aan de FPGA. Ook werd er verwacht dat sturing werd verwezenlijkt
door gebruik te maken van een Bluetoothmodule (BT23) die reeds ter beschikking was. Ook
hiervoor moest een PCB-ontwerp voor gemaakt worden.
4.2.1 DesignSpark
Voor het printontwerp wordt het softwarepakket DesignSpark gebruikt. Dit softwarepakket
bestaat uit twee onderdelen,
1. Schematic Disign
2. PCB Design
Eerst hebben we het Schematic Design; hierbij is het de bedoeling om de elektrische schema’s
uit te tekenen. Op de schema’s zijn de verschillende onderdelen terug te vinden. De
interfaceprint bestaat voornamelijk uit connectoren en deze connectoren worden gebruikt om
alle onderdelen met elkaar te verbinden. Op de Bluetoothprint bevindt zich de BT23-module,
en wordt er gebruik gemaakt van een 1x6 Pmod connector. Doordat er gebruik wordt gemaakt
van de Pmod-standaard kan de Bluetoothprint apart worden gebruikt op de meeste FPGA-
ontwikkelkits en starterkits, wat ook een vereiste was.
33
Mechatronische cocktailshaker
Figuur 16 : Schematic design
Daarna zetten we dit schematisch ontwerp om naar een PCB-ontwerp. Dit doen we wanneer
het schema volledig is uitgekiend. Hierin kan ook de PCB-lay-out worden vastgelegd. Na het
exporteren zijn alle componenten van het schema terug te vinden in het programma. De
componenten kunnen dan op automatische wijze geplaatst worden, maar ook handmatig. Het
handmatig plaatsen is de beste optie omdat op deze manier de componenten geplaatst
kunnen worden zodat ze makkelijk te solderen zijn. Ook kan je de componenten uitlijnen t.o.v.
elkaar, wat de afwerking ten goede komt.
Figuur 17 : PCB schikking
34
Mechatronische cocktailshaker
Wanneer de componenten op de gewenste positie staan, kan er begonnen worden met het
routen van koperen banen. Dit routen kan zoals het plaatsen van de componenten, op
automatische of handmatige wijze gebeuren. Meestal gaat er een combinatie van de twee
gebruikt worden. Bij autorouting kunnen er verschillende parameters ingesteld worden
waardoor deze al een groot aantal componenten gaat verbinden, de overige banen moeten
dan zelf handmatig worden verbonden. Dit is een efficiënte en tijdbesparende methode om te
gebruiken.
Figuur 18 : PCB routing
Als dit allemaal gebeurd is, dan is de PCB klaar voor productie. Hiervoor kan er nog eens een
laatste check gebeuren door de print in 3D-weergave na te kijken. Deze geeft een reële
weergave van hoe de PCB er in het echt gaat uitzien.
Figuur 19 : 3D view PCB design
35
Mechatronische cocktailshaker
4.2.2 Interface
Om het geheel samen te voegen was er een print nodig die als interface ging dienen. Hierop
werden alle delen van het systeem op aangesloten, de motorsturingsprint, Bluetoothprint en
de Single-Board RIO. Omdat de al beschikbare motorsturingsprint en de zelfontworpen
Bluetoothprint op een 3,3Volt werkte, en de Single-Board RIO enkel beschikt over een 5Volt
Vcc lijn, moest er gebruik gemaakt worden van een spanningsregelaar die een constante
spanning levert van 3,3Volt.
4.2.3 BT23
Doordat we gebruik maken van een draadloze communicatie moeten we voorzichtig tewerk
gaan omdat de module hoog frequente(HF) signalen gebruikt, die makkelijk beïnvloedbaar
zijn. Daarom zijn er enkele voorwaarden waaraan voldaan moet worden i.v.m. het PCB design,
zodat we het HF signaal dat aan de antenne binnenkomt niet vervormen.
voorwaarde Amp'ed RF-modules:
 Alle ongebruikte pinnen mogen niet geaard worden.
 Alle GND pinnen moeten geaard worden.
 Het gebied rond de antenne moet vrij zijn van alle soorten banen en dit over een
afstand van 6,5mm in alle richtingen.
 Er mogen geen banen onder de module worden getrokken.
Omdat er aan deze voorwaarden voldaan moest worden is het PCB design iets groter
uitgekomen dan eerst gewenst was.
4.3 DC-servomotor
DC-servomotoren bestaan uit drie draden gekleurd met wit, rood en zwart. De rode en zwarte
draden gaan naar de Vcc en Gnd, terwijl de witte draad wordt gebruikt om een PWM-signaal in
te voeren vanuit de I/O-poorten van FPGA of microcontroller. Met deze controleaansluiting
kan men de positie van de DC-servomotor bepalen. Op de controleaansluiting staat een PWM-
signaal met een periode van 20ms en een duty-cycle van 10 à 20% , afhankelijk van de
gewenste positie.
Gezien de rotatiebeperkingen van de servo, meestal 120° of 180°, kan een servo ingesteld
worden in zijn neutrale positie. De neutrale positie bevindt zich in het midden van zijn totale
bereik waardoor de servo in beide richtingen evenveel kan uitwijken. Deze positie is altijd
36
Mechatronische cocktailshaker
gekoppeld aan een pulsbreedte van 1,5
milliseconden (duty-cycle 15% bij een PWM-
frequentie van 50Hz).
Figuur 20 : servomotor
4.3.1 Aansturen van de dc servomotor
De servopositie wordt bepaald door de duur van de puls die wordt aangebracht op de
controleaansluiting en niet door de PWM duty-cycle. Omdat de meeste servomotoren elke
20ms een puls verwachten, wordt er meestal gewerkt met een PWM-frequentie van 50 Hz.
Hierbij beschikt men over een periode van 20ms en kan men door de duty-cycle te regelen ook
de servopositie regelen.
Figuur 21 : PWM signaal
Wanneer men een puls met een pulsbreedte van 1ms aanlegt op de controleaansluiting, zal de
servomotor helemaal naar links uitwijken (roteren in tegenwijzerzin). Wanneer er een puls van
2ms wordt aangelegd, zal de servomotor helemaal naar rechts uitwijken (roteren in wijzerzin).
Bij pulsen die zich bevinden tussen deze maxima en minima zal de servomotor een exacte
positie aannemen. Bij pulsen die buiten het bereik liggen van de servomotor, kleiner dan 1ms
of groter dan 2ms, zal de servomotor oververhitten. Maar de meeste servomotoren net zoals
de gebruikte in dit eindwerk beschikt over een oververhittingsbeveiliging waardoor de
servomotor zich uitschakelt wanneer hij overstuurd wordt.
37
Mechatronische cocktailshaker
4.4 LabVIEW Project
Figuur 22 : LabVIEW project
Een LabVIEW FPGA project bestaat uit:
 FPGA VI
 Host VI
 Bitfile
Op de FPGA kan maar één FPGA VI gedownload en uitgevoerd worden op eenzelfde moment.
Je kan communiceren met FPGA VI of bitfiles welke runnen op de FPGA zelf met behulp van
host VI's. Een Host VI kan draaien op een pc of Real-Time target. Elke host VI moet een
reference (verwijzing) openen naar de FPGA VI, build specificatie, of bitfile die draait op de
FPGA. Deze VI reference maakt het dus mogelijk om data uit te wisselen tussen de FPGA VI en
de Real-Time VI. Een VI reference kan geopend worden naar alle FPGA VI’s of bitfile die deel
uitmaken van hetzelfde LabVIEW project als de Host VI.
38
Mechatronische cocktailshaker
Figuur 23: reference VI
4.4.1 FPGA Vi
De FPGA VI kan worden opgesplitst in twee delen namelijk de frontpanel en blockdiagram.
Voor het Frontpanel ontwerp werd er gebruik gemaakt van tabbladen zodat alle
samenhangende parameters fysisch gegroepeerd zijn, zo kan u ook beter het onderscheid
maken tussen de PWM sturing en de Bluetooth verbinding. In het frontpanel kan het
programma gestart worden d.m.v. een startknop,deze zorgt ervoor dat de data van de Host VI
wordt uitgelezen en doorgestuurd wordt naar de FPGA I/O. Bij het drukken op de stopknop
gaat het programma stoppen met het uitlezen van data(data acquisitie), dit afkomstig van de
Host VI.
Figuur 24: Frontpanel FPGA VI (PWM tab) Figuur 25: Frontpanel FPGA VI (Bluetooth tab)
Het blockdiagram is opgesplitst in 3 parallelle lussen waardoor elke lus apart wordt uitgevoerd,
hierdoor kunnen we verschillende timing engines gebruiken. In het LabVIEW project werd de
single-point continuous timing engine gebruikt, waardoor de FPGA continue(1x per iteratie)
data gaat uitlezen of wegschrijven. In deze single-point continuous acquisitie lus wordt de data
ééns per iteratie uitgelezen dit van de Host VI(PWM_settings), hierna wordt de data
weggeschreven naar de FPGA I/O (_PWM_settings). Dit gebeurt enkel en alleen wanneer men
de startknop indrukt, dit komt doordat er gebruik gemaakt word van een sequence lus. Een
sequence lus wordt altijd van links naar recht doorlopen en gaat enkel verder wanneer alle
data beschikbaar is, in andere woorden wanneer alle delen zijn uitgevoerd en doordat de
startknop gekoppeld is aan de conditionele poort van een while lus gaat deze beslissen of de
sequence lus verder gaat uitgevoerd worden. Verder maakt het programma nog gebruik van
een stopknop waardoor de data acquisitie wordt stopgezet en we terugkeren naar het begin
39
Mechatronische cocktailshaker
van de sequence lus. In de PWMLoop gaat de data die ingelezen werd in de acquisitie lus
worden weggeschreven naar de FPGA I/O.
40
Mechatronische cocktailshaker
In de Bluetooth_UART lus bevindt zich de UART(Universal Asynchronous Receiver/Transmitter)
sturing. Hierin bevinden zich 2 subVI’s namelijk de UART_XMT en de UART_RCV. De
UART_XMT staat in voor de transmissie van data naar de tablet, terwijl de UART_RCV data gaat
ontvangen die nodig is voor de bediening van de delta robot. De ontvangen data op
port0/DIO4 wordt naar de ingang van de UART_RCV gestuurd, hierin bevindt zich een shift
register die het mogelijk maakt om de Binaire input om te zetten naar een data Byte.
Figuur 26: Blockdiagram FPGA VI
41
Mechatronische cocktailshaker
4.4.2 Host VI
De Host VI kan hetzelfde worden opgedeeld als de FPGA VI, deze beschikt namelijk over een
frontpanel en blockdiagram. Voor het Frontpanel ontwerp wordt er voornamelijk gebruik
gemaakt van indicatoren dit om alle parameters van de kinematica weer te geven. Doordat de
mechanische constructie kon wijzigen doorheen de stageperiode wordt er gebruik gemaakt
van numeric controls, hiermee kunnen de afmetingen van de delta robot worden meegegeven
doorheen het programma. Voor de sturing van de delta robot zijn er 3 mogelijke opties:
 Manual
 Automatic
 Remote control
Afhankelijk van de gekozen optie is het mogelijk om de delta robot handmatig aan te sturen dit
d.m.v. 3 controle dials, die gebruikt worden voor de verplaatsing in de X,Y,Z richting. Indien er
wordt gekozen voor “automatic” kan de delta robot automatisch gestuurd worden en gaat
deze een voorop ingestelde cocktail maken. Bij “remote control” gaat de delta robot gestuurd
worden d.m.v. een Android tablet die draadloos verbonden is via Bluetooth. Op de tablet gaat
dan een programma runnen waarmee er X,Y en Z waardes kunnen worden uitgewisseld.
Figuur 27: Frontpanel Host VI
42
Mechatronische cocktailshaker
Voor het Blokdiagramma heb ik voornamelijk gebruik gemaakt van een formula node. De
formule Node syntax lijkt zeer sterk op de syntax van de tekst-based programmeertalen. Net
zoals bij de C programmeer omgeving, moet je in de formula node een regel afsluiten met
behulp van een semicolon(;). In de fomula node maakt men gebruik van variabelen, deze moet
men voor gebruik eerst definiëren hetzij als integer, float,etc. Ook moet men er rekening
houden dat er geen eerder gebruikte variabelen worden overschreven, dit is een veel
voorkomende fout. Een beperking van de formula node is dat hierin geen pointers gebruikt
kunnen worden, deze moet men langs buiten inbrengen(input) als local variable. Ook kunnen
er geen booleans gebruikt worden.
43
Mechatronische cocktailshaker
Figuur 28: Overzicht van de Host VI
De bovenstaande figuur geeft een volledige weergave van de host VI. Zoals u kan zien wordt er gebruik gemaakt van een statemachine, a.d.h.v. de optie die
gebruikt word bv. “automatic” gaat de statemachine hierop reageren en automatisch waardes uitschrijven. Deze waardes worden naar de x, y, z variabelen
weggeschreven waardoor de delta robot wordt aangestuurd. Zoals u kan zien maken we ook gebruik van een error handler deze bevindt zich helemaal
rechts op de bovenstaande afbeelding. De error handler zorgt ervoor dat als er een fout optreedt het programma niet wordt stopgezet, maar dat de delta
robot terug naar zijn startpositie beweegt. Helemaal rechts op de afbeelding kan u de FPGA read/write interface zien, deze zorgt voor de interactie met de
FPGA VI. Door gebruik te maken van de FPGA read/write interface gaan we waardes van de Host VI naar de FPGA VI kunnen wegschrijven, die dan naar de
FPGA I/O gekoppeld worden.
44
Mechatronische cocktailshaker
Doorheen de Host VI wordt er gebruik gemaakt van enkele sub VI’s:
 Help function sub VI
 Angle to servo sub VI
In de help function sub VI worden x, y, z coördinaten omgezet in een hoek theta. Als input heeft
deze sub VI enkele parameters nodig zoals de robot geometrie en natuurlijk de x, y, z positie
waarnaar de servomotor zich moet draaien. Deze gegevens worden dan verwerkt zodat men een
output theta heeft wat een hoek voorstelt. De tweede output is de status, deze kan gebruikt
worden voor de error handling en brengt een 1 naar buiten indien de waardes niet geldig zijn.
Figuur 29: Help function sub VI
Nadat we een hoek hebben gegenereerd in de help function sub VI kunnen we deze nog niet
onmiddellijk gebruiken. De FPGA VI kan deze hoek niet gaan gebruiken om de servomotor aan te
sturen, hiervoor wordt er gebruik gemaakt van de angle to servo sub VI. Omdat de PWM sturing
een waarde nodig heeft, gelegen tussen de limieten van 40000 en 80000 om aan een pulsbreedte
te komen van een 1 a 2ms, is het nodig dat we de hoeken omzetten naar een nieuwe waarde die
kan gebruikt worden om de servomotoren aan te sturen. De onderstaande formule(figuur x) zorgt
voor de omzetting van de hoek naar een bruikbare servo waarde.
45
Mechatronische cocktailshaker
Figuur 30: Angle to servo sub VI
De inverse kinematica node wordt gebruikt in combinatie met de help function subVI hierin
bevinden zich de helpfuncties van de inverse kinematica. Een van de belangrijkste parameters van
de inverse kinematica is de robot geometrie:
 e = effector
 f = base
 re = onderarm
 rf = bovenarm
Figuur 31: Parameters inverse kinematica
Zoals u kan zien stelt de robot geometrie de fysieke parameters voor van de delta robot, deze
parameters kunnen verschillen afhankelijk van het gebruikte design. Deze fysieke parameters zijn
belangrijk voor de berekeningen van de hoek theta waaronder de armen komen te staan. Doordat
de referentie zich op de basis bevindt, zullen de z-coördinaten altijd negatief zijn, indien de delta
robot zo gepositioneerd is dat de effector beneden hangt.
Figuur 32: Inverse kinematica
46
Mechatronische cocktailshaker
In het forward kinematica node komt aan de input de theta1, theta2 en de theta3 binnen, deze
werden terug gekoppeld van de inverse kinematica. Deze 3 theta’s zijn nodig om de coördinaten
van de effector te bepalen middelpunt van de effector wordt het punt E0 genoemd omdat dit het
punt is waar de actie van de effector plaats vind.
Figuur 33: Forward kinematica
Voor meer informatie wil ik u doorverwijzen naar de bijlage, appendix B: Berekeningen
kinematica.
47
Mechatronische cocktailshaker
4.4.3 Bitfile
4.4.3.1 Het compile process
Figuur 34: Het compile proces
Om het LabVIEW programma op de FPGA te plaatsen moeten we het programma eerst
compileren.
Elke stap van het compile proces word weergegeven in het compile venster, deze geeft een aantal
uitgevoerde taken en informatie weer. De informatie wordt in de zelfde volgorde gepresenteerd
als dat ze gecompileerd wordt. Je kan de NI LabVIEW software gebruiken om zowel handmatig als
automatisch te compileren, ook kan elk moment kan de compilatie onderbroken worden dit te
wijten aan een fout of een verandering aan het programma, hierna moet er wel opnieuw
gecompileerd worden.
4.4.3.2 Instellen van de compile options
Voordat u begint compileren kan je de compiler instellingen wijzigen, dit wordt gedaan om de
inspanning die u gaat doen om te compileren te verhogen of verlagen. Naarmate de inspanning
die geleverd moet worden, gaat het compileer proces variëren (langer duren). De standaard
compileer instelling voor de hardware is "Balanced".
 "Area" indien er een overmapping van resources kan optreden.
 “Timing Performance” Als je gebruik maakt van een hoge kloksnelheid.
 “Minimum Compile Time”Als je een FPGA-programma schrijft dat geen resource of timing
beperkingen heeft.
 “Custom” indien je het inspanningsniveaus zelf wilt instellen doorheen de programma’s
48
Mechatronische cocktailshaker
Figuur 35: LabVIEW compile options dialog(Xilinx Options)
4.4.3.3 Het genereren van een bitfile
De eerste stap in het compilatieproces is het genereren van tijdelijke bestanden. Voor dit proces
ontleedt LabVIEW het blokschema en zet de code om naar een vorm die de Xilinx compiler kan
interpreteren. Tijdens deze stap kunner er fouten optreden, waardoor het compileren gaat
mislukken. Hierbij gaat het meestal over een illegal VI of een combinatie van VI’s die geplaatst zijn
in single-cyclus loops.
Figuur 36: Het genereren van een bitfile(Dialoog venster)
49
Mechatronische cocktailshaker
5. Probleemstelling
5.1 BLE112-licentie:
Probleem:
Om een programma weg te schrijven naar het geheugen van de BLE112 moest er gebruikgemaakt
worden van de BLE-updatesoftware. Het probleem was dat hiervoor een licensekey vereist was,
maar deze was niet meegeleverd bij de module zelf.
Oplossing:
Eerst werd er gevraagd om een account aan te maken vooraleer je toegang kreeg tot de BLE-
support. Eens in het support gedeelte werd het allemaal duidelijk. Hierop stond namelijk een
forum waar werd uitgelegd dat bij de eerste modules de license key niet werd meegeleverd, maar
dat men hiervoor de helpdesk moest contacteren. Daarna werd er contact opgenomen met de
BLE helpdesk en werd er a.d.h.v. de serienummer een license key gegenereerd.
5.2 BLED112-verbindingsproblemen:
Probleem:
Nadat er een example programma (find_me) naar de BLE werd weggeschreven zou deze zichtbaar
moeten zijn voor alle Bluetooth 4.0-apparaten. Voor de verbinding werd er gebruikgemaakt van
de meegeleverde BLED (dongle), die normaal tevoorschijn zou moeten komen bij de virtuele
com- poorten als “Bluegiga Bluetooth low energy com(x)”. Nadat er meerdere pogingen werden
ondernomen om met de BLED te verbinden, zijn we tot de conclusie gekomen dat deze defect
was.
Oplossing:
Nadat er contact werd opgenomen met de BLE-helpdesk hebben zij gemeld dat de BLED mocht
worden opgestuurd onder inspectie. Hierop hebben wij de BLED opgestuurd en enkele weken
later werd er ons een nieuwe opgestuurd.
5.3 Androidtablet-verbindingsproblemen:
Probleem:
Nadat er meerdere pogingen ondernomen werden om de BLE112 te detecteren hebben we
enkele forums afgezocht. Hierop stond dat de Androidtablet beschikt over Bluetooth 4.0-
hardware, maar dat er momenteel geen officiële Android API voor Bluetooth 4.0 is. Doordat de
BLE112 een single mode module is en enkel data aanneemt van 4.0-modules gaat er nooit een
verbinding tot stand kunnen komen.
Oplossing:
De enige oplossing is voor een andere module kiezen.
50
Mechatronische cocktailshaker
51
Mechatronische cocktailshaker
5.4 Motorsturings PCB:
Probleem:
Bij het sturen van de servomotoren hadden wij het probleem dat de servomotoren niet
bekrachtigd werden. Daarom hebben wij motorsturingsprint moeten nameten, omdat we een
duidelijk PWM signaal op de input van de PCB gemeten hadden. Eerst werd er gedacht dat de
gebruikte adapter te weinig stroom zou leveren, hierdoor zijn wij beginnen werken met een
labvoeding die zeker genoeg stroom levert. Hiermee was het probleem nog steeds niet opgelost
en dachten wij aan eventueel defecte componenten, nadat we die hadden nagemeten wisten we
dat de componenten nog steeds in goede staat waren. Later hebben wij dan ondervonden dat het
hiermee over een Ground fout ging die aanwezig was op de print.
Oplossing:
Opzoeken van de fout, en deze proberen weg te werken.
5.5 UART
Probleem:
Het standaard UART programma maakt gebruik van het FIFO(first in first out) systeem welke
constant een foutmelding geeft. Ook komt de data maar één keer binnen, dan wordt de
verbinding afgesloten terwijl dit niet de bedoeling is. Hierbij krijgen we altijd de LabVIEW error
melding -65 wat staat voor serial port timeout.
Oplossing:
Doordat we de fout maar niet vonden, en we hierdoor veel tijd verloren, hebben we het besluit
genomen om te stoppen met het gebruik van het FIFO systeem. We zijn dan verder gegaan met
een standaard UART programma van NI. Dit progamma maakte gebruik van een shift register
waardoor we een 8 bit array creëren (1byte).
52
Mechatronische cocktailshaker
6. Resultaat
53
Mechatronische cocktailshaker
Toegepaste Informatica
7. Technologieën
7.1 Android
Android is een opensource besturingssysteem voor smartphones en tablets. Het is gebaseerd op
de Linuxkernel en het Java-programmeerplatform en wordt ontwikkeld door het bedrijf Google
Inc. De code van een Android project wordt gecompileerd door de Dalvik Virtual Machine,
waardoor het dan wordt geoptimaliseerd voor mobiele toestellen. Er zijn verschillende versies van
het Android besturingssysteem beschikbaar. Onderaan in het tabel is meer informatie over de
verschillende beschikbare versies.
Codeaam Versie Uitgavedatum API Distributie
(Mei 2013)
Jelly Bean 4.2 13 november 2012 17 2.3%
Jelly Bean 4.1 27 juni 2012 16 26.1%
Ice Cream Sandwich 4.0 19 oktober 2011 15 27.5%
Honeycomb 3.2 15 juli 2011 13 0.1%
Honeycomb 3.1 10 mei 2011 12
Gingerbread 2.3.3 9 februari 2011 10 38.4%
Gingerbread 2.3 6 december 2010 9 0.1%
Froyo 2.2 20 mei 2010 8 3.7%
Eclair 2.0 - 2.1 26 oktober 2009 7 1.7%
Donut 1.6 15 september 2009 4 0.1%
Cupcake 1.5 30 april 2009 3
Eerste uitgave 1.1 10 februari 2009 1
Uiteindelijk werd beslist om de applicatie in de Android Jellybean 4.2 omgeving te ontwikkelen.
Een Google Nexus 7 tablet werd gebruikt om de applicatie te testen. De code van deze Android-
applicatie werd ontwikkeld met behulp van de Android SDK API 17.
54
Mechatronische cocktailshaker
7.2 Java
Java is een platformonafhankelijke objectgeoriënteerde programmeertaal. Java is een taal die qua
syntaxis grotendeels gebaseerd is op de programmeertaal C++. Java beschikt echter over een
grotere klassenbibliotheek dan C++. Sinds het Android besturingssysteem gebaseerd is op het
Java-programmeerplatform werd de applicatie dan ontwikkeld in Java. De RESTful web service is
ook gebaseerd op Java, het maakt dus gebruik van ingebouwde java libraries zoals JDBC.
7.3 XML / JSON
7.3.1 Inleiding XML
Extensible Markup Language (XML) is een standaard gecreëerd door het World Wide Web
Consortium. Via de syntaxis van deze formele opmaaktaal kan men gestructureerde gegevens
weergeven in de vorm van platte tekst. De presentatie van XML is uiteindelijk leesbaar voor een
persoon en voor een machine. Het XML-formaat wordt voornamelijk gebruikt om gegevens op te
slaan en om gegevens over het internet te versturen. Android maakt vooral gebruik van XML om
layoutstructuren, het manifest en andere resources in Android op te slaan.
7.3.2 Inleiding JSON
JavaScript Object Notation(JSON) is een deelverzameling van de programmeertaal JavaScript. Het
wordt gebruikt voor het uitwisselen van datastructuren, voornamelijk in web applicaties die
asynchroon gegevens ophalen van de webserver zoals AJAX.
De eenvoudige notatie van JSON heeft geleid tot een grote populariteit ervan, voornamelijk zijn
functie om op een heel performante manier data over te dragen. Omdat gegevens worden
uitgewisseld in de vorm van JavaScript-expressies, kunnen de gegevens worden ingelezen in een
applicatie door simpelweg de JSON-expressies te evalueren waardoor er geen aparte parser voor
nodig is. Voor een groot aantal andere programmeertalen zijn functiebibliotheken beschikbaar
voor het lezen en schrijven van JSON-expressies.
In het Android programmeerplatform is er dus vanzelfsprekend een bibliotheek beschikbaar om
JSON-expressies te lezen en te maken.
55
Mechatronische cocktailshaker
7.3.3 XML vs JSON
XML en JSON zijn gemaakt voor hetzelfde doeleinde, maar er zijn ook enkele verschillen tussen de
twee. Ieder formaat heeft zijn eigen voordelen en nadelen, waardoor na evaluatie van de situatie
de geschikte formaat wordt gekozen.
De representatie van XML is veel gemakkelijker te lezen dan JSON voor een persoon. De
datastructuur van XML is ook veel complexer ten opzichte van JSON, wat kan dienen als een
voordeel en nadeel. Het voordeel hiervan is dat XML gemakkelijker is om uit te breiden, maar als
nadeel volgt dat het dan ook veel meer data moet vasthouden tegenover JSON.
JSON is dus veel performanter om data over te brengen, waardoor deze formaat uiteindelijk werd
gekozen om data over te brengen tussen de RESTful web service en de applicatie.
7.3.4 Opbouw van JSON
JSON is gebouwd op twee structuren:
 Een collectie van namen gepaard met een waarde (Object);
 Een gesorteerde lijst van waarden (Array);
Onderaan ziet u hoe een object in json wordt opgebouwd. Een object begint en eindigt met een
accolade. De string representeert de naam, die via een dubbele punt wordt gepaard met een
waarde. In de collectie worden de gepaarde namen/waarden gescheiden door een komma.
FIguur 37: Opbouw van een JSON Object
56
Mechatronische cocktailshaker
Onderaan ziet u hoe een array in json wordt opgebouwd. Een array begint met een linker haakje
en eindigt met een rechterhaakje. De waarden in deze array worden gescheiden door een
komma.
Figuur 38: Opbouw van een JSON Array
Onderaan zijn de verschillende soorten mogelijke waarden van JSON weergegeven.
Figuur 39 Verschillende mogelijke waarden in JSON
57
Mechatronische cocktailshaker
7.4 REST
Representational state transfer (REST) is een software-architectuur die ontworpen is voor
gedistribueerde componentsystemen. Het concept van REST werd geïntroduceerd door Roy
Fielding, en ontwikkeld door de W3C Technical Architecture Group. Hedendaags is REST
uitgegroeid tot het meest voorkomende design model voor API’s op het World Wide Web.
In een REST model zijn de meest belangrijke componenten clients,servers en resources. Resources
zijn bepaalde entiteiten die kunnen worden overgedragen tussen client en server. Een client
stuurt een request naar de server, de server behandelt dat request en geeft dan een geschikte
response. Alle requests en responses worden opgebouwd in een representatie van een bepaalde
resource.
De hoofddoelen van REST zijn:
 Schaalbaarheid van interacties tussen componenten;
 Veralgemening van interfaces;
 Componenten onafhankelijk kunnen gebruiken;
 Componenten als bemiddelaar gebruiken om latency te verlagen;
 Veiligheid verhogen en oudere systemen in te kapselen.
7.5 RESTful web service
RESTful web services zijn gebouwd om het beste te werken op het web. Een RESTful web service
is een API die gebaseerd is op een stateless communicatie protocol, zoals het Hypertext Transfer
Protocol. Het gebruikt dan ook de principes van REST architectuur. Sinds de RESTful web service
van deze project werkt met HTTP, zal het altijd de volgende eigenschappen hebben:
 De operaties maakt gebruik van de HTTP methodes (GET, PUT, POST or DELETE);
 De operaties zijn stateless;
 Requests worden behandeld via URI’s;
 Response moet compatibel zijn met HTTP (XML, JSON, XHTML, ...);
58
Mechatronische cocktailshaker
7.6 JAX-RS
JAX-RS (Java API for RESTful Web Services) is een Java API die ondersteuning geeft in het
ontwikkelen van web services volgens de REST-architectuur. Deze API maakt vooral gebruik van
annotaties om de ontwikkeling en implementatie van de web service te vereenvoudigen.
De volgende annotaties helpt om resources om te zetten naar web resources in een RESTful web
service:
 @GET, @PUT, @POST, @DELETE en @HEAD specificeert de HTTP request type van een
resource;
 @Path specificeert de URI path van een resource of methode;
 @Produces specificeert de response type (XML, JSON, XHTML, ...);
 @Consumes specificeert de type van de binnenkomende request.
59
Mechatronische cocktailshaker
8. Gebruikte tools
8.1 Eclipse
Eclipse is een opensource IDE van de Eclipse Foundation. Het wordt voornamelijk gebruikt voor de
programmeertaal Java. Binnen deze project werd Eclipse vooral gebruikt om de RESTful web
service en de Android applicatie te ontwikkelen.
8.2 Apache Tomcat
Apache Tomcat is een opensource web container van Apache Software Foundation. Tomcat heeft
de mogelijkheid om servlets en JavaServer-pagina’s uit te voeren. De RESTful web service van
deze project wordt gehost op een Apache Tomcat Server versie 6.
8.3 CloudBees
CloudBees is een online service die een gratis platform aanbiedt voor Java applicaties. Via deze
service wordt de RESTful web service gehost die dan bereikbaar is via de URL
http://cocktails.kst.cloudbees.net/rest/
8.4 BitBucket
BitBucket is een online service voor softwareprojecten die het Mercurial of Git revisie controle
systeem gebruikt. Het hoofddoel van deze service is om de code van de software online op te
slaan op een repository. Deze repository kan dan gedeeld worden met andere BitBucket accounts
zodat meerdere mensen aan één softwareproject kunnen werken. Voor deze project werd
BitBucket gebruikt om de code van de Android-applicatie te delen met de bedrijfspromotor.
60
Mechatronische cocktailshaker
9. Onderzoeksprobleem
Binnen de XIOS Hogeschool Limburg werd tijdens een stageopdracht uit het verleden een
deltarobot ontworpen door een aantal studenten elektronica. Van de onderzoekers is nu de vraag
gekomen om deze deltarobot te gebruiken om cocktails te maken. Hiervoor zal de onderzoeker
van de opleiding elektromechanica de robot aanpassen.
Momenteel is het probleem dat er geen gemakkelijke manier is om de deltarobot te besturen. Er
zijn ook momenteel geen praktische toepassingen voor deze deltarobot, waardoor hij gewoon in
een kast is opgeborgen. Men zou graag dan ook de capaciteiten van deze deltarobot willen tonen
aan het publiek via opendeurdagen, maar dat is in zijn huidige staat niet zo indrukwekkend.
Uiteindelijk is het de bedoeling om een werkende robot te hebben. Deze kan onder andere
ingezet worden voor PR-doeleinden voor de hogeschool.
Deze robot zal bediend moeten kunnen worden door middel van een intuïtieve interface, bij
voorkeur op een tablet. De applicatie op de tablet moet voldoende flexibel zijn om nieuwe
cocktails te ontwerpen of bestaande cocktails te bereiden. Belangrijk daarbij is dat de bediening
vanzelfsprekend is en dat de nodige aandacht besteed wordt aan gebruiksgemak.
Door middel van deze applicatie zal dus het aansturen van de robot geautomatiseerd worden. De
gebruiker krijgt een overzicht van de beschikbare cocktails en ingrediënten te zien. Na eventuele
aanpassingen aan de ingrediënten zal de robot de cocktail automatisch bereiden. De bediening
van de robot zal gebeuren via een draadloze verbinding, zoals Bluetooth.
61
Mechatronische cocktailshaker
10.Design
10.1 Opdracht
De bedrijfspromotor, Steven Palmaers, gaf de opdracht om een Android-applicatie te maken die
cocktails kan maken en kan verbinden met de deltarobot. De gevraagde eisen van de applicatie
waren na een gedetailleerd gesprek heel duidelijk.
De volgende eisen werden vastgesteld:
 De gebruiker kan tussen bestaande cocktails zoeken;
 De gebruiker kan zelf nieuwe cocktails aanmaken of bestaande cocktails aanpassen;
 Alle cocktails en hun recepten moeten op een online database worden opgeslagen;
 De applicatie moet een draadloze verbinding kunnen vastleggen met de deltarobot;
 De applicatie moet de juiste receptdata doorsturen naar de deltarobot;
 De applicatie kan de deltarobot ook besturen via coördinaten.
Wat betreft het design kreeg ik veel vrijheid, zolang werd voldaan aan de gestelde eisen.
Uiteindelijk besloot ik om met een MySQL-database de recepten op te slaan. Deze database zal
dan verbonden zijn met de applicatie via een RESTful webservice. Bluetoothtechnologie zal
gebruikt worden om de applicatie met de deltarobot te verbinden om data over te brengen. De
Android-GUI zal gebruik maken van icoontjes om tussen verschillende cocktails te kunnen kiezen.
62
Mechatronische cocktailshaker
10.2 MySQL
Een MySQL-database werd gekozen om de recepten op te slaan omdat er veel online services
bestaan die deze dienst gratis aanbieden. Bovendien is MySQL zeer performant en ook flexibel
met vele platformen. Dankzij mijn ervaring met MySQL uit mijn studiejaren, is het ook
gemakkelijker om MySQL te gebruiken. Hieronder vindt u het EER-diagram van de database.
Figuur 40: EER Schema van MySQL database
63
Mechatronische cocktailshaker
10.3 RESTful web service
Deze web service zal voor de dataoverdracht zorgen tussen de Android-applicatie en de MySQL-
database. De resources die deze web-service zal overdragen zijn voornamelijk de cocktails en hun
recepten. JAX-RS wordt voornamelijk gebruikt om deze web-service op te bouwen, omdat het
zeer snel geïmplementeerd kan worden.
10.4 Bluetooth
Bluetooth werd voornamelijk gekozen omdat het op vele verschillende mobiele apparaten
aanwezig is. Dit geeft dan de mogelijkheid om elk mobiel apparaat dat Bluetooth heeft, met de
deltarobot te verbinden.
10.5 Graphical User Interface
De GUI moet voldoen aan twee criteria: simpel en aantrekkelijk zijn. Het is immers de bedoeling
dat het vaak aan een publiek wordt voorgesteld. Daarom besloot ik om vooral met icoontjes te
werken om de cocktails te representeren in plaats van gewone tekstvelden.
Een icoon van een cocktail moet dynamisch omdat het zich moet kunnen aanpassen aan de hand
van de ingrediënten. Daarom werd beslist om elke cocktail te tekenen op een canvas aan de hand
van hun recept. Dit zorgt ervoor dat wanneer het recept veranderd, het icoon dus ook mee
veranderd.
10.6 Besturing deltarobot
De positie van de deltarobot wordt bepaald door X, Y en Z coördinaten. Er werd gevraagd om
deze coördinaten op een simpele en snelle manier door te kunnen geven aan de deltarobot via
een intuïtieve interface. In overleg met de bedrijfspromotor werd beslist om te werken met een
venster om de X en Y coördinaten te bepalen. Een slider wordt dan gebruikt om de Z coördinaat
te bepalen.
64
Mechatronische cocktailshaker
11.Implementatie
11.1 Android-applicatie
11.1.1 Selecteren cocktail
Onderaan vindt u het scherm dat de gebruiker ziet wanneer de applicatie opstart. Hij krijgt een
lijst van cocktails te zien waaruit hij kan selecteren. Bovenaan is ook een zoekbalk waar de
gebruiker cocktails kan opzoeken.
Aan de rechterkant van het scherm ziet u dan meer informatie wanneer een cocktail wordt
geselecteerd. Rechtsboven ziet u dan de naam (Manhattan) en aan de hand van de ingrediënten
het berekende alcoholpercentage (17,84%). Daaronder ziet u dan het hele recept van de cocktail.
Een vinkje of een rood kruisje geeft ook aan of het ingrediënt beschikbaar is in de deltarobot.
Figuur 41: Selecteren van een cocktail
Wanneer een gebruiker dan een “long click” doet op een cocktail, dan komt er een scherm
tevoorschijn dat de functionaliteit geeft om de cocktail te laten maken door de deltarobot. Meer
informatie over het proces vindt u op de volgende pagina.
65
Mechatronische cocktailshaker
11.1.2 Maken van een cocktail
Onderaan vindt u het scherm dat de gebruiker ziet wanneer hij een cocktail wilt laten maken door
de deltarobot. Er zal in het begin een startknop aanwezig zijn, waarop de gebruiker kan drukken
om het hele proces te starten.
Ten eerste zal de Android-applicatie proberen om met de delta obot te verbinden via Bluetooth.
Wanneer de verbinding niet slaagt, zal de gebruiker een bericht krijgen dat de verbinding mislukte
en dat hij opnieuw moet proberen.
Als de verbinding wel slaagt dan komt een cursor te staan bij het eerste ingredient en zal de
deltarobot het glas opvullen met het eerste ingrediënt. Wanneer dit proces klaar is, kan de
gebruiker dan op de “Next”-knop drukken om het volgende ingrediënt toe te voegen.
Figuur 42: Maken van een cocktail
Er is ook een “Pause” knop beschikbaar zodat de gebruiker op ieder moment de deltarobot kan
pauzeren.
66
Mechatronische cocktailshaker
11.1.3 Aanpassen en toevoegen van cocktails
In figuur X vindt u het scherm dat de gebruiker kan zien als hij wenst om bestaande cocktails en
recepten wilt aanpassen.
Links is een lijst beschikbaar die alle bestaande cocktails of ingrediënten toont. Bovenaan deze
lijst is ook een zoekbalk waar de gebruiker cocktails kan opzoeken. Helemaal onderaan deze lijst is
de knop “Add cocktail” beschikbaar, die de functie geeft om een nieuwe cocktail aan te maken.
Wanneer de gebruiker een cocktail uit de lijst selecteert krijgt hij alle opties om de cocktail en het
recept te veranderen.
Er is een tekstveld om de naam van de cocktail te veranderen en er is een spinner om het glastype
van de cocktail te wijzigen. De knop met het “+” voegt een ingrediënt toe aan het recept en de
knop “-“ langs een ingrediënt verwijdert deze ingrediënt uit het recept.
Onderaan zijn ook de knoppen “Save”, “Cancel” en “Delete” beschikbaar. Respectievelijk geven
deze knoppen de functies om wijzigingen op te slaan, wijzigingen te annuleren, of het recept te
verwijderen.
Figuur 43: Aanpassen van een cocktail
67
Mechatronische cocktailshaker
11.1.4 Aanpassen en toevoegen van ingrediënten
Onderaan in figuur X ziet u het scherm om ingrediënten aan te passen. Er zijn 3 elementen in een
ingrediënten die de gebruiker kan aanpassen:
 De naam van het ingrediënt;
 Alcoholpercentage van het ingrediënt;
 Kleur van het ingrediënt.
Wanneer de gebruik op de kleurbalk klikt, komt een dialoog tevoorschijn om die de gebruiker de
mogelijkheid geeft om een nieuwe kleur aan te wijzen.
De knoppen aanwezig op het scherm hebben dezelfde functionaliteit als bij het scherm op de
vorige pagina.
Figuur 44: Aanpassen van een ingrediënt
68
Mechatronische cocktailshaker
11.1.5 Besturen van deltarobot
Het besturen van de deltarobot is mogelijk door een Bluetooth verbinding met de delta robot via
de Android-applicatie. Bij het opstarten van deze scherm zal de applicatie automatisch proberen
te verbinden met de Bluetooth module van de deltarobot. Er zal vervolgens een bericht
tevoorschijn komen die weergeeft of de verbinding was geslaagd of mislukt.
Links op het scherm worden de huidige de X, Y en Z coördinaten van de delta robot getoond. De
cirkel op het groene veld representeert de X en Y waarden, terwijl de aanwijzer bij het blauwe
balk de Z coördinaten weergeeft.
Door de cirkel te bewegen op het groene veld kan de gebruiker de positie van de deltarobot
veranderen. Door de aanwijzer op het blauwe balk te bewegen kan de gebruiker de hoogte van de
delta robot controleren.
Figuur 45: Besturing van deltarobot
69
Mechatronische cocktailshaker
11.1.6 Bluetooth verbinding
Als de Android-applicatie een Bluetooth verbindingen wilt maken met de deltarobot, moet deB
luetooth module van de deltarobot gepaard zijn met de Android tablet. Wanneer de Android-
applicatie een verbinding wilt maken met de delta robot zal eerst de onderstaande variabelen
worden gedeclareerd.
De UUID bepaalt de service die Bluetooth zal gebruiken. De huidige UUID zal een seriële poort
verbindingen maken.
De volgende code zal dan door alle gepaarde Bluetooth apparaten zoeken naar de delta robot.
private BluetoothAdapter mBluetoothAdapter;
private BluetoothSocket socket;
private BluetoothConnection connection;
private final String uuidString = "00001101-0000-1000-8000-00805F9B34FB";
private final UUID uuid = UUID.fromString(uuidString);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
Log.d("Bluetooth", "No support voor Bluetooth");
}
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 0);
}
if(connection==null){
Set<BluetoothDevice> pairedDevices =
mBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
// Loop through paired devices
for (BluetoothDevice device : pairedDevices) {
if(device.getName().equals("Amp'ed Up!")){
//start dialog
connectDialog = new ProgressDialog(DeltarobotActivity.this);
connectDialog.setTitle("Connecting");
connectDialog.setMessage("Connecting to Bluetooth module...");
connectDialog.show();
new connectBluetoothTask().execute(device);
}
}
}
}
70
Mechatronische cocktailshaker
Vervolgens zal de applicatie met de module proberen te verbinden via de volgende code in een
AsyncTask.
protected BluetoothConnection doInBackground(BluetoothDevice... devices) {
BluetoothConnection newConnection = null;
try {
socket = devices[0].createRfcommSocketToServiceRecord(uuid);
socket.connect();
newConnection = new BluetoothConnection(socket);
} catch (IOException e) {
e.printStackTrace();
}
return newConnection;
}
protected void onPostExecute(BluetoothConnection result) {
connection = result;
connectDialog.dismiss();
if(connection!=null){
Toast.makeText(getApplicationContext(), "Success connecting",
Toast.LENGTH_LONG).show();
final Handler h = new Handler();
h.postDelayed(new Runnable(){
@Override
public void run()
{
if(isMoved){
sendInfoOverBluetooth();
isMoved=false;
}
h.postDelayed(this, DELAY_TIME);
}
}, DELAY_TIME);
}else{
Toast.makeText(getApplicationContext(), "Connection to delta robot
failed", Toast.LENGTH_LONG).show();
}
}
71
Mechatronische cocktailshaker
Om data door te sturen naar de deltarobot zal de applicatie byte arrays versturen over de
Bluetooth verbinding. Een enkele byte array bevat de volgende 5 parameters voor de delta robot:
 Startkarakter
 X coördinaat
 Y coördinaat
 Z coördinaat
 Aantal milliliter
In deze code wordt een byte array opgesteld en verstuurd
Wanneer het aantal milliliter 0 is, dan zal de delta robot geen vloeistof opnemen en gewoon
verplaatsen naar de positie. Door een startkarakter weet de deltarobot dat hij een nieuwe positie
heeft binnengekregen, waardoor het zich vervolgens zal verplaatsen.
private void sendInfoOverBluetooth() {
if(connection!=null){
try{
ByteBuffer byteBuffer = ByteBuffer.allocate(10);
byteBuffer.putChar('*'); //Byte 1-2
byteBuffer.putShort((short) transformedX); //Byte 3-4
byteBuffer.putShort((short) transformedY); //Byte 5-6
byteBuffer.putShort((short) transformedZ); //Byte 7-8
byteBuffer.putShort((short) 0); //Byte 9-10
byte[] data = byteBuffer.array();
connection.write(data);
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Sending data failed",
Toast.LENGTH_LONG).show();
}
}
}
72
Mechatronische cocktailshaker
11.2 RESTful web service
De RESTful web service werd geïmplementeerd met de volgende 3 resources:
 Cocktail resource
 Ingrediënt resource
 Recept resource
Elke resource is ontwikkeld om specifieke data uit de database te halen. De ingrediënt resource
dient om ingrediënten uit de database te halen om het dan als response te geven aan een
request.
Onderaan is een simpel voorbeeld van wat de code uitvoert nadat de web service een request
ontvangt.
De @Path annotatie bepaalt de URI van de resource, de @Get annotatie bepaalt het request type
en de @Produces annotatie bepaalt het response type.
@Path("/all")
@GET
@Produces({ MediaType.APPLICATION_JSON })
public List<Ingredient> getAllIngredients() {
return selectAllIngredients();
}
73
Mechatronische cocktailshaker
De methode geeft een lijst terug van alle gevonden ingrediënten
private List<Ingredient> selectAllIngredients(){
ArrayList<Ingredient> ingredients = new ArrayList<Ingredient>();
try {
String query = ("SELECT id, name, color, alcoholpercentage FROM
ingredients");
Connection conn = DatabaseConnection.getConnection();
PreparedStatement stmt = conn.prepareStatement(query);
ResultSet rst = stmt.executeQuery();
while(rst.next()) {
Ingredient i = new Ingredient();
i.setId(rst.getInt("id"));
i.setNaam(rst.getString("name"));
i.setKleur(rst.getInt("color"));
i.setAlpercent(rst.getInt("alcoholpercentage"));
ingredients.add(i);
}
conn.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ingredients;
}
74
Mechatronische cocktailshaker
12.Conclusie
Doordat er een interdisciplinair team werd samengesteld, was het vooral belangrijk dat er
duidelijke afspraken gemaakt werden. Dit was niet altijd even gemakkelijk omdat sommige delen
van het project niet zonder het andere kan, hierdoor moeste we afspreken welke onderdelen we
eerst gingen afwerken.
Doordat het een onderzoeksproject was hebben we veel informatie zelf moeten opzoeken, dit
vooral omdat de basis kennis die we op school meekregen vaak niet voldoende is om het project
in goede banen te leiden. Het was vooral een goede ervaring om in een soort van
bedrijfsomgeving te werken en niet op school, hierdoor zijn we vooral zelfstandig tewerk gegaan.
Een nadeel van het technologiecentrum was dat er weinig materiaal ter beschikking was,
waardoor we soms toch nog materiaal op de XIOS Hogeschool Limburg moesten gaan halen.
Doorheen de stage wordt er voornamelijk gebruik gemaakt van de sbRIO-9602 deze beschikt over
een FPGA en een real-time controller, deze RIO is veelzijdig en bied dus zeer veel mogelijkheden
dit i.v.m. het automatiseren van systemen(delta robot).
12.1 Mogelijke uitbreidingen
Het mechanische ontwerp van de cocktailshaker moet zeker en vast nog “up to date” gebracht
worden, hierbij denk ik aan ingebouwde reservoirs en een degelijk afzuigsysteem voor het
aanzuigen van de gepaste hoeveelheid vloeistof. Door tijdgebrek is de Bluetooth communicatie
niet helemaal afgeraakt, hierdoor zou het een mogelijke uitbreiding kunnen zijn om het UART
programma te optimaliseren.
75
Mechatronische cocktailshaker
13.Lijst met referenties
Algemene informatie:
http://www.xios.be/
http://belgium.ni.com/
gebruikte technologieën:
Bluetooth:
http://www.bluetooth.com/Pages/Low-Energy.aspx
http://www.bluetooth.com/Pages/Smart-Logos-FAQ.aspx
http://www.ceva-dsp.com/CEVA-Bluetooth.html
http://eetimes.com/design/communications-design/4217866/Bluetooth-4-0--An-introduction-to-
Bluetooth-Low-Energy-Part-I
http://www.eetimes.com/design/communications-design/4218319/Bluetooth-4-0--An-
introduction-to-Bluetooth-Low-Energy-Part-II
FPGA:
http://www.ni.com/white-paper/6983/en
http://nl.wikipedia.org/wiki/Field-programmable_gate_array
http://www.xilinx.com/training/fpga/fpga-field-programmable-gate-array.htm
http://www.xilinx.com/support/documentation/application_notes/xapp465.pdf
http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf
http://www.fpga4fun.com/FPGAinfo1.html
http://www.edafun.com/home/item/77.html
Delta robot:
http://www.pmdcorp.com/news/articles/html/motion_kinematics_deep_dive.cfm
http://forums.trossenrobotics.com/tutorials/introduction-129/delta-robot-kinematics-3276/
http://www.fanucrobotics.com/robotics-
articles/Delta_Robots_Improve_Highly_Repetitive_Tasks.aspx
http://industrial.omron.be/nl/news/product-news/sysmac-and-delta
http://www.abi.nl/nl/produktennl/abiflexx
76
Mechatronische cocktailshaker
opbouw van het project:
sbRIO-9602:
http://www.ni.com
http://www.ni.com/pdf/manuals/374991c.pdf
real-time:
http://en.wikipedia.org/wiki/Real-time_computing
http://nl.wikipedia.org/wiki/Realtimebesturingssysteem
BT23:
http://www.ampedrf.com/datasheets/BT23_Datasheet.pdf
http://www.kowatec.com/prod/amp/doc/BT-23_Datasheet.pdf
LabVIEW:
http://pwo.fpga.be/LabVIEW/Lab%204%20Picoblaze.pdf
http://pwo.fpga.be/LabVIEW/Lab%202%20Serial%20Communication.pdf
http://pwo.fpga.be/LabVIEW/Lab%203%20Embedding%20VHDL%20Code.pdf
http://pwo.fpga.be/LabVIEW/Lab%204%20Picoblaze.pdf
http://zone.ni.com/reference/en-XX/help/371361J-01/lverror/misc_lv_error_codes/
http://www.ni.com/white-paper/9381/en
http://www.ni.com/white-paper/6983/en
http://nl.wikipedia.org/wiki/LabVIEW
http://labviewwiki.org/Case_Structure
http://www.youtube.com/watch?v=-ulWxOyOfgM
http://www.ni.com/
servomotor:
http://nl.wikipedia.org/wiki/Servomotor
http://www.servodatabase.com/servo/hitec/hs-7966hb
77
Mechatronische cocktailshaker
Toegepaste Informatica
[RF01] Open Hands Alliance, Android Overview, [online] available
http://www.openhandsetalliance.com/android_overview.html
[RF02] Android Developer Site, Dashboard distribution, [online] available
http://developer.android.com/about/dashboards/index.html
[RF03] JSON Hompeage, [online] available
http://json.org/
[RF04] Metajack, json-versus-xml-not-as-simple-as-you-think, [online] available
http://metajack.im/2010/02/01/json-versus-xml-not-as-simple-as-you-think/
[RF05] RESTful Web Services vs. “Big” Web Services, [online] available
http://www2008.org/papers/pdf/p805-pautassoA.pdf - REST architectuur
[RF06] Oracle, What Are RESTful Web Services, [online] available
http://docs.oracle.com/javaee/6/tutorial/doc/gijqy.html - RESTful web service
78
Mechatronische cocktailshaker
14.Bijlagen
14.1 Appendix A: Patent Deltarobot
79
Mechatronische cocktailshaker
80
Mechatronische cocktailshaker
81
Mechatronische cocktailshaker
82
Mechatronische cocktailshaker
83
Mechatronische cocktailshaker
84
Mechatronische cocktailshaker
85
Mechatronische cocktailshaker
86
Mechatronische cocktailshaker
87
Mechatronische cocktailshaker
88
Mechatronische cocktailshaker
89
Mechatronische cocktailshaker
90
Mechatronische cocktailshaker
14.2 Appendix B: Berekeningen kinematica
91
Mechatronische cocktailshaker
92
Mechatronische cocktailshaker
93
Mechatronische cocktailshaker
94
Mechatronische cocktailshaker
95
Mechatronische cocktailshaker
96
Mechatronische cocktailshaker
Mechatronic System Design
Mechatronic System Design

More Related Content

Similar to Mechatronic System Design

Keynote blended learning NHL
Keynote blended learning NHLKeynote blended learning NHL
Keynote blended learning NHLWilfredRubens.com
 
Final scriptie tamarah collij publiek management
Final scriptie tamarah collij publiek managementFinal scriptie tamarah collij publiek management
Final scriptie tamarah collij publiek managementTwittercrisis
 
Eindwerk Web2
Eindwerk Web2Eindwerk Web2
Eindwerk Web2saMBO-ICT
 
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...jjschout
 
Een warme plek in de strategie Chris Pettersson
Een warme plek in de strategie Chris PetterssonEen warme plek in de strategie Chris Pettersson
Een warme plek in de strategie Chris PetterssonChris Pettersson
 
Stageverslag ASZ Geraardsbergen
Stageverslag ASZ GeraardsbergenStageverslag ASZ Geraardsbergen
Stageverslag ASZ GeraardsbergenNele De Crée
 
RUG01-002163625_2014_0001_AC
RUG01-002163625_2014_0001_ACRUG01-002163625_2014_0001_AC
RUG01-002163625_2014_0001_ACJoren Sansen
 

Similar to Mechatronic System Design (8)

Keynote blended learning NHL
Keynote blended learning NHLKeynote blended learning NHL
Keynote blended learning NHL
 
Final scriptie tamarah collij publiek management
Final scriptie tamarah collij publiek managementFinal scriptie tamarah collij publiek management
Final scriptie tamarah collij publiek management
 
Eindwerk Web2
Eindwerk Web2Eindwerk Web2
Eindwerk Web2
 
EindwerkWeb2
EindwerkWeb2EindwerkWeb2
EindwerkWeb2
 
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...
Invloed van merk, emotie en sensorische aspecten op het consumeren van melkdr...
 
Een warme plek in de strategie Chris Pettersson
Een warme plek in de strategie Chris PetterssonEen warme plek in de strategie Chris Pettersson
Een warme plek in de strategie Chris Pettersson
 
Stageverslag ASZ Geraardsbergen
Stageverslag ASZ GeraardsbergenStageverslag ASZ Geraardsbergen
Stageverslag ASZ Geraardsbergen
 
RUG01-002163625_2014_0001_AC
RUG01-002163625_2014_0001_ACRUG01-002163625_2014_0001_AC
RUG01-002163625_2014_0001_AC
 

More from Vincent Claes

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDVincent Claes
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldVincent Claes
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKVincent Claes
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockVincent Claes
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sVincent Claes
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Vincent Claes
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot PythonVincent Claes
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopVincent Claes
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM ImplementationVincent Claes
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceVincent Claes
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsVincent Claes
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMVincent Claes
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleVincent Claes
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadVincent Claes
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorVincent Claes
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processorVincent Claes
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Vincent Claes
 

More from Vincent Claes (20)

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZED
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello World
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDK
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot Python
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python Workshop
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM Implementation
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud Service
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT Projects
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARM
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by Example
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart Mirror
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processor
 
MySQL / PHP Server
MySQL / PHP ServerMySQL / PHP Server
MySQL / PHP Server
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...
 
fTales workshop
fTales workshopfTales workshop
fTales workshop
 
Maker Revolution
Maker RevolutionMaker Revolution
Maker Revolution
 

Mechatronic System Design

  • 1. MECHATRONISCHE COCKTAILSHAKER Nick Van Dyck Kristoff Geris Promotoren Ing. Vincent Claes XIOS Hogeschool Limburg Ing. Patrick Hilven XIOS Hogeschool Limburg Ing. Steven Palmaers XIOS Hogeschool Limburg Dhr. Tristan Fransen XIOS Hogeschool Limburg Bachelorproef academiejaar 2012-2013
  • 2.
  • 3. XIOS Hogeschool Limburg DEPARTEMENT N-TECHNOLOGIE Mechatronische cocktailshaker Nick Van Dyck Kristoff Geris Afstudeerwerk ingediend tot het behalen van het diploma van Bachelor in de Elektronica-ICT Bachelor in de toegepaste informatica Promotoren: Ing. V. Claes (XIOS Hogeschool Limburg) Ing. P. Hilven (XIOS Hogeschool Limburg) Ing. S. Palmaers (XIOS Hogeschool Limburg) Dhr. T. Fransen((XIOS Hogeschool Limburg) Academiejaar 2012 – 2013
  • 4. 4 Mechatronische cocktailshaker Dankbetuiging Dit woord van dank is gericht aan de vele mensen die ons geholpen hebben met de totstandkoming van deze bachelorproef. Wij willen graag van deze gelegenheid gebruikmaken om toch een aantal mensen te bedanken voor hun steun, vertrouwen en inzet. Eerst en vooral zouden wij graag onze promotoren, Ing. Vincent Claes en Ing. Steven Palmaers willen bedanken dat ze ons de kans gaven om stage te kunnen lopen, maar ook voor hun uitstekende begeleiding tijdens het werken aan het project Mechatronic System Design. Hun kennis en expertise hebben een duidelijke meerwaarde betekend voor onze stage. Ook stonden ze altijd klaar met bijkomende informatie en/of uitleg. Daarnaast willen wij de XIOS Hogeschool Limburg bedanken voor het interessante lessenpakket dat zij aanbieden; het was een opleiding waarvan wij genoten hebben. Ons dank gaat tevens uit naar onze opleidingshoofden en stagecoördinatoren Patrick Hilven en Tristan Fransen voor hun begeleiding tijdens de stage. Vervolgens zouden wij al onze vrienden willen bedanken omdat werken niet kan zonder afwisseling, ontspanning en afleiding! Ten slotte willen wij onze familie bedanken voor de steun die zij geboden hebben tijdens deze periode. En vooral onze ouders voor de kans om deze studies aan te vatten. Ook hebben zij ons nauwlettend op de voet gevolgd en indien nodig een luisterend oor geboden. Nick Van Dyck Kristoff Geris
  • 5. 5 Mechatronische cocktailshaker Inhoudsopgave Dankbetuiging..............................................................................................................................4 Inhoudsopgave.............................................................................................................................5 Abstract .......................................................................................................................................8 Afkortingen en begrippen.............................................................................................................9 Afkortingen.......................................................................................................................................... 9 Begrippen.......................................................................................................................................... 10 Lijst van gebruikte figuren........................................................................................................... 11 1. Het Bedrijf .......................................................................................................................... 13 2. Inleiding.............................................................................................................................. 14 Elektronica ICT - Nick Van Dyck 3. Gebruikte technologieën ..................................................................................................... 15 3.1 Bluetooth 4.0..................................................................................................................... 15 3.1.1 Algemeen/toepassingsmogelijkheden..................................................................... 15 3.1.2 BLE-structuur............................................................................................................ 16 3.1.3 BLE packets............................................................................................................... 18 3.1.4 Single Mode vs. Dual Mode...................................................................................... 19 3.2 FPGA.................................................................................................................................. 20 3.2.1 Wat is FPGA? ............................................................................................................ 20 3.2.2 FPGA & µC ................................................................................................................ 23 3.3 Delta robot ........................................................................................................................ 24 3.3.1 algemeen.................................................................................................................. 24 3.3.2 Opbouw van een delta robot systeem..................................................................... 25 3.4 LabVIEW ............................................................................................................................ 26 3.4.1 Ontwerpen in LabVIEW............................................................................................ 27 4. Opbouw van het project...................................................................................................... 29 4.1 NI sbRIO-9602.................................................................................................................... 29 Real-time systemen.................................................................................................................. 31 4.2 Printed Circuit Board......................................................................................................... 32 4.2.1 DesignSpark.............................................................................................................. 32 4.2.2 Interface ................................................................................................................... 35 4.2.3 BT23.......................................................................................................................... 35 4.3 DC-servomotor.................................................................................................................. 35 4.3.1 Aansturen van de dc servomotor............................................................................. 36
  • 6. 6 Mechatronische cocktailshaker 4.4 LabVIEW Project................................................................................................................ 37 4.4.1 FPGA Vi..................................................................................................................... 38 4.4.2 Host VI...................................................................................................................... 41 4.4.3 Bitfile ........................................................................................................................ 47 4.4.3.3 Het genereren van een bitfile................................................................................... 48 5. Probleemstelling ................................................................................................................. 49 5.1 BLE112-licentie:................................................................................................................. 49 5.2 BLED112-verbindingsproblemen:...................................................................................... 49 5.3 Androidtablet-verbindingsproblemen: ............................................................................. 49 5.4 Motorsturings PCB: ........................................................................................................... 51 5.5 UART.................................................................................................................................. 51 6. Resultaat ............................................................................................................................ 52 Toegepaste Informatica - Kristoff Geris 7. Technologieën..................................................................................................................... 53 7.1 Android.............................................................................................................................. 53 7.2 Java.................................................................................................................................... 54 7.3 XML / JSON........................................................................................................................ 54 7.3.1 Inleiding XML............................................................................................................ 54 7.3.2 Inleiding JSON........................................................................................................... 54 7.3.3 XML vs JSON ............................................................................................................. 55 7.3.4 Opbouw van JSON.................................................................................................... 55 7.4 REST................................................................................................................................... 57 7.5 RESTful web service........................................................................................................... 57 7.6 JAX-RS................................................................................................................................ 58 8. Gebruikte tools ................................................................................................................... 59 8.1 Eclipse................................................................................................................................ 59 8.2 Apache Tomcat.................................................................................................................. 59 8.3 CloudBees.......................................................................................................................... 59 8.4 BitBucket ........................................................................................................................... 59 9. Onderzoeksprobleem.......................................................................................................... 60 10. Design................................................................................................................................. 61 10.1 Opdracht............................................................................................................................ 61 10.2 MySQL ............................................................................................................................... 62 10.3 RESTful web service........................................................................................................... 63 10.4 Bluetooth........................................................................................................................... 63
  • 7. 7 Mechatronische cocktailshaker 10.5 Graphical User Interface ................................................................................................... 63 10.6 Besturing deltarobot ......................................................................................................... 63 11. Implementatie .................................................................................................................... 64 11.1 Android-applicatie............................................................................................................. 64 11.1.1 Selecteren cocktail ................................................................................................... 64 11.1.2 Maken van een cocktail............................................................................................ 65 11.1.3 Aanpassen en toevoegen van cocktails.................................................................... 66 11.1.4 Aanpassen en toevoegen van ingrediënten............................................................. 67 11.1.5 Besturen van deltarobot .......................................................................................... 68 11.1.6 Bluetooth verbinding ............................................................................................... 69 11.2 RESTful web service........................................................................................................... 72 Algemeen 12. Conclusie ............................................................................................................................ 74 12.1 Mogelijke uitbreidingen .................................................................................................... 74 13. Lijst met referenties ............................................................................................................ 75 14. Bijlagen............................................................................................................................... 78 14.1 Appendix A: Patent Deltarobot......................................................................................... 78 14.2 Appendix B: Berekeningen kinematica ............................................................................. 90
  • 8. 8 Mechatronische cocktailshaker Abstract Het doel van deze bachelorproef is het ontwerp van een mechatronica-demonstrator. De te bouwen demonstrator bevat FPGA- en Bluetooth 4.0-technologie en heeft als functie het aanmaken van cocktails, vandaar de benaming van de demonstrator “Cocktailshaker”. De mechanische constructie die gebruikt wordt is een bestaande deltarobotopstelling. Een FPGA (Field Programmable Gate Array) is een geïntegreerde schakeling bestaande uit programmeerbare logische functies. De demo-opstelling voorziet een communicatieplatform tussen de FPGA en de Bluetooth-module. Bluetooth 4.0 wordt ook wel Bluetooth low energy genoemd door zijn zeer lage energieverbruik: een 10-tal mA en in rust een 10-tal nA, waardoor de module het potentieel heeft om jaren mee te gaan op één enkele coin-cellbatterij. De interface tussen de deltarobot, FPGA en Bluetoothmodule werd ontworpen in het programma Designspark. Deze print is ontworpen door gebruik te maken van Pmod-standaard zodat hij op vrijwel alle boards aangesloten kan worden. Ook is er gedacht aan uitbreidingsmogelijkheden en zijn er extra I/O voorzien. Een Android-applicatie wordt gebruikt om de input van een gebruiker te verwerken. Via deze applicatie kan de gebruiker kiezen tussen verschillende cocktails om ze vervolgens te laten maken door de deltarobot. In de applicatie is het ook mogelijk om nieuwe cocktailrecepten te maken of bestaande cocktailrecepten te veranderen. Deze recepten worden opgeslagen op een online MySQL- database die verbonden is met een RESTful webservice. Deze webservice is opgesteld in Java en wordt gehost op een Tomcat-server. De webservice kan dan de gevraagde recepten uit de database halen en deze vervolgens doorsturen naar de Android-applicatie. Wanneer de Android-tablet cocktaildata heeft verstuurd naar de FPGA met behulp van Bluetooth-technologie, dan wordt deze eerst in de Bluetooth-module omgezet naar seriële data, om zo doorgegeven te worden aan de FPGA. Hierna wordt de data gedecodeerd binnen de LabVIEW-programmeeromgeving. Ten slotte wordt de verwerkte data doorgegeven aan de motorsturing, waardoor de gewenste cocktail verkregen wordt.
  • 9. 9 Mechatronische cocktailshaker Afkortingen en begrippen Afkortingen FPGA Field Programmable Gate Array PCB Printed Circuit Board HMI Human Machine Interface MSD Mechatronic System Design PWO Projectmatig Wetenschappelijk Onderzoek BLE Bluetooth low energy EDR Enhanced Data Rate HS High Speed GFSK Gaussian frequency-shift keying DSS Direct Spread Spectrum ISM – band Industrial, scientific and medical radio bands RAM Random-access memory RF Radio frequency PDU Protocol data unit CRC Cyclic redundancy check MIC Message Integrity Check CLB Configurable Logic Block ASIC Application Specific Integrated Circuits SRAM Static random-access memory OTP One Time Programmable IOB I/O – blocks LED Light-emitting diode BRAM Block random-access memory LabVIEW Laboratory Virtual Instrumentation Engineering Workbench VI Virtual Instrument NI National Instruments 3D Driedimensionaal DRAM Dynamic random-access memory MB Megabyte
  • 10. 10 Mechatronische cocktailshaker Base -TX Ethernet over twisted pair DIO Digitale Input/Output HF Hoog frequent UART Universal Asynchronous Receiver/Transmitter PWM Pulse width modulation XML Extensible Markup Language JSON JavaScript Object Notation ICT Information and Communications Technology REST Representational State Transfer JAX-RS Java API for RESTful Web Service SQL Structured Query Language API Application Programming Interface URI Uniform Resource Identifier HTTP Hypertext Transfer Protocol UUID Universally Unique Identifier Begrippen Request Een instructie op een computer om informatie te verkrijgen vanuit een externe informatiebron. Response Een antwoordt van een computer die de gevraagde informatie geeft van een request. Resource Een bron van informatie die beschikbaar is voor computers Stateless protocol Een communicatie protocol dat elke request behandelt als een onafhankelijke transactie die geen verband houdt met een eerdere request.
  • 11. 11 Mechatronische cocktailshaker Lijst van gebruikte figuren Figuur 1 : flowchart bachelorproef Figuur 2: Bluetooth symbool Figuur 3: Advertising channels Figuur 4: BLE packet header Figuur 5: communicatiestack Figuur 6: FPGA structuur Figuur 7: CLB structuur Figuur 8: geïntegreerd µC-FPGA board Figuur 9: delta robot Figuur 10: delta robot systeem Figuur 11: NI LabVIEW Figuur 12 : LabVIEW VI Figuur 13: case structuur Figuur 14: sbRIO-9602 Figuur 15: RIO I/O expansion cards Figuur 16: Schematic design Figuur 17: PCB schikking Figuur 18: PCB routing Figuur 19: 3D view PCB design Figuur 20: servomotor Figuur 21: PWM signaal Figuur 22: LabVIEW project Figuur 23: reference VI Figuur 24: Frontpanel FPGA VI (PWM tab) Figuur 25: Frontpanel FPGA VI (Bluetooth tab) Figuur 26: Blockdiagram FPGA VI Figuur 27: Frontpanel Host VI Figuur 28: Overzicht van de Host VI Figuur 29: Help function sub VI Figuur 30: Angle to servo sub VI Figuur 31: Parameters inverse kinematica Figuur 32: Inverse kinematica Figuur 33: Forward kinematica
  • 12. 12 Mechatronische cocktailshaker Figuur 34: Het compile proces Figuur 35: LabVIEW compile options dialog(Xilinx Options) Figuur 36: Het genereren van een bitfile(Dialoog venster) Figuur 37: Opbouw van een JSON Object Figuur 38: Opbouw van een JSON Array Figuur 39: Verschillende mogelijke waarden in JSON Figuur 40: EER-schema van MySQL Database Figuur 41: Selecteren van een cocktail Figuur 42: Maken van een cocktail Figuur 43: Aanpassen van een cocktail Figuur 44: Aanpassen van een ingrediënt Figuur 45: Besturing van deltarobot
  • 13. 13 Mechatronische cocktailshaker 1. Het Bedrijf De XIOS Hogeschool Limburg is dé Vlaamse Autonome Hogeschool in Limburg met vestigingen in Diepenbeek en Hasselt. XIOS staat voor eXpertisecentrum voor Innovatie, Industrie, Onderwijs, Onderzoek en Samenleving. De XIOS hogeschool is dus niet enkel een hogeschool maar ook een expertisecentrum. De kernopdrachten van XIOS zijn onderwijs, onderzoek en dienstverlening. Door de voortdurende wisselwerking tussen deze kernopdrachten houdt XIOS op alle vlakken een vinger aan de pols van de samenleving. De XIOS hogeschool wil via zijn onderzoeksprojecten zijn studenten opleiden in een zo breed mogelijk werkgebied. Dit onderzoek is nauw verbonden met de verschillende opleidingen en geeft dus een duidelijke meerwaarde. Dit project vond plaats in de Technologiepool, die vooral dient voor onderzoeks- en dienstverleningsactiviteiten. Deze activiteiten worden bepaald door vragen van bedrijven, social-profitorganisaties en non-profitorganisaties die niet onmiddellijk naar één specifieke onderzoeksgroep georiënteerd kunnen worden. Mechatronic System Design (MSD) is een PWO-onderzoeksproject waar in een multidisciplinair team samengewerkt wordt aan een case waarin een machine gevirtualiseerd wordt die regeltechnisch en via een mobiele applicatie aangestuurd wordt. In de eindfase van het project wordt de machine ook daadwerkelijk gebouwd. Het team is samengesteld uit onderzoekers van de opleidingen elektronica-ICT, elektromechanica en toegepaste informatica.
  • 14. 14 Mechatronische cocktailshaker 2. Inleiding Zoals de titel al aangeeft handelt deze bachelorproef over het ontwerpen van een mechatronische cocktailshaker. Deze implementatie wordt verwezenlijkt aan de hand van een demo opstelling, een Androidtablet, Bluetoothmodule, sbRIO-9602 en een deltarobot die al aanwezig was. Deze demo-opstelling is een non-professionele opstelling en is enkel bedoeld als demonstrator om de volledige werking van het systeem te tonen. Nadien zou het eventueel als case verder uitgewerkt kunnen worden tot een professionele opstelling. De demonstrator gaat als volgt tewerk:  Een Android-applicatie wordt gebruikt om de input van een persoon te verwerken, deze wordt ook wel de HMI genoemd, via deze applicatie kan de gebruiker kiezen tussen verschillende cocktails.  De gegevens worden op hun beurt uitgewisseld via Bluetooth. Hierbij gaan de Androidtablet en de Bluetooth module gekoppeld zijn.  De Bluetoothmodule bevindt zich op een print die in rechtstreekse verbinding staat met de single-board RIO en de data, het gebruikte protocol tussen de Bluetooth module en de sbRIO is het serieel communicatieprotocol.  In de sbRIO gaan we de wiskundige berekeningen uitvoeren aan de hand van de data die we via de HMI binnenkrijgen.  De verwerkte data wordt dan weer op haar beurt gebruikt voor het aansturen van de deltarobot. Figuur 1 : flowchart bachelorproef
  • 15. 15 Mechatronische cocktailshaker Elektronica-ICT 3. Gebruikte technologieën 3.1 Bluetooth 4.0 3.1.1 Algemeen/toepassingsmogelijkheden Bluetooth is een communicatietechnologie die draadloze verbinding voorziet voor lokale connectiviteit tussen bijvoorbeeld een telefoon en headset. Die dient als vervanging van kabels. De meest recente uitbreiding van Bluetooth is Bluetooth low energy (BLE). Zoals de naam impliceert, is BLE ontworpen voor energiebeperkte toepassingen. BLE voorziet draadloze connectiviteit voor kleine apparaten die op een coin-cellbatterij werken. In de moderne wereld wordt draadloze connectiviteit beschouwd als een gegeven in apparaat. De meest gekende tot op heden is Wi-Fi: het is een standaard die geïmplementeerd is in laptops, Playstations en smartphones. Wi-Fi geeft aanzienlijke bandbreedte voor gegevensoverdracht, maar zijn protocols zijn complex waardoor het stroomverbruik wat aan de hoge kant ligt. Recente inspanningen om Wi-Fi-vermogensbehoefte te verminderen leverde Low Energy Wi-Fi op, die beter geschikt is voor batterijaangedreven toepassingen, omdat deze vaak niet veel gegevensoverdracht vereisen. De markt voor draadloze communicatie is nog steeds heel divers. Dit is niet te wijten aan standaardisatiemoeilijkheden, maar omdat er geen “one-size-fits-all” oplossing ter beschikking is. Bluetooth word geacht zich in dezelfde categorie te bevinden als Wi-Fi ,dit is te wijten aan factoren zoals gestandaardiseerde data-overdracht met een vrij hoog stroomverbruik. In de oorspronkelijke release ondersteunde Bluetooth 1Mbit/sec gegevensoverdracht (Bluetooth 1.2). Sindsdien is dit aantal gestegen tot 3Mbit/sec met een Enhanced Data Rate versie (Bluetooth 2.0 EDR), en zelfs nog verder met een snelle versie (Bluetooth 3.0 HS). Nu met de Bluetooth 4.0-technologie gaat men de andere factoren aanpakken zoals het relatief hoog stroomverbruik. BLE kan worden beschouwd als een uitbreiding van Bluetooth, die gericht is op het lage energieverbruik. Hierdoor is het ideaal voor applicaties waarbij sensoren aan te pas komen, dit meestal in combinatie met batterijen zoals bijvoorbeeld in de medische sector (Body Area
  • 16. 16 Mechatronische cocktailshaker Network (BAN)). Terwijl Bluetooth 2.0 EDR en Bluetooth 3.0 HS gefocust zijn op hogere datasnelheden, richt Bluetooth 4.0 zich op de effectieve communicatie met de apparaten die geen data streamen of hoge data throughput vereisen. BLE is niet alleen gestandaardiseerd, maar zal ook gebruikt worden in meer dan 2 miljard mobiele telefoons. In deze telefoons zal BLE gebruikt worden in opvulling van de gewone Bluetooth, dus zullen beide geïmplementeerd worden. Figuur 2: Bluetooth symbool 3.1.2 BLE-structuur Doordat Bluetooth een draadloze communicatietechnologie is, gebruikt BLE de lucht als medium en haalt hierbij datasnelheiden van 1 Mbit/s en gebruikt het hierbij GFSK-modulatie. Dit is een minder complexe radio dan de Direct Spread Spectrum (DSS), maar het belangrijkste is het hergebruik van de bestaande elementen van Bluetooth-radio's. Het werkt in de 2,4 GHz ISM-band met behulp van een 40-kanaalspartitieruimte; deze partities liggen 2 MHz uit elkaar. Om storingen tot een minimum te beperken, gebruikt BLE frequency hopping. In tegenstelling tot de gewone Bluetooth, blijft BLE langer op eenzelfde kanaal. Er zijn drie vaste RF-kanalen die gebruikt worden om advertisements te broadcasten; deze maken het mogelijk om apparaten te detecteren. Wanneer er een verbindingsverzoek binnenkomt, worden dezelfde kanalen gebruikt voor het uitwisselen van connectieparameters. Pas wanneer er een verbinding tot stand komt, gaat men overschakelen op de gewone kanalen. Figuur 3 geeft een weergave van de gebruikte advertising channels.
  • 17. 17 Mechatronische cocktailshaker Figuur 3: Advertising channels Een BLE-apparaat kan werken in verschillende modes, afhankelijk van de gewenste functionaliteit. De hoofdmodes zijn de advertising mode, scanning mode, master device en slave device. In de advertising mode zendt de BLE op periodieke wijze advertisements en kan hij op verzoek van andere apparaten meer informatie verzenden om een verbinding tot stand te brengen. Het scanning mode-apparaat, bevindt zich aan de andere kant, luistert naar advertisements en kan aanvullende informatie vragen als actieve scanmodus is ingeschakeld. Een scan-only-apparaat werkt in de passieve modus, hierbij luistert deze alleen voor advertisements. Doordat de stack kan worden opgedeeld in secties, kunnen we de niet- gebruikte delen weglaten en de stack optimaliseren waardoor kleinere FLASH/RAM- geheugens gebruikt kunnen worden. Om een verbinding tot stand te brengen, moet één apparaat in advertising mode staan en het andere apparaat in initiator mode. Initiator mode is vergelijkbaar met de scanner mode, met uitzondering dat het hierbij de bedoeling is om een verbinding tot stand te brengen. De initiator scant voor advertising packets, en gaat een verzoek versturen om verbinding te maken met het gewenste apparaat. Zodra een verbinding tot stand is gebracht, neemt de initiator de rol van het masterapparaat en de advertiser wordt hierbij dan een slave-apparaat. Slave-apparaten kunnen slechts verbonden zijn met één apparaat (de master), terwijl masterapparaten met meerdere slaves tegelijkertijd verbonden kunnen worden. Doordat slave- apparaten niet veel rekenkracht nodig hebben zijn de modules zeer klein en goedkoop.
  • 18. 18 Mechatronische cocktailshaker 3.1.3 BLE packets BLE packets bevatten een 1 byte preamble, 4 byte toegangscode afhankelijk van het gebruikte RF kanaal, een PDU met een grootte tussen de 2-39 bytes gevolgd door een 3 bytes van CRC. Figuur 4 geeft een schematisch overzicht van de BLE packet header. Figuur 4: BLE packet header De PDU voor het advertisement kanaal bestaat uit een 16-bit PDU header, en zendt afhankelijk van het soort advertisement maximaal 31 bytes informatie. Hierop kan de active scanner tot 31 byte aan bijkomende informatie aanvragen zelfs zonder een verbinding te maken. Wanneer een verbinding tot stand is gebracht, levert de initiator(master) de advertiser(slave) kritische gegevens die het kanaal en de timing van de master-slave gegevensuitwisseling definiëren. Deze data specificeert twee belangrijke parameters: namelijk het connection interval en slave latency. Het connection interval bepaalt de tijd tussen het begin van het datapakket uitwisseling en het verbindingsgebeuren. slave latency, is het aantal Communicatie intervallen dat een slave de master kan negeren zonder dat de verbinding verbroken wordt. Dit geeft de slave de mogelijkheid om het stroomverbruik te optimaliseren. Zodra een verbinding tot stand is gebracht, kan de slaaf een update van de communicatie parameters vragen om zijn gegevens te updaten.
  • 19. 19 Mechatronische cocktailshaker De PDU bestaat uit een datapacket header van maximaal 37 bytes aan nuttige informatie gevolgd door 4 bytes Message Integrity Check (MIC) data, dit wanneer er encryptie gebruikt wordt. Elk communicatie-event wordt gestart door de master en het dient als referentiepunt voor tijdsberekeningen te doen, dit om te weten wanneer het volgende transmissie-event plaatsvindt. Tijdens de communicatie, gaan de master en slave afwisselend datapackets zenden en ontvangen tot weerszijden geen te zenden packets meer heeft. De transmissie wordt dan aanschouwd als afgesloten, hierbij gaat de uitwisseling van gegevens worden opgeschort totdat er terug data ter beschikking is. 3.1.4 Single Mode vs. Dual Mode Doordat BLE zeer lage-energie-eisen stelt is er een merkbaar verschil in Bluetooth en Bluetooth LE-protocollen, maar tegelijkertijd hebben deze het voordeel dat ze het RF- spectrum hergebruiken, waardoor eigenlijk het grootste deel van de wijzigingen plaatsvindt in de protocol stack. De Bluetooth 4.0 implementeert 2 types: dual-mode apparaten welke de Bluetooth LE ondersteunen in aanvulling op de oude Bluetooth BR/EDR, en single mode apparaten die alleen Bluetooth LE-protocol ondersteunt. De oude Bluetooth BR/EDR blijven nog steeds beschikbaar omdat er reeds 2 miljard gebruikers zijn. Met de 4.0 release, zijn deze apparaten nog steeds bruikbaar omdat via dual-mode de oudere technologieën nog steeds backwards compatible zijn.
  • 20. 20 Mechatronische cocktailshaker Figuur 5: communicatiestack De bovenstaande figuur is een vereenvoudigde weergave van een communicatiestack voor de verschillende soorten Bluetooth technologieën. Dual mode welke geïntroduceerd is in Bluetooth 4.0 ondersteunt zowel Low Energy als oudere apparaten zoals Bluetooth BR/EDR. Single mode apparaten, dit typisch voor geldbesparende applicaties ondersteunen enkel de BLE apparaten. 3.2 FPGA 3.2.1 Wat is FPGA? Field programmable gate arrays (FPGA’s) zijn programmeerbare halfgeleider apparaten die gebaseerd zijn op een matrix van Configurable Logic Blocks (CLB’s). deze CLB’s zijn verbonden d.m.v. programmeerbare connecties. In tegenstelling tot Application Specific Integrated Circuits (ASICs), waarbij het apparaat op maat gemaakt is voor een specifiek design, kan de FPGA geprogrammeerd worden om aan specifieke design eigenschappen te voldoen. Het meest gebruikte type van FPGA’s zijn diegene die gebaseerd zijn op het SRAM -type. Deze types kunnen in tegenstelling tot One Time Programmable FPGA’s (OTP), meerdere keren geprogrammeerd worden. Het voordeel van een FPGA is dat het ontwerp in een latere ontwerpcyclus nog steeds kan aangepast worden.
  • 21. 21 Mechatronische cocktailshaker Figuur 6: FPGA structuur De CLB is een fundamentele logische eenheid in een FPGA structuur. Het exacte aantal en functies varieert van FPGA tot FPGA, zo heeft degene die wij gebruiken (Spartan-3) duizenden identieke CLB blocks ter beschikking. Deze CLB’s bestaan uit een configureerbare schakelmatrix met 4 of 6 inputs, multiplexers en flipflops. De schakelmatrix is zeer flexibel en kan worden geconfigureerd voor het gebruik van combinatorische logica, shift registers of RAM. Doordat men beschikt over programmeerbare interconnecties is het mogelijk om de logische blokken te verbinden tot grotere circuits om aan de vereiste functionaliteit te voldoen, dit wordt ook wel routing genoemd. Routing is het connecteren van verschillende logische schakelingen en één van de belangrijkste aspecten in FPGA-chips omdat dit de meeste vertragingen veroorzaakt.
  • 22. 22 Mechatronische cocktailshaker Figuur 7: CLB structuur I/O-blokken (IOB) verbinden de interne logica (CLB) met de pinnen van de FPGA. De meeste pinnen kunnen geconfigureerd worden voor zowel ingang, als uitgang en zijn dus bi- directioneel. In deze IOB’s zit de nodige elektronica om een signaal naar binnen of buiten te brengen. Zo kunnen we ingangen inlezen van zowel schakelaars als drukknoppen maar ook sensoren, uitgangen aansturen zoals LED’s, motoren, etc. Er zijn twee soorten pins:  User pins  Dedicated pins In tegenstelling tot user pins welke geconfigureerd kunnen worden als zowel input, output of bi-directioneel zijn de dedicated pins hard-gecodeerd. Hiermee bedoelen we dat ze niet configureerbaar zijn door de gebruiker. Ook wordt er hierbij een onderscheid gemaakt tussen power pins, configuration pins en dedicated inputs zoals de onboard clock.Als geheugenbouwsteen wordt er in de meeste FPGA’s Embedded Block RAM-geheugen(BRAM) voorzien, deze zorgt voor on-chip geheugen in het ontwerp. Xilinx FPGA's bieden tot 10Mbits van on-chip geheugen.
  • 23. 23 Mechatronische cocktailshaker 3.2.2 FPGA & µC De embedded systemen van vandaag worden steeds meer complex en vereisen een vorm van flexibiliteit. Om aan deze eisen te voldoen gaat men gebruik maken van een geïntegreerde µC- FPGA board met ingebouwde interface tussen de twee apparaten. Dit geïntegreerd µC-FPGA board beschikt over zowel configureerbare hardware als software, hierdoor kan men custom hardware en software implementeren. Figuur 8: geïntegreerd µC-FPGA board Een typische toepassing kan beginnen als een software-only Microcontroller design zonder gebruik te maken van de FPGA, die op een later tijdstip gebruikt de FPGA voor snellere logische functies als de noodzaak zich voordoet. Alternatief kan een project beginnen als FPGA ontwerp en later de microcontroller van software of wiskundige functies, die gemakkelijker te ontwikkelen in een microcontroller C programma uitvoeren gebruiken maar snelheidsintensieve logica blijft plaatsvinden in de FPGA.
  • 24. 24 Mechatronische cocktailshaker 3.3 Delta robot 3.3.1 algemeen De zogenaamde parallelle delta robot, werd uitgevonden in de begin jaren '80 in Zwitserland door professor Reymond Clavel. De naam parallelle delta robot is ontstaan doordat de effector en de basis altijd parallel zijn ten opzichte van elkaar, en hierdoor dus ook parallel met het voorwerp dat wordt opgenomen. Voor de specificaties van een delta robot design kan u verscheidene patenten raadplegen. Het US patent bevind zich achteraan in de bijlage (Zie appendix A). 1. Basis 2. Servomotoren 3. Scharnierpunt 4. been van de delta robot 5. effector Figuur 9: delta robot De delta robot bestaat uit twee platformen:  Bovenste  Onderste Het bovenste platform wordt ook wel de basis genoemd, deze wordt gevormd door 3 servomotoren die 120° ten opzichte van elkaar verschoven zijn. Aan deze servomotoren worden de benen bevestigd, door een draaiing van de servomotor kan men de benen richten. Aan het uiteinde van de benen bevindt zich een scharnierpunt, deze scharnierpunten zijn verbonden met stangen die naar de effector leiden. Door dit innovatief ontwerp waarbij de basis en effector met elkaar verbonden zijn, is het mogelijk om de effector in het 3D vlak te oriënteren door enkel de servomotoren te beïnvloeden. Ook wordt er in ons geval een 4de
  • 25. 25 Mechatronische cocktailshaker servomotor gebruikt, deze bevindt zich op de basis en dient niet om de beweging te beïnvloeden, maar voor het aanzuigen van vloeistoffen. 3.3.2 Opbouw van een delta robot systeem Door het gebruik van een delta robot kan men zeer snelle pick & place systemen verkrijgen. Delta robot systeem:  De robot sturing is geïntegreerd in de Robotics controller(NI , NJ(OMRON))  Er kunnen meerdere robots worden gestuurd met maar één controller  Een hoge doorvoercapaciteit kan worden verkregen, meer dan 200 cycli/min per robot Door de combinatie van hoge prestatie servomotoren met de lichtgewicht constructie van de delta robot(kinematica), verkrijgt men een optimaal design voor Pick & Place applicaties. Meestal gaat men een Robotics controller gebruiken waarbij men volledige controle heeft over alle bewegende delen van de machine. Met deze controller kan men niet alleen één enkele as aansturen, maar deze biedt ook de mogelijkheid om een groep assen aan te sturen waardoor volledige controle verkregen wordt, dit met onafhankelijke of gesynchroniseerde bewegingen. De synchronisatie met de verschillende transportbanden kan volledig worden geprogrammeerd dankzij sofware die speciaal werd ontwikkeld voor de Pick & Place applicaties.
  • 26. 26 Mechatronische cocktailshaker Figuur 10: delta robot systeem 3.4 LabVIEW LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) is een grafische programmeeromgeving die ontwikkeld is door National Instruments. Het is een omgeving die uitermate geschikt is voor besturingstechniek, data-acquisitie en voor het communiceren met meetinstrumenten zoals bijvoorbeeld sensoren. De LabVIEW programmeeromgeving bevat dezelfde taalconstructies en datastructuren als de conventionele programmeertalen Figuur 11 : NI LabVIEW
  • 27. 27 Mechatronische cocktailshaker Programma’s of toepassingen die onder LabVIEW zijn geschreven worden omschreven VI( Virtual Instrument). Een VI kan worden vergeleken met subroutines en functies die je in andere programmeertalen gebruikt. een VI heeft twee aanzichten:  Frontpanel  Blokdiagram De frontpanel kan eigenlijk aanzien worden als de human interface en zorgt voor de interactie tussen mens en applicatie, dit is tevens het venster dat de eindgebruiker te zien zal krijgen. Hierop kan je niet alleen parameters meegeven, dit door het gebruik van de bedieningsorganen, maar ook kan men waardes uitlezen door gebruik te maken van indicatoren. Daarnaast geeft het blokdiagram een schematische weergave van de werking, deze wordt aanzien als de code. Figuur 12 : LabVIEW VI 3.4.1 Ontwerpen in LabVIEW Het creëren van een programma in de LabVIEW-programmeeromgeving gebeurt volledig grafisch. In de frontpanel worden de parameters toegevoegd, hierbij genereert het blokdiagram een bijpassend blokje. Deze blokjes kunnen dan onderling verbonden worden via gekleurde lijnen. De kleur van het blokje is afhankelijk van het gebruikte datatype. Bij het verbinden van blokjes stellen de lijnen de variabelen voor en de kleuren het data type. Zo staat de kleur oranje voor een real type en de kleur blauw voor een integer type. De dikte van een lijn kan variëren, zo stelt een dikke lijn een één dimensionale array voor en een dubbeldikke lijn een multidimensionale array.
  • 28. 28 Mechatronische cocktailshaker Figuur 13: case structuur Lussen en case-statements worden aangeduid met rechthoeken. Alles wat zich binnen deze rechthoeken bevindt zal door de lus worden uitgevoerd. De gekleurde lijnen die de functieblokken met elkaar verbinden, dienen twee zaken. Eerst en vooral zorgen de verbindingen voor de gegevensoverdracht, tussen de functieblokken. Daarna zorgt de volgorde waarin de functieblokken voorkomen ook voor de volgorde waarin ze worden uitgevoerd. Als bij het verbinden gebruik wordt gemaakt van vertakkingen brengt dit met zich mee dat meerdere functies gelijktijdig worden uitgevoerd, dit wordt ook wel multi-threading genoemd. Multi-threading is het parallel afhandelen van processen bijvoorbeeld bij het inlezen van meetgegevens kan men gelijktijdig de data analyseren, presenteren en opslaan. Deze processen zullen allemaal op hun eigen tempo data afhandelen. Wanneer er data moet worden uitgewisseld tussen parallel lopende processen, is het noodzakelijk dat beide lussen synchroon lopen. Om dit te garanderen zijn er verschillende methodes die men kan gebruiken voor synchronisatie. Doordat LabVIEW een grafische programmeeromgeving is, sluit het goed aan op de manier waarop ingenieurs en technici denken. Zij gebruiken namelijk constant blokdiagrammen en flowcharts om processen te verklaren. Wanneer een proces op een duidelijke manier wordt geprogrammeerd, kan een deskundige die het proces kent, maar geen kennis heeft van LabVIEW meestal in één oogopslag zien of het proces goed is gemodelleerd.
  • 29. 29 Mechatronische cocktailshaker 4. Opbouw van het project 4.1 NI sbRIO-9602 Figuur 14 : sbRIO-9602 Voor deze bachelorproef wordt er gebruikgemaakt van de sbRIO-9602. Deze single-board RIO van National Instruments is een herconfigureerbaar controle- en acquisitiesysteem dat gebruikmaakt van een real-time processor, een Spartan-3 FPGA met ingebouwde I/O die herprogrammeerbaar zijn. De volgende lijst geeft de specificaties weer van de sbRIO-9602: • 2M gate Xilinx Spartan-3 FPGA • 400 MHz real-time processor • 128 MB DRAM • 256 MB niet -vluchtig geheugen • 10/100BASE-TX Ethernet port • 4 RS232 seriële poorten • 110 3,3V DIO Lines • bedrijfstemperatuur van -20 tot 55 °C
  • 30. 30 Mechatronische cocktailshaker In toevoeging tot de ingebouwde I/O, heeft de NI Single-Board RIO de mogelijkheid om zijn I/O uit te breiden door gebruik te maken van de C-Series-module of een RIO Mezzanine Card- connector. De RIO Mezzanine Card-connector is een high-speed, high-bandwidth connector die directe toegang biedt tot FPGA zijn digitale I/O-lijnen evenals bepaalde processorspecifieke functies. Dit maakt het mogelijk om de NI Single-Board RIO verder uit te breiden om aan specifieke toepassingen te voldoen die een combinatie van I/O vereisen. Je kan maximaal drie board-only C-Series-modules op de NI Single-Board RIO plaatsen zonder gebruik te maken van de RIO Mezzanine Card-connector. Board-only C-series apparaten zijn hetzelfde in opbouw als de C-Series-modules van de CompactRIO, maar dan zonder de behuizing speciaal voor het gebruik met de NI Single-Board RIO. Door het verwijderen van de behuizing kan je de modules dichter bij elkaar plaatsen en zo de grootte van het systeem (de footprint) minimaliseren. Doordat we de behuizingen(afscherming) verwijderen, maken we de module wel gevoeliger voor omgevingscondities zoals stof, temperatuursveranderingen etc. Figuur 15 : RIO I/O expansion cards De NI sbRIO heeft een voeding die een totaal levert van 2A externe belasting bij 5V. Dit is inclusief de C-Series-module die 200 mA vereist per module. Als bijvoorbeeld drie C-Series- modules worden gebruikt dan is er slechts 2A - (3 x 200mA) = 1,4A beschikbaar voor gebruik op de I/O pins. Elke headerpin is geschikt voor maar liefst 2A. Zoals u kan zien zijn er veel mogelijkheden om de single-board RIO uit te breiden om aan specifieke toepassingen te voldoen. Het kan voorkomen dat je geen module vindt die beschikt over de gewenste I/O. Je kan hierbij nog steeds C-Series-modules combineren, maar het nadeel hiervan is dat dit vrij prijzig kan uitkomen. Voor deze bachelorproef hebben we geen gebruik gemaakt van C-Series modules omdat het budget beperkt was. Er is dus beslist om zelf een print te ontwerpen die dan als uitbreiding van de I/O dient.
  • 31. 31 Mechatronische cocktailshaker Real-time systemen Dit zijn systemen waarin de computer of controller zijn taken moet uitvoeren binnen de tijdsbeperkingen van een bepaald proces of systeem. Meestal moet de computer of controller sneller werken dan het systeem dat hij helpt zodat deze in staat is snel en efficiënt in te grijpen. In een real-time controle en real-time procesbesturingssysteem, moet de computer de gegevens verwerken van het systeem. Deze gegevens kunnen inputs en/of outputs zijn. Als input gebruikt men sensoren voor het monitoren van bepaalde regelparameters. De output daarentegen genereert een signaal dat door het systeem of proces wordt berekend. Het signaaltype gaat variëren naargelang de functies van de controller, hierbij gaat men een onderscheid maken tussen analoge en digitale signalen welke verkregen worden door het gebruik van sensoren, schakelaars etc. In real-time systeem hebben we hulp nodig van een computer of real-time controller om het werk op een snelle manier of te handelen. In real-time robotica systeem maakt de computer of controller deel uit van de robot. Meestal is de computer of controller ingebed in de machine zelf, dan spreekt men over een slimme machine of embedded systeem. Dit embedded besturingssysteem is een systeem dat is uitgerust voor één of meerdere specifieke taken, die geïntegreerd zijn in het apparaat. Real-time systemen kunnen opgedeeld worden in:  Hard realtime-systemen  Soft realtime-systemen Bij hard realtime-systemen heeft de gebruiker de garantie dat de taak(opdracht) binnen de opgegeven tijd wordt uitgevoerd. Dit is bedoeld voor taken waarbij het missen van de deadlines catastrofale gevolgen kan hebben en dus niet voor mogen komen. Daarom zal men bij de ontwikkeling van het besturingssysteem er op toezien dat vertragingen zo veel mogelijk beperkt worden Bij soft realtime-systemen worden er minder eisen gesteld op het gebied van tijd(het halen van deadlines). Het besturingssysteem zal hierbij de taken afhandelen op basis van een prioriteitsniveau. Het nadeel van dit type is dat men niet de garantie heeft dat onder eender
  • 32. 32 Mechatronische cocktailshaker welke omstandigheden de deadlines gehaald worden, hierdoor zijn soft realtime-systemen minder geschikt voor industriële toepassingen en robotica. Wel blijft het systeem geschikt voor toepassingen waarbij het missen van deadlines geen ernstige gevolgen heeft. 4.2 Printed Circuit Board Om alle hardware met elkaar te verbinden is er een Printed Circuit Board (PCB) ontwikkeld. Dit was nodig omdat er al een print voor de motorsturing aanwezig was, en deze niet rechtreeks gekoppeld kon worden aan de FPGA. Ook werd er verwacht dat sturing werd verwezenlijkt door gebruik te maken van een Bluetoothmodule (BT23) die reeds ter beschikking was. Ook hiervoor moest een PCB-ontwerp voor gemaakt worden. 4.2.1 DesignSpark Voor het printontwerp wordt het softwarepakket DesignSpark gebruikt. Dit softwarepakket bestaat uit twee onderdelen, 1. Schematic Disign 2. PCB Design Eerst hebben we het Schematic Design; hierbij is het de bedoeling om de elektrische schema’s uit te tekenen. Op de schema’s zijn de verschillende onderdelen terug te vinden. De interfaceprint bestaat voornamelijk uit connectoren en deze connectoren worden gebruikt om alle onderdelen met elkaar te verbinden. Op de Bluetoothprint bevindt zich de BT23-module, en wordt er gebruik gemaakt van een 1x6 Pmod connector. Doordat er gebruik wordt gemaakt van de Pmod-standaard kan de Bluetoothprint apart worden gebruikt op de meeste FPGA- ontwikkelkits en starterkits, wat ook een vereiste was.
  • 33. 33 Mechatronische cocktailshaker Figuur 16 : Schematic design Daarna zetten we dit schematisch ontwerp om naar een PCB-ontwerp. Dit doen we wanneer het schema volledig is uitgekiend. Hierin kan ook de PCB-lay-out worden vastgelegd. Na het exporteren zijn alle componenten van het schema terug te vinden in het programma. De componenten kunnen dan op automatische wijze geplaatst worden, maar ook handmatig. Het handmatig plaatsen is de beste optie omdat op deze manier de componenten geplaatst kunnen worden zodat ze makkelijk te solderen zijn. Ook kan je de componenten uitlijnen t.o.v. elkaar, wat de afwerking ten goede komt. Figuur 17 : PCB schikking
  • 34. 34 Mechatronische cocktailshaker Wanneer de componenten op de gewenste positie staan, kan er begonnen worden met het routen van koperen banen. Dit routen kan zoals het plaatsen van de componenten, op automatische of handmatige wijze gebeuren. Meestal gaat er een combinatie van de twee gebruikt worden. Bij autorouting kunnen er verschillende parameters ingesteld worden waardoor deze al een groot aantal componenten gaat verbinden, de overige banen moeten dan zelf handmatig worden verbonden. Dit is een efficiënte en tijdbesparende methode om te gebruiken. Figuur 18 : PCB routing Als dit allemaal gebeurd is, dan is de PCB klaar voor productie. Hiervoor kan er nog eens een laatste check gebeuren door de print in 3D-weergave na te kijken. Deze geeft een reële weergave van hoe de PCB er in het echt gaat uitzien. Figuur 19 : 3D view PCB design
  • 35. 35 Mechatronische cocktailshaker 4.2.2 Interface Om het geheel samen te voegen was er een print nodig die als interface ging dienen. Hierop werden alle delen van het systeem op aangesloten, de motorsturingsprint, Bluetoothprint en de Single-Board RIO. Omdat de al beschikbare motorsturingsprint en de zelfontworpen Bluetoothprint op een 3,3Volt werkte, en de Single-Board RIO enkel beschikt over een 5Volt Vcc lijn, moest er gebruik gemaakt worden van een spanningsregelaar die een constante spanning levert van 3,3Volt. 4.2.3 BT23 Doordat we gebruik maken van een draadloze communicatie moeten we voorzichtig tewerk gaan omdat de module hoog frequente(HF) signalen gebruikt, die makkelijk beïnvloedbaar zijn. Daarom zijn er enkele voorwaarden waaraan voldaan moet worden i.v.m. het PCB design, zodat we het HF signaal dat aan de antenne binnenkomt niet vervormen. voorwaarde Amp'ed RF-modules:  Alle ongebruikte pinnen mogen niet geaard worden.  Alle GND pinnen moeten geaard worden.  Het gebied rond de antenne moet vrij zijn van alle soorten banen en dit over een afstand van 6,5mm in alle richtingen.  Er mogen geen banen onder de module worden getrokken. Omdat er aan deze voorwaarden voldaan moest worden is het PCB design iets groter uitgekomen dan eerst gewenst was. 4.3 DC-servomotor DC-servomotoren bestaan uit drie draden gekleurd met wit, rood en zwart. De rode en zwarte draden gaan naar de Vcc en Gnd, terwijl de witte draad wordt gebruikt om een PWM-signaal in te voeren vanuit de I/O-poorten van FPGA of microcontroller. Met deze controleaansluiting kan men de positie van de DC-servomotor bepalen. Op de controleaansluiting staat een PWM- signaal met een periode van 20ms en een duty-cycle van 10 à 20% , afhankelijk van de gewenste positie. Gezien de rotatiebeperkingen van de servo, meestal 120° of 180°, kan een servo ingesteld worden in zijn neutrale positie. De neutrale positie bevindt zich in het midden van zijn totale bereik waardoor de servo in beide richtingen evenveel kan uitwijken. Deze positie is altijd
  • 36. 36 Mechatronische cocktailshaker gekoppeld aan een pulsbreedte van 1,5 milliseconden (duty-cycle 15% bij een PWM- frequentie van 50Hz). Figuur 20 : servomotor 4.3.1 Aansturen van de dc servomotor De servopositie wordt bepaald door de duur van de puls die wordt aangebracht op de controleaansluiting en niet door de PWM duty-cycle. Omdat de meeste servomotoren elke 20ms een puls verwachten, wordt er meestal gewerkt met een PWM-frequentie van 50 Hz. Hierbij beschikt men over een periode van 20ms en kan men door de duty-cycle te regelen ook de servopositie regelen. Figuur 21 : PWM signaal Wanneer men een puls met een pulsbreedte van 1ms aanlegt op de controleaansluiting, zal de servomotor helemaal naar links uitwijken (roteren in tegenwijzerzin). Wanneer er een puls van 2ms wordt aangelegd, zal de servomotor helemaal naar rechts uitwijken (roteren in wijzerzin). Bij pulsen die zich bevinden tussen deze maxima en minima zal de servomotor een exacte positie aannemen. Bij pulsen die buiten het bereik liggen van de servomotor, kleiner dan 1ms of groter dan 2ms, zal de servomotor oververhitten. Maar de meeste servomotoren net zoals de gebruikte in dit eindwerk beschikt over een oververhittingsbeveiliging waardoor de servomotor zich uitschakelt wanneer hij overstuurd wordt.
  • 37. 37 Mechatronische cocktailshaker 4.4 LabVIEW Project Figuur 22 : LabVIEW project Een LabVIEW FPGA project bestaat uit:  FPGA VI  Host VI  Bitfile Op de FPGA kan maar één FPGA VI gedownload en uitgevoerd worden op eenzelfde moment. Je kan communiceren met FPGA VI of bitfiles welke runnen op de FPGA zelf met behulp van host VI's. Een Host VI kan draaien op een pc of Real-Time target. Elke host VI moet een reference (verwijzing) openen naar de FPGA VI, build specificatie, of bitfile die draait op de FPGA. Deze VI reference maakt het dus mogelijk om data uit te wisselen tussen de FPGA VI en de Real-Time VI. Een VI reference kan geopend worden naar alle FPGA VI’s of bitfile die deel uitmaken van hetzelfde LabVIEW project als de Host VI.
  • 38. 38 Mechatronische cocktailshaker Figuur 23: reference VI 4.4.1 FPGA Vi De FPGA VI kan worden opgesplitst in twee delen namelijk de frontpanel en blockdiagram. Voor het Frontpanel ontwerp werd er gebruik gemaakt van tabbladen zodat alle samenhangende parameters fysisch gegroepeerd zijn, zo kan u ook beter het onderscheid maken tussen de PWM sturing en de Bluetooth verbinding. In het frontpanel kan het programma gestart worden d.m.v. een startknop,deze zorgt ervoor dat de data van de Host VI wordt uitgelezen en doorgestuurd wordt naar de FPGA I/O. Bij het drukken op de stopknop gaat het programma stoppen met het uitlezen van data(data acquisitie), dit afkomstig van de Host VI. Figuur 24: Frontpanel FPGA VI (PWM tab) Figuur 25: Frontpanel FPGA VI (Bluetooth tab) Het blockdiagram is opgesplitst in 3 parallelle lussen waardoor elke lus apart wordt uitgevoerd, hierdoor kunnen we verschillende timing engines gebruiken. In het LabVIEW project werd de single-point continuous timing engine gebruikt, waardoor de FPGA continue(1x per iteratie) data gaat uitlezen of wegschrijven. In deze single-point continuous acquisitie lus wordt de data ééns per iteratie uitgelezen dit van de Host VI(PWM_settings), hierna wordt de data weggeschreven naar de FPGA I/O (_PWM_settings). Dit gebeurt enkel en alleen wanneer men de startknop indrukt, dit komt doordat er gebruik gemaakt word van een sequence lus. Een sequence lus wordt altijd van links naar recht doorlopen en gaat enkel verder wanneer alle data beschikbaar is, in andere woorden wanneer alle delen zijn uitgevoerd en doordat de startknop gekoppeld is aan de conditionele poort van een while lus gaat deze beslissen of de sequence lus verder gaat uitgevoerd worden. Verder maakt het programma nog gebruik van een stopknop waardoor de data acquisitie wordt stopgezet en we terugkeren naar het begin
  • 39. 39 Mechatronische cocktailshaker van de sequence lus. In de PWMLoop gaat de data die ingelezen werd in de acquisitie lus worden weggeschreven naar de FPGA I/O.
  • 40. 40 Mechatronische cocktailshaker In de Bluetooth_UART lus bevindt zich de UART(Universal Asynchronous Receiver/Transmitter) sturing. Hierin bevinden zich 2 subVI’s namelijk de UART_XMT en de UART_RCV. De UART_XMT staat in voor de transmissie van data naar de tablet, terwijl de UART_RCV data gaat ontvangen die nodig is voor de bediening van de delta robot. De ontvangen data op port0/DIO4 wordt naar de ingang van de UART_RCV gestuurd, hierin bevindt zich een shift register die het mogelijk maakt om de Binaire input om te zetten naar een data Byte. Figuur 26: Blockdiagram FPGA VI
  • 41. 41 Mechatronische cocktailshaker 4.4.2 Host VI De Host VI kan hetzelfde worden opgedeeld als de FPGA VI, deze beschikt namelijk over een frontpanel en blockdiagram. Voor het Frontpanel ontwerp wordt er voornamelijk gebruik gemaakt van indicatoren dit om alle parameters van de kinematica weer te geven. Doordat de mechanische constructie kon wijzigen doorheen de stageperiode wordt er gebruik gemaakt van numeric controls, hiermee kunnen de afmetingen van de delta robot worden meegegeven doorheen het programma. Voor de sturing van de delta robot zijn er 3 mogelijke opties:  Manual  Automatic  Remote control Afhankelijk van de gekozen optie is het mogelijk om de delta robot handmatig aan te sturen dit d.m.v. 3 controle dials, die gebruikt worden voor de verplaatsing in de X,Y,Z richting. Indien er wordt gekozen voor “automatic” kan de delta robot automatisch gestuurd worden en gaat deze een voorop ingestelde cocktail maken. Bij “remote control” gaat de delta robot gestuurd worden d.m.v. een Android tablet die draadloos verbonden is via Bluetooth. Op de tablet gaat dan een programma runnen waarmee er X,Y en Z waardes kunnen worden uitgewisseld. Figuur 27: Frontpanel Host VI
  • 42. 42 Mechatronische cocktailshaker Voor het Blokdiagramma heb ik voornamelijk gebruik gemaakt van een formula node. De formule Node syntax lijkt zeer sterk op de syntax van de tekst-based programmeertalen. Net zoals bij de C programmeer omgeving, moet je in de formula node een regel afsluiten met behulp van een semicolon(;). In de fomula node maakt men gebruik van variabelen, deze moet men voor gebruik eerst definiëren hetzij als integer, float,etc. Ook moet men er rekening houden dat er geen eerder gebruikte variabelen worden overschreven, dit is een veel voorkomende fout. Een beperking van de formula node is dat hierin geen pointers gebruikt kunnen worden, deze moet men langs buiten inbrengen(input) als local variable. Ook kunnen er geen booleans gebruikt worden.
  • 43. 43 Mechatronische cocktailshaker Figuur 28: Overzicht van de Host VI De bovenstaande figuur geeft een volledige weergave van de host VI. Zoals u kan zien wordt er gebruik gemaakt van een statemachine, a.d.h.v. de optie die gebruikt word bv. “automatic” gaat de statemachine hierop reageren en automatisch waardes uitschrijven. Deze waardes worden naar de x, y, z variabelen weggeschreven waardoor de delta robot wordt aangestuurd. Zoals u kan zien maken we ook gebruik van een error handler deze bevindt zich helemaal rechts op de bovenstaande afbeelding. De error handler zorgt ervoor dat als er een fout optreedt het programma niet wordt stopgezet, maar dat de delta robot terug naar zijn startpositie beweegt. Helemaal rechts op de afbeelding kan u de FPGA read/write interface zien, deze zorgt voor de interactie met de FPGA VI. Door gebruik te maken van de FPGA read/write interface gaan we waardes van de Host VI naar de FPGA VI kunnen wegschrijven, die dan naar de FPGA I/O gekoppeld worden.
  • 44. 44 Mechatronische cocktailshaker Doorheen de Host VI wordt er gebruik gemaakt van enkele sub VI’s:  Help function sub VI  Angle to servo sub VI In de help function sub VI worden x, y, z coördinaten omgezet in een hoek theta. Als input heeft deze sub VI enkele parameters nodig zoals de robot geometrie en natuurlijk de x, y, z positie waarnaar de servomotor zich moet draaien. Deze gegevens worden dan verwerkt zodat men een output theta heeft wat een hoek voorstelt. De tweede output is de status, deze kan gebruikt worden voor de error handling en brengt een 1 naar buiten indien de waardes niet geldig zijn. Figuur 29: Help function sub VI Nadat we een hoek hebben gegenereerd in de help function sub VI kunnen we deze nog niet onmiddellijk gebruiken. De FPGA VI kan deze hoek niet gaan gebruiken om de servomotor aan te sturen, hiervoor wordt er gebruik gemaakt van de angle to servo sub VI. Omdat de PWM sturing een waarde nodig heeft, gelegen tussen de limieten van 40000 en 80000 om aan een pulsbreedte te komen van een 1 a 2ms, is het nodig dat we de hoeken omzetten naar een nieuwe waarde die kan gebruikt worden om de servomotoren aan te sturen. De onderstaande formule(figuur x) zorgt voor de omzetting van de hoek naar een bruikbare servo waarde.
  • 45. 45 Mechatronische cocktailshaker Figuur 30: Angle to servo sub VI De inverse kinematica node wordt gebruikt in combinatie met de help function subVI hierin bevinden zich de helpfuncties van de inverse kinematica. Een van de belangrijkste parameters van de inverse kinematica is de robot geometrie:  e = effector  f = base  re = onderarm  rf = bovenarm Figuur 31: Parameters inverse kinematica Zoals u kan zien stelt de robot geometrie de fysieke parameters voor van de delta robot, deze parameters kunnen verschillen afhankelijk van het gebruikte design. Deze fysieke parameters zijn belangrijk voor de berekeningen van de hoek theta waaronder de armen komen te staan. Doordat de referentie zich op de basis bevindt, zullen de z-coördinaten altijd negatief zijn, indien de delta robot zo gepositioneerd is dat de effector beneden hangt. Figuur 32: Inverse kinematica
  • 46. 46 Mechatronische cocktailshaker In het forward kinematica node komt aan de input de theta1, theta2 en de theta3 binnen, deze werden terug gekoppeld van de inverse kinematica. Deze 3 theta’s zijn nodig om de coördinaten van de effector te bepalen middelpunt van de effector wordt het punt E0 genoemd omdat dit het punt is waar de actie van de effector plaats vind. Figuur 33: Forward kinematica Voor meer informatie wil ik u doorverwijzen naar de bijlage, appendix B: Berekeningen kinematica.
  • 47. 47 Mechatronische cocktailshaker 4.4.3 Bitfile 4.4.3.1 Het compile process Figuur 34: Het compile proces Om het LabVIEW programma op de FPGA te plaatsen moeten we het programma eerst compileren. Elke stap van het compile proces word weergegeven in het compile venster, deze geeft een aantal uitgevoerde taken en informatie weer. De informatie wordt in de zelfde volgorde gepresenteerd als dat ze gecompileerd wordt. Je kan de NI LabVIEW software gebruiken om zowel handmatig als automatisch te compileren, ook kan elk moment kan de compilatie onderbroken worden dit te wijten aan een fout of een verandering aan het programma, hierna moet er wel opnieuw gecompileerd worden. 4.4.3.2 Instellen van de compile options Voordat u begint compileren kan je de compiler instellingen wijzigen, dit wordt gedaan om de inspanning die u gaat doen om te compileren te verhogen of verlagen. Naarmate de inspanning die geleverd moet worden, gaat het compileer proces variëren (langer duren). De standaard compileer instelling voor de hardware is "Balanced".  "Area" indien er een overmapping van resources kan optreden.  “Timing Performance” Als je gebruik maakt van een hoge kloksnelheid.  “Minimum Compile Time”Als je een FPGA-programma schrijft dat geen resource of timing beperkingen heeft.  “Custom” indien je het inspanningsniveaus zelf wilt instellen doorheen de programma’s
  • 48. 48 Mechatronische cocktailshaker Figuur 35: LabVIEW compile options dialog(Xilinx Options) 4.4.3.3 Het genereren van een bitfile De eerste stap in het compilatieproces is het genereren van tijdelijke bestanden. Voor dit proces ontleedt LabVIEW het blokschema en zet de code om naar een vorm die de Xilinx compiler kan interpreteren. Tijdens deze stap kunner er fouten optreden, waardoor het compileren gaat mislukken. Hierbij gaat het meestal over een illegal VI of een combinatie van VI’s die geplaatst zijn in single-cyclus loops. Figuur 36: Het genereren van een bitfile(Dialoog venster)
  • 49. 49 Mechatronische cocktailshaker 5. Probleemstelling 5.1 BLE112-licentie: Probleem: Om een programma weg te schrijven naar het geheugen van de BLE112 moest er gebruikgemaakt worden van de BLE-updatesoftware. Het probleem was dat hiervoor een licensekey vereist was, maar deze was niet meegeleverd bij de module zelf. Oplossing: Eerst werd er gevraagd om een account aan te maken vooraleer je toegang kreeg tot de BLE- support. Eens in het support gedeelte werd het allemaal duidelijk. Hierop stond namelijk een forum waar werd uitgelegd dat bij de eerste modules de license key niet werd meegeleverd, maar dat men hiervoor de helpdesk moest contacteren. Daarna werd er contact opgenomen met de BLE helpdesk en werd er a.d.h.v. de serienummer een license key gegenereerd. 5.2 BLED112-verbindingsproblemen: Probleem: Nadat er een example programma (find_me) naar de BLE werd weggeschreven zou deze zichtbaar moeten zijn voor alle Bluetooth 4.0-apparaten. Voor de verbinding werd er gebruikgemaakt van de meegeleverde BLED (dongle), die normaal tevoorschijn zou moeten komen bij de virtuele com- poorten als “Bluegiga Bluetooth low energy com(x)”. Nadat er meerdere pogingen werden ondernomen om met de BLED te verbinden, zijn we tot de conclusie gekomen dat deze defect was. Oplossing: Nadat er contact werd opgenomen met de BLE-helpdesk hebben zij gemeld dat de BLED mocht worden opgestuurd onder inspectie. Hierop hebben wij de BLED opgestuurd en enkele weken later werd er ons een nieuwe opgestuurd. 5.3 Androidtablet-verbindingsproblemen: Probleem: Nadat er meerdere pogingen ondernomen werden om de BLE112 te detecteren hebben we enkele forums afgezocht. Hierop stond dat de Androidtablet beschikt over Bluetooth 4.0- hardware, maar dat er momenteel geen officiële Android API voor Bluetooth 4.0 is. Doordat de BLE112 een single mode module is en enkel data aanneemt van 4.0-modules gaat er nooit een verbinding tot stand kunnen komen. Oplossing: De enige oplossing is voor een andere module kiezen.
  • 51. 51 Mechatronische cocktailshaker 5.4 Motorsturings PCB: Probleem: Bij het sturen van de servomotoren hadden wij het probleem dat de servomotoren niet bekrachtigd werden. Daarom hebben wij motorsturingsprint moeten nameten, omdat we een duidelijk PWM signaal op de input van de PCB gemeten hadden. Eerst werd er gedacht dat de gebruikte adapter te weinig stroom zou leveren, hierdoor zijn wij beginnen werken met een labvoeding die zeker genoeg stroom levert. Hiermee was het probleem nog steeds niet opgelost en dachten wij aan eventueel defecte componenten, nadat we die hadden nagemeten wisten we dat de componenten nog steeds in goede staat waren. Later hebben wij dan ondervonden dat het hiermee over een Ground fout ging die aanwezig was op de print. Oplossing: Opzoeken van de fout, en deze proberen weg te werken. 5.5 UART Probleem: Het standaard UART programma maakt gebruik van het FIFO(first in first out) systeem welke constant een foutmelding geeft. Ook komt de data maar één keer binnen, dan wordt de verbinding afgesloten terwijl dit niet de bedoeling is. Hierbij krijgen we altijd de LabVIEW error melding -65 wat staat voor serial port timeout. Oplossing: Doordat we de fout maar niet vonden, en we hierdoor veel tijd verloren, hebben we het besluit genomen om te stoppen met het gebruik van het FIFO systeem. We zijn dan verder gegaan met een standaard UART programma van NI. Dit progamma maakte gebruik van een shift register waardoor we een 8 bit array creëren (1byte).
  • 53. 53 Mechatronische cocktailshaker Toegepaste Informatica 7. Technologieën 7.1 Android Android is een opensource besturingssysteem voor smartphones en tablets. Het is gebaseerd op de Linuxkernel en het Java-programmeerplatform en wordt ontwikkeld door het bedrijf Google Inc. De code van een Android project wordt gecompileerd door de Dalvik Virtual Machine, waardoor het dan wordt geoptimaliseerd voor mobiele toestellen. Er zijn verschillende versies van het Android besturingssysteem beschikbaar. Onderaan in het tabel is meer informatie over de verschillende beschikbare versies. Codeaam Versie Uitgavedatum API Distributie (Mei 2013) Jelly Bean 4.2 13 november 2012 17 2.3% Jelly Bean 4.1 27 juni 2012 16 26.1% Ice Cream Sandwich 4.0 19 oktober 2011 15 27.5% Honeycomb 3.2 15 juli 2011 13 0.1% Honeycomb 3.1 10 mei 2011 12 Gingerbread 2.3.3 9 februari 2011 10 38.4% Gingerbread 2.3 6 december 2010 9 0.1% Froyo 2.2 20 mei 2010 8 3.7% Eclair 2.0 - 2.1 26 oktober 2009 7 1.7% Donut 1.6 15 september 2009 4 0.1% Cupcake 1.5 30 april 2009 3 Eerste uitgave 1.1 10 februari 2009 1 Uiteindelijk werd beslist om de applicatie in de Android Jellybean 4.2 omgeving te ontwikkelen. Een Google Nexus 7 tablet werd gebruikt om de applicatie te testen. De code van deze Android- applicatie werd ontwikkeld met behulp van de Android SDK API 17.
  • 54. 54 Mechatronische cocktailshaker 7.2 Java Java is een platformonafhankelijke objectgeoriënteerde programmeertaal. Java is een taal die qua syntaxis grotendeels gebaseerd is op de programmeertaal C++. Java beschikt echter over een grotere klassenbibliotheek dan C++. Sinds het Android besturingssysteem gebaseerd is op het Java-programmeerplatform werd de applicatie dan ontwikkeld in Java. De RESTful web service is ook gebaseerd op Java, het maakt dus gebruik van ingebouwde java libraries zoals JDBC. 7.3 XML / JSON 7.3.1 Inleiding XML Extensible Markup Language (XML) is een standaard gecreëerd door het World Wide Web Consortium. Via de syntaxis van deze formele opmaaktaal kan men gestructureerde gegevens weergeven in de vorm van platte tekst. De presentatie van XML is uiteindelijk leesbaar voor een persoon en voor een machine. Het XML-formaat wordt voornamelijk gebruikt om gegevens op te slaan en om gegevens over het internet te versturen. Android maakt vooral gebruik van XML om layoutstructuren, het manifest en andere resources in Android op te slaan. 7.3.2 Inleiding JSON JavaScript Object Notation(JSON) is een deelverzameling van de programmeertaal JavaScript. Het wordt gebruikt voor het uitwisselen van datastructuren, voornamelijk in web applicaties die asynchroon gegevens ophalen van de webserver zoals AJAX. De eenvoudige notatie van JSON heeft geleid tot een grote populariteit ervan, voornamelijk zijn functie om op een heel performante manier data over te dragen. Omdat gegevens worden uitgewisseld in de vorm van JavaScript-expressies, kunnen de gegevens worden ingelezen in een applicatie door simpelweg de JSON-expressies te evalueren waardoor er geen aparte parser voor nodig is. Voor een groot aantal andere programmeertalen zijn functiebibliotheken beschikbaar voor het lezen en schrijven van JSON-expressies. In het Android programmeerplatform is er dus vanzelfsprekend een bibliotheek beschikbaar om JSON-expressies te lezen en te maken.
  • 55. 55 Mechatronische cocktailshaker 7.3.3 XML vs JSON XML en JSON zijn gemaakt voor hetzelfde doeleinde, maar er zijn ook enkele verschillen tussen de twee. Ieder formaat heeft zijn eigen voordelen en nadelen, waardoor na evaluatie van de situatie de geschikte formaat wordt gekozen. De representatie van XML is veel gemakkelijker te lezen dan JSON voor een persoon. De datastructuur van XML is ook veel complexer ten opzichte van JSON, wat kan dienen als een voordeel en nadeel. Het voordeel hiervan is dat XML gemakkelijker is om uit te breiden, maar als nadeel volgt dat het dan ook veel meer data moet vasthouden tegenover JSON. JSON is dus veel performanter om data over te brengen, waardoor deze formaat uiteindelijk werd gekozen om data over te brengen tussen de RESTful web service en de applicatie. 7.3.4 Opbouw van JSON JSON is gebouwd op twee structuren:  Een collectie van namen gepaard met een waarde (Object);  Een gesorteerde lijst van waarden (Array); Onderaan ziet u hoe een object in json wordt opgebouwd. Een object begint en eindigt met een accolade. De string representeert de naam, die via een dubbele punt wordt gepaard met een waarde. In de collectie worden de gepaarde namen/waarden gescheiden door een komma. FIguur 37: Opbouw van een JSON Object
  • 56. 56 Mechatronische cocktailshaker Onderaan ziet u hoe een array in json wordt opgebouwd. Een array begint met een linker haakje en eindigt met een rechterhaakje. De waarden in deze array worden gescheiden door een komma. Figuur 38: Opbouw van een JSON Array Onderaan zijn de verschillende soorten mogelijke waarden van JSON weergegeven. Figuur 39 Verschillende mogelijke waarden in JSON
  • 57. 57 Mechatronische cocktailshaker 7.4 REST Representational state transfer (REST) is een software-architectuur die ontworpen is voor gedistribueerde componentsystemen. Het concept van REST werd geïntroduceerd door Roy Fielding, en ontwikkeld door de W3C Technical Architecture Group. Hedendaags is REST uitgegroeid tot het meest voorkomende design model voor API’s op het World Wide Web. In een REST model zijn de meest belangrijke componenten clients,servers en resources. Resources zijn bepaalde entiteiten die kunnen worden overgedragen tussen client en server. Een client stuurt een request naar de server, de server behandelt dat request en geeft dan een geschikte response. Alle requests en responses worden opgebouwd in een representatie van een bepaalde resource. De hoofddoelen van REST zijn:  Schaalbaarheid van interacties tussen componenten;  Veralgemening van interfaces;  Componenten onafhankelijk kunnen gebruiken;  Componenten als bemiddelaar gebruiken om latency te verlagen;  Veiligheid verhogen en oudere systemen in te kapselen. 7.5 RESTful web service RESTful web services zijn gebouwd om het beste te werken op het web. Een RESTful web service is een API die gebaseerd is op een stateless communicatie protocol, zoals het Hypertext Transfer Protocol. Het gebruikt dan ook de principes van REST architectuur. Sinds de RESTful web service van deze project werkt met HTTP, zal het altijd de volgende eigenschappen hebben:  De operaties maakt gebruik van de HTTP methodes (GET, PUT, POST or DELETE);  De operaties zijn stateless;  Requests worden behandeld via URI’s;  Response moet compatibel zijn met HTTP (XML, JSON, XHTML, ...);
  • 58. 58 Mechatronische cocktailshaker 7.6 JAX-RS JAX-RS (Java API for RESTful Web Services) is een Java API die ondersteuning geeft in het ontwikkelen van web services volgens de REST-architectuur. Deze API maakt vooral gebruik van annotaties om de ontwikkeling en implementatie van de web service te vereenvoudigen. De volgende annotaties helpt om resources om te zetten naar web resources in een RESTful web service:  @GET, @PUT, @POST, @DELETE en @HEAD specificeert de HTTP request type van een resource;  @Path specificeert de URI path van een resource of methode;  @Produces specificeert de response type (XML, JSON, XHTML, ...);  @Consumes specificeert de type van de binnenkomende request.
  • 59. 59 Mechatronische cocktailshaker 8. Gebruikte tools 8.1 Eclipse Eclipse is een opensource IDE van de Eclipse Foundation. Het wordt voornamelijk gebruikt voor de programmeertaal Java. Binnen deze project werd Eclipse vooral gebruikt om de RESTful web service en de Android applicatie te ontwikkelen. 8.2 Apache Tomcat Apache Tomcat is een opensource web container van Apache Software Foundation. Tomcat heeft de mogelijkheid om servlets en JavaServer-pagina’s uit te voeren. De RESTful web service van deze project wordt gehost op een Apache Tomcat Server versie 6. 8.3 CloudBees CloudBees is een online service die een gratis platform aanbiedt voor Java applicaties. Via deze service wordt de RESTful web service gehost die dan bereikbaar is via de URL http://cocktails.kst.cloudbees.net/rest/ 8.4 BitBucket BitBucket is een online service voor softwareprojecten die het Mercurial of Git revisie controle systeem gebruikt. Het hoofddoel van deze service is om de code van de software online op te slaan op een repository. Deze repository kan dan gedeeld worden met andere BitBucket accounts zodat meerdere mensen aan één softwareproject kunnen werken. Voor deze project werd BitBucket gebruikt om de code van de Android-applicatie te delen met de bedrijfspromotor.
  • 60. 60 Mechatronische cocktailshaker 9. Onderzoeksprobleem Binnen de XIOS Hogeschool Limburg werd tijdens een stageopdracht uit het verleden een deltarobot ontworpen door een aantal studenten elektronica. Van de onderzoekers is nu de vraag gekomen om deze deltarobot te gebruiken om cocktails te maken. Hiervoor zal de onderzoeker van de opleiding elektromechanica de robot aanpassen. Momenteel is het probleem dat er geen gemakkelijke manier is om de deltarobot te besturen. Er zijn ook momenteel geen praktische toepassingen voor deze deltarobot, waardoor hij gewoon in een kast is opgeborgen. Men zou graag dan ook de capaciteiten van deze deltarobot willen tonen aan het publiek via opendeurdagen, maar dat is in zijn huidige staat niet zo indrukwekkend. Uiteindelijk is het de bedoeling om een werkende robot te hebben. Deze kan onder andere ingezet worden voor PR-doeleinden voor de hogeschool. Deze robot zal bediend moeten kunnen worden door middel van een intuïtieve interface, bij voorkeur op een tablet. De applicatie op de tablet moet voldoende flexibel zijn om nieuwe cocktails te ontwerpen of bestaande cocktails te bereiden. Belangrijk daarbij is dat de bediening vanzelfsprekend is en dat de nodige aandacht besteed wordt aan gebruiksgemak. Door middel van deze applicatie zal dus het aansturen van de robot geautomatiseerd worden. De gebruiker krijgt een overzicht van de beschikbare cocktails en ingrediënten te zien. Na eventuele aanpassingen aan de ingrediënten zal de robot de cocktail automatisch bereiden. De bediening van de robot zal gebeuren via een draadloze verbinding, zoals Bluetooth.
  • 61. 61 Mechatronische cocktailshaker 10.Design 10.1 Opdracht De bedrijfspromotor, Steven Palmaers, gaf de opdracht om een Android-applicatie te maken die cocktails kan maken en kan verbinden met de deltarobot. De gevraagde eisen van de applicatie waren na een gedetailleerd gesprek heel duidelijk. De volgende eisen werden vastgesteld:  De gebruiker kan tussen bestaande cocktails zoeken;  De gebruiker kan zelf nieuwe cocktails aanmaken of bestaande cocktails aanpassen;  Alle cocktails en hun recepten moeten op een online database worden opgeslagen;  De applicatie moet een draadloze verbinding kunnen vastleggen met de deltarobot;  De applicatie moet de juiste receptdata doorsturen naar de deltarobot;  De applicatie kan de deltarobot ook besturen via coördinaten. Wat betreft het design kreeg ik veel vrijheid, zolang werd voldaan aan de gestelde eisen. Uiteindelijk besloot ik om met een MySQL-database de recepten op te slaan. Deze database zal dan verbonden zijn met de applicatie via een RESTful webservice. Bluetoothtechnologie zal gebruikt worden om de applicatie met de deltarobot te verbinden om data over te brengen. De Android-GUI zal gebruik maken van icoontjes om tussen verschillende cocktails te kunnen kiezen.
  • 62. 62 Mechatronische cocktailshaker 10.2 MySQL Een MySQL-database werd gekozen om de recepten op te slaan omdat er veel online services bestaan die deze dienst gratis aanbieden. Bovendien is MySQL zeer performant en ook flexibel met vele platformen. Dankzij mijn ervaring met MySQL uit mijn studiejaren, is het ook gemakkelijker om MySQL te gebruiken. Hieronder vindt u het EER-diagram van de database. Figuur 40: EER Schema van MySQL database
  • 63. 63 Mechatronische cocktailshaker 10.3 RESTful web service Deze web service zal voor de dataoverdracht zorgen tussen de Android-applicatie en de MySQL- database. De resources die deze web-service zal overdragen zijn voornamelijk de cocktails en hun recepten. JAX-RS wordt voornamelijk gebruikt om deze web-service op te bouwen, omdat het zeer snel geïmplementeerd kan worden. 10.4 Bluetooth Bluetooth werd voornamelijk gekozen omdat het op vele verschillende mobiele apparaten aanwezig is. Dit geeft dan de mogelijkheid om elk mobiel apparaat dat Bluetooth heeft, met de deltarobot te verbinden. 10.5 Graphical User Interface De GUI moet voldoen aan twee criteria: simpel en aantrekkelijk zijn. Het is immers de bedoeling dat het vaak aan een publiek wordt voorgesteld. Daarom besloot ik om vooral met icoontjes te werken om de cocktails te representeren in plaats van gewone tekstvelden. Een icoon van een cocktail moet dynamisch omdat het zich moet kunnen aanpassen aan de hand van de ingrediënten. Daarom werd beslist om elke cocktail te tekenen op een canvas aan de hand van hun recept. Dit zorgt ervoor dat wanneer het recept veranderd, het icoon dus ook mee veranderd. 10.6 Besturing deltarobot De positie van de deltarobot wordt bepaald door X, Y en Z coördinaten. Er werd gevraagd om deze coördinaten op een simpele en snelle manier door te kunnen geven aan de deltarobot via een intuïtieve interface. In overleg met de bedrijfspromotor werd beslist om te werken met een venster om de X en Y coördinaten te bepalen. Een slider wordt dan gebruikt om de Z coördinaat te bepalen.
  • 64. 64 Mechatronische cocktailshaker 11.Implementatie 11.1 Android-applicatie 11.1.1 Selecteren cocktail Onderaan vindt u het scherm dat de gebruiker ziet wanneer de applicatie opstart. Hij krijgt een lijst van cocktails te zien waaruit hij kan selecteren. Bovenaan is ook een zoekbalk waar de gebruiker cocktails kan opzoeken. Aan de rechterkant van het scherm ziet u dan meer informatie wanneer een cocktail wordt geselecteerd. Rechtsboven ziet u dan de naam (Manhattan) en aan de hand van de ingrediënten het berekende alcoholpercentage (17,84%). Daaronder ziet u dan het hele recept van de cocktail. Een vinkje of een rood kruisje geeft ook aan of het ingrediënt beschikbaar is in de deltarobot. Figuur 41: Selecteren van een cocktail Wanneer een gebruiker dan een “long click” doet op een cocktail, dan komt er een scherm tevoorschijn dat de functionaliteit geeft om de cocktail te laten maken door de deltarobot. Meer informatie over het proces vindt u op de volgende pagina.
  • 65. 65 Mechatronische cocktailshaker 11.1.2 Maken van een cocktail Onderaan vindt u het scherm dat de gebruiker ziet wanneer hij een cocktail wilt laten maken door de deltarobot. Er zal in het begin een startknop aanwezig zijn, waarop de gebruiker kan drukken om het hele proces te starten. Ten eerste zal de Android-applicatie proberen om met de delta obot te verbinden via Bluetooth. Wanneer de verbinding niet slaagt, zal de gebruiker een bericht krijgen dat de verbinding mislukte en dat hij opnieuw moet proberen. Als de verbinding wel slaagt dan komt een cursor te staan bij het eerste ingredient en zal de deltarobot het glas opvullen met het eerste ingrediënt. Wanneer dit proces klaar is, kan de gebruiker dan op de “Next”-knop drukken om het volgende ingrediënt toe te voegen. Figuur 42: Maken van een cocktail Er is ook een “Pause” knop beschikbaar zodat de gebruiker op ieder moment de deltarobot kan pauzeren.
  • 66. 66 Mechatronische cocktailshaker 11.1.3 Aanpassen en toevoegen van cocktails In figuur X vindt u het scherm dat de gebruiker kan zien als hij wenst om bestaande cocktails en recepten wilt aanpassen. Links is een lijst beschikbaar die alle bestaande cocktails of ingrediënten toont. Bovenaan deze lijst is ook een zoekbalk waar de gebruiker cocktails kan opzoeken. Helemaal onderaan deze lijst is de knop “Add cocktail” beschikbaar, die de functie geeft om een nieuwe cocktail aan te maken. Wanneer de gebruiker een cocktail uit de lijst selecteert krijgt hij alle opties om de cocktail en het recept te veranderen. Er is een tekstveld om de naam van de cocktail te veranderen en er is een spinner om het glastype van de cocktail te wijzigen. De knop met het “+” voegt een ingrediënt toe aan het recept en de knop “-“ langs een ingrediënt verwijdert deze ingrediënt uit het recept. Onderaan zijn ook de knoppen “Save”, “Cancel” en “Delete” beschikbaar. Respectievelijk geven deze knoppen de functies om wijzigingen op te slaan, wijzigingen te annuleren, of het recept te verwijderen. Figuur 43: Aanpassen van een cocktail
  • 67. 67 Mechatronische cocktailshaker 11.1.4 Aanpassen en toevoegen van ingrediënten Onderaan in figuur X ziet u het scherm om ingrediënten aan te passen. Er zijn 3 elementen in een ingrediënten die de gebruiker kan aanpassen:  De naam van het ingrediënt;  Alcoholpercentage van het ingrediënt;  Kleur van het ingrediënt. Wanneer de gebruik op de kleurbalk klikt, komt een dialoog tevoorschijn om die de gebruiker de mogelijkheid geeft om een nieuwe kleur aan te wijzen. De knoppen aanwezig op het scherm hebben dezelfde functionaliteit als bij het scherm op de vorige pagina. Figuur 44: Aanpassen van een ingrediënt
  • 68. 68 Mechatronische cocktailshaker 11.1.5 Besturen van deltarobot Het besturen van de deltarobot is mogelijk door een Bluetooth verbinding met de delta robot via de Android-applicatie. Bij het opstarten van deze scherm zal de applicatie automatisch proberen te verbinden met de Bluetooth module van de deltarobot. Er zal vervolgens een bericht tevoorschijn komen die weergeeft of de verbinding was geslaagd of mislukt. Links op het scherm worden de huidige de X, Y en Z coördinaten van de delta robot getoond. De cirkel op het groene veld representeert de X en Y waarden, terwijl de aanwijzer bij het blauwe balk de Z coördinaten weergeeft. Door de cirkel te bewegen op het groene veld kan de gebruiker de positie van de deltarobot veranderen. Door de aanwijzer op het blauwe balk te bewegen kan de gebruiker de hoogte van de delta robot controleren. Figuur 45: Besturing van deltarobot
  • 69. 69 Mechatronische cocktailshaker 11.1.6 Bluetooth verbinding Als de Android-applicatie een Bluetooth verbindingen wilt maken met de deltarobot, moet deB luetooth module van de deltarobot gepaard zijn met de Android tablet. Wanneer de Android- applicatie een verbinding wilt maken met de delta robot zal eerst de onderstaande variabelen worden gedeclareerd. De UUID bepaalt de service die Bluetooth zal gebruiken. De huidige UUID zal een seriële poort verbindingen maken. De volgende code zal dan door alle gepaarde Bluetooth apparaten zoeken naar de delta robot. private BluetoothAdapter mBluetoothAdapter; private BluetoothSocket socket; private BluetoothConnection connection; private final String uuidString = "00001101-0000-1000-8000-00805F9B34FB"; private final UUID uuid = UUID.fromString(uuidString); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { Log.d("Bluetooth", "No support voor Bluetooth"); } if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, 0); } if(connection==null){ Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); // If there are paired devices if (pairedDevices.size() > 0) { // Loop through paired devices for (BluetoothDevice device : pairedDevices) { if(device.getName().equals("Amp'ed Up!")){ //start dialog connectDialog = new ProgressDialog(DeltarobotActivity.this); connectDialog.setTitle("Connecting"); connectDialog.setMessage("Connecting to Bluetooth module..."); connectDialog.show(); new connectBluetoothTask().execute(device); } } } }
  • 70. 70 Mechatronische cocktailshaker Vervolgens zal de applicatie met de module proberen te verbinden via de volgende code in een AsyncTask. protected BluetoothConnection doInBackground(BluetoothDevice... devices) { BluetoothConnection newConnection = null; try { socket = devices[0].createRfcommSocketToServiceRecord(uuid); socket.connect(); newConnection = new BluetoothConnection(socket); } catch (IOException e) { e.printStackTrace(); } return newConnection; } protected void onPostExecute(BluetoothConnection result) { connection = result; connectDialog.dismiss(); if(connection!=null){ Toast.makeText(getApplicationContext(), "Success connecting", Toast.LENGTH_LONG).show(); final Handler h = new Handler(); h.postDelayed(new Runnable(){ @Override public void run() { if(isMoved){ sendInfoOverBluetooth(); isMoved=false; } h.postDelayed(this, DELAY_TIME); } }, DELAY_TIME); }else{ Toast.makeText(getApplicationContext(), "Connection to delta robot failed", Toast.LENGTH_LONG).show(); } }
  • 71. 71 Mechatronische cocktailshaker Om data door te sturen naar de deltarobot zal de applicatie byte arrays versturen over de Bluetooth verbinding. Een enkele byte array bevat de volgende 5 parameters voor de delta robot:  Startkarakter  X coördinaat  Y coördinaat  Z coördinaat  Aantal milliliter In deze code wordt een byte array opgesteld en verstuurd Wanneer het aantal milliliter 0 is, dan zal de delta robot geen vloeistof opnemen en gewoon verplaatsen naar de positie. Door een startkarakter weet de deltarobot dat hij een nieuwe positie heeft binnengekregen, waardoor het zich vervolgens zal verplaatsen. private void sendInfoOverBluetooth() { if(connection!=null){ try{ ByteBuffer byteBuffer = ByteBuffer.allocate(10); byteBuffer.putChar('*'); //Byte 1-2 byteBuffer.putShort((short) transformedX); //Byte 3-4 byteBuffer.putShort((short) transformedY); //Byte 5-6 byteBuffer.putShort((short) transformedZ); //Byte 7-8 byteBuffer.putShort((short) 0); //Byte 9-10 byte[] data = byteBuffer.array(); connection.write(data); }catch(Exception e){ Toast.makeText(getApplicationContext(), "Sending data failed", Toast.LENGTH_LONG).show(); } } }
  • 72. 72 Mechatronische cocktailshaker 11.2 RESTful web service De RESTful web service werd geïmplementeerd met de volgende 3 resources:  Cocktail resource  Ingrediënt resource  Recept resource Elke resource is ontwikkeld om specifieke data uit de database te halen. De ingrediënt resource dient om ingrediënten uit de database te halen om het dan als response te geven aan een request. Onderaan is een simpel voorbeeld van wat de code uitvoert nadat de web service een request ontvangt. De @Path annotatie bepaalt de URI van de resource, de @Get annotatie bepaalt het request type en de @Produces annotatie bepaalt het response type. @Path("/all") @GET @Produces({ MediaType.APPLICATION_JSON }) public List<Ingredient> getAllIngredients() { return selectAllIngredients(); }
  • 73. 73 Mechatronische cocktailshaker De methode geeft een lijst terug van alle gevonden ingrediënten private List<Ingredient> selectAllIngredients(){ ArrayList<Ingredient> ingredients = new ArrayList<Ingredient>(); try { String query = ("SELECT id, name, color, alcoholpercentage FROM ingredients"); Connection conn = DatabaseConnection.getConnection(); PreparedStatement stmt = conn.prepareStatement(query); ResultSet rst = stmt.executeQuery(); while(rst.next()) { Ingredient i = new Ingredient(); i.setId(rst.getInt("id")); i.setNaam(rst.getString("name")); i.setKleur(rst.getInt("color")); i.setAlpercent(rst.getInt("alcoholpercentage")); ingredients.add(i); } conn.close(); stmt.close(); } catch (SQLException e) { e.printStackTrace(); } return ingredients; }
  • 74. 74 Mechatronische cocktailshaker 12.Conclusie Doordat er een interdisciplinair team werd samengesteld, was het vooral belangrijk dat er duidelijke afspraken gemaakt werden. Dit was niet altijd even gemakkelijk omdat sommige delen van het project niet zonder het andere kan, hierdoor moeste we afspreken welke onderdelen we eerst gingen afwerken. Doordat het een onderzoeksproject was hebben we veel informatie zelf moeten opzoeken, dit vooral omdat de basis kennis die we op school meekregen vaak niet voldoende is om het project in goede banen te leiden. Het was vooral een goede ervaring om in een soort van bedrijfsomgeving te werken en niet op school, hierdoor zijn we vooral zelfstandig tewerk gegaan. Een nadeel van het technologiecentrum was dat er weinig materiaal ter beschikking was, waardoor we soms toch nog materiaal op de XIOS Hogeschool Limburg moesten gaan halen. Doorheen de stage wordt er voornamelijk gebruik gemaakt van de sbRIO-9602 deze beschikt over een FPGA en een real-time controller, deze RIO is veelzijdig en bied dus zeer veel mogelijkheden dit i.v.m. het automatiseren van systemen(delta robot). 12.1 Mogelijke uitbreidingen Het mechanische ontwerp van de cocktailshaker moet zeker en vast nog “up to date” gebracht worden, hierbij denk ik aan ingebouwde reservoirs en een degelijk afzuigsysteem voor het aanzuigen van de gepaste hoeveelheid vloeistof. Door tijdgebrek is de Bluetooth communicatie niet helemaal afgeraakt, hierdoor zou het een mogelijke uitbreiding kunnen zijn om het UART programma te optimaliseren.
  • 75. 75 Mechatronische cocktailshaker 13.Lijst met referenties Algemene informatie: http://www.xios.be/ http://belgium.ni.com/ gebruikte technologieën: Bluetooth: http://www.bluetooth.com/Pages/Low-Energy.aspx http://www.bluetooth.com/Pages/Smart-Logos-FAQ.aspx http://www.ceva-dsp.com/CEVA-Bluetooth.html http://eetimes.com/design/communications-design/4217866/Bluetooth-4-0--An-introduction-to- Bluetooth-Low-Energy-Part-I http://www.eetimes.com/design/communications-design/4218319/Bluetooth-4-0--An- introduction-to-Bluetooth-Low-Energy-Part-II FPGA: http://www.ni.com/white-paper/6983/en http://nl.wikipedia.org/wiki/Field-programmable_gate_array http://www.xilinx.com/training/fpga/fpga-field-programmable-gate-array.htm http://www.xilinx.com/support/documentation/application_notes/xapp465.pdf http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf http://www.fpga4fun.com/FPGAinfo1.html http://www.edafun.com/home/item/77.html Delta robot: http://www.pmdcorp.com/news/articles/html/motion_kinematics_deep_dive.cfm http://forums.trossenrobotics.com/tutorials/introduction-129/delta-robot-kinematics-3276/ http://www.fanucrobotics.com/robotics- articles/Delta_Robots_Improve_Highly_Repetitive_Tasks.aspx http://industrial.omron.be/nl/news/product-news/sysmac-and-delta http://www.abi.nl/nl/produktennl/abiflexx
  • 76. 76 Mechatronische cocktailshaker opbouw van het project: sbRIO-9602: http://www.ni.com http://www.ni.com/pdf/manuals/374991c.pdf real-time: http://en.wikipedia.org/wiki/Real-time_computing http://nl.wikipedia.org/wiki/Realtimebesturingssysteem BT23: http://www.ampedrf.com/datasheets/BT23_Datasheet.pdf http://www.kowatec.com/prod/amp/doc/BT-23_Datasheet.pdf LabVIEW: http://pwo.fpga.be/LabVIEW/Lab%204%20Picoblaze.pdf http://pwo.fpga.be/LabVIEW/Lab%202%20Serial%20Communication.pdf http://pwo.fpga.be/LabVIEW/Lab%203%20Embedding%20VHDL%20Code.pdf http://pwo.fpga.be/LabVIEW/Lab%204%20Picoblaze.pdf http://zone.ni.com/reference/en-XX/help/371361J-01/lverror/misc_lv_error_codes/ http://www.ni.com/white-paper/9381/en http://www.ni.com/white-paper/6983/en http://nl.wikipedia.org/wiki/LabVIEW http://labviewwiki.org/Case_Structure http://www.youtube.com/watch?v=-ulWxOyOfgM http://www.ni.com/ servomotor: http://nl.wikipedia.org/wiki/Servomotor http://www.servodatabase.com/servo/hitec/hs-7966hb
  • 77. 77 Mechatronische cocktailshaker Toegepaste Informatica [RF01] Open Hands Alliance, Android Overview, [online] available http://www.openhandsetalliance.com/android_overview.html [RF02] Android Developer Site, Dashboard distribution, [online] available http://developer.android.com/about/dashboards/index.html [RF03] JSON Hompeage, [online] available http://json.org/ [RF04] Metajack, json-versus-xml-not-as-simple-as-you-think, [online] available http://metajack.im/2010/02/01/json-versus-xml-not-as-simple-as-you-think/ [RF05] RESTful Web Services vs. “Big” Web Services, [online] available http://www2008.org/papers/pdf/p805-pautassoA.pdf - REST architectuur [RF06] Oracle, What Are RESTful Web Services, [online] available http://docs.oracle.com/javaee/6/tutorial/doc/gijqy.html - RESTful web service