Intellekten Edison/Seeed/Nexus 3WD OmniRover (15 / 16 steg)

Steg 17: Load Test programvara

Nu har vi programmera Edison att styra roboten. Jag kommer att ge några enkla test kod i det här steget för att kontrollera att all hårdvara fungerar och för att låta dig se till att rätt kodaren är associerad med rätt motor kanaler, men kommer att lämna mer komplex programmering upp till dig (och senare inlägg...).

Jag kommer att använda Node.js för att göra det lättare att ansluta till webbtjänster och sådana senare men det är också möjligt att använda C/C++, Python, Arduino eller Java om du vill. Jag tänker också använda MRAA och UPM, några enkla hårdvara gränssnitt bibliotek som tillhandahålls av Intel. Det finns andra alternativ Node.js HW gränssnitt där också, som cylon.js och JohnnyFive, som du kanske vill titta på senare.

Men låt oss ställa in saker för att använda MRAA och UPM. Först, Följ instruktionerna för att uppdatera MRAA och UPM till de senaste versionerna. Du kan hitta dokumentation för detta på webbplatsen för Intel men om du redan har uppdaterat Edison firmware till en någorlunda ny version sedan följande bör ta den senaste versioner från online repor (Obs: Edisons måste ha tillgång till internet först...). Efter att logga in på Edison som root utfärda följande kommandon:

Opkg uppdatering
Opkg uppgradering libmraa0
Opkg uppgradering upm

Då vill du sätta följande skript någonstans på Edison, säger i "omnitest.js" i din hemkatalog och sedan köra den med "nod omnitest.js". Alternativt kan du läsa in denna kod med hjälp av den gratis Intel XDK (IoT Edition), som gör redigera/upload/run cykeln mer praktiskt, ger en debugger om du vill ha det, och lyckas också lösa npm modul beroenden (dock denna testskript avsiktligt undviker med externa moduler än UPM och MRAA för att göra installationen lättare). Laddar XDK-koden anger också det ska köras automatiskt vid uppstart. Jag kommer att visa hur man använder som mer i detalj senare.

Använda detta skript för att se till att kodare, sensorer, motorer och högtalare alla arbetar. I grund och botten skriptet snurrar roboten fram och tillbaka och tillbaka på plats genom att köra alla motorer framåt, då bakåt, sedan körs det varje motor i sin tur. Kontrollera att alla tre kodare räkna och sedan ner i först och tillbaka rörelse. Kontrollera sedan att när varje motor snurrar i sin tur som svarar rätt encoder kanalen. Om inte, antingen byta runt encoder kablar eller ändra pin tilldelningarna i skriptet. Om en av drivkrafterna inte snurrar kan du ha vänt ID: N för två motor förare. Jag rekommenderar ändrar pin tilldelningen i skriptet i stället för att jävlas med ledningarna. Du kan också justera skalning konstanterna för spänning avdelare (om du använder det) för att få en mer exakt avläsning. I princip titta på rå läsningen, titta på den yttre spänning Brocket och anger du rätt konstanterna i skriptet för att beräkna skalning förhållandet.

När detta testskript körs och ovan allt sorteras, bör maskinvaran vara redo för mer sofistikerade kodning!

------

/ * Omnirover demo.
* Övningar motorer, läser data från sensorer och dumpar det till konsolen, tester ljud.
*/

/ === TEST URVAL
var test_motors = sant;
var test_batt = sant;
var test_encoders = sant;
var test_sound = sant;

=== BEROENDEN
var Mraa = require('mraa'); de allmänna HW I/O
var MD = require("jsupm_grovemd"). GroveMD; UPM Grove motor driver
var RE = require("jsupm_rotaryencoder"). RotaryEncoder; UPM Rotary encoder

=== KONFIGURATION
var stiften = {
Batteri ansluts via Grove spänningsavdelare, på /3 inställning
batt: 1, / / analog ingång; totala batterinivå, delat med 3.

Grove "speaker" modul (kan också använda summern modul)
talare: 6, / / kan användas till olika toner med hjälp av modulerade PWM-utgång

Kvadratur pulsgivare för varje hjul (byta runt som behövs för att få rätt kodare på rätt hjul)
encoder_A1: 2, / / hjul 1, en ingång
encoder_B1: 3, / / hjul 1, ingång B
encoder_A2: 8, / / hjul 2, en ingång
encoder_B2: 9, / / hjul 2, B-ingång
encoder_A3: 4, / / hjul 3, en ingång
encoder_B3: 5, / / hjul 3, B-ingång

Motor-drivrutiner
motor_driver_bus: 0, / / buss (hårdvara I2C)
motor_driver_01_id: 15, / / I2C adress för motorer 0 och 1 (kanal 0 används inte)
motor_driver_23_id: 10 / / I2C adress för motorer 2 och 3
};
Console.log("Pins:",Pins);

=== MOTOR TEST
var motor01 = ny MD(pins.motor_driver_bus,pins.motor_driver_01_id);
var motor23 = ny MD(pins.motor_driver_bus,pins.motor_driver_23_id);

Hjälpare funktion att ange motor hastigheter och riktningar lättare
funktion set_speed(m0,m1,m2,m3) {
var abs_m0 = Math.floor(255*Math.abs(m0));
var abs_m1 = Math.floor(255*Math.abs(m1));
var abs_m2 = Math.floor(255*Math.abs(m2));
var abs_m3 = Math.floor(255*Math.abs(m3));
var dir_m0 = (m0 > 0)? MD. DIR_CW: MD. DIR_CCW;
var dir_m1 = (m1 > 0)? MD. DIR_CW: MD. DIR_CCW;
var dir_m2 = (m2 > 0)? MD. DIR_CW: MD. DIR_CCW;
var dir_m3 = (m3 > 0)? MD. DIR_CW: MD. DIR_CCW;
motor01.setMotorSpeeds(0,0);
motor01.setMotorDirections(dir_m0,dir_m1);
motor01.setMotorSpeeds(abs_m0,abs_m1);
motor23.setMotorSpeeds(0,0);
motor23.setMotorDirections(dir_m2,dir_m3);
motor23.setMotorSpeeds(abs_m2,abs_m3);
}

Motoriska test
om (test_motors) {
periodicMotorForward();
} annat {
set_speed(0,0,0,0);
}

funktion periodicMotorForward() {
Console.log ("motorer: alla framåt");
set_speed(0,1,1,1);
setTimeout(periodicMotorStop1,10000);
}

funktion periodicMotorStop1() {
Console.log ("motorer: stopp");
set_speed(0,0,0,0);
setTimeout(periodicMotorBackward,3000);
}

funktion periodicMotorBackward() {
Console.log ("motorer: bakåt");
set_speed(0,-1,-1,-1);
setTimeout(periodicMotorStop2,10000);
}

funktion periodicMotorStop2() {
Console.log ("motorer: stopp");
set_speed(0,0,0,0);
setTimeout(periodicMotorForward_1,3000);
}

Använd följande tre funktioner, tillsammans med encoder test,
för att se är kodare associerade med den korrekta motorer
funktion periodicMotorForward_1() {
Console.log ("motorer: fram MOTOR 1");
set_speed(0,1,0,0);
setTimeout(periodicMotorForward_2,10000);
}

funktion periodicMotorForward_2() {
Console.log ("motorer: fram MOTOR 2");
set_speed(0,0,1,0);
setTimeout(periodicMotorForward_3,10000);
}

funktion periodicMotorForward_3() {
Console.log ("motorer: fram MOTOR 3");
set_speed(0,0,0,1);
setTimeout(periodicMotorForward,10000);
}

=== ENCODER TEST

Läser alla kodare med jämna mellanrum och skriver ut deras nuvarande räknas
om (test_encoders) {
var encoder1 = ny RE(pins.encoder_A1,pins.encoder_B1);

var encoder2 = ny RE(pins.encoder_A2,pins.encoder_B2);
var encoder3 = ny RE(pins.encoder_A3,pins.encoder_B3);
setInterval(function() {
Console.log ("encoder1:", encoder1.position());
Console.log ("encoder2:", encoder2.position());
Console.log ("encoder3:", encoder3.position());
}, 1000);
}

=== BATTERI SENSOR TEST
var batt = nya Mraa.Aio(pins.batt);
var batt_scale = 11.93/0.8; Spänningsavdelare, /3 inställning
funktion read_batt_sensor() {
var br = batt.readFloat();
var bv = batt_scale * br;
Console.log ("raw batt behandlingen:", br);
Console.log("batt:",BV);
}

om (test_batt) {
setInterval(read_batt_sensor,1000);
}

=== LJUDTEST
var högtalare = nya Mraa.Pwm(pins.speaker);

var speaker_duty = 0,5;
var speaker_freq = 600;
var speaker_on_interval = 1000;
var speaker_off_interval = 10000;

om (test_sound) {
Speaker.period(1.0/speaker_freq);
Speaker.write(0.0);
Speaker.enable(true);
start_alarm();
} annat {
Speaker.enable(false);
}

funktion start_alarm() {
Console.log ("alarm på");
Speaker.period(1.0/speaker_freq);
Speaker.write(speaker_duty);
setTimeout(stop_alarm,speaker_on_interval);
}

funktion stop_alarm() {
Console.log ("alarm off");
Speaker.write(1.0);
setTimeout(start_alarm,speaker_off_interval);
}

Se Steg
Relaterade Ämnen

Intellekten Edison levande temperatur uppvisning

Hej där alla!Det har varit en lång tid sedan jag skrivit något här, och jag trodde den nya Intel IoT versionen skulle vara en bra idé att skapa en instructable.Så - vad är Sakernas Internet?Sakernas Internet står för "Sakernas Internet" som är e...

Intellekten Edison buller larm (Intel IoT)

IntroduktionJag har ett inbrottslarm och brandlarm, men inget sätt att veta om antingen slår om jag är i huset. I stället för att ersätta dem med "smarta" alternativ, planerar jag att bygga en apparat för att lyssna på höga ljud, då avgöra om de...

Intellekten Edison Metronome

I en värld av Arduino och andra mikro-controller är det första du gör obligatorisk "Hello World"-program. I denna värld är "Hej världen" blinkande LED. Det är hur hela började; Det var bara en blinkande lysdiod. När jag spelade med kod...

Intellekten Edison Fat Bike Tire Analyzer

Om du fett cykel, prata du om däcktrycket. Målet för många är att köra så låg ett tryck som möjligt. Jag var nyfiken hur mycket det skiljde sig vid olika tryck.Så med det, en Intel Edison och Flex sensorn användes att titta på PSI.Steg 1: delarJag an...

Intellekten Edison/Arduino temperatur uppvisning med momentan bakgrundsbelysning

Välkommen tillbaka! I detta instructable jag kommer att leda dig att göra dina egna digitala termometer med en momentan bakgrundsbelysning. Detta instructable använder delar från Intel Edison IoT Dev Kit, som var mycket generöst gett mig från Intel o...

Intellekten Edison - Initial Setup

Denna video tutorial ska show dig hur man ställer in en ny bild på intel edison samt hur man konfigurera wifi modul.Steg 1: Intel Edison - Initial SetupI denna video kommer vi att titta på hur man startar från i rutan med intel edison. Jag kommer att...

Intellekten Edison morsekod tränare

Vad du behöver:Delar:Intellekten Edison Arduino IoT12V strömförsörjning med batteribackup. Detta kan inte behövas.Grove expansionskort ansluten till Edison Arduino ombordGrove summern ansluten till port 5WiFi-anslutningProgramvara:Aktuella Yocto elle...

Intellekten Edison enkelt avstånd Sensor med Grove LED Bar indikator och Summer

Detta är min första och "egentligen" enkla projekt som jag gjorde med hjälp av Intel Edison. Detta "enkla" projekt kommer att mäta avstånd med hjälp av ultraljud sensor och LED bar kommer att visa hur långt avståndet är summern kommer...

Intellekten Edison: Hetta mätare, TMP36

Intellekten Edison baserade analoga temperatur mätaren.TMP36 kan läsa temperaturer som är -40 till 120 Celsius men mätaren visar bara temperaturer mellan + 40 till ca 100 grader Celsius.Varför?Bara för att jag kodade den för att visa endast det tempe...

Intellekten Edison driftigt bluetooth audio.

Introduktion.Jag ville ha en ny bilstereo och en Ogg Vorbis-spelare som spelade låtar i den ordning jag ville. Jag beslutade att använda de bästa funktionerna på en Intel Edison åstadkomma detta.Edison har Bluetooth HW och SW.Edison har Perl programm...

Intellekten Edison Universal Translator

Vad är detta projekt?Detta projekt bygger på David Maud Raspberry Pi Universal translator. Detta är en JavaScript-baserade lösning, som emulerar Babel Fish från Liftarens Guide till galaxen. Dessa är stegen för att göra en allmän översättare på Intel...

Intellekten Edison talar till Linkit en

Linkit en och Intel Intel Edison är cool styrelser, medan Linkit kan man inte vara lika kraftfullt som Linkit en men det är mycket enklare att använda och gör en stor Arduino alternativ. I detta instructable jag ska visa dig hur att etablera kommunik...

Intellekten Edison - Robot

Ganska länge sedan jag byggde en Arduino Robot och sedan uppgraderat att till en bättre version som var mycket snabbare, efter att ha experimenterat med Intel Edison jag beslutat att ge Arduino roboten en uppgradering och ersätta Arduino med Intel Ed...

Intellekten Edison kör Python skript

VälkommenI detta instructable jag lär dig hur du ansluter till din Intel Edison styrelse av SSH och hur du skapar och kör en grundläggande Python-skript. Så kan börja!Steg 1: Nödvändiga komponenterHårdvara:Behöver du en dator som kör Windows 7 eller...

Intellekten Edison Telepresence robot

I år var jag turen att hitta mig själv på INTEL Internet av saker Roadshow i Pune på VITS hotel. Det var den av de mest fantastiska stunderna i år och jag fick lära sig mycket. Fick se många projekt, prototyp och produkter. För turnén hade jag gjort...

Intellekten Edison AirQualitySensor

Detta projekt handlar om att använda Intel Edison som en kärna av iföljd sensorn stationen.Edison använder BlueTooth lågenergi för att skicka alla sensordata till någon app. Din smarta telefon kan prenumerera på den och läsa alla tjänster egenskaper....

Intellekten Edison Gas sensorsystem att upptäcka Biogas / gasol läckage

Jag är en av de 300 + som fått Intel Edison styrelsen och specialitet Intel sakernas Utvecklingskit som erbjuds av instructables under temat miljö & jordbruk. En av de förslag som lagts fram av mig var ett Biogas läckage upptäckt system med Intel Edi...

Intellekten Edison IoT WiFi Termostate #IntelMaker

Intellekten Edison IoT WiFi TermostateSteg 1: IntroDetta är en Intel Edison baserad termostat, WiFi IoT ansluten, som du kan ställa in önskad temperatur lokalt med en potentiometer och se detta på RGB LCD och på distans via webbsidan, åtkomst till Ed...

Intellekten Edison som höghastighetståg I/O server: Digital och Analog I/O överförs via WiFi-anslutning till PC-klienten

Detta instructable är skriven som en referens design för dem som behöver att samla sensordata och sända den över WiFi på en relativt hög hastighet. Med denna lösning uppnås enkelt priser upp till 1000 gånger per sekund. De metoder som används är ocks...