IoT RC bil med Intel Edison (IntelIoT) (5 / 5 steg)
Steg 5: Att få det att fungera!
Vi kommer använda Java script (med nod Js) för våra särskilda arbete. Låt mig bekänna det innan du faktiskt hitta detta som för första gången i mitt liv att jag skrev en java skriften. Jag är mer av .net, Matlab programmerare och därför hitta aldrig JS underhållande. Men för detta särskilda projekt, kändes JS är den bästa och enklaste lösningen.
Edison levereras med nod js och ett bibliotek för att kontrollera GPIO stiften kallas mraa. Vad jag tyckte mest om Node.js är ingen nonsens metod för att installera ett bibliotek. För att installera en MQTT js klienten allt du behöver göra är att installera biblioteket med följande enkla kommando.
NPM mqtt
Det är allt! Nu kan vi arbeta med både MQTT och gpio stift från Edison.
Jag skapade den java skriften genom vi redaktör (jag är säker på att det finns bättre sätt att redigera och kontrollera din java skript som använder Intel XDK).
Syftet med skriptet skulle vara att prenumerera på en mqtt kanal och kontroll gpio baserat på kommandon tas emot.
Här är koden.
var mqtt = require('mqtt');
var kund = mqtt.connect ("mqtt: / /192.168.1.101');
mqtt: / / är viktigt. Annan kod fungerar inte. Så om du testar med mosquitto.org
mqtt://test.mosquitto.org
var mraa = require('mraa')
var HASTIGHETEN = 1
Remote stift / / /
var fPin = ny mraa. Gpio(6)
var bPin = ny mraa. Gpio(5)
var annapetrovic = nya mraa. Gpio(3)
var lPin = ny 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)
Initiera / / /
fPin.write(0)
bPin.write(0)
rPin.write(0)
lPin.write(0)
/////////////////////////////////
client.subscribe('YOUR_NAME/RC/#')
# i slutet är viktigt. Annars kommer din kod inte att fungera
client.handleMessage=function(packet,cb) {
var nyttolast = packet.payload.toString()
om (payload === 'Framåt')
{
bPin.write(0);
fPin.write(SPEED)
}
om (payload === 'REVERSE')
{
fPin.write(0);
bPin.write(SPEED);
}
om (payload === 'Rätt')
{
lPin.write(0);
rPin.write(1)
}
om (payload === "Vänster")
{
rPin.write(0); lPin.write(1)
}
om (payload === 'Stopp')
{
fPin.write(0)
rPin.write(0)
bPin.write(0)
lPin.write(0)
}
om (payload === "Nej")
{rPin.write(0)
lPin.write(0)
}
Console.log(Payload) cb()
}
////////////////////////////////////////////// Code Ends////////////////////////////////////////////
Skälet för att använda en lokal tjänst är så att du kan minska latensen och uppleva nära realtid kontroll. Om du vill leka med en fjärrserver, Känn dig fri att göra så.
Jag har anslutit fyra grove kopplingar till fyra stift. Låt mig här erkänna att jag också ville ha en hastighetskontroll, men vid tiden för skriver den här guiden, kunde jag inte lyckas få PWM arbete ordentligt med Node.js. Fyra kontakter kommer från framåt, tillbaka, är höger och vänster knapparna på fjärrkontrollen RC benämn så fPin, bPin, annapetrovic och lPin respektive. Du kan ändra pin-koder på toppen av koden om din anslutning är olika.
Med vår kod, är det nu dags att köra den.
Du kan bara skriva
noden rcLOCAL
i shell prompt och slå in (Obs ingen .js efter filnamnet). Du kommer att se skalet väntar på att få kommandot.
Du kan testa om det fungerar eller inte bara genom att använda kommandoraden publiceringstjänsten vi gjorde ovan med framåt, bakåt, nej, vänster, höger och stoppa kommando.
Logik ska, när vi trycker fram, bilen hålla går framåt. Tillsammans med er kan trycka på vänster eller höger knapp, det bör aktivera vänster och höger rörelse. När du släpper dessa knappar, bil fortfarande kommer att gå framåt eller bakåt tills släpper du inte dessa knappar. Så för att frigöra höger och vänster använder vi inget kommando. För att stoppa allt, kommandot vi STOP.
Hämta Android APK medföljer denna tutorial och installera APK. Köra app och ändra serveradress. Glöm inte att slå på wifi i din Android-telefon och logga in på samma wifi-nätverk som din Edison är ansluten till.
Njut av din nya fjärrkontroll för RC leksaker.