Étape 1: Code pour la plateforme
node.js sur l’Edison
J’ai utilisé une application de node.js simples pour le programme. Pas très sophistiqué ; Je l’ai écrit tout en ligne, mais il fait tout ce que nous voulions qu’elle. Le code marche initialement une LED bleue pour montrer le système fonctionnait, puis mis en place un serveur web qui a servi vers le haut de la page html de base. Cette page ouvre une connexion socket sur le serveur et a été en mesure d’envoyer des commandes au système.
La page web a été juste pour tester, donc n’était pas très sophistiqué. Il avait trois boutons pour chacune des commandes et serait de connecter les réponses qui étaient tout de même des commandes a rebondi. L’Edison doit être connecté au wifi disponible. Cela a été fait en utilisant le ssh connection dans le XDK. C’est assez facile et seulement il faut faire une seule fois ; Il se souviendra de la connexion. Si le système est hors tension, puis redémarré, l’application redémarre automatiquement vers le haut. Une fois démarré, plusieurs personnes pourraient se connecter avec leur navigateur de téléphone intelligent et envoyer un message pour faire pivoter le plateau tournant. Démo simple mais agréable.
Il est facile d’ouvrir un serveur web en utilisant le module « http » ; Il n’a pas besoin de toute installation de routage, comme nous servions juste une seule page. Cette page a été préchargée dans une chaîne, « mainPage » et renvoyé lorsque le navigateur est dirigé vers l’url, 'localhost:1337'. Si autres bibliothèques sont nécessaires, elles sont ajoutées au fichier de configuration et le XDK eux sera téléchargée vers l’Edison avant d’exécuter le programme, faites un « npm install ».
Démarrage du service web
var http = require('http') ;
app var = http.createServer (function (req, res) {}
« utiliser le strict » ;
res.writeHead (200, {'Content-Type': ' text/html "}) ;
res.end(mainPage) ;
.listen(1337)}) ;
Console.log ("Web écoute sur le port 1337") ;
La prise de web utilisé code pour relever les trois messages différents. Les commandes « a » et « b » est utilisée pour tourner les moteurs, « c » a été utilisé pour mettre le système en mode "Centre d’ajustement". J’ai utilisé la bibliothèque « socket.io » pour ouvrir un port d’écoute web socket.
Créer serveur socket.io
var io = require('socket.io')(app) ;
Console.log ("socket.io Simple messagerie...") ;
Attacher un gestionnaire d’événements « connection » sur le serveur
IO.on ('connection', function (socket) {}
« utiliser le strict » ;
Console.log ("un utilisateur connecté') ;
Émet un événement ainsi qu’un message
Socket.Emit (« connectés », « Bienvenue ») ;
Attacher un gestionnaire d’événements de « message » à la prise / / a et commandes b viendra avec un paramètre de numéro pour la rotation
Socket.on ('message', function (msg) {}
Console.log ('message-->' + msg) ;
var args = msg.split("") ;
var delta = parseInt(args[1]) ;
Console.log ("Value:" + delta) ;
Si (delta! = 0) {}
{Switch(args[0])}
case « a » :
Rotate(motorA, Delta) ;
rupture ;
case « b » :
Rotate(motorB, Delta) ;
rupture ;
case « c » :
Centre() ;
rupture ;
par défaut :
par défaut le code bloquer, ne rien faire
}
}
Socket.Emit ('message', msg) ;
});
Les moteurs sont mis en place avec ce code pour configurer la connexion et la vitesse ; Cela définit les broches que le moteur est connecté à et la vitesse du mouvement. Les nombres sont les broches montrés sur la carte d’extension.
var Uln200xa_lib = require('jsupm_uln200xa') ;
Instancier un moteur pas à pas sur un pilote de moteur de Darlington ULN200XA
Cela a été testé avec le Grove étape motoréducteur avec chauffeur
Instancier un moteur pas à pas ULN2003XA
motorA var = Uln200xa_lib nouvelle. ULN200XA (4096, 8, 9, 10, 11) ;
var motorB = new Uln200xa_lib. ULN200XA (4096, 4, 3, 5, 6) ;
motorA.angle = 0 ;
motorB.angle = 0 ;
setSpeed var = function (moteur, vitesse) {}
motor.setSpeed(speed) ; 5 rpm
}
Lorsque les commandes « a » et « b » arrivent ils utilisent le paramètre définir combien d’un angle de tourner ; angle de delta négatif est utilisée pour inverser le sens. Cette fonction est appelée par le code de socket web lorsqu’un message arrive. Le moteur pas à pas prend une valeur de 4096 pour tourner une rotation complète. Il serait sans doute que ce soit plus logique tournant dans un angle exprimé en degrés.
Tournez var = function (moteur, delta) {}
Si (delta > 0) {}
motor.setDirection (Uln200xa_lib. ULN200XA. DIR_CW) ;
} else {}
motor.setDirection (Uln200xa_lib. ULN200XA. DIR_CCW) ;
}
motor.stepperSteps(Math.abs(delta)) ;
Motor.angle += delta ;
}
Lorsque la commande « c » est arrivé, j’ai mis le système en mode de réglage de centre, où je pouvais utiliser le joystick pour déplacer la que position de départ les deux moteurs d’un ensemble. Les mouvements de X et Y correspondent à chaque moteur. Un simple appuyer sur le bouton a été utilisé pour revenir au mode normal.
Le code de jour de hack est sur mes pages de GitHub. Il peut ne pas être dans un État particulièrement bien rangé, mais il peut être utile d’afficher le tout. https://github.com/happyt/Edison-Platform