Conduire une page Web en temps réel en utilisant Arduino, SensorMonkey et Processing.js (6 / 6 étapes)

Étape 6: Graphique des données à l’aide de Processing.js

Dans la partie finale (et meilleure!) de ce tutoriel, je vais créer une page Web simple pour afficher la sortie de mon Arduino qui est maintenant étant retransmis en direct sur Internet à l’aide de SensorMonkey (j’ai téléchargé la dernière bibliothèque de Processing.js - 1.3.6 au moment de l’écriture - et placé dans le même répertoire que la page Web). Vous aurez besoin de modifier le code ci-dessous pour faire correspondre les variables d’être écoutés par votre Arduino (sauf si vous avez copié ma configuration accéléromètre exactement) :

(Important ! Vous devez remplacer YOUR_NAMESPACE et YOUR_PUBLIC_KEY dans le code ci-dessous avec ceux qui vous sont affectées lorsque vous vous connectez à SensorMonkey)

--------------------------------------------------------------------------------
< ! DOCTYPE html >
< html >
< tête >
< titre > lecteur une page Web en temps réel en utilisant Arduino, SensorMonkey et 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 = « traitement-1.3.6.js » >< / script >
< style type = « text/css » >
.capteur-nom {}
text-align : center ;
Width : 300px ;
}
{de toile
border : 1px solid grey ;
}
< / style >
< / head >
< onload corps = "setTimeout (lancer, 100);" >
< div class = « nom du capteur » > accéléromètre X < / div >
< toile traitement-des sources de données = « Graph.pde » id = « AccelX » >< / toile >
< div class = « nom du capteur » > accéléromètre Y < / div >
< toile traitement-des sources de données = « Graph.pde » id = « AccelY » >< / toile >
< div class = « nom du capteur » > accéléromètre Z < / div >
< toile traitement-des sources de données = « Graph.pde » id = « AccelZ » >< / toile >
< script type = « text/javascript » >
fonction run() {}
var accelXGraph = Processing.getInstanceById ("AccelX") ;
var accelYGraph = Processing.getInstanceById ("AccelY") ;
var accelZGraph = Processing.getInstanceById ("AccelZ") ;

accelXGraph.setColor (255, 0, 0, 100) ;    Rouge.
accelYGraph.setColor (0, 128, 0, 100) ;    Vert.
accelZGraph.setColor (0, 0, 255, 100) ;    Bleu.

// 1. Se connecter à SensorMonkey
// 2. Rejoignez l’espace de noms
// 3. S’abonner au flux de données
// 4. Écouter les événements « publier » et « bulkPublish »

var client = new SensorMonkey.Client ("http://sensormonkey.eeng.nuim.ie") ;
client.on ("se connecter", function() {}
client.joinNamespace ("YOUR_NAMESPACE", "YOUR_PUBLIC_KEY", function (e) {}
Si (e) {}
Alert ("Impossible de rejoindre l’espace de noms:" + e) ;
retour ;
}

client.subscribeToStream ("/ public/mon Arduino", function (e) {}
Si (e) {}
Alert ("n’a pas pu s’abonner au flux de données:" + e) ;
retour ;
}

client.on ("publier", function (nom, champs) {}
Si (nom === "/ public/mon Arduino") {}
accelXGraph.update (champs ["accéléromètre X"]) ;
accelYGraph.update (champs ["accéléromètre Y"]) ;
accelZGraph.update (champs [« Z accéléromètre"]) ;
}
} );

client.on ("bulkPublish", function (nom, champs) {}
Si (nom === "/ public/mon Arduino") {}
pour (var i = 0, len = fields ["accéléromètre X"] .length; i < len; i ++) {
accelXGraph.update (champs ["accéléromètre X"] [i]) ;
accelYGraph.update (champs ["accéléromètre Y"] [i]) ;
accelZGraph.update (champs ["accéléromètre Z"] [i]) ;
}
}
} );
} );
} );

client.on ("déconnecter", function() {}
Alert ("Client a été déconnecté!") ;
} );
} );
}
< /script >
< / body >
< / html >
--------------------------------------------------------------------------------

Sans entrer dans trop de détails (vous pouvez trouver plus d’informations sur l’API du client JavaScript ici) le workflow de base est la suivante :

-Client import
-Se connecter à SensorMonkey
-Rejoindre l’espace de noms
-S’abonner au flux de données
-Écouter « publier » et « bulkPublish » événements

Pour le graphique de données, j’utilise le croquis Processing.js suivant (enregistrer ceci dans un fichier appelé Graph.pde et placez-le dans le même répertoire que la page Web ci-dessus) :

--------------------------------------------------------------------------------
xPos int = 0 ;       Coordonnée horizontale utilisée pour dessiner le prochain point de données.
yMin int = 0 ;       Valeur minimale des données attendues.
int yMax = 1023 ;    Valeur maximale des données attendues.
c de couleur ;            Couleur de contour utilisée pour dessiner le graphique.

Définit la couleur utilisée pour dessiner le graphique.
void setColor (int r, g int, int b, int a) {}
c = couleur (r, g, b, a) ;
}

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

void draw() {} / / Empty function draw().

void drawGrid() {}
int h = hauteur ;
int w = largeur ;

arrière-plan (255) ;

accident vasculaire cérébral (127, 127, 127, 127) ;

Tracer des lignes horizontales.
ligne (0, h / 4, w, h / 4) ;
ligne (0, h / 2, w, h / 2) ;
ligne (0, h * 3 / 4, w, h * 3 / 4) ;

Tracer des lignes verticales.
ligne (w / 4, 0, w / 4 h) ;
ligne (w / 2, 0, w / 2, h) ;
ligne (w * 3 / 4, 0, w * 3 / 4 h) ;

Dessiner des étiquettes.
remplir (0) ;
texte (str (yMin), 5, h - 5) ;
texte (str (yMax), 5, 12) ;
}

Sub update (données float) {}
Quand nous atteignons le bord de l’écran, enrouler autour du début.
Si (xPos > = largeur) {}
PosX = 0 ;
drawGrid() ;
}

Graphique du point de données et incrémenter la coordonnée horizontale.
données = carte (données, yMin, yMax, hauteur 0,) ;
accident vasculaire cérébral (c) ;
ligne (xPos, hauteur, xPos, hauteur - données) ;
xPos ++ ;
}
--------------------------------------------------------------------------------

Dans votre cas, selon l’ou les capteurs qui vous sont transmises en continu, vous devrez peut-être plus ou moins graphiques dans votre page Web. Vous pouvez modifier le fichier Graph.pde si vous avez besoin augmenter/diminuer la taille des graphiques, la plage de valeurs de données qui peut être tracée, etc, la cadence. N’oubliez pas d’inclure le fichier Graph.pde une fois pour chaque variable que vous voulez tracer (à l’intérieur d’un élément < canvas >) et nommez-les en conséquence (par exemple < toile traitement-des sources de données = « Graph.pde » id = « TemperatureSensor » >< / toile >). Ensuite, vous avez juste besoin d’obtenir une référence à la courbe (obtenue en appelant la méthode Processing.getInstanceById() ) et utiliser la fonction update() pour tracer de nouveaux points de données reçues dans le « publier » et « bulkPublish » des gestionnaires d’événements.

C’est tout! J’ai maintenant un accéléromètre conduire une page Web en temps réel en utilisant Arduino, SensorMonkey et Processing.js. Je peux héberger la page Web sur un serveur Web public et orienter les gens pour voir le lien sur n’importe quel appareil avec un navigateur compatible HTML5. Merci pour la lecture et regarder dehors pour instructables supplémentaires montrant les cas d’usage plus avancées et les projets dans un avenir proche.

Articles Liés

Commandes linux simple d’une page web.

Commandes linux simple d’une page web.

Il devait y avoir un moyen de faire des commandes simples pour linux sans passer par la ligne de commande. La partie propre à ce projet, c'est que vous pouvez facilement développer vous-même. Besoin d'une liste de répertoires. Pas de problème. Besoin
Comment intégrer une vidéo dans une page Web utilisant HTML5

Comment intégrer une vidéo dans une page Web utilisant HTML5

ce tutorial va vous apprendre comment mettre n'importe quelle vidéo dans un site Web utilisant HTML5 et la nouvelle balise. À l'aide de HTML5, vous pouvez avoir vidéos dans votre site Web sans avoir besoin d'aucun plug-ins comme Adobe Flash, et ils p
La création d’iWeb d’Apple de l’utilisation sur une page Web

La création d’iWeb d’Apple de l’utilisation sur une page Web

nous voulons vous montrer comment créer une page Web à l'aide d'application iWeb d'Apple. On vous indiquera comment procéder en 5 étapes faciles !Étape 1: Étape 1: ouvrir et choisir le thèmeDepuis votre écran d'accueil, cliquez sur votre dossier appl
Contrôlez votre éclairage grâce à une page Web !

Contrôlez votre éclairage grâce à une page Web !

Après avoir joué avec les contrôleurs de RF pendant un certain temps, j'ai réalisé un inconvénient majeur est la nécessité d'avoir toujours un émetteur d'envoyer un signal au récepteur. Ne serait-il pas agréable si je pouvais utiliser mon téléphone c
Édition d’une page Web dans Google Chrome

Édition d’une page Web dans Google Chrome

si je vous disais que vous pouvez éditer n'importe quel page Web ou un site Web sur internet directement depuis votre ordinateur sans aucun logiciel spécial ou ordinateur fou, compétences en programmation ? C'est facile ! La seule chose dont vous ave
Comment changer temporairement une page Web dans le navigateur web Google Chrome

Comment changer temporairement une page Web dans le navigateur web Google Chrome

cette instructable vous montrera comment changer temporairement une page Web en utilisant le navigateur web Chrome.Tout ce dont vous avez besoin est le navigateur web Google Chrome et un ordinateur.Étape 1: Ouvrez une page Web Ouvrez le navigateur we
Page Web grattage depuis/vers une page web.

Page Web grattage depuis/vers une page web.

Le but du projet est de prendre le commandement comme fichiers batch et les rendre accessible depuis le web. Vous pourrez faire votre propre page web spéciale et ne pas avoir à dépendre de quelqu'un d'autre pour le préparer pour vous. Web vers la pag
Enregistrer une page Web avec tout ce que sur XP (aucun INTERNET requis!)

Enregistrer une page Web avec tout ce que sur XP (aucun INTERNET requis!)

Dans ce instructable, je vais vous montrer comment enregistrer une page Web en utilisant internet explorer, Microsoft Windows XP Pro. et une connexion internet. Lorsque vous procédez ainsi, il nécessite une connexion internet pour charger la page Web
PSD à la Conversion de HTML5 : ajout d’un curseur de HTML5 vers une page Web - partie 1

PSD à la Conversion de HTML5 : ajout d’un curseur de HTML5 vers une page Web - partie 1

ça fait plus d'un an que HTML5 fait son chemin dans l'industrie du web. Mais encore beaucoup de gens, en général, y compris les débutants et les intermédiaires, ont du mal à faire un curseur d'HTML5 pour une page Web. Donc avec ce PSD to tutoriel HTM
Modifier n’importe quel site Web ou une page Web en permanence

Modifier n’importe quel site Web ou une page Web en permanence

Montage en permanence un site Web est une très bonne chose à faire n'importe tromper.Tout comme j'avais faire mon fou de garniture en tout cas, il dispose de deux méthodes :à l'aide du panneau d'outil de développeurs du navigateur.à l'aide de javascr
Modifier une page Web sur Internet à partir de votre navigateur

Modifier une page Web sur Internet à partir de votre navigateur

Voilà un plaisir hack de Javascript qui vous permet d'éditer une page Web sur internet directement depuis votre navigateur. Il n'est pas apporter des modifications permanentes à la page. Donc ce n'est pas vrai « piratage ». Mais, c'est toujours un bo
Actualisation des données de MySql dans une Page Web

Actualisation des données de MySql dans une Page Web

Dans mon premier Instructable « Arduino mise en données à une page web » j'ai parlé d'actualisation des données à l'aide de la commande de méta pour actualiser le contenu des données MySQL. Le problème avec ceci est qu'il actualise la page entière et
Comment détourner une page Web-Cool

Comment détourner une page Web-Cool

Comment détourner une page Web - regarder les clips vidéo mieux ici utiliser cette astuce pour détourner exemple adresse de page Web... Si vous entrez google.com dans l'url, il détournera immédiatement à la metacafe ou tout site Web que vous avez con
Tutoriel vidéo : Comment créer une Page Web avec SliceMaker des produits ?

Tutoriel vidéo : Comment créer une Page Web avec SliceMaker des produits ?

Il s'agit d'un didacticiel vidéo relatif des produits SliceMaker. Dans ce didacticiel vidéo, nous vous apprendra comment créer une page web complète avec l'aide de produits SliceMaker.Vous n'avez pas besoin d'écrire les codes manuellement lorsque vou