FORDYPNINGSEMNE 2012



Like dokumenter
Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

Fag ITD Datateknikk. Laboppgave 7. Programmering av Arduino med Ethernet shield. Kort løsningsforslag.

Prototyping med Arduino del 2

WORKSHOP BRUK AV SENSORTEKNOLOGI

Steg 1: Installere programvaren

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærere: Robert Roppestad. Hele oppgavesettet består av 8 oppgaver, samt 1 vedlegg.

består av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Bruk av interrupt og Timer i Arduino-program.

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

Prototyping med Arduino del 3

Skilpadder hele veien ned

Start Here USB *CC * *CC * USB USB

7-Segment Display Nybegynner Arduino Lærerveiledning

Arduino med Atmel studio 6.x (6.1)

Høgskoleni østfold EKSAMEN. Oppgavesettet består av 8 sider inklusiv denne forsiden og vedlegg.

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

SMART hus via nettleseren

INF1510: Bruksorientert design

Installasjonguide LAG DIN EGEN BRUKERKONTO

Ultralydsensor. Introduksjon. Litt om ultralydsensorer. Arduino. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Hvordan kan vi i fremtiden bruke minst mulig papir, slik at de store skogene blir bevart?

AirLink 2200 FAQ. Side 2 Side 2 Side 3 Side 4 Side 6 Side 7 Side 8 Side 10 Side 11 Side 12 Side 13 Side 13 Side 14 Side 15 Side 16 Side 18

Hangman. Level. Introduksjon

Hva er maskinvaren Arduino

Velkommen til Pressis.

Kanter, kanter, mange mangekanter

Oversikt over I/O tilkoblinger og moduler på modellbyen

Brukerveiledning Tilkobling Altibox Telefon

FRC-Feeder-E. Et sikkert og raskt verktøy for overføring av data til File Record Converter Versjon 1.9

en hjemmeside Lesson Introduksjon Du kjenner en del HTML tagger, så nå er det på tide å lage din første hjemmeside! La oss begynne med en gang.

Eagle 1500 FAQ. Innholdsfortegnelse

Eksamensoppgaven: Hele oppgavesettet består av 8 oppgaver. Hver oppgave har en %-angivelse som angir hvor mye den teller ved sensurering.

Arduino bilen er en selvgående liten robot. Roboten består av:

Steg 1: Installasjon. Steg 2: Installasjon av programvare. ved nettverkstilkoblingen på baksiden av kameraet. Kameraet vil rotere og tilte automatisk.

AirLink 2400ac FAQ. Side 2 Side 2 Side 3 Side 4 Side 6 Side 7 Side 9 Side 11 Side 12 Side 13 Side 14 Side 14 Side 15 Side 16 Side 17

ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Bruksanvisning Unitronics Vision

Eagle 1500 FAQ. Innholdsfortegnelse

VELKOMMEN INN I DITT NYE TV-UNIVERS. Foto: Jens Haugen / ANTI

Installasjonsveiledning

EKSAMEN. Informasjon om eksamen. Emnekode og -navn: ITD13012 Datateknikk. Dato og tid: timer. Fagansvarlig: Robert Roppestad

Ukeplan 9D. Navn: Onsdag 3.3. Samfunnsfag Engelsk Mat/Ku & Hå/ Mat &Helse GAP GAP GAP Matematikk GAP GAP GAP GAP Naturfag GAP

Brukerveiledning Tilkobling IP-telefoni ALT DU TRENGER Å VITE OM BRUKEN AV IP-TELEFONI

HONSEL process monitoring

Del 1: Overgang fra gammel hjemmeside til ny hjemmeside

Brukermanual for oppsett av Wanscam overvåkningskamera

INF1510: Bruksorientert design

ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Informasjon for nye brukere (for administratorer) Mars 2014, 3. utgave

Gruppelogg for hovedprosjekt 2009

ASU Monitor inng.: 0= frakoblet, 1= kontakt, 2= temperatur, 3= kont. + temp. 3.

Fra: Arne Hågensen. Sendt: 30. november :59 Åse Saltkjelsvik VS: 15/ Gateadresse TusenFryd T.O. Hei,

1. Arduino Bluetooth 4.0 Low Energy (BLE)

Forprosjekt. Oppgavens tittel: Motorstyring Dato: Jon Digernes Institutt/studieretning: Program for elektro og datateknikk

Forsvunnet katt webside

Oblig 5 Webutvikling. Av Thomas Gitlevaag

LabVIEW seriekommunikasjon med mikrokontroller

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Handi. For at livet skal fungere

Kjenn din PC (Windows Vista)

JANUAR 2016 TELEFON BRUKERVEILEDNING

Jo, Boka som snakker har så mange muligheter innebygget at den kan brukes fra barnehagen og helt opp til 10. klasse.

Exercise 1: Phase Splitter DC Operation

Introduksjon til dataanlegget ved Institutt for informatikk. Marc Bezem Institutt for informatikk Universitetet i Bergen

Gjøres på skolen eller hjemme til neste gang du har faget: Rød: Side 144. Gul: Side 152. Lag et eget lignende spill med egne oppgaver.

Repetisjon Novice Videregående Python PDF

Trådløsnett med Windows XP. Wireless network with Windows XP

BRUKERVEILEDNING. AFI_GoingGREEN

MindIT sin visjon er å være en anerkjent og innovativ leverandør av teknologi og tjenester i den globale opplæringsbransjen

IP-telefoni Brukerveiledning

IP-telefoni Brukerveiledning

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann januar Vi som skal undervise. Hva er diskret matematikk?

Prosjektet Digital kontaktinformasjon og fullmakter for virksomheter Digital contact information and mandates for entities

Bruksanvisning Chronopass STK PO/PL (tidsinnstiller/sender) og Interface STM PO/PL (Mottaker)

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

the web Introduksjon Lesson

Lynkurs i shellprogrammering under Linux

Øvingsforelesning i Python (TDT4110)

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

Ofte stilte spørsmål. Generelt

Innhold RDP... 2 Oppkobling Kirkedata... 2 Flere brukerpålogginger til Kirkedata... 8

Utrulling av sertifikater til IOS

Guide for tilkobling til HIKT s Citrix løsning

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

Se vedlagte skisse som viser hvordan det er tenkt. Dette har også grunneier bekreftet til oss vil være ok.

Introduksjon til beslutningsstrukturer

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

MAT1030 Diskret matematikk

BIPAC 7100SG/7100G g ADSL Router. Hurtigstartguide

INGIERÅSEN SKOLE ARBEIDSPLAN for 10 IV uke 21 og 22

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Argumenter fra kommandolinjen

Hei verden Introduksjon Swift PDF

BRUKERVEILEDNING FOR MC50.

Institutt for biovitenskap

Transkript:

FORDYPNINGSEMNE 2012 Marius Antonsen Digital medieproduksjon 5 te semester 2010 HØYSKOLEN I ØSTFOLD

Enerett: Høyskolen i Øsfold cbnd 2012 Creative Commons Attribution - Noncommercial - No Derivative Works 3.0 International License For betingelser se: http://creativecommons.no/ http://www.it-stud.hiof.no/~mariusa/ Emneansvarlig: Børre Ludvigsen 2012

Innhold 1 Arduino 1 1.1 Hva er Arduino........................... 1 1.2 kode................................. 1 2 Prosjektet 3 2.1 Sensor................................ 3 2.1.1 HAL Effect sensor..................... 3 2.1.2 Laser............................ 3 2.1.3 IR Sensor.......................... 3 2.2 Push varsling............................ 4 2.3 kode................................. 5 3 Konklusjon 6 Bibliografi 7 4 Vedlegg 8 4.1 Logg................................. 8 4.2 Kode................................. 8 i

Forord Rapporten tar for seg prosessen rundt det å digitalisere postkassen til fag- lærer Børre Ludvigsen. Ved hjelp av en mikroprosessor og nødvendige sensorer skal faglærer kunne motta en epost / push varsling når noen legger post i hyllen hans. Rapporten skal skrives ved hjelp av LATEX og skal dokumentere prosessen fra start til ende. Rapporten vil se nærmere på hvordan en Arduino fungerer og ved hjelp av egen skrevet kode vise hvordan programmet kan forenkle hverdagen til faglæreren. Problemstilling: Hvordan digitalisere en posthylle ved hjelp av en arduino og et ethernetskjold Denne prosessen skal hjelpe studenten tilegne seg kunnskaper om : Programmering i C++ Hvordan en Arduino mikrokontroller fungerer Hvordan forskjellige sensorer fungerer Hvordan dette fungerer sammen i praksis... ii

Arduino Arduino er en elektronisk prototyping plattform basert på åpen kildekode. Den er fleksibel og enkel å ta i bruk og egner seg godt for både amatører som profesjonelle. [Team, 2012] 1.1 Hva er Arduino Som allerede nevt er Arduino en prototyping plattform, det vil si at er et kretskort med inn og ut porter som kan styre alt fra enkle prosjekter som å få en led til å blinke til avanserte roboter. Arduino kan brukes til å utvikle interaktive objekter, tar imot data fra en rekke brytere eller sensorer, og kan kontrollere en rekke lamper, motorer og andre fysiske utganger. Arduino prosjekter kan være frittstående, eller de kan kommunisere med programvare som kjører på datamaskinen (f.eks Flash, Processing, MaxMSP.) Platene kan monteres for hånd eller kjøpt ferdig montert, opensource IDE kan lastes ned gratis.[team, -] 1.2 kode Under er et eksmpel på enkel arduino kode, eksempelet får en led lampe til å blinke. IDE programmet man laster ned for å programmere arduinoen kommer med en egen eksempel bok, eksemplene som er inkludert i programmet dekker imangetilfellerdetmantrengerforåstarteetnyttprosjekt.kodensom følger programmet er også grundig kommentert det gjør at det blir enklere for nestemann å kunne gjøre endringer slik at koden passer til et annet prosjekt. /* Blink - Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain.*/ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinmode(led, OUTPUT); // the loop routine runs over and over again forever: void loop() { 1

digitalwrite(led, HIGH); delay(1000); digitalwrite(led, LOW); delay(1000); // turn the LED on (HIGH is the voltage level) // wait for a second // turn the LED off by making the voltage LOW // wait for a second 2

Prosjektet Prosjektet har gått ut på å finne en løsning for å kunne digitalisere faglærers posthylle på Høgskolen i Østfold. Ved hjelp av en arduino har jeg sett utforsket ulike løsninger for å kunne si om det er post i hylla eller ikke. Prosjektet har vært i gjennom flere stadier det stadiet som har tatt mest tid har vært å avklare hva slags sensor en skulle bruke. Deretter finne ut hvordan disse sensorene fungerte i praksis for å så få de til å gi et resultat. 2.1 Sensor Prosjektet har gått igjennom flere stadier, det som har tatt mest tid er å komme frem til hva slags sensor en skulle benytte. 2.1.1 HAL Effect sensor Første forsøk var å benytte seg av en HAL effect sensor, en HAL effect sensor merker endringer i magnetisme hovedsaklig avstand fra sensor til magnet. Tanken var at om man la noe mellom magneten og sensoren ville den gi et resultat på om det var post i hylla eller ikke. 2.1.2 Laser Etter flere forsøk med hallsensor var en nødt til å se etter andre løsninger, da et A4 ark ikke laget stor nok forskjell i det magnetiske feltet til å gjøre utslag på sensoren. Videre var tanken å ha en laserpeker som en sender med en sensor som merket om det var konstant lys eller om den ble brutt. Dette forble med tanken da det ble stort og ville gjort det til at posthylla hadde lyst opp. 2.1.3 IR Sensor Infrarød sensor, virket som veien å gå. Dette var blitt gjort tidligere og resultatet var stabilt. På grunn av at IR er usynlig for oss mennesker ville det heller ikke skape støy eller tiltrekke seg oppmerksomhet på samme måte som en laser ville gjøre. 3

Figur 2.1: koblingsdiagram for IR led [IRs, 2006] Diagramet viser hvordan man kobler opp en sender og en mottaker etter å ha gjort dette kobler man + ledningene til 5v på arduinoen og - til GND Output kobles til A0 ved hjelp av følgende kode, kan man få opp på pcskjermen hva sensoren leser // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorvalue = analogread(a0); // Convert the analog reading (which goes from 0-1023) to a voltage (0-5V): float voltage = sensorvalue * (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); Dette blir utgangspunktet videre 2.2 Push varsling Prosjektet skulle hovedsaklig basere seg på et prosjekt tidligere gjort av Matt Richardson, en av forfatterne for Make Magazine. Likheten mellom hans prosjekt og mitt var veldig likt. Hans prosjekt baserte seg på å sende push notifikasjoner til sin iphone hver gang han fikk post. 4

Dette gjør han på samme måte som her, han benytter en arduino til å ta seg av postkassen er åpnet eller ikke, men forskjellen er at han bruker en fysisk bryter som forteller arduinoen om den skal sende notifikasjon eller ikke. Han benytter en applikasjon for iphone kalt Prowl til å sende varsler. Prowl er en iphone app med det formål å levere push-varslinger til deg fra din datamaskin via Growl eller fra elektroniske tjenester med API. For å koble Arduino til Prowl API, trenger vi en PHP proxy-server. Sette opp serveren er lett, fordi alt det harde arbeidet er allerede gjort av menneskene bak ProwlPHP klassen. Alt du trenger å gjøre er å lime inn Prowl API nøkkelen i eksempelet koden og endre eksempel teksten til varselet som du vil sende. Når Arduino kobler seg til URLen som eksempelskriptet er på, blir varselet overført til telefonen nesten umiddelbart. [Richardson, 2010] 2.3 kode Matt Richardsons kode er basert på eksemplkode som følger med Arduino IDE, Koden gjør at arduinoen kobler seg til en nettadresse, Richardson endret denne til å kun koble seg til når en hendelse inntraff. Under er to utsnitt av samme kode, den ene er orginalen og andre er endringen gjort av Richardson. // if you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: client.println("get /search?q=arduino HTTP/1.0"); client.println(); Over ser vi orginalkoden fra Arduino Teamet, under er endringen gjort av Richardson, Hoved endringen er kun å gjøre tilkobling til noe som skjer ved hjelp av en hvis funksjon, som avgjør om bryteren er av eller på if (digitalread(switchpin) == HIGH) // if mailbox is opened: { Serial.println("Mailbox door opened"); if (client.connect()) { Serial.println("connected to server"); // Make a HTTP request: client.println("get /search?q=arduino HTTP/1.0"); client.println(); 5

Konklusjon Arduino er utvilsomt en god plattform å bygge prosjekter på. Det er et stort åpent nettsamfunn som er veldig villig til å hjelpe til og dytte en i riktig retning. Selv for en som ikke har verken erfaring med elektronikk eller kode. Det er en god plattform å starte på og en plattform som gir deg tilbakemelding på hva du har gjort feil eller riktig Det er få kode plattformer som er så oppfyllende som arduino er, det å kunne få noe så enkelt som en LED til å blinke gir en motivasjon til å prøve nye ting. Tanken fra start var å basere oppgaven på Prowl men etter samtale med faglærer var jeg nødt til å endre rettning. Vi valgte å gå for noe enklere som det åsendeenepostnårdetkompostihyllenhans.fordelenveddetteeratprosjektet ikke er avhengig av en tredjepart som en selv ikke rår over. Tanken var åbrukeensshtilkoblingtilenserveråsendemailpådenmåten,mensiden Richardsons og Arduino teamets grunnlag er så godt har jeg valgt å kjøre mailsending via en php fil. Da er prosjektet fortsatt fristående og man kan kjøre deler av koden via php. Tanken har vært å skulle gjøre så en ikke kunne mer en en mail i timen, dette skulle bare skje i arbeidstiden slik at faglærer skulle slippe å få mail på fritiden. Samtidig som at ikke en "morsomkollega eller student skal kunne sende masse mail ved å ta et ark eller en hånd inn og ut av hylla. På grunn av manglende hardware har jeg ikke fått testet ut prosjektet helt, men jeg har fått prøvd ut de forskjellige delene av koden og alt fungerer. Neste skritt hadde vært å fått påplass det siste jeg trengte av hardware og sette sammen alt og bevise at både sensorer og koden fungerer sammen. En gikk inn i prosjektet uten noe spesiell kunnskap om verken programmering eller elektronikk, men etter å ha prøvd dette igjennom dette semesteret har det jeg fått en mye større interesse for arduino og programmering og gått til innkjøp av min egen arduino, kabler, resistorer og leds for å starte et eget prosjekt Vedlagt ligger den koden jeg har skrevet og koden som Matt Richardson har skrevet med mine endringer. 6

Bibliografi 2006. URL http://www.reconnsworld.com/ir_ultrasonic_ basicirdetectemit.html. Matt Richardson. Snail mail push alerts, 12 2010. URL http://blog. makezine.com/2010/12/29/snail-mail-push-alerts/. Arduino Team, - -. URL http://arduino.cc/en/main/faq. Arduino Team. Arduino, 11 2012. URL http://arduino.cc/. 7

Vedlegg 4.1 Logg Mandag 03/09 - Første Møte Tirsdag 04/09 - Undersøker priser på Arduino Mandag 10/09 - Innføring i Latex Mandag 24/09 - Besøk hos Harald Holon ang lån av arduino Onsdag 03/10 - Forsøk med Lys og Arduino Torsdag 18/10 - Jobbing med kode Fredag 26/10 - Jobbing med kode Torsdag 22/11 - Presentasjon Fredag 23/11 - Endret noe kode Torsdag 29/11 - Forsøk med IR leds Fredag 30/11 - Skrevet rapport Lørdag 01/12 - Skrevet rapport Søndag 02/12 - skrevet rapport... 8

4.2 Kode Arduino kode #include <SPI.h> #include <Ethernet.h> #define switchpin 7 // Snap action switch which closes when the mailbox door is opened. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; byte ip[] = { 10,0,1,1 ; // local Arduino IP byte server[] = { 1,1,1,1 ; // IP of your web server Client client(server, 80); void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); delay(1000); pinmode(switchpin, INPUT); void loop() { if (digitalread(switchpin) == HIGH) // if mailbox is opened: { Serial.println("Mailbox door opened"); if (client.connect()) { //connect to server Serial.println("connected to server"); // Make a HTTP request: client.println("get http://siden.din/sendmail.php"); client.println(); //url til der du har plassert ditt php script else { Serial.println("connection failed"); delay(1000); Serial.print("Response from server: "); while (client.available()) { char c = client.read(); Serial.print(c); // if the server s disconnected, stop the client: if (!client.connected()) { Serial.println("disconnecting from server"); client.stop(); while (digitalread(switchpin) == HIGH) { // hold here until mailbox is closed again. Serial.println("Mailbox door closed"); 9

delay(3600000); // venter 1 time [Richardson, 2010] 10

1 sendmail.php 2012-12-02 23:25 Marius <?php mail( "din epost", "Post i Hylla", "Du har post i hylla, gå å hent den" ); print "Congratulations your email has been sent";?>