Étape 5: Faire tout fonctionner !
Nous allons utiliser Java script (avec nœud Js) pour notre travail particulier. Maintenant, permettez-moi de confesse avant vous fait savoir qu’il s’agit pour la première fois dans ma vie que j’ai écrit un script java. Je suis plus de .net, programmeur de Matlab et donc jamais JS trouve amusant. Mais pour ce projet, je me suis senti JS est l’option la meilleure et la plus facile.
Edison est préchargé avec nœud js et une bibliothèque pour contrôler les broches GPIO appelés mraa. Ce que j’ai aimé le plus dans Node.js n’existe aucune approche non-sens pour installation d’une bibliothèque. Pour installer un client de js MQTT tout ce que vous avez à faire est d’installer la bibliothèque avec la commande simple suivante.
NGP mqtt
C’est tout ! Maintenant, nous pouvons travailler avec des épingles MQTT tant gpio d’Edison.
J’ai créé le script java par le biais de vi editor (je suis reste assuré qu’il y a des moyens plus efficaces d’édition et de vérification de vos scripts java comme l’utilisation d’Intel XDK).
L’objectif de ce script serait de s’abonner à un canal mqtt et contrôle gpio issu des commandes reçues.
Voici le code.
mqtt var = require('mqtt') ;
var client = mqtt.connect ('mqtt: / /192.168.1.101') ;
mqtt : / / est important. D’autre code ne fonctionnera pas. Donc, si vous testez avec mosquitto.org
MQTT://test.mosquitto.org
mraa var = require('mraa')
var vitesse = 1
Épingles à distance / / /
fPin var = new mraa. GPIO(6)
var bPin = new mraa. GPIO(5)
rPin var = new mraa. GPIO(3)
lPin var = new mraa. GPIO(4)
//////////////Set up Pins/////////////////////////
fPin.dir (mraa. DIR_OUT)
bPin.dir (mraa. DIR_OUT)
rPin.dir (mraa. DIR_OUT)
lPin.dir (mraa. DIR_OUT)
Initialisation / / /
fPin.write(0)
bPin.write(0)
rPin.write(0)
lPin.write(0)
/////////////////////////////////
client.Subscribe('YOUR_NAME/RC/#')
# à la fin est important. Sinon votre code n’est pas aller au travail
{client.handleMessage=function(packet,cb)}
charge utile var = packet.payload.toString()
Si (charge utile === « FORWARD »)
{
bPin.write(0) ;
fPin.write(SPEED)
}
Si (charge utile === « REVERSE »)
{
fPin.write(0) ;
bPin.write(SPEED) ;
}
Si (charge utile === « RIGHT »)
{
lPin.write(0) ;
rPin.write(1)
}
Si (charge utile === « Gauche »)
{
rPin.write(0) ; lPin.write(1)
}
Si (charge utile === « STOP »)
{
fPin.write(0)
rPin.write(0)
bPin.write(0)
lPin.write(0)
}
Si (charge utile === « Non »)
{rPin.write(0)
lPin.write(0)
}
Console.log(Payload) cb()
}
////////////////////////////////////////////// Code Ends////////////////////////////////////////////
La raison d’utiliser un service local est de sorte que vous pouvez réduire la latence et l’expérience près de contrôler en temps réel. Si vous voulez jouer avec un serveur distant, n’hésitez pas à le faire.
J’ai connecté quatre connecteurs grove à quatre épingles. Je voudrais avouer ici que je voulais aussi un régulateur de vitesse, mais au moment de la rédaction de ce tutoriel, je ne parvenais pas à obtenir un travail PWM correctement avec Node.js. Quatre connecteurs venant de l’avant, arrière, droite et gauche des boutons de la télécommande RC sont nommés comme fPin, bPin, rPin et lPin respectivement. Vous pouvez modifier les numéros de broches en haut du code si votre connexion est différente.
Vu notre code, il est maintenant temps pour l’exécuter.
Vous pouvez taper juste
nœud rcLOCAL
dans shell prompt et appuyez sur entrer (ne Notez aucun .js après le nom du fichier). Vous verrez l’interpréteur de commandes en attente de recevoir la commande.
Vous pouvez tester si ça fonctionne ou pas simplement en utilisant le service de publication de ligne de commande nous avons fait ci-dessus avec vers l’avant, marche arrière, non, gauche, droite et arrêter la commande.
La logique est, une fois nous touche avant, voiture devrait aller de l’avant. Aux côtés de vous pouvez appuyer sur touche droite ou gauche, il doit permettre aux mouvements de gauche et de droite. Lorsque vous relâchez les boutons, voiture sera toujours aller de l’avant ou arrière jusqu'à ce que vous ne libérez ces boutons. Donc, pour libérer la droite et à gauche, nous n’utilisons aucune commande. Pour l’arrêt de tout, nous utilisons la commande d’arrêt.
Télécharger Android APK fournis avec ce didacticiel et installer l’APK. Exécuter l’application et changer l’adresse du serveur. N’oubliez pas de tourner sur le wifi dans votre téléphone Android et ouvrez une session dans le même réseau wifi que votre Edison est connecté à.
Profitez de votre nouvelle télécommande pour jouets RC.