Stap 5: Krijgen het allemaal om te werken!
JavaScript (met knooppunt Js) zullen we gebruiken voor onze bepaald werk. Nu wil ik belijden het voordat je daadwerkelijk erachter komen dat dit voor de eerste keer in mijn leven dat ik schreef een JavaScript. Ik ben meer van .net, Matlab programmeur en daarom vind nooit JS grappig. Maar voor dit specifieke project, ik voelde me JS is de beste en makkelijkste optie.
Edison komt voorgeladen met knooppunt js en een bibliotheek om te controleren de GPIO pinnen genaamd mraa. Wat ik het leukst Node.js is geen onzin aanpak voor het installeren van een bibliotheek. Om een MQTT js-client te installeren alles wat u hoeft te doen is het installeren van de bibliotheek met de volgende eenvoudige opdracht.
NPM mqtt
Dat is alles! Nu kunnen we werken met zowel de MQTT als de gpio pinnen van Edison.
Ik heb de java-script door middel van vi Redacteur (ik ben rust verzekerde dat er betere manieren bewerken en controleren van uw java-scripts als het gebruiken van Intel XDK zijn).
Het doel van dit script zou zich abonneren op een mqtt-kanaal en controle gpio op basis van ontvangen commando's.
Hier is de code.
var mqtt = require('mqtt');
var client = mqtt.connect ("mqtt: / /192.168.1.101');
mqtt: / / is belangrijk. Anders code zal niet werken. Dus als u wilt met mosquitto.org testen
mqtt://test.mosquitto.org
var mraa = require('mraa')
var snelheid = 1
Externe Pins / / /
var fPin = nieuwe mraa. GPIO(6)
var bPin = nieuwe mraa. GPIO(5)
var rPin = nieuwe mraa. GPIO(3)
var lPin = nieuwe 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)
Initialiseren / / /
fPin.write(0)
bPin.write(0)
rPin.write(0)
lPin.write(0)
/////////////////////////////////
client.Subscribe('YOUR_NAME/RC/#')
# aan het eind is belangrijk. Anders gaat uw code niet werken
client.handleMessage=function(packet,cb) {}
var payload = packet.payload.toString()
Als (lading === 'Vooruit')
{
bPin.write(0);
fPin.write(SPEED)
}
Als (lading === 'REVERSE')
{
fPin.write(0);
bPin.write(SPEED);
}
Als (lading === "Recht")
{
lPin.write(0);
rPin.write(1)
}
Als (lading === 'LEFT')
{
rPin.write(0); lPin.write(1)
}
Als (lading === 'STOP')
{
fPin.write(0)
rPin.write(0)
bPin.write(0)
lPin.write(0)
}
Als (lading === "Nee")
{rPin.write(0)
lPin.write(0)
}
console.log(Payload) cb()
}
////////////////////////////////////////////// Code Ends////////////////////////////////////////////
De reden voor het gebruik van een lokale service is zodat u kunt verminderen van de latentie en ervaring in de buurt van real-time controle. Als u spelen met een externe server wilt, voel je vrij om dit te doen.
Ik heb vier grove connectoren aangesloten op vier pinnen. Laat me hier toegeven dat ik ook een controle van de snelheid wilde, maar op het moment van schrijven van deze tutorial, mij niet schipperen kon te halen PWM werk goed met Node.js. Vier aansluitingen afkomstig uit vooruit, terug, zijn links en rechts knoppen van de RC externe genoemd als fPin, bPin, rPin en lPin respectievelijk. Als uw verbinding verschilt, kunt u de pin-codes aan de bovenkant van code wijzigen.
Onze code hebben, is het nu tijd om het te draaien.
U kunt enkel typen
knooppunt rcLOCAL
Typ in de shell prompt en hit (Let op geen .js na de bestandsnaam). Hier ziet u de wacht op de opdracht shell.
U kunt testen of het werkt niet alleen met behulp van de opdrachtregel publishing-service we deden boven met vooruit, achteruit, Nee, links, rechts en stoppen van de opdracht.
De logica is, zodra wij druk naar voren, moet auto houden vooruit. Naast je linker- of rechter knop kunt drukken, het links en rechts verkeer moet inschakelen. Wanneer u deze knopen, vrijgeven auto zal nog steeds vooruit of omgekeerde totdat vrijgeven u die knopen niet. Dus voor het vrijgeven van rechts en links gebruiken we geen opdracht. Voor het stoppen van alles, gebruiken we de opdracht STOP.
Android APK voorzien van deze tutorial downloaden en installeren van de APK. App in werking en serveradres wijzigen. Vergeet niet om in te schakelen in uw Android telefoon- en inloggen op hetzelfde wifinetwerk die uw Edison is verbonden met wifi.
Geniet van uw nieuwe afstandsbediening voor RC speelgoed.