Paso 5: Conseguir que todo funcione!
Vamos a utilizar Java script (con nodo Js) para nuestro trabajo concreto. Ahora permítanme confesar antes de encontrar realmente que se trata por primera vez en mi vida que escribí un script de java. Yo soy más de. net, programador de Matlab y por lo tanto nunca encontrar JS divertido. Pero para este proyecto en particular, me sentí JS es la opción mejor y más fácil.
Edison viene precargado con js de nodo y una biblioteca para el control de los pines GPIO llamados mraa. Lo que me no gustó más sobre Node.js es ningún planteamiento absurdo para la instalación de una biblioteca. Para instalar un cliente de js MQTT todo lo que tienes que hacer es instalar la biblioteca con el siguiente comando simple.
MNP mqtt
Eso es todo! Ahora podemos trabajar con MQTT y gpio pins de Edison.
He creado el script de java a través de vi editor (soy ten por seguro que hay mejores formas de edición y control de las secuencias de comandos de java como usar Intel XDK).
El objetivo de esta secuencia de comandos sería suscribirse a un canal de mqtt y Control gpio basado en comandos recibidos.
Aquí está el código.
mqtt var = require('mqtt');
var cliente = mqtt.connect ('mqtt: / /192.168.1.101');
mqtt : / / es importante. Otro código no funcionará. Así que si usted está haciendo una prueba con mosquitto.org
MQTT://test.mosquitto.org
mraa var = require('mraa')
var velocidad = 1
Distancia Pins / / /
fPin var = nuevo mraa. GPIO(6)
bPin var = nuevo mraa. GPIO(5)
rPin var = nuevo mraa. GPIO(3)
lPin var = nuevo 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)
Inicializar / / /
fPin.write(0)
bPin.write(0)
rPin.write(0)
lPin.write(0)
/////////////////////////////////
Client.subscribe('YOUR_NAME/RC/#')
# al final es importante. Que el código no va a funcionar
{client.handleMessage=function(packet,cb)}
var carga = packet.payload.toString()
Si (carga === 'Hacia adelante')
{
bPin.write(0);
fPin.write(SPEED)
}
Si (carga === 'Inversa')
{
fPin.write(0);
bPin.write(SPEED);
}
Si (carga === 'Derecha')
{
lPin.write(0);
rPin.write(1)
}
Si (carga === 'Izquierda')
{
rPin.write(0); lPin.write(1)
}
Si (carga === 'Detener')
{
fPin.write(0)
rPin.write(0)
bPin.write(0)
lPin.write(0)
}
Si (carga === 'NO')
{rPin.write(0)
lPin.write(0)
}
Console.log(payload) cb()
}
////////////////////////////////////////////// Code Ends////////////////////////////////////////////
La razón para utilizar un servicio local es por lo que puede reducir la latencia y experiencia cerca de controlar el tiempo real. Si quieres jugar con un servidor remoto, no dude de hacerlo.
He conectado cuatro conectores de grove a cuatro pernos. Quiero reconocer aquí que quería un control de velocidad, pero en el momento de escribir este tutorial, no podía manejar conseguir trabajo PWM con Node.js. Cuatro conectores procedentes de adelante, atrás, derecha e izquierda botones del control remoto RC se nombran como fPin, bPin, rPin y lPin respectivamente. Si su conexión es diferente, puede cambiar los números en la parte superior del código.
Tener nuestro código, es ahora tiempo para ejecutarlo.
Sólo puede escribir
nodo rcLOCAL
en shell pronta y exitosa entrar (no nota JS después del nombre del archivo). Usted verá que el shell espera a recibir el comando.
Puede probar si está funcionando o no sólo mediante el uso de servicio de publicación en línea de comandos arriba con avance, retroceso, NO, izquierda, derecha y dejar de comando.
La lógica es, una vez que botón adelante, coche debe seguir avanzando. Junto a usted puede presionar botón derecho o izquierda, debe permitir el movimiento de izquierda y derecho. Al soltar los botones, coche todavía seguirá adelante o atrás hasta no suelte los botones. Así que para la liberación de derecha e izquierda no utilizamos ningún comando. Para detener todo, utilizamos el comando de STOP.
Descargar APK Android con este tutorial e instale el APK. Ejecute la aplicación y cambiar la dirección del servidor. No te olvides de activar wifi en tu teléfono Android y registro en la misma red wifi que está conectado su Edison.
Disfrute de su nuevo control remoto para los juguetes del RC.