meta données pour cette page
Envoyer et recevoir des données entre JavaScript et Arduino
Nous allons utiliser la librairie Massenger de Thomas Ouellet Fredericks. La description de son installation et de son fonctionnement se trouve ici : http://wiki.t-o-f.info/Massenger/Massenger
1. Téléchargez cette archive :
2. Installez la librairie Massenger dans Arduino :
3. Téléversez le code 'massenger_digitalWrite_analogRead.ino'
Dans l'interface Arduino, allez à 'examples', trouver la librairie Massenger et ouvrir le fichier : massenger_digitalWrite_analogRead image_interface_exemples_arduino
4. Ouvrez une fenêtre de terminal et allez au dossier 'Massenger/Applications/Serveur/'.
Utilisez la fonction 'cd' (pour change directory (changer de dossier)) ou faites 'cd' puis 'cliquez et déposez le dossier 'serveur' dans la fenêtre de terminal.
5. Installez node.js sur votre OS
(Pour OSX) Allez sur le site http://nodejs.org et installez le .pkg Vous devrez installer des modules de node.js nécessaires à une interface avec le port série : serialport et websocket. Faites : 'sudo npm install serialport' et 'sudo npm install websocket' dans une fenêtre de terminal. * Vous aurez peut-être à installer les outils Xcode ou les outils de 'ligne de commande'. Attention cette archive est grande (+ de 2.4G) donc nécessite beaucoup d'espace sur votre disque dur. Pour télécharger Xcode : https://itunes.apple.com/fr/app/xcode/id497799835?mt=12
6. Ouvrez le fichier ArduinoASCIIBridge.js dans Brackets
7. Éditez cette ligne dans ArduinoASCIIBridge.js en la remplaçant par la valeur de votre port série
8. Ouvrez une fenêtre de terminal, allez au dossier parent de 'ArduinoASCIIBridge.js' et démarrez le serveur
Fenêtre de terminal et commande pour démarrer le serveur
* Pour fermer le serveur, faites : 'ctl-c' (touche de contrôle et 'C' du clavier)
9. Ouvrez index.html dans Brackets ou Chrome
FAQ (erreurs) :
Q : Il y a du glitch dans l'écran?! C'est beau mais je voudrais plutôt avoir les données…que faire? R : Dans le code du Arduino, réduire la vitesse du port série à 9600 comme ceci : 'Serial.begin(9600);'
Q : Lorsqu'on ouvre un WebSocket, on ne peut pas faire de send immédiatement, on doit attendre que le socket soit connecté. Comment attendre? R : L'API WebSocket offre l'événement 'onmessage' qui est lancé lorsque le serveur renvoie une réponse après l'ouverture. On peut donc mettre notre send dans une fonction qui sera appelé lors de l'événement onmessage. Par exemple:
function update(e){ /*Do Something*/}; var ws = new WebSocket("ws://localhost:9999/"); ws.onmessage = update;