in english | luftkvalitet | prototyper | specifikationer | kontakt | |
Endelig version |
||
Her er diagrammer og Java kode over den endelige version.
Javakoden trækker de aktuelle data fra internettet. Gennem en "Labjack"
kontrolleres en lineær acentuator som bevæger vinduet ind og ud. Der er
desuden monteret kontakter på karm og vindue for at sikre at vinduet
ikke bevæges ud over yderpositionerne. diagram (.pdf) java kode (.zip) koden er open source. Diagram og kode Kristian Fredslund Billede fra installation på Københavns Rådhus |
||
Tidligere version | ||
Diode prototype i byen. Indikatoren her viser den aktuelle forureningegrad til venstre, og de kommende to dages prognoser i de to rækker til højre. |
Om indikatoren Indikatoren tager data fra internettet om den aktuelle forureningsgrad og prognosen to dage frem. Indikatoren opdateres hver time. Praktisk fungerer det ved at et program på en computer (se nedenfor) læser data, sorterer dem og sender dem til en processor som i tilfældet til venstre styrer en række dioder. Indikatoren er Open Source og copyright fri Dvs at alle må kopiere og modificere konstruktion og kode. Den er produceret med værktøjer og software der er frit tilgængelige på nettet. Environmental computing At tage data fra internettet og give dem en fysisk form, åbner for mange muligheder for DIY monitorering, eller for at sætte en lang handlinger i spil som konsekvens af informationer eller nyheder på nettet. |
|
Vindues indikator på
Rådhuset I denne model styrer et lignende system som beskrevet ovenfor en vinduesåbner der åbner og lukker et vindue på Rådhuset i København alt efter forureningsgraden. Offentligheden kan aflæse de forskellige grader på udhænget, lukket vindue = varsel, helt åbent =under middel. |
||
Billede af kredsløbet (klik for stort billede) servo nederst, Picaxe processor øverst til højre, forbindelse til computeren øverst til venstre | Liste over komponenter (til prototype) Picaxe 18x processor 9V batteri 5V regulator servo motor Modstande; 330,10K, 180, 22K USB til serieport converter Diagram på vej Tak til: Niklas Roy for hjælp til prototype, cyberniklas.de Program Programmet er skrevet i Processing som også er Open Source, dvs kan downloades af alle. Programmet er skrevet af Jörg Pohl fra www.roboter-teile.de baseret på kode af Tom Igoe, og idé af Nis Rømer. Programmet kan ses nedenfor eller downloades her |
|
// Pollution Display // written by Jörg Pohl // concept Nis Rømer /* Comment, what this program does is connect to an internetpage and "read" the content, then it searches for special characters that identifies the data we are interested in in the webpage. From there it sends the data to the computers serialport. A Picaxe processor takes the data from the serialport and mooves a servo acordingly. The script can be modified to suit a number of purposes that deals with displaying data from the internet in the "real" world. A beginners manual for customizing the script is to follow. */ // uses http client, written by Tom Igoe // http client // Starts a network client that connects to a server on port 80, // sends an HTTP 1.1 GET request, and prints the results. import processing.net.*; import processing.serial.*; Client client; Serial port; char thisByte = ' '; int hour_old = -1; String sInput; String sOutput; PFont fontA; // Font for printing void setup() { size(200, 200); // Load and prep fonts to print to window fontA = loadFont("CourierNewPSMT-24.vlw"); textFont(fontA, 24); noStroke(); // Open a TCP socket to the host: client = new Client(this, "www.TheDomaine.dk", 80); //above is where you fil in the domaine ex www.dr.dk // Print the IP address of the host: println(client.ip()); //the port is set to 2 and baudrate set to 4800, changed to COM1, 4800bps port = new Serial(this, Serial.list()[2], 4800); } void draw() { background(0); int m = month(); // Values from 1 - 12 int y = year(); // 2003, 2004, 2005, etc. int h = hour(); // 0-23 int i; String s; if ( m < 10 ) { s = String.valueOf(y) + '0' + String.valueOf(m); } else { s = String.valueOf(y) + String.valueOf(m); } text(s, 10, 56); if (h != hour_old) // read website every hour { // Send the HTTP GET request: client.write("GET /the_path_to_your_file.html HTTP/1.1\n"); //this points to the file on the internet with the data (rest of path. ex you want: www.dr.dk/news.html // then you write /news.html client.write("HOST: www.TheDomaine.dk \n\n"); //again substitute with your URL hour_old = h; } // Print the results of the GET: while (client.available() > 0) { sInput = client.readString(); i = sInput.indexOf (s); // searching for datestring yyyymm i = i + 10; // add offset to information if (i != -1) { sOutput = ':' + sInput.substring (i,i+3) +',' + sInput.substring (i+5,i+8) + ',' + sInput.substring (i+10,i+13) + char(13) + char(10); println(sOutput); port.write(sOutput); } } // reads and print serial input from PICAXE for Debugging while (port.available() > 0) { String inBuffer = port.readString(); if (inBuffer != null) { println(inBuffer); } } } /* Example of what is printed: this is an example of what the http client writes 195.41.77.12 HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 X-Powered-By: ASP.NET Date: Mon, 29 Aug 2005 08:15:03 GMT Content-Type: application/octet-stream Accept-Ranges: bytes Last-Modified: Mon, 29 Aug 2005 05:13:27 GMT ETag: "c3fc566358acc51:96b" Content-Length: 25 20050829 1,2 2,2 3,3 */
|
||