Kör en webbsida i realtid med hjälp av Arduino, SensorMonkey och Processing.js (6 / 6 steg)

Steg 6: Rita grafer av Data med hjälp av Processing.js



i den sista (och bästa!) delen av denna tutorial, jag ska skapa en enkel webbsida för att visa utdata från min Arduino är nu tom live över Internet med SensorMonkey (jag har laddat ner senaste Processing.js biblioteket - 1.3.6 på i skrivande stund - och placerade den i samma katalog som webbsidan). Måste du redigera koden nedan att matcha variabler direktuppspelas av din Arduino (om du har kopierat min accelerometer setup exakt):

(Viktigt! Du måste ersätta YOUR_NAMESPACE och YOUR_PUBLIC_KEY i koden nedan med de som har tilldelats till dig när du loggar in till SensorMonkey)

--------------------------------------------------------------------------------
<! DOCTYPE html >
< html >
< head >
< title > driva en webpage i realtid med hjälp av Arduino, SensorMonkey och Processing.js < / title >
< script type = "text/javascript" src = "http://sensormonkey.eeng.nuim.ie/socket.io/socket.io.js" >< / script >
< script type = "text/javascript" src = "http://sensormonkey.eeng.nuim.ie/js/client.min.js" >< / script >
< script type = "text/javascript" src = "bearbetning-1.3.6.js" >< / script >
< style type = "text/css" >
.sensor-name {
text-align: center;
bredd: 300px;
}
canvas {
Border: 1px solid grey;
}
< / stil >
< / head >
< body onload = "setTimeout (kör, 100);" >
< div class = "sensor-namn" > Accelerometer X < / div >
< canvas bearbetning-datakällor = "Graph.pde" id = "AccelX" >< / canvas >
< div class = "sensor-namn" > Accelerometer Y < / div >
< canvas bearbetning-datakällor = "Graph.pde" id = "AccelY" >< / canvas >
< div class = "sensor-namn" > Accelerometer Z < / div >
< canvas bearbetning-datakällor = "Graph.pde" id = "AccelZ" >< / canvas >
< script type = "text/javascript" >
funktionen run() {
var accelXGraph = Processing.getInstanceById ("AccelX");
var accelYGraph = Processing.getInstanceById ("AccelY");
var accelZGraph = Processing.getInstanceById ("AccelZ");

accelXGraph.setColor (255, 0, 0, 100); Röd.
accelYGraph.setColor (0, 128, 0, 100); Grön.
accelZGraph.setColor (0, 0, 255, 100); Blå.

// 1. Ansluta till SensorMonkey
// 2. Gå med i namnområdet
// 3. Prenumerera på ström
// 4. Lyssna på "publicera" och "bulkPublish" händelser

var kund = nya SensorMonkey.Client ("http://sensormonkey.eeng.nuim.ie");
client.on ("connect", function() {
client.joinNamespace ("YOUR_NAMESPACE", "YOUR_PUBLIC_KEY", funktion (e) {
om (e) {
Alert ("kunde inte ansluta namnområde:" + e);
hemkomst.
}

client.subscribeToStream ("/ public/min Arduino", fungera (e) {
om (e) {
Alert ("Det gick inte att prenumerera på ström:" + e);
hemkomst.
}

client.on ("publicera", funktion (namn, fält) {
om (namn === "/ public/min Arduino") {
accelXGraph.update (fält ["Accelerometer X"]);
accelYGraph.update (fält ["Accelerometer Y"]);
accelZGraph.update (fält ['Accelerometer Z']);
}
} );

client.on ("bulkPublish", funktion (namn, fält) {
om (namn === "/ public/min Arduino") {
för (var jag = 0, len = fält ["Accelerometer X"] Value; i < len; i ++) {
accelXGraph.update (fält ["Accelerometer X"] [i]);
accelYGraph.update (fält ["Accelerometer Y"] [i]);
accelZGraph.update (fält ["Accelerometer Z"] [i]);
}
}
} );
} );
} );

client.on ("koppla", function() {
Alert ("klienten har kopplats!");
} );
} );
}
< / script >
< / body >
< / html >
--------------------------------------------------------------------------------

Utan att gå in alltför detaljerat (du kan hitta mer information om JavaScript klienten API här) grundläggande arbetsflödet är följande:

-Import-klient
-Anslut till SensorMonkey
-Gå med namnområde
-Prenumerera på ström
-Lyssna på "publicera" och "bulkPublish" händelser

För att Diagramdata, använder jag följande Processing.js skissen (spara detta till en fil kallad Graph.pde och placera den i samma katalog som webpage ovan):

--------------------------------------------------------------------------------
int xPos = 0; Vågräta koordinaten används för att rita nästa datapunkten.
int yMin = 0; Lägsta förväntade datavärde.
int yMax = 1023; Maximala förväntade datavärde.
färg c; Linjefärg används för att rita grafen.

Anger stroke färg används för att rita grafen.
void setColor (int r, int g, int b, int en) {
c = färg (r, g, b, en);
}

void setup() {
storlek (300, 200);
frameRate (50);
setColor (255, 0, 0, 100);
drawGrid();
}

Annullera draw() {} / / tömma draw() funktion.

void drawGrid() {
int h = höjd;
int w = bredd;

bakgrund (255);

stroke (127 127, 127, 127);

Rita horisontella linjer.
linje (0, h / 4, w, h / 4);
linje (0, h / 2, w, h / 2);
linje (0, h * 3 / 4, Wennerholm, * 3 / 4);

Rita vertikala linjer.
linje (w / 4, 0, w / 4, h);
linje (w / 2, 0, w / 2, h);
linje (w * 3 / 4, 0, w * 3 / 4, h);

Rita etiketter.
fylla (0);
text (str (yMin), 5, h - 5);
text (str (yMax), 5, 12);
}

{Ogiltig uppdatering (float data)
När vi når kanten av skärmen, vira runt till början.
om (xPos > = bredd) {
xPos = 0;
drawGrid();
}

Diagram datapunkten och öka den vågräta koordinaten.
data = karta (data, yMin, yMax, 0, höjd);
stroke (c).
linje (xPos, höjd, xPos, höjd - data);
xPos ++;
}
--------------------------------------------------------------------------------

I ditt fall, beroende på givare som du direktuppspelar, kanske du behöver mer eller mindre grafer på din hemsida. Om du behöver öka/minska storleken på diagrammen, spänna av datavärden som kan ritas, bildfrekvens etc kan du redigera filen Graph.pde. Kom bara ihåg att inkludera Graph.pde filen en gång för varje variabel som du vill rita (inuti en < duk > element) och namnge dem därefter (e.g. < canvas bearbetning-datakällor = "Graph.pde" id = "TemperatureSensor" >< / canvas >). Sedan behöver du bara få en hänvisning till grafen (erhålls genom att anropa metoden Processing.getInstanceById() ) och Använd funktionen update() att rita nya datapunkter fick i "publicera" och "bulkPublish" händelsehanterare.

Det är det! Jag har nu en accelerometer som driver en webbsida i realtid med hjälp av Arduino, SensorMonkey och Processing.js. Jag kan vara värd för webbsidan på en offentlig webbserver och direkt människor att Visa länken på alla enheter med en HTML5 kompatibel webbläsare. Tack för läsning och håll utkik efter ytterligare instructables visar mer avancerade användningsfall och projekt inom en snar framtid.

Se Steg
Relaterade Ämnen

LED kontroll med hjälp av Arduino Bluetooth och Android. (Del 1)

Detta instructable är en enkel handledning explaning hur man styr en LED med Android Bluetooth.Du behöver:Arduino UNOResistorer 300Ω (3 x)Resistor 150ΩLEDJumpers;Bluetooth-modul (HC-06/andra);Android-telefon;SPP Bluetooth Apk (unWired Lite);C kunskap...

₹1000 PPG signal baserade Heart rate kalkylator och temperatur display med hjälp av arduino uno och android OS

projektet är i grunden en bärbara puls och kroppstemperatur övervakningssystem. Det har styrelsen lcd uppvisning och också stöd för att visa parametrarna på en android-enhet i realtid. Arduino är hjärnan i systemet.Steg 1: Komponenter som krävs* Ardu...

Styra åtkomsten till din låsa distans med Arduino, SensorMonkey och RF modul

styra åtkomsten till din dörr från någonstans på planeten med hjälp av din telefon, Tab eller PC.Denna inställning har två huvudsegment, har en GUI med hjälp av jQuery, SensorMonkey, Freeduino (Arduino kompatibel utveckling styrelsen) och en sändare....

ESP8266 (fristående) väderstation med hjälp av Arduino IDE och GadgetKeeper moln plattform

Detta är en uppgradering av mitt tidigare projekt GadgetKeeper-väderstation. I detta projekt bygger jag samma funktioner men bara använder ESP8266 WiFi SoC fristående med DHT11 temperatur och luftfuktighet sensor. I det tidigare projektet använde jag...

Spåra 2D rörlighet med hjälp av Arduino ultraljudssensorer och visualisera i enighet

Vänligen titta på videon för bättre demonstration.Vi kommer att använda två ultraljudssensorer, en för att spåra horisontell rörelse och den andra för att spåra vertikalt. nyckeln ligger i att placera sensorerna och använda ett verktyg (en skokartong...

Motverka (0 => 99) med hjälp av Arduino UNO och två 7display segmments

Hej!Detta är min första instructable, denna instuctable oro att göra en räknare (0 = > 99).Steg 1: Steg 1: inser montaget delar som behövs:visar 2 7segmment gemensam anod4 motstånd: 2 (2.2k) på grundval av de två transistorerna + 2 (220) skydd 7 segm...

Fjärrstyrda webkamera med Arduino, SensorMonkey, jQuery och Justin.tv

webb-aktivera din interaktiva sensorer över skrivbordet, smartphone och tablet enheter.Denna handledning beskriver i detalj hur du använder tjänsten gratis SensorMonkey till styra en pan och tilt webbkamera ansluten till en Arduino använder inget ann...

Använder en temperaturgivare som kontrollerar hastigheten på en motor med hjälp av arduino

Denna ansökan är lätt bara genom att använda temperatursensor LM35 med en arduino kit att kontrollera en fläkt och ändra dess hastighet med avseende på temperaturen läsa av mikro-controller som i detta fall är den arduino kit.Temperatursensor LM35 fö...

Automatisk FAN vidare med hjälp av Arduino och DHT11

Hej allaDetta är mitt första inlägg på Instructables, och eftersom jag lär mig mycket här, jag beslutat att bidra med en av mina erfarenheter med hjälp av Arduino, sensorer och motorer. Jag inte har skapat något nytt; Jag bara ta några tutorials och...

Arduino Nano och Visuino: 7 Segment Display klocka med MAX7219 och DS1307 realtid Clock(RTC)

DS1307 Realtidsklocka finns allmänt tillgänglig låg kostnad I2C RTC moduler. De kommer med en klocka och ett litet batteri, och när ansluten till Arduino, kan hålla reda på realtid även när Arduino styrelsen inte drivs. Jag har redan gjort Instructab...

Kyl övervakning med Arduino MKR1000 och thethings.iO

Idag kommer att vi visa dig hur du övervakar ett kylskåp med en Arduino MKR1000 och Sakernas Internet plattform thethings.iO för att hålla din öl (eller andra drycker) vid en sval temperatur.Sommaren kommer!Vi använder en ena sladden vattentät temper...

Enkelklick på/av från din Android mobil med hjälp av Arduino och pfodApp. Arduino för nybörjare

IntroduktionDetta instructable visar hur du kan byta en Arduino utgång på och bort från din Android mobil med bara ett klick på ikonen pfodApp . Lägga till ett relä som drivs av denna utgång för att växla den riktig hårdvaran. Ingen Android kodning k...

Vattna trädgård med GARD-A-vatten Arduino projekt

Hej allaEftersom jag har köpt något område för framtida hus undrar jag hur man har en riktigt fin gräsmatta. Inte en klassisk men en engelsk stil superb gräsmatta :)Men Hey!Hur vill du ha gräsmatta utan ordentlig vattning?Så tänkte mig och ipe hur vi...

ESP8266 WiFi temp luftfuktighet övervakning web app med hjälp av Arduino IDE

Förra veckan fick jag en ESP8266(adafruit). den nya ESP8266 har arduino-starthanterare så det gör möjligt att programkoden arduino direkt i ESP8266. denna ESP8266 levereras med UART, I2C och GPIO. med denna nya wifi modul behöver du inte någon arduin...

En platt (ish) pack skrivbord med gångjärn, lås och mortised lederna.

Min flickvän / fästmö / fru (hennes titel beror på vem man frågar) behövs ett skrivbord att studera på i vårt hus i Filippinerna. En snabb sökning av de lokala butikerna visade ingen kostnad effektiv skrivbord som approximeras hennes behov. Och verkt...

En guide för att styra saker med varierande input (via arduino)

hjärtat i detta projekt är en) koppla upp en sensor till arduino analog ingång och b) programmering med if... else-sats.Detta projekt visar en dator kylsystemet för att behålla viss temperatur inom ett dator torn.Jag använde följande produkter och sj...

2-wheel Self Balancing Robot med hjälp av Arduino och MPU6050

2-Wheel Self Balancing Robot med hjälp av Arduino och MPU6050.Använda Arduino som controller och sensor MPU6050 för att styra balansen. Bara lägga till en enkel seriell Bluetooth-modul och använda en Bluetooth Serial Controller APP för Android-telefo...

Arduino robotarm och övervakning med bearbetning

robotarmen tar tag ett objekt när det upptäcker den med rörelsedetektor och sedan det flyttar den på en viss plats.förteckning över delar:1.3 servon2. passiv infraröd rörelsedetektor: http://www.sparkfun.com/products/86303. arduino uno R3 styrelse4....

Med hjälp av Arduino SKIFT register med ultraljudssensorer

HC-SR04 ultraljud utbud fjärranalys modulen är bra för avkänning avstånd som kan användas som indata för Arduino projekt, men med flera (fler än två) kan snabbt kosta dig en hel del stift.Denna grundläggande Instructable ger dig koden och grundläggan...