Urbana avkänning nätverk (1 / 5 steg)
Steg 1:
-Arduino Uno
http://www.Sparkfun.com/products/10356
-6' USB A till B-kabel
http://www.Sparkfun.com/products/512
-Miniatyr skärbräda
http://www.Sparkfun.com/products/137
-Hane till hane hoppare ledningar
http://www.Sparkfun.com/products/9387
-Fotocell
http://www.Sparkfun.com/products/9088
-Fukt och temperaturgivare
http://www.Sparkfun.com/products/10167
-330 Ohm motstånd
http://www.Sparkfun.com/products/10465
-10 k Ohm motstånd
http://www.Sparkfun.com/products/10466
Programvara:
1-bearbetning
http:// (http://processing.org/)
2 - Arduino
http:// (http://www.arduino.cc/)
Tredje delen bibliotek:
3 - DHT(Arduino)
http://www.Ladyada.net/Learn/sensors/DHT.html
4 - EEML(Processing)
5-urbana avkänning kod (kopiera klistra in i IDE)
Arduino kod:
Sensor skiss utifrån ladyada DHT (http://www.ladyada.net/learn/sensors/dht.html) och fotocell (http://www.ladyada.net/learn/sensors/cds.html) kod prover
DHT bibliotek Skrivet av ladyada (https://github.com/adafruit/DHT-sensor-library)
#include "DHT.h"
#define DHTPIN 2 / / vilken pin vi är ansluten till
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
int photocellPin = 0;
int photocellReading;
Ansluta stift 1 (till vänster) av sensorn till + 5V
Ansluta stift 2 av sensorn till vad din DHTPIN är
Ansluta stift 4 (till höger) av sensorn till marken
Ansluta en 10K motstånd från stift 2 (data) till stift 1 (power) av sensorn
DHT dht (DHTPIN, DHTTYPE);
void setup() {
Serial.BEGIN(9600);
DHT.BEGIN();
}
void loop() {
Läst temperatur eller fuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor)
flyta h = dht.readHumidity();
flyta t = dht.readTemperature();
photocellReading = analogRead(photocellPin);
kolla om avkastningen är giltig, om de är NaN (inte ett tal) då något gick fel!
om (isnan(t) || isnan(h)) {
Serial.println ("kunde inte läsa från DHT");
} annat {
Serial.Print(h); luftfuktighet
Serial.Print(",");
Serial.Print(t); temperaturen
Serial.Print(",");
Serial.println (photocellReading), //photocell
}
}
Bearbetar koden:
import processing.serial.*;
import eeml.*;
Seriella myPort;
InString sträng;
Sträng inString0;
Sträng inString1;
Sträng inString2;
String förteckningen.
int lf = 10;
DataOut dOut;
float SenasteUppdatering;
void setup() {
myPort = ny följetong (detta, Serial.list()[0],9600);
myPort.bufferUntil(lf);
DataOut objekt; kräver URL till den EEML du uppdaterar, och din Pachube API-nyckel
dOut = nya DataOut (här, "Din SENSOR foder här Ekman (https://api.pachube.com/v2/feeds/39533.xml)", "Din API-nyckel här");
och lägga till och tag en datastream
dOut.addData(0,"humidity");
och lägga till och tag en datastream
dOut.addData(1,"temperature");
och lägga till och tag en datastream
dOut.addData(2,"photocell");
och lägga till och tag en datastream
}
void draw()
{
uppdatera när varje 5 understöder (kan också vara exempelvis varje musklick)
om ((millis()-lastUpdate) > 5000) {
println ("redo att inlägget:");
dOut.update (0, inString0); uppdatera datastream
dOut.update (1, inString1); uppdatera datastream
dOut.update (2, inString2). uppdatera datastream
int svar = dOut.updatePachube(); updatePachube() uppdateringar av en autentiserad sätta HTTP-begäran
println(Response); bör vara 200 om framgångsrika; 401 om obehörig; 404 om foder inte finns
SenasteUppdatering = millis();
}
}
void serialEvent(Serial p) {
inString = (myPort.readString());
String [] lista = split (inString, ',');
inString0 = lista [0];
inString1 = lista [1].
inString2 = lista [2].
}
Tjänster:
-Pachube konto
http:// (http://www.pachube.com/)