Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum OPEN%SOURCE,%OPEN%DATA%& HOE%LAAT%KOMT%MIJN%TRAM? SvenBoor&ArjenKremers GymnasiumNovum 12maart2013 1
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum VOORWOORD Ditprojectbegoninhetvoorjaarvan2012,meneerVanLeeuwen,natuurkundedocentoponzeschoolentevensonzebegeleider,lietonseencomputertjeziendatmakkelijkzelfteprogrammerenwas,deArduino.Dezecomputerslootprimaaanbijonzewensomietstedoenmetprogrammerenenpraktischbezigtezijn.MeneerVanLeeuwengafonseenArduinomeeommeeteexperimenteren.VervolgenshebbenwijmetdeArduinoeenverbeterdeversievaneenvalproefgemaakt.HetprogrammahebbenwegeschreveninC.Vervolgenshebbenweeenhardwareversievandeheleoplossinglatenmakenwaardoordeproefmetbehulpvande Arduinoalsmicroprocessordirectinzetbaarisindeklas. Eenaantaldisplaysaantramlijn15inDenHaagtoontalenkelejarengeenreisinformatiemeer. Ditbleektewordenveroorzaaktdoorgeslotensystemen.Erwasgeendocumentatievandedisplaysenvandeinterfaces.Hierdoorwashetnoodzakelijkdespecificatiesviareverseengineeringboventafeltekrijgen.DoordeArduino,alsopensourcecomputer,zijnwegaanonderzoekenofhetmogelijkwasommetdeArduinoeengoedkopeoplossingterealiserenomweeractuelereisinformatietetonen.Inditwerkstukhebbenwedatonderzochteneenoplossinggevonden. DeArduinobleeknietgenoegmogelijkhedentegevenoméndedatateontvangenente verwerkenénomdezeomtezettennaarhetrs232signaaldathetledxdisplayverwachtte. DaaromhebbenwedehulpingeroepenvandeRaspberryPi,eenbudgetXmicrocomputerwaarinwemeteenLinuxvariantdetaalPythonkondendraaien.WemoestenopeenservereenprogrammamakendatdeopendatastroommetactueleXreisinformatieinformatievoorbewerktevoordeafzonderlijkehaltes,zodatdedatastroomnaardehalteplaatszeerbeperktkanblijven.WehebbenonsdetaalPythoneigengemaaktenwarenzoinstaatvoorca. 100aanconsumenteninkoopsprijsdehaltesreizigersinformatietelatenweergeven.Het StadgewestHaaglandenenHTMzijngeïnteresseerdinhetimplementerenvandeoplossing, voorhetaanpassenvan200anderedisplaysinderegioloopteenanderproject.hetbudgetvoorditprojectis 300.000 400.000.RealisatiemetbehulpvanonsopenconceptisvoorHaaglandenveelvoordeliger. Eendemonstratievanhetprobleemenonzeoplossingistebekijkenvia http://vimeo.com/60644074ofdooronderstaandeqrcodetescannen. GraagbedankenwijmeneerVanLeeuwenenmeneerVanSoestvoordeondersteuningenbegeleidingvanonswerkstuk.MeneerVanSoestinhetbijzondervooralhetsoldereneneenpermanenteopstellingmakenvandevalproef.DaarnaastwillenwehethostingbedrijfCJ2 bedankenvoorhetsponsorenvaneenserverenjcdecaux,deexploitantvandeabri s,voorde medewerkingbijhetterbeschikkingstellenvanhetdisplay. 2
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum INHOUD Voorwoord...2! Inhoud...3! Inleiding...4! Valproef...5! Algemeen...6! Hardware...7! Onderdelen...7! Schakelschema...11! Problemen...12! Software...13! Programma...13! Verbeteringen...17! Handleiding...18! Tramdisplay...20! Probleemstelling...21! Realisatie...25! Programmatuur...34! Conclusie...48! Bronvermelding...49! 3
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum INLEIDING OpensourceenopendatazijntweebegrippendiedeafgelopenjarenoveralindeITwereld opduiken.maarwathoudenbeidenbegrippeninenwatkanmenermee? Ditprofielwerkstukishetverslagvanonsonderzoeknaaropendataenopensource.Dit onderzoekisgedaandoorhethoudenvanpraktijkproevenmakenintweelosseprojecten. Heteersteprojectdiendevooralalsreservevooralshettweede,groteprojectnietvandegrondzoukomenwegensonvoorzieneproblemen.Hetprojecthieldeennatuurkundigeproefinwaarbijdegravitatieversnellingvandeaardebepaaldkanwordenmetbehulpvandetijddateenkogeltjeeroverdoetomovereenbepaaldeafstandtevallen.Hetdoelvanhetprojectwasomdezetijdnauwkeurigtemetenmetbehulpvaneenzelfgeprogrammeerdeopensourcemicrocontroller.DezeopstellingkandandoordenatuurkundesectieophetGymnasiumNovumwordengebruiktbijhetonderwijs. Hettweedeprojectishethoofdproject.HetdoelisomeenoudLEDXschermdatoptramhaltestegebruiktwerdomvertrektijdenvantramsweertegevenennietlangerfunctioneerdenieuwleveninteblazendoorgebruiktemakenvanopendataenopensource. OPENDATAENOPENSOURCESOFTWARE OpenDatazijngegevensdievrijvanrechtervoorhergebruikterbeschikkingwordtgesteld. Meestaldoordeoverheid,maarookandereorganisatieskunnenopendatabeschikbaarstellen. OpenDatakandebasisvormenvoornieuwedienstenmettoegevoegdewaarde.Alsburgersenbedrijvenvrijkunnenbeschikkenoverdezeopendata,kunnenzenuttigenieuwetoepassingenontwikkelen.EenvoorbeeldisBuienradar,datgebruikmaaktvangegevensvanhetKNMI. KortommethetvrijgevenvenOpenData,kunneneconomischeactiviteitenwordenontplooid. Opensourcesoftwarebetekentdatdebroncodewaarindesoftwareisgeschrevenvrijbeschikbaaris.Iedereenkandebroncodelezen,aanpassenenverspreiden.Bijandere geslotensource softwareisdegebruikerafhankelijkvandeoorspronkelijkeleverancierenheeftzelfgeentoegangtotdebroncode.netalsopenstandaardenisopensourcesoftwarebelangrijkommeeropenheidinictsystementerealiseren. DecombinatievanOpenDataenopensourcesoftwarekunneneninnovatieeneducatieeen enormeimpulsgeven. 4
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum VALPROEF VANANALOOGNAARDIGITAAL 5
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum ALGEMEEN Metdevalproefdiebeschrevenwordtkandevalversnellinguitgerekendworden.Devalversnellingwordtbepaalddoordeafstanddathetkogeltjevaltendetijddiehetkogeltjedaaroverdoetnauwkeurigtemeten.Debeschrijvingisopgedeeldineenstukoverhardware, softwareeneenhandleidingoverhoedeopstellinggebouwdkanworden. Devalproefwerdinhetverledenalgebruikt,alleenwaseraltijdeengrootprobleemmetdetijdwaarneming.Deexternetimerwaarmeewordtgewerktisnamelijkerggevoelig.Vroegerwerddetimeropeen analoge maniergeactiveerd.ertreedtdaneenbounceeffectopbijhetindrukkenvaneenschakelaar.ditiseenstuiteringofschommelingvandespanningbijhetafschakelenvandestroom.detimerwerktalleenopdigitalesignalen,duskanalleeneenlaageneenhoogsignaalwaarnemen.deschommelingvandespanningisvoordetimereenwisselendaanxenuitsignaal,ditisnietnauwkeuriggenoeg.doornueenstukjeelektronicatoetevoegenkunnenwesoftwarematigdatbounceeffectondervangenzodathetgeenstorendewerkingheeft.hierbijwordtvoorhetaansturenvandetimergebruikgemaaktvaneendigitaalsignaal. 6
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 7 HARDWARE Dehardwarewordtindrieonderdelenbehandeld.Inheteersteonderdeelwordtuitgelegdwelkeonderdeleninhetcircuitzijnopgenomenenwelkefunctiezehebben.Inhettweededeelwordtuitgelegdhoedeverschillendeonderdelenmetelkaarsamenhangeneninhetlaatstedeelwordenproblemenmetdehardwarebehandeld. ONDERDELEN Hierondervolgteenlijstmetalleonderdelendieinhetcircuitopgenomenzijn. X Arduinomicrocontroller X 1rodeLED X 1geleLED X drukknop X spoel X luik X externespanningsbron X FET X diode X externetimer X weerstanden ARDUINO DeArduino 1 iseenprogrammeerbaremicrocontrollerdiesoftwarematigreageertopsignalenvansensorendieeropaantesluitenzijnenzelfsignalenafgeeftomanderehardwareaantesturen. LED S DeLED sinhetcircuitfungerenalscontrolelampjes.watdelampjespreciesaangeven,iste vindeninhetsoftwaregedeelteenindehandleiding. DRUKKNOP Dedrukknopisinhetcircuitopgenomenomdemetingtekunnenactiverenenteresetten. SPOEL Despoelisbedoeldomhetballetje vasttehouden tothetmomentwaaropdedrukknopwordtingedruktendestroomwordtonderbroken.despoelwerktmetbehulpvanhetprincipevanmagnetischeinductie.doorereenelektrischestroomdoorheentelatenstromenontstaateenmagnetischvelddathetstalenkogeltjevasthoudt.despoelheefteenkoperdraadmeteendoornedevan0,18mmeneenweerstandvan120,7ω. Vandespoelwarendevolgendegegevensbekend: X Diameterinwendig:12mm X Diameteruitwendig:30mm X Hoogte:15mm 1http://www.arduino.cc/ 2nl.wikipedia.org/wiki/Koperdraad
!"#$%&%'! =!!"#$%&'"(!!!"#$"%!&! =!30!!!!!12!!!! =!18!!!! Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum X Doorsnedekoperdraad:0,18mm X NietXmetallischekern X Geenredundantmagnetisme Detotalediameteristeberekenendoordeuitwendigediameterminusdeinwendigediameter tenemen. Hetoppervlaktevandedoorsnedevandespoelisalsvolgtteberekenen.!""#$%&'&!!"#$%! =!!"#$%&%'!!h!!!"#! =!18!!!!!15!!!! =!270!!!!! =!2,7!!"!! OpWikipedia 2 isopdepaginaoverkoperdraadhetaantalwindingentevindenbijeengegeven doorsnedevandekoperdraad.eenkoperdraadmeteendiametervan0,18mmgeeft2270 windingenpervierkantecentimeter.vermenigvuldigdatmethetaantalvierkantecentimeterdoorsnedediewijhaddenomhetaantalwindingentekrijgen.ditgetalmoetnoggedeeldwordendoortweeomdateenwindingzowelheenalsteruggaat,hijlooptimmersrondomdespoel.!! =!2,7!!2!!2270! =!3064,5!!"#$"#%&# Hieronderisinbeeldgebrachthoedezeberekeningtotstandisgekomen. 2nl.wikipedia.org/wiki/Koperdraad 8
(15!!!! +!6!!!)!!2! =!10,5!!!!!!"#$"#% =!!!!2!!!! =!!!!2!!10,5!!!! =!65,973!!!! =!0,065973!!!!!"##! =!!!"#$"#%!!!! =!0,065973!!!!3064,5! =!202,18!!! =!2,0218!h!!!! =!2,0218!h!!!69!!/h!! =!!139,5042!!! Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum Delengtevanéénwindingisongeveerdeomtrekvandespoel.Delengtevandehelekoperdraadmoetdanhetaantalwindingenmaaldelengtevanéénwindingzijn.Alsstraalwordthetgemiddeldegenomenvandebinnenstestraal,6mm,endebuitenstestraal,15mm. IndetabelopWikipediaisookaftelezenhoegrootdeweerstandisineenkoperdraadbijeen gegevendraaddikteperhectometer.bijeendraaddiktevan0,18mmisdit69ω/hm. VermenigvuldigditmetdeafstandinhectometeromdeweerstandinOhmtekrijgen. Afgerondopsignificantecijfersgeeftditeenweerstandvan140Ω. 9
Deschakelaarisinhetcircuitopgenomenomhetstalenkogeltjetedetecteren.Deschakelaar onderbreektdestroomalshijopenstaat,watwaargenomenkanwordendoordearduino. EXTERNESPANNINGSBRON Inhetcircuitiseenexternespanningsbronopgenomenomdespoelvaneenspanningvan30 volttekunnenvoorziendienodigisomdespoelgoedtelatenfunctioneren. FET DeArduinokandehogespanningdienodigisvoordespoelnietleveren,dusmoetereenexternespanningsbronwordenaangesloten.Dezemoetopeenapartcircuitwordenaangesloten,zodatdehogespanningooknietoverdeArduinokomttestaan,dusomdezespanningtelatenlopenofteonderbrekenmetdeArduinoiseenFETnodig. DIODE Naafschakelingvandestroomdoordespoelblijftereenstroomlopendoordespoeltotdathetmagnetischveldvandespoelwordtafgebroken.Ditkomtdoordatdemagneeteeninductiespanningopwekt.DezespanningkanoplopentotduizendenVolt.Deenergiekandanalleenwegdoormiddelvaneenvonkontlading,diewaarschijnlijkindeFETplaatsvinden.Dezekandaardoorkapotgaan.Ditistevoorkomendooreendiodetegengesteldparallelaandespoelintebouwen.Ophetmomentdatdestroomvanuitdespanningsbrondoordespoellooptgaatergeenstroomdoordediode,maarophetmomentdatdestroomwordtonderbrokenendespoeleenspanninggaatgenereren,kandezespanningteruggevoerdwordenviadediode. EXTERNETIMER Detimerisinhetcircuitopgenomenvoordetijdwaarneming.DeArduinobleekookprimainstaatomtijdwaarnemingtedoen.Vooralvankorteduur,zoalsinditgeval,wanttoengetestwerdovereentijdvantientallensecondenbleekereenredeljikgroteafwijkingtezijn.Voordemonstratiesindeklasisdegroteexternetimergeschikter,omdatdezedirectdewaargenomentijdlaatzienenergeencomputervoornodigisdiedeseriëleoutputvande Arduinoontvangt. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum SCHAKELAAR 10
11 SCHAKELSCHEMA Onderstaandeafbeeldinggeefthetschakelcircuitweer. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 12 PROBLEMEN Tijdenshetontwikkelenzijnweooktegeneenaantalproblemenaangelopen.Bijvoorbeelddatwedeexternetimereerstoppin1haddenaangesloten,maardoordeseriëleinterfaceteinitialiseren,dieookzijnsignaalnaarpin1stuurt,isdezepoortnietmeertegebruiken.Hijgeeftdannamelijkelke1/9600 e vaneensecondeeenpulsbijeenbaudratevan9600.alsdeseriële interfacenietgeïnitialiseerdwordtispin1welgewoontegebruikenvooreenpuls aan en uit. Eenanderprobleemwaarwetegenaanliepenwarendedraadjesomdeverschillendeonderdelenvanonscircuitmetelkaarteverbinden.Dezedraadjeszijnergkwetsbaarendooreendefectdraadjeinhetcircuitwordtdeheleopstellingonbruikbaar.Eenprobleemalsditismoeilijktevinden,omdatjenietsnelbedenktdatdithetprobleemkanzijnenereengrotehoeveelheidaandraadjesisgebruikt.
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum #define LED 13 //De LED die aangeeft of de opstelling klaar is voor een meting. #define FET 5 //De FET. Door deze aan of uit te zetten kan de spoel wel of niet onder spanning worden gezet. #define SWITCH 4 //De schakelaar waar het kogeltje op valt. #define BUTTON 2 //De drukknop die gebruikt wordt voor het resetten en het starten van de meting. #define ALERT 12 //Deze LED is het waarschuwingslampje dat aan gaat als de schakelaar open is. #define TIMER 8 //De externe timer die gebruikt wordt om de valtijd op te meten. unsigned long starttime; //De tijd in millisecondes op het moment dat de meting begint en het kogeltje wordt losgelaten. unsigned long lastresettime; //De tijd in millisecondes dat de opstelling voor het laatst is gereset. boolean balldropped = false; //De vlag die aangeeft of het kogeltje aan het vallen is. boolean isset = false; //De vlag die aangeeft of de opstelling klaar is voor een meting.! Onzegehelesetup&functieisalsvolgtingericht: 13 SOFTWARE PROGRAMMA OmdeArduinonaareigeninzichttelatenreagerenopsignalenmoetdecontrollergeprogrammeerdworden.EenArduinoXprogrammabestaatuittweebasisonderdelen,tweefuncties.Eénwordtaangeroepenbijhetopstartenvanhetprogramma.Ditisdesetupfunctie. Deanderefunctieisdeloopfunctie.Dezefunctiewordtnadeinitialisatievanhetprogramma continuaangeroepen. Aanhetbeginvanhetprogrammawordendebenodigdeconstantenenvariabelengedeclareerddienodigzijninderestvanhetprogramma.Depoortendiegebruiktgaanwordenzijnallemaalgedeclareerdindepreprocessor.Ditzorgtervoordatvoordatdecodewordtgecompileerd, klaargemaaktomtewordengebruiktdoordearduino,alleovereenkomstenindecodewordenvervangendoordetoegewezenwaarde.opdezemanierwordtergeengeheugenverbruiktvoordezewaardesopdearduino,maarermoetgoedgeletwordenopmogelijkefoutendiegemaaktkunnenworden.dezewordennamelijknietopgevangendoordecompiler. Eerstwordthieraangegevendatdeseriëlepoortmoetwordengeactiveerd.MetdezepoortkunnengegevenswordenverstuurdviadeUSBXpoortopdeArduinonaardecomputer,omweergegeventewordenophetscherm.Bijdeinitialisatievandeseriëlepoortmoetookwordenaangegevenophoeveelbauddezedraait.Eenbaudisdeeenheidvoorhetaantalbitsdatpersecondewordtverstuurd.Hierisgekozenvooreenbaudratevan9600baud.Ditisnamelijkeenveelgebruiktesnelheid,engoedvooronsgebruik. Daarnawordendegebruiktepinsgeïnitialiseerd.Dedrukknopendeschakelaarwaarhetkogeltjeopvaltwordenalsingangenvoorgegevensgebruikt.Zokunnendewaardesafgelezenworden.Deoverigeattributen,detweeLED s,defetendeexternetijdmeter,hebbeneensignaalnodig.omteschrijvennaardezepinnenwordenzealsuitgangengeactiveerd.
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum void setup() { // Initialiseer de Serial met een snelheid van 9600 baud. Serial.begin(9600); Serial.flush(); // Initialiseer de output en input pins. pinmode(led, OUTPUT); pinmode(fet, OUTPUT); pinmode(timer, OUTPUT); pinmode(button, INPUT); pinmode(switch, INPUT); pinmode(alert, OUTPUT); digitalwrite(fet, LOW); //Stuur een laag signaal naar de FET zodat de spoel niet aan staat. }! 14 Deloopfunctieiseenstukcomplexerenzalindelenwordenuitgelegd.Voorheteigengemaken deeigenduidelijkheidisdecodezelfookalingedeeldinmeerderemethodes. Deeersteselectiedieindeloopmethodewordtuitgevoerdbepaaldhoelangdeopstellingalklaarisvoorgebruikt.Vanwegeveiligheidsredenenenhetgebruikvaneenmagnetischespoelwordtdeopstellingnatiensecondesweeruitgeschakeld,zodathijopnieuwgeresetmoetworden.Nadezecheckwordtgekekenoferopdedrukknopwordtgedrukt,enofdeschakelaarnaarbenedenis. void loop() { if (millis() lastresettime > 10000) { unset(); } // Als de bal al losgelaten is hoeft de knop niet meer gecheckt te worden, maar dan moet de schakelaar gecheckt worden. checkbutton(); checkswitch(); }
void checkbutton() { /* Als de bal aan het vallen is wordt de functie vroegtijdig afgebroken. Als de knop niet is ingedrukt gebeurt er eveneens niets. */ if (balldropped) { return; } } if (digitalread(button) == HIGH) { if (isset) { dropball(); } else { reset(); } }! Alsblijktdathetkogeltjealaanhetvallenis,wordtdefunctieafgebroken.Ergebeurtverderniets.Anderswordtdepindieaandeknopbevestigdisgelezen,metdemethodedigitalRead,enbepaaldofhetsignaalhoogisendeknopdusisingedrukt.Aangeziendeknopgebruiktmoetwordenvoortweedoeleinden,hetresettenenhetlatenvallenvandekogel,volgternogeenselectie.Alsdeopstellinggeresetis,endusklaarisomtemeten,wordthetballetjelosgelatenendemetinggestart.DitgebeurtindedropBallfunctie.Isdeopstellingnietklaarvoorgebruik,danbegintdeprocedureomhetsysteemklaartemakeninderesetfunctie. dropball&werktalsvolgt:allereerstwordtnaardeseriëleuitgangeenstringverzondendatdemetingisgestart.deballdroppedwaardewordtnaartruegezet,zodathetprogrammaweetdatdemetingloopt.destarttijdvandeinternetimerwordtnaardehuidigetijdgezet.naarde TIMERpoortwordteenhoogsignaalgeschrevenhetgeeninhoudtdatdeexternetimerstartmettellen.ErvolgteenaanroepnaardeunsetXfunctie,waardoordespanningopdemagneetspoelwordtweggenomenenhetkogeltjevalt. void dropball() { Serial.println("Meting gestart"); balldropped = true; starttime = millis(); //Start interne timer. digitalwrite(timer, HIGH); //Start externe timer. unset(); }! Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum DecheckButton&functiezieteralsvolgtuit: 15
void checkswitch() { if (digitalread(switch) == LOW) { if (balldropped) { digitalwrite(timer, LOW); // Stop de externe timer. unsigned int delta = millis() starttime; // Meet de interne verlopen tijd. balldropped = false; Serial.print("Millisecondes: "); // Zend de waarde van de interne timer naar de Serial. Serial.println(delta); float seconds = float(delta)/1000.0; //De millisecondes worden omgerekend naar hele secondes. Serial.print("Gravitatieversnelling: "); Serial.print(((2*0.335)/(seconds*seconds))); //Hier wordt de gravitatieversnelling uitgerekend met de formule. 0.335 is de afstand die het kogeltje heeft afgelegd. Serial.println(" m/s^2"); } digitalwrite(alert, HIGH); //De rode LED wordt aangezet. unset(); //De opstelling wordt gereset. } else { digitalwrite(alert, LOW); } }! Heteerstedatwordtgecontroleerdisofdeschakelaaropenisofgeslotendoorhetsignaalwaartenemen.Deschakelaarisgeopendalshetsignaallaagis,wantdanisdestroomkringonderbroken,enhijisgeslotenalshetsignaalhoogisendestroomkringgesloten.AlsdeschakelaargeslotenishoeftalleendewaarschuwingsXLEDuitgeschakeldteworden. Ishijgeopend,danishetdevraagofdemetingbezigis.Alsdemetingnamelijkgestartis,danbetekenthetdathetkogeltjedoordeschakelaarheenisgevallenendusdeafstandheeftafgelegd.Numoetdetijdgestoptworden.Datgebeurtallereerstdoordeexternetimertestoppenmeteenschrijfoperatienaarlaag.Daarnawordtdeverlopentijduitgerekenddoordestarttijdvandemetingvandehuidigetijdaftetrekken.Dezeberekendewaardewordtnaardeseriëleuitganggestuurd.Degravitatieversnellingwordtvervolgensookuitgerekendmetdeformuleg! = 2s!/!t! engeprintnaardeseriëlepoort. HiernawordtzowelinhetgevalvaneenmetingalswanneerergeenmetingheeftplaatsgevondendeopstellinggeresetenderodewaarschuwingsXLEDaangezet.DezeLEDgeeftaandatdeschakelaaropenstaat. Nuvolgtdedocumentatievandelaatstetweefuncties,reset()enunset(): Deopstellingkannooitgeresetwordenalsdeschakelaaropenstaat.Ditwordtdusallereerstgecontroleerdenerwordteenberichtverzondennaardeserialalsdithetgevalis.BijdewerkelijkeresetwordtdegeleLEDaangeschakeld,omaantegevendatdeopstellingklaarisvooreenmeting.DeFETwordtookaangezetzodatdeereenspanningdoordemagneetspoellooptomhetballetjevasttehouden.DelaatsteresettijdwordtnaardehuidigetijdgezetenheterwordtaangegevendatdeopstellinggeresetismetdeisSet&waarde.Ervolgteendelayvaneenseconde,watervoorzorgtdatdemetingnietonmiddelijkbegint.Dedrukknopisnamelijkwaarschijnlijknogsteedsingedrukt. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum DecheckSwitchfunctieisalsvolgtingedeeld: 16
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum void reset() { if (digitalread(switch) == LOW) { Serial.println("Sluit de schakelaar"); } else { Serial.println("Reset"); digitalwrite(led, HIGH); digitalwrite(fet, HIGH); lastresettime = millis(); isset = true; } delay(1000); }! void unset() { digitalwrite(led, LOW); digitalwrite(fet, LOW); isset = false; } 17 InunsetwordtdeLEDdieaangeeftdatdeopstellingklaarisvooreenmetinguitgezet,samenmetdeFET.Hierdoorwordtdespanningvandespoelafgehaald.NaardeisSetwaardewordtfalsegeschreven. VERBETERINGEN Hetontwerpenvandeprogrammatuurverliepnietvolgensdebestemethode.Eenaanpassingvandeschakelinggingsteedsvoorafaaneenkleinetoevoegingaandecode.Opdezemanierwaszoweldeopstellingalshetprogrammaeenvoudigtetesten.Eennadeelvandezemethodeisdatmetnamehetprogrammanietoverzichtelijkwordtopgebouwd,waardoorenkeleslordighedenoverhethoofdzijngezien. Hierondervaltdemanierwaaropdedrukknopenschakelaarwordengecontroleerd.Eenbeterimplementatiewasgeweestalserzowelvoordeknopalsvoordeschakelaareenbooleanwasgedeclareerddiebijhieldofdeknopingedruktis,endatelkeiteratievanhetprogrammawordtgecontroleerdofdestaatvandeknopofschakelaarisveranderd.Alsdathetgevalis,wordtereenfunctieaangeroepen.Indezefunctiewordtdanvervolgenshetnodigegedaan.Dezemethodeisietsomslachtiger,maarveeloverzichtelijker,eneenbelangrijkprobleemwordtermeevermeden,namelijkdatsommigefunctieselkeiteratiewordenaangeroepenalsdatnietnodigis. Ditisookhetgevalbijdecontrolehoelangereenstroomdoordemagneetspoelloopt.Nadatdetiensecondendatdeopstellinggereedisverstrekenzijn,wordtcontinudeunsetfunctieaangeroepen,ookalisditslechtséénmaalnodig.
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 18 HANDLEIDING 1. Zorgervoordatdeelektronicaendedradenalsvolgtzijnaangesloten: Degroundvandetimer,deArduinoendeexternespanningsbronmoetenmetelkaarverbondenzijn.Deexternespanningsbronmoetaangeslotenwordenopdecontactenwaar 25V= bovenstaateningesteldwordenop25voltgelijkspanning.hetmetalenklepje,hetluik,moetwordenaangeslotenbij luik endespoelbij spoel. DebundelkabeltjesuithetkastjegaatrichtingdeArduinoenmoetalsvolgtopde Arduinowordenaangesloten: WitXgeel: 5V Zwart: Pin12 Blauw: Pin13 Oranje: Pin2 Rood: Pin4 Wit: Pin5 Derodeaansluitingvandetimermoetviaeenapartkabeltjeoppoort8vandeArduinowordenaangesloten. 2. Controleerofschakelaar geslotenisenofdetimeropdit ( )symboolstaatendrukopdestartknopvandetimeromdezegereedtemakenvooreenmeting. 3. Drukeenmaalopdeknopomdespoelteactiveren.Hetgelelampjegaatbrandenalstekendatjedemetingkuntstarten. Let%op:%destroomdoorspoelwordtna10secondenautomatischonderbrokenenjemoethemopnieuwactiveren.Ditisterveiligheidzodatdespoelnietteheetwordt. Alshetluikopenstaatgaathetrodelampjebrandentertekendatdemetingnietgestart kanworden. 4. Plaatshetkogeltjeindeonderkantvandespoel.Verhoogdespanningalsdezenietblijft hangentotdathetkogeltjenetblijfthangen. 5. Druknogmaalsopdeknopomdeproefuittevoeren.Hetkogeltjevaltophetklepjeenopdetimerverschijntdevaltijd.
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 19
20 TRAMDISPLAY HOELAATKOMTMIJNTRAM? Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 21 PROBLEEMSTELLING NakennisgemaakttehebbenvanmetdeArduinodeopensourcecomputer,zijnweopzoekgegaannaarnieuwetoepassingsmogelijkhedenvanopensource.OpYouTube 3 kwamenweeen interessantfilmpjetegenoverhetgebruikvanopendatainhetopenbaarvervoer. InditfilmpjeuitBostonkomtnaarvorendatdoorhetvrijgevenvanopenbaarvervoersdata, ontwikkelaarsinkortetijdeengrootaantalnieuwetoepassingengaatmaken.ookinnederland wordtvanaf2012actuelereisinformatievanhetopenbaarvervoeropenvrijgegeven. EentermdiewordtgebruiktvoordatadievrijbeschikbaarwordtgemaaktisOpenData.HetideevanOpenDataisdathetvrijbeschikbaarisvooriedereontwikkelaar.Ontwikkelaarskunnenmetbehulpvandezedatazelfapplicatiesenoplossingenontwikkelen. Optramlijn15toondendetramdisplaysalenkelejarengeenactueleinformatieopeenaantalhaltesinYpenburgenRijswijk.OnsleekhetleukomteonderzoekenofhetmogelijkwasommetbehulpvandezevrijgegevenopenXdataeennieuweoplossingtebedenkenomdedisplaysaantesturen. 3http://www.youtube.com/watch?v=URmKRTUXhxQ
BijHTMhebbenwenagevraagdwaaromergeenactuelereisinformatieopdedisplaysvanlijn 15werdgetoond.HTMgafåaandatsinds2010gebruikwordtgemaaktvanandereboordcomputersindetrams.Dezeboordcomputerbepaaltopbasisvano.a.GPSwaarhetvoertuigisopderouteenhoeveeldetramtevroegoftelaatis. Dedisplayslangslijn15wareneenintegraalonderdeelvanhetoudevoertuigvolgsysteem.Dezekondennietmeerwordenaangestuurdmetdenieuweboordcomputers,erzijngeenopenstandaardenbeschikbaaromdedisplaysaantesturen. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum WAAROMISERGEENREISINFORMATIE? 22
BijnaderonderzoekbleekdathetprobleemvanHTMinmeerregio svoorkomt.iederevervoerdermaaktgebruikvanhaareigenreizigersinformatiesystemen.daarwaarverschillendevervoerbedrijvensamenkomen,ishetnodigdegegevensuitmeerderesystementecombinerenopeendisplay.doorhetontbrekenvanstandaardsbetekendeditdatereengrootaantal(nxm)interfaceszoudenmoetenwordengerealiseerd. Sinds2002wordthetopenbaarvervoerindemeesteregio sinnederlandaanbesteed, waardoorerregelmatiganderevervoerdersineenregiokomenterijden.inhaaglandenredenvroegerallenbussenentramsvanhtmenconnexxion,tegenwoordigrijdenhtmbuzz,veoliaenarrivaindenhaag.dereizigerwilonafhankelijkvanhetvervoerbedrijf,goedereisinformatie. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum KNELPUNTENBIJREISINFORMATIE 23
Deoplossingomhetaantalinterfacestebeperkenishetstandaardiserenvandeinformatiestromen.Doorvanuitallevervoerdersdegegevensaanteleverenaaneencentraalpunt,wordthetaantalinterfacesteruggebrachttot1xninterfaces(n=hetaantalvervoerdersdatdataaanlevert). Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum OPLOSSING 24
Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum 25 REALISATIE DATA GOVI(GrenzelozeOpenbaarVervoerInformatie)iseenoverheidsinitiatiefmetalsdoeleenlandelijkedatabasetecreërenvooractuelereisinformatieafkomstigvanverschillendevervoerders.HetGOVIprojectisgestartin2007,enhadineersteinstantietotdoelgeïntegreerdereisinformatieteleverenvoordeweergaveopdisplaysbijhaltesenknooppunten. Omookophalteswaaronvoldoendereizigersinstappenomdeinvesteringindisplaysrendabeltemaken,isgezochtnaarmogelijkhedenomdereisinformatieookviamobielinternetteontsluiten.Vanaf2010isgeëxperimenteerdmeteeneersteBusXmobielprojectinNoord Brabant.Vanafmaart2012wordtereencontinuedatastroomactuelereisinformatiegeleverdvoorallehatesinhetGOVIgebiedaanOpenOV,eenstichtingdiezichtotdoelsteltomopenbaarvervoerdatabeschikbaartestellen. GOVIGEGEVENSSTROMEN VERVOERDER GOVI DeberichtenvandevervoerderrichtingGOVIbestaanuitgeplandevertrektijden(KV1),depositiesvanbussenentrams(KV6),vrijetekstenvooropdisplays(KV15)enuitvalofomleidingvanbepaalderitten(KV17).KVstaatvoor koppelvlak,eengegevensuitwisselingoververschillendeorganisaties. GOVI DRIS VanuitGOVIwordendegeplandevertrektijdenopeenbepaaldehalteindevormvanKV7 verstuurdnaarhetdrissysteem.eenkv8wordtelkekeeralsdeverwachtevertrektijd verandert,alseentramaankomtopeenhalteenalseentramvertrektvaneenhalteverstuurd. InKV8wordenookvrijetekstenenuitgevallenbussen&tramsdoorgegeven.
GOVIwasoorspronkelijkalleenbestemdvoorhetaansturenvanDRIS sen.metdeopkomstvan mobielinternetenappskwamerookvraagnaarinformatieopallehaltesinnederland.kv7/8 wasoorspronkelijkbedoeldomgebruikttewordenvoor5000haltesennietvoldoendeominformatieteverstrekkenoveralle50.000haltesinnederland.daaromisereenefficiëntereensnellereversievankv7/8ontwikkelt,namelijkkv78turbo.degroottevandeberichtenisopdezenieuwemanierveelkleineromdaterinplaatsvanxmlgebruikwordtgemaaktvanctx, eenbestandsformaatwaarindegegevensgescheidenzijndooreensluisteken( ). DeKV78TurboberichtenstroomwordtdoorgestuurdnaarOpenOV,eenorganisatiediezich inzetomalledatavanhetopenbaarvervoerinnederlandbeschikbaartestellenalsopendata. OpenOVdistribueertdezegegevensstroomvervolgensweernaaralleontwikkelaarsdieeenapplicatiemetdezedatawillenontwikkelen.VoorbeeldenvanapplicatiesdiemetbehulpvandezedatazijnontwikkeldzijnOVInfovoorAndroidenTranzzitenOpenbaarVervoervooriOS. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum KV78TURBO 26
Watbetekentditvooronsproject?DebeschikbaarheidvandeKV78turbostroomincombinatiemetopensourcehardwareensoftwarevormdendebasisomteonderzoekenhoeweactuelereisinformatieopdedisplaysvantramlijn15kunnenkrijgen.Tijdensdeuitvoeringhebbenwedevolgendestappendoorlopen: 1. Hoekomenweaanhetdisplayt.b.v.naderonderzoek? 2. Hoekrijgenweeentekstophetdisplay? 3. Hoekrijgenwereisinformatieopdisplay? 4. Hoelatenweallessamenwerken? 5. Beheer 6. Uitrol Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum STAPPENPLAN 27
28 Deeersteuitdagingwasomdebeschikkingovereendisplaytekrijgenzodatweermeekondengaantesten.Wezochtenbeginaugustus2012contactmethetStadsgewestHaaglandendieverantwoordelijkisvoorallebusXentramhaltesinderegioHaaglanden.Haaglandengafaandatergeenreservedisplaywasommeetetesten.StadsgewestHaaglandenverweesonsdoornaar JCDecaux,deexploitantvandeabri s.jcdecauxverweesonsweerdoornaardehtm.ditkastjenaardemuurgestuur,leerdeonsdathetbeheervandedisplaysiniedergevalnieteenduidigwasgeregeld.naflinkheenenweermailenbleekjcdecauxbereidomonstehelpen. Eenmonteurheeftonsgeholpenmethetdemonterenvaneendisplayuitdeabriop26 september2012.ditprocesheeftuiteindelijkbijnatweemaandengeduurd. Opdezemanierzathetdisplaybevestigdindekast. Profielwerkstuk Opensource,opendata&Hoelaatkomtmijntram? SvenBoor&ArjenKremers GymnasiumNovum HOEKOMENWEAANHETDISPLAY?