Intel Edison/Seeed/Nexus 3WD OmniRover (17 / 18 stap)

Stap 17: Load Test Software

Nu hebben we de Edison om controle van de robot te programmeren. Ik zal sommige eenvoudige test code in deze stap ontworpen om te controleren of alle hardware werkt, en om u te laten zorg ervoor dat de juiste encoder is gekoppeld aan de juiste motor kanalen, maar meer complexe programmering aan jou (en latere berichten...) zal verlaten.

I 'm gonna Node.js later gebruiken om het gemakkelijker te koppelen aan webservices en dergelijke, maar het is ook mogelijk om het gebruik van C/C++, Python, Arduino of Java als u wilt. Ik ben ook gonna toepassing MRAA en UPM, sommige simpele hardware interface bibliotheken geboden door Intel. Er zijn andere Node.js HW interfaceopties er ook, zoals cylon.js en JohnnyFive, die u wellicht wilt kijken later.

Echter, laten we dingen opgezet MRAA en UPM te gebruiken. Ten eerste, volg de instructies MRAA en UPM updaten naar de nieuwste versies. Kunt u documentatie hiervoor op de Intel site maar als je al de Edison-firmware bijgewerkt naar een redelijk recente versie dan de volgende moet grijpen de nieuwste versies van de online repos (Opmerking: Edisons zal moeten beschikken over internettoegang eerst...). Na inloggen op de Edison als root de volgende commando's:

and update
and upgrade libmraa0
and upgrade upm

Dan wilt u zet het volgende script ergens op de Edison, zeggen in "omnitest.js" in je home directory en voer met behulp van "knooppunt omnitest.js". Als alternatief kunt u laden deze code met behulp van de gratis Intel XDK (IoT editie), die maakt het bewerken/upload/run-cyclus handiger, biedt een debugger als u wilt, en ook oplossen npm module afhankelijkheden beheert (echter dit testscript opzettelijk vermijdt installatie om gemakkelijker te maken met behulp van externe modules dan UPM en MRAA). Laden van de code door de XDK ook stelt het automatisch wordt uitgevoerd bij het opstarten. Ik zal laten zien hoe dat in meer detail om later te gebruiken.

Dit script gebruiken om ervoor te zorgen dat de encoders, sensoren, motoren en luidsprekers werken met zijn allen. Kortom, het script draait de robot heen en weer en weer op zijn plaats door het uitvoeren van alle motoren toekomen, dan achteruit, vervolgens uitgevoerd elke motor op zijn beurt. Zorg ervoor dat alle drie encoders, tellen en vervolgens naar beneden in de eerste heen en weer beweging. Controleer dat wanneer elke motor op zijn beurt dat draait de juiste encoder kanaal reageert. Zoniet, wisselen rond encoder kabels of wijzigen van de pin-toewijzingen in het script. Als een van de motoren niet spinnen kan u de id's hebben omgekeerd voor de twee chauffeurs van de motor. Ik beveel de pin toewijzing in het script wijzigen in plaats van het knoeien met de bedrading. U kunt ook tweak de schalen constanten voor de spanning divider (als u het gebruikt) om te krijgen een meer nauwkeurige lezing. In feite kijken naar de ruwe lezing, kijken naar de externe spanning checker en voer vervolgens de juiste constanten in het script voor de berekening van de verhouding tussen de schalen.

Zodra deze testscript wordt uitgevoerd en het bovenstaande is allemaal geregeld, moet de hardware klaar voor meer geavanceerde codering!

------

/ * Omnirover demo.
-De maakt van motoren, leest gegevens van sensoren en stort het aan de console, proeven geluid.
*/

/ === TEST SELECTIE
var test_motors = true;
var test_batt = true;
var test_encoders = true;
var test_sound = true;

=== AFHANKELIJKHEDEN
var Mraa = require('mraa'); algemene HW I/O
var MD = require("jsupm_grovemd"). GroveMD; UPM Grove motorische stuurprogramma
var RE = require("jsupm_rotaryencoder"). RotaryEncoder; UPM Rotary encoder

=== CONFIGURATIE
var pinnen = {}
Accu aangesloten via Grove voltage divider, op /3 instellen
Batt: 1, / / analog input; totale batterijniveau, gedeeld door 3.

Grove "speaker" module (kan ook met zoemer module)
spreker: 6, / / kan worden gebruikt om de output van verschillende tonen met behulp van gemoduleerde PWM

Quadrature encoders voor elk wiel (swap rond zoals nodig om de juiste encoders op juiste wielen)
encoder_A1: 2, / / 1, een input wiel
encoder_B1: 3, / / wiel 1, B-ingang
encoder_A2: 8, / / wiel 2, een input
encoder_B2: 9, / / wiel 2, B-ingang
encoder_A3: 4, / / wiel 3, een vermogen
encoder_B3: 5, / / wiel 3, ingang B

Motor stuurprogramma 's
motor_driver_bus: 0, / / Bus (hardware I2C)
motor_driver_01_id: 15, / / I2C adres voor motoren 0 en 1 (kanaal 0 wordt niet gebruikt)
motor_driver_23_id: 10 / / I2C adres voor motoren 2 en 3
};
console.log("pins:",pins);

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

Helper functie motor snelheden en richtingen gemakkelijker instellen
functie 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);
}

Motor test
Als (test_motors) {}
periodicMotorForward();
} else {}
set_speed(0,0,0,0);
}

functie periodicMotorForward() {}
console.log ("MOTORS: alle vooruit");
set_speed(0,1,1,1);
setTimeout(periodicMotorStop1,10000);
}

functie periodicMotorStop1() {}
console.log ("MOTORS: STOP");
set_speed(0,0,0,0);
setTimeout(periodicMotorBackward,3000);
}

functie periodicMotorBackward() {}
console.log ("MOTORS: naar ACHTEREN");
set_speed(0,-1,-1,-1);
setTimeout(periodicMotorStop2,10000);
}

functie periodicMotorStop2() {}
console.log ("MOTORS: STOP");
set_speed(0,0,0,0);
setTimeout(periodicMotorForward_1,3000);
}

De volgende drie functies, gebruiken in combinatie met het coderingsprogramma test,
Controleer of zijn de encoders gekoppeld aan de juiste motoren
functie periodicMotorForward_1() {}
console.log ("MOTORS: vooruit MOTOR 1");
set_speed(0,1,0,0);
setTimeout(periodicMotorForward_2,10000);
}

functie periodicMotorForward_2() {}
console.log ("MOTORS: FORWARD MOTOR 2");
set_speed(0,0,1,0);
setTimeout(periodicMotorForward_3,10000);
}

functie periodicMotorForward_3() {}
console.log ("MOTORS: vooruit MOTOR 3");
set_speed(0,0,0,1);
setTimeout(periodicMotorForward,10000);
}

=== ENCODER TEST

Leest alle de encoders periodiek en hun huidige graven wordt afgedrukt
Als (test_encoders) {}
var encoder1 = new RE(pins.encoder_A1,pins.encoder_B1);

var encoder2 = new RE(pins.encoder_A2,pins.encoder_B2);
var encoder3 = new 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);
}

=== ACCUTEST SENSOR
var batt = nieuwe Mraa.Aio(pins.batt);
var batt_scale = 11.93/0.8; Voltage divider, /3 instellen
functie read_batt_sensor() {}
var br = batt.readFloat();
var bv = batt_scale * br;
console.log ("raw batt lezing:", br);
console.log("Batt:",bv);
}

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

=== GELUID TEST
var spreker = nieuwe Mraa.Pwm(pins.speaker);

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

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

functie start_alarm() {}
console.log ("alarm op");
Speaker.period(1.0/speaker_freq);
Speaker.write(speaker_duty);
setTimeout(stop_alarm,speaker_on_interval);
}

functie stop_alarm() {}
console.log ("alarm uitschakelen");
Speaker.write(1.0);
setTimeout(start_alarm,speaker_off_interval);
}

Gerelateerde Artikelen

Intel Edison Live Temperatuurdisplay

Intel Edison Live Temperatuurdisplay

Hallo er iedereen!Het is al een lange tijd omdat ik iets hebt gepost hier, en ik dacht dat de nieuwe Intel IoT-release zou een geweldig idee dat om een instructable maken.Dus - wat is IoT?IoT staat voor "Internet van dingen" waarvan een ontwikke
Een Absolute beginnersgids voor de Intel Edison

Een Absolute beginnersgids voor de Intel Edison

Hey daar! Onlangs ontving ik een Intel Edison board van Instructables, als een aardige gift. Als je afvraagt wat dat is, is de Intel Edison een kleine computer de grootte van een SD-kaart (dat is serieus klein), voor elektronica en computer hobbyiste
Intel Edison gebaseerde mobiele Sensor netwerk voor het Internet van dingen

Intel Edison gebaseerde mobiele Sensor netwerk voor het Internet van dingen

Inleiding en overzichtDe Intel Edison is een handige kleine computer die veel voordelen van andere maker stap combineert. Worden kan gecombineerd met breakout boards van verschillende grootte en doeleinden.In dit artikel zullen we leren welke compone
Intel Edison lawaai Alarm (Intel IoT)

Intel Edison lawaai Alarm (Intel IoT)

IntroductieIk heb een inbraakalarm en brandalarm, maar geen manier om te weten als ofwel zijn klinkende tenzij ik in het huis ben. In plaats van hen vervangen door 'slimme' alternatieven, ik ben van plan om te bouwen van een apparaat om te luisteren
Chromebook Arduino en Intel Edison gids voor Intel IoT EDI ontwikkeling op begroting

Chromebook Arduino en Intel Edison gids voor Intel IoT EDI ontwikkeling op begroting

Eerst zal ik uitleggen waarom dit Instructable is nodig omdat veel ervaren ontwikkelaars bespotten zal wanneer ze de titel zien en zal nooit het lezen omdat ze niet een open geest over dingen zoals Chromebooks hebben. Dat komt omdat velen van hen heb
Het installeren van Grove-bibliotheek voor Intel Edison

Het installeren van Grove-bibliotheek voor Intel Edison

Dit instructable leert u hoe te Grove bibliotheek installeren en uitvoeren van elementaire demo's voor de Grove startpakket plus gen 2 op het Intel Edison-platform.Het volgende materiaal is vereist voor dit instructable:(1) Intel Edison + Arduino bre
Intel Edison metronoom

Intel Edison metronoom

In de wereld van Arduino en andere micro-controllers is het eerste wat dat je doen het verplicht "Hello World" programma. In deze wereld is de "Hello World" de knipperende LED. Dat is hoe het hele ding begon; het was gewoon een knipper
Slimme aanwezigheid systeem (Intel Edison binnen)

Slimme aanwezigheid systeem (Intel Edison binnen)

Slimme aanwezigheid systeem heeft ontwikkeld op basis van RFID & Intel Edison Board voor aanwezigheid beheerstoepassing voor kantoren, scholen en instituten. Dit systeem is zeer makkelijk te gebruiken, student of werknemer zal dragen een RFID kaart t
Externe auto Monitoring en Tracking met Intel Edison

Externe auto Monitoring en Tracking met Intel Edison

Ik ben meestal uitgebreid, maar voor dit deel zal ik proberen te beknopt zijn. Dit project is:Een Intel Edison + een GPS-ontvanger + een Bluetooth OBD-II-lezer (optioneel aftermarket auto sensoren) + een auto.Voeg in sommige software en kunt u de pos
Intel® Edison Board: IoT temperatuurbewaking

Intel® Edison Board: IoT temperatuurbewaking

IoT is niet langer beperkt tot alleen de maker hobbyisten en enthousiastelingen. Het heeft de aandacht van bedrijven die willen starten van een nieuwe industriële revolutie met behulp van IoT gevangen. Van slimme werkplek tot een toename van de produ
Een telefoon gecontroleerd rover (Intel Edison + Blynk + Arduino)

Een telefoon gecontroleerd rover (Intel Edison + Blynk + Arduino)

achtergrondverhaal: (als u te lui om Lees overslaan)Het was mei (jaar 2015). Een student in zijn vorm 4 (10e klas?) kwam net thuis van school en hij aangedreven op zijn computer, als een dagelijkse routine, om te controleren op berichten op de social
Intel Edison slimme wearable baby fopspeen - deel 2

Intel Edison slimme wearable baby fopspeen - deel 2

Deze tutorial is deel 2 van de 4BaBi groep onderwerping aan de Intel IoT Londen Roadshow 2015. Hier laten we u zien hoe de bouw van een Smart Baby fopspeen gebruik van de Intel Edison bord, Seeed Grove IoT Starter Kit.Zie voor de volledige details op
Intel Edison en adresseerbare LEDs

Intel Edison en adresseerbare LEDs

Een van de eerste dingen die ik wil proberen als ik een nieuw bestuur voor ontwikkeling is om LEDs mee bezig! Ik begin met enkele eenzame LEDs en snel de voortgang naar programmeerbare LED strips en matrices.De Edison is een leuke boord vanwege zijn
Het weer-raster (Powered By Intel Edison)

Het weer-raster (Powered By Intel Edison)

De Intel Edison is een zeer interessante beest. Het beschikt over zowel een Intel-processor waarop Linux en Arduino functionaliteit (GPIO, SPI, enz.) heeft. Dit project is een beetje anders in dat het worden beide van deze functies gebruikt.In dit In