LINKÖPINGS UNIVERSITET 5 maj 2010 Institutionen för datavetenskap Uppgift. Visning av webbtillgänglig data på särskild, därför avsedd hårdvara



Relevanta dokument
» RSS - Bygg din egen RSS!

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Föreläsning 2. Operativsystem och programmering

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Introduktion till Arduino

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Introduktion till Arduino

Steg-för-steg-guide så lånar du en e-bok på en dator!

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

Quick start manual. Smart-House Rev 1.1

krävs för att kunna utföra arbete. Den finns i många former men kan inte förstöras, bara omvandlas från en form till en annan.

Steg-för-steg-guide så lånar du en e-bok på ios!

Programmering av. PADDY mini

E-pliktleverans via RSS-feeds

Introduktion till programmering och Python Grundkurs i programmering med Python

Digitala projekt - Radiostyrd bil

Quickstart manual. Rev SHTOOL Quickstart manual Smart-House

Laborationskort - ML4

Praktikrapport. Sofia Larsson MKVA12, HT12

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Laboration i datateknik

Manual Sportident Onlinekontroll via GPRS

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Användarhandledning Version 1.2

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

Kortfattad instruktion för installation och användning av streckodsapplikationer

BiDisp2 PRODUKTIONSSYSTEM. Robust och flexibel display för industriella tillämpningar

Applikationsexempel Timer med tryckknapp

Gränssnitt för FakeGranska. Lars Mattsson

Laboration: Grunderna i MATLAB

Hur gör man ett trådlöst nätverk säkert?

BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0. Innehållsförteckning

API:er/Mashup. Föreläsning 4 API:er och Mashups. Johan Leitet johan.leitet@lnu.se twitter.com/leitet facebook.com/leitet. Webbteknik II, 1DV449

Bruksanvisning IMSE Operatörspanel För Banverket

Axiell Arena. Optimering av prestanda

Axalon Process Navigator SP Användarhandledning

Programmering och begrepp

SkeKraft Bredband Installationsguide

Programmering och begrepp

Introduktion till MySQL

WAGO IO System Service Seminar. Diagnostik

Digital Projekt EDI 021 Konstruktion av talande nummerpresentatör VT1 2004

Digitala projekt rapport

Optimering av prestanda

Digitala Projekt (EITF11)

Digitalt lärande och programmering i klassrummet

Instruktioner för uppdatering av enheter med ISP

Ladda upp filer fra n PLC till PC

AB M&E Ohlssons Klockgjuteri

Instruktion Programmeringsapp och gränssnitt

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

Temperaturregleringssystem

Projektlaboration 4, synkronisering av klockan

Abelko Terminal. Användarmanual. Giltig för FIRMWARE version 2.4/2.5 och 15, 17 och 19 tums modeller

Översikt Banstyrning v. 0.5 Sida 1 av 6

Systemutvecklare SU14, Malmö

Programmering B med Visual C

MANUAL. DIMMAX Proline. E-nr: (Tidigare )

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Kort om World Wide Web (webben)

Calligra. En allmän inledning. Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll

Avant BRUKSANVISNING. FAKTARUTA AVANT Hög utnivå med förstärkning upp till 57 db. Automatiska funktioner för tilt och förstärkning

Enkla inspelningsverktyg PowerPoint

Laboration i datateknik

EV3 Roboten. Sida 1 av 13

Kampanjtaggning. Lathund. Google Analytics. Erik Nettelbrandt Sida 1 av 7

TEKNISK NOTIS TN AT006

Manuell SMARTCD.G

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

BILAGA A till Programvaruprojekt ANVÄNDARKRAV MultiPC v1.0

Slutrapport för JMDB.COM. Johan Wibjer

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

ARDUINO i RC sammanhang

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

Inlämningsarbete Case. Innehåll Bakgrund bedömning inlämningsarbete... 2 Inlämnade arbeten... 4

Uttryck, satser och strömhantering

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Inbyggda#datorer# Inbyggda#system# Arduino#Uno#SMD# H.#Inbyggda#system# # ###Arduino#och#cyber7fysisk#programmering### ##

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Bruksanvisning Operatörspanel ER-ipx12

Arcus-EDS. Produktbeskrivning. Gateway KNX / DMX. KNX-GW-DMX Art.-Nr Maj LedLab AB Kungegårdsgatan Alingsås

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Detta är en liten ordlista med förklaringar på begrepp och aktiviteter relaterade till. elvisualiseringsverktyg

Inlämningsuppgifter, EDAF30, 2015

Produktutvecklingsprocessen. (e)lvis

Kontorsinstallation av SDCs insändningsprogram Sender för filer från skördare, skotare eller drivare

Har du koll på energi kostnaderna hemma eller springer den bara iväg varje månad och du har absolut ingen koll på vart det går?

LADDA UPP EN PDF-FIL OCH LÄNKA TILL DEN I DIN ARTIKELTEXT

KUNDGUIDE. DNA Bredband

Konstruera, styra, reglera och programmera en röd tråd F-9

Instruktion för I/O-Kort, med USB-anslutning.

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)

Digitala Projekt(EITF40) - Larm

Programmera Avant 5 med PC mjukvara

Logistiksystem Päron AB Bakgrund Problembakgrund Krav på lösning Lösningen

CTM Release Notes 7.5.4

Transkript:

LINKÖPINGS UNIVERSITET 5 maj 2010 Institutionen för datavetenskap Uppgift Visning av webbtillgänglig data på särskild, därför avsedd hårdvara Den röda lådan Name E-mail David Hall davha@ida.liu.se

Den röda lådan 2 Data format 1 Background Forsknings- och utvecklingsavdelningen på Bonnier ab arrangerade den 24 mars 2010 en 24-timmars hackdag under namnet Bonnier Hack Day 1. Syftet med denna dag var att inbjuda Bonnier-ägda företag (men även utomstående) att använda sig av varandras api-er till att skapa nya eller mer intressanta tjänster. En jury valde ut det bästa bidraget. Jag var inbjuden av Per Åström på TV4.se för att hjälpa till med ett av hans projekt: att visualisera data användbart för de anställda på TV4.se. Alla hyperlänkar på TV4.se leds via ett speciellt skript, som ingår i systemet Linkpulse 2, som upprätthåller statistik om antalet klick och med information om sidan man kom ifrån och annan manuellt tillagd information (exempelvis placering av länken på sidan) kan användas för att följa använderbeteenden på webbplatsen. För att ge en ögonblicksbild av graden av aktivitet på de olika webbplatserna (som tv4.se, fotbollskanalen.se, recept.nu m.fl.) som bara inte var antalet sidvisningar skulle antalet klick de senaste 15 minuterna visas tydligt på redaktionen. Åström ville ha något annorlunda än bara ytterligare en datorskärm som visade siffror och något mer iögonenfallande och med ljus. Lösningen skulle helst också vara fristående, utan att någon extra hård- eller programvara utanför vår konstruktion skulle behövas. 2 Data format Linkpulse-verktyget erbjuder en datafil i rss-format (som är ett xml-baserat format för att beskriva uppdateringar på webbplatser och som blivit populärt för bloggar och nyhetswebbplatser under det senaste decenniet). Det finns åtminstone två konkurrerande rss-standarder som är delvis kompatibla. Linkpulse levererar sitt data i form av rdf Site Summary 3 som uttrycker data i form av rdf 4 serialiserat i xml. Listing 1: del av rss-fil från Linkpulse <item rdf:about =" http: // www. fotbollskanalen. se /1.1536086/2010/03/02/ arsenal_tar_med_sig_klockan_fran_highbury " > <title > Arsenal tar med sig klockan från Highbury - Premier League - allt om engelsk fotboll - fotbollskanalen. se </ title > <link >http: // www. fotbollskanalen. se /1.1536086/2010/03/02/ arsenal_tar_med_sig_klockan_fran_highbury </ link > < description > avgclicks:33 ; stateclicks:75 ; totalclicks:122 </ description > </ item > <item rdf:about =" http: // www. fotbollskanalen. se /1.1534692/2010/03/01/ leonardo_ stoppar_ronaldinho_ far_ inte_ langre_sla_ milans_straffar "> <title > Leonardo stoppar Ronaldinho - får inte längre slå Milans straffar - Serie A - Allt om italienska ligan - fotbollskanalen. se </ title > 1 http://bonnierhackday.blogspot.com/2010/02/about-bonnier-hack-day.html hämtad 2010-05-04 2 http://www.onsite.no/linkpulse/ hämtad 2010-05-04 3 http://web.resource.org/rss/1.0/spec hämtad 2010-05-04 4 http://www.w3.org/rdf/ hämtad 2010-05-04 David Hall, davha@ida.liu.se 1 5 maj 2010

Den röda lådan 4 Visning <link >http: // www. fotbollskanalen. se /1.1534692/2010/03/01/ leonardo_ stoppar_ronaldinho_ far_ inte_ langre_sla_ milans_straffar </ link > < description > avgclicks:15 ; stateclicks:74 ; totalclicks:45 </ description > </ item > Listning?? visar exempel på informationen för två länkar i filen från Linkpulse. Filen erbjuds på Linkpulses webbserver och laddas alltså ner över http. Varje webbplats hade varsin rss-fil och för att visa det totala antalet klick behövde parametern stateclicks plockas för var och en av länkarna och alla dessa summeras. Filen var 250 KiB stor vilket inte skulle innebära något större problem på en vanlig pc men väl i en mer begränsad hårdvara. 3 Arduino Arduino är en open-source-plattform för prototyp-utvecklande av elektronik. Den uttalade målgruppen är konstnärer, designers eller de som har som hobby att skapa interaktiva miljöer. 5. Arduino kan styra ljus, motorer och annan elektronik och är baserad på en mikrokontroller för vilken man skriver i ett c- liknande programmeringsspråk som kompileras på en vanlig pc innan det förs över till Arduinon. Rent fysiskt består en Arduino av ett kretskort med mikrokontroller, nätdel, USB-port för koppling till dator samt ett antal digitala in- och utgångar och analoga ingångar. Dessa in- och utgångar kopplas sedan till kringliggande elektronik. Det finns även ett antal färdiga shields vilka enkelt kan kopplas in i en Arduino utan någon ledningsdragning. En sådan shield är en Ethernet-shield 6 som innehåller en krets som man hittar i ett vanligt nätverkskort men även en egen IP-stack implementerad i hårdvara eftersom hårdvaran i en Arduino är för begränsad för att orka med att driva det. Hårdvaran i den Arduino vi använda, Duemila Nove 7, består av en ATmega168- kontroller med klockfrekvens på 16 MHz som internt har 32 KiB flashminne, 1 KiB SRAM arbetsminne och 512 bytes eeprom-minne. 4 Visning Som utenhet valde vi att använda oss av relativt stora segmentsiffror av den typen som finns i väckarklockor (se figur??) Tre byggsatser från Velleman (K8063 8 ) à två siffror var beställdes men enbart två byggsatser anlände. Dessa segmentsiffror kommunicerade med ett seriellt protokoll över rs-232 till vilka vi tänkt koppla Arduinon direkt. Utöver siffrorna (som alltså skulle vara summan över antalet klick) ville vi också visa om trenden var på uppåt- eller nedåtgående samt vilken webbplats det just nu visades statistik för. 5 http://arduino.cc/ hämtad 2010-05-04 6 http://www.arduino.cc/en/main/arduinoethernetshield, hämtad 2010-05-04 7 http://arduino.cc/en/main/arduinoboardduemilanove hämtad 2010-05-04 8 http://www.velleman.eu/downloads/0/k8063 serial display.pdf hämtad 2010-05-04 David Hall, davha@ida.liu.se 2 5 maj 2010

Den röda lådan 7 Gränssnitt mot skylt Figur 1: Segmentsiffror (och andra tecken) som kan visas med byggsatsen. Bild från Velleman. 5 Styrning Det tänkta användarfallet för vår apparat innefattade att man skulle kunna välja vilken webbplats man såg statistik för. Alltså behövdes någon sorts inenhet. Eftersom vi såg fördelar med att inte begränsa oss till ett fixt antal webbplatser från början vore det bra med ett användargränssnitt som inte bestod av en knapp för vardera webbplats. Ett sätt skulle kunna vara att styra apparaten med två knappar, en för att byta webbplats nedåt och en uppåt. Eftersom det kit som medföljde Arduinon innehöll en potentiometer valde vi istället att basera gränssnittet på detta. Fördelen blev att man enbart har en kontroll att styra med samtidigt som det fortfarande är intuitivt att välja webbplats (jämför med frekvensväljaren gamla tiders radiomottagare). 6 Parsning av XML rss-datat vi skulle läsa in och behandla var runt 250 KiB stort och Arduinon har ett arbetsminne på 1 KiB fanns det inte möjlighet att snabbt läsa igenom och summera datat. Vid inledande tester kom vi fram till att inläsningen av filen skulle ta mellan två och tre minuter. Pratigheten i rss- och xml-formaten är utformade för läslighet av människor. I tillägg till detta innehåller filen data som inte är intressant för oss i just denna tillämpning, t.ex. länkens URL och titel. I en normal pc med internminne betydligt större än filens storlek skulle tiden att läsa ut den intressanta informationen inte varit någon större faktor. För att snabba på processen fick vi leverantören av Linkpulse att modifiera filen så att den fortfarande följde rss-standarden men att den för oss intressanta informationen låg överst, färdigsummerad, i filen samt att viss redundant information togs bort. Parsningen av xml skedde inte helt standardenligt heller. För att hålla koden så snabb och enkel som möjligt så skrev vi koden så att den letar efter förekomsten av <description> och sedan plockade ut siffervärdet efter stateclicks med hjälp av biblioteket TextFinder 9. Det finns även exempel på xml-parsning i Arduino 10 men så länge inga andra description-fält dyker upp (i t.ex. ett element med samma namn fast i annan namnrymd) i datafilen så är det ingen mening att ödsla processorkraft och minne på korrekthet i denna tillämpning. 7 Gränssnitt mot skylt Skyltarna kommunicerade, som tidigare angivet, över ett seriellt protokoll med rs-232-anslutning. Varje skylt kan tilldelas en adress mellan 0 och 255 och sedan kopplar man ihop så många skyltar som behövs. För att bestämma vad som ska 9 http://www.arduino.cc/playground/code/textfinder hämtad 2010-05-05 10 http://www.arduino.cc/cgi-bin/yabb2/yabb.pl?num=1253634941 hämtad 2010-05-05 David Hall, davha@ida.liu.se 3 5 maj 2010

Den röda lådan 8 Programmering visas på skyltarna skickar man några bytes data innehållande adress, kommando, parameter och en checksumma. Beskrivningen av databladet nämnde inte att adressen 0 inte fungerade exakt som de andra adresserna utan det visade sig vara någon form av adress för att kommunicera med alla skyltar oberoende av adress, något vi upptäckte när allt väl var inkopplat. Väl på dagen insåg vi att Arduinon inte kunde kommunicera direkt med skyltarna eftersom Arduinons seriella gränssnitt arbetar med ttl-logik på 5 volt medan skyltarna förväntade sig kommunikation över rs-232 på 12 volt. Som tur var hade inte Arduinon förstörts vilket antagligen hade varit fallet om vi hade kopplat in dubbelriktad kommunikation och matat Arduinons seriella ingång med 12V. Därför blev det till att skynda sig till elfa och köpa ytterligare komponenter och bygga upp elektroniken för att anpassa spänningen baserat på Maxims krets max232 11. När den var inkopplad fungerade dock kommunikationen okej (förutom problemet med adressering enligt ovan). Programvaran vi skrev fick rutiner för att skicka rätt kommando med korrekt uträknad checksumma och med två omsändningar (för att alla skyltar garanterat skulle ha uppfattat meddelandet). Eftersom Arduinon bara har en seriekanal som både matas ut/in på de digitala ut-/ingångarna (1 och 2, vilka var de vi hade kopplat till skyltarna) och USB-gränssnittet så hade vi inget annat sätt att skicka debug-data än via samma kanal. Eftersom vår debugdata saknade rätt checksumma så var risken för att dessa meddelanden felaktigt skulle tolkas som kommandon för skyltarna ytterst liten. 8 Programmering Det c-liknande språket gjorde det enkelt att abstrahera bort saker som kommunikation med displayen, visa tal och läsa indata från potentionmetern. I övrigt använde vi oss av färdiga bibliotek för nätverkskommunikation (dels Ethernet-biblioteket men även ett bibliotek för att över dhcp tilldela apparaten en ip-adress. Även det tidigare nämnda TextFinder-biblioteket användes och underlättade hantering av läsning av data. Ett problem med att programmera på denna lägre nivå om man vant sig vid programspråk på högre nivå med stöd för flera trådar och som körs på snabbare processorer är att möjligheten till snabb respons snabbt blir en kritisk faktor. Håller apparaten på att ta emot data över nätverket så kan jag inte göra annat samtidigt. Använder man sig av en funktion som delay får man vara beredd på att processorn låses upp under den tiden och man bör fundera på att lösa sådant på annat sätt. Vår kod håller själv reda på hur lång tid som förflutit sedan förra uppdateringen av datat men tillåter att man använder potentiometern för att byta vilken webbplats man visar data för och uppdaterar i så fall skylten direkt. I vårt fall är det på bekostnad av att koden riskerar sluta fungera när den interna klockan slår över till noll igen, vilket är något oklart när exakt det sker. Dokumentationen säger efter cirka 50 dagar 12, andra hävdar att det sker redan efter nio timmar 13. 11 http://sodoityourself.com/max232-serial-level-converter/ hämtad 2010-05-05 12 http://www.arduino.cc/en/reference/millis hämtad 2010-05-05 13 http://www.cibomahto.com/2008/04/analysis-of-the-millis-function/ hämtad 2010-05-05 David Hall, davha@ida.liu.se 4 5 maj 2010

Den röda lådan 10 Möjliga utökningar 9 Slutsatser/Erfarenheter Med begränsad hårdvara så väger nackdelarna med storleken på xml lätt över fördelarna med läsbarheten för människor och möjligheten till utökning av format. Parsning av data ska kunna ska snabbt och enkelt och därför skulle kanske ett binärformat eller ett mer rudimentärt textformat vara att föredra i dessa sammanhang. Programmeringen sker någorlunda enkelt om man är van vid c men det är viktigt att ha i åtanke att man arbetar med en begränsad hårdvara och får prioritera minnesåtgång och hastighet i programkörningen. Det är lätt att skapa en prototyp som kan göra saker. Det är förfining som tar tid. 10 Möjliga utökningar Här följer en lista på saker som borde fixas i programvaran för skylten. Stöd för dns (serverns ip-adress hårdkodad i dagsläget) Möjlighet att ändra vilken data som hämtas (filnamn hårdkodade i nuvarande kod) Fixa stöd för totalt sex siffror David Hall, davha@ida.liu.se 5 5 maj 2010