2WD stem gecontroleerde Robot met Arduino en BitVoicer Server (5 / 7 stap)

Stap 5: Het uploaden van de Code naar de Arduino

In deze stap hebt u de onderstaande code uploaden naar de Arduino. U kunt ook de Arduino schets downloaden via de link onder de code. Vergeet niet dat code om naar te verzenden de Arduino u de schakelaar op de Sparkfun schild naar de DLINE positie zet moet zoals beschreven in stap 3. Voordat u de code uploaden, moet u goed de BitVoicer Server en de bibliotheken Pololu motor stuurprogramma installeren in de Arduino IDE (een .zip bibliotheek importeren).

 #include <BVSP.h>#include <BVSMic.h>#include <DualMC33926MotorShield.h>// Defines the Arduino pins that will be used to control // LEDs and capture audio #define BVS_RUNNING 2 #define BVS_SRE 5 #define BVS_DATA_FWD 3 #define BVS_ACT_PERIOD 6 #define BVSM_AUDIO_INPUT 3// Defines the constants that will be passed as parameters to // the BVSP.begin function const unsigned long STATUS_REQUEST_INTERVAL = 2000; const unsigned long STATUS_REQUEST_TIMEOUT = 1000;// Defines the size of the mic buffer const int MIC_BUFFER_SIZE = 64;// Initializes a new global instance of the BVSP class BVSP bvsp = BVSP();// Initializes a new global instance of the BVSMic class BVSMic bvsm = BVSMic();// Initializes a new global instance of the // DualMC33926MotorShield class DualMC33926MotorShield ms = DualMC33926MotorShield();// Creates a buffer that will be used to read recorded samples // from the BVSMic class byte micBuffer[MIC_BUFFER_SIZE];// Creates a global variable that indicates whether the // Arduino is connected to BitVoicer Server boolean connected = false;// Defines some constants for the motor settings const int SPEED_STOP = 0; const int SPEED_SLOW = 100; const int SPEED_NORMAL = 250; const int SPEED_FAST = 400; const int DIRECTION_FRONT = -1; const int DIRECTION_BACK = 1;// Declares a global variables to hold the current motor speed. // The default is SPEED_NORMAL, but there are voice // commands that change this setting. int motorSpeed = SPEED_NORMAL;// Stores the command duration in milliseconds unsigned long cmdDuration = 0;// Stores the time the command started running unsigned long cmdStartTime = 0;// Stores whether a command is running or not bool cmdRunning = false;// Stores the last MOVE_FORWARD command. This variable // is used only for the COME_BACK command. byte lastFwdCmd = 0;// Defines some constants for command names/values // Just to make the code more readable const byte CMD_STOP = 0; const byte CMD_MOVE_FORWARD = 1; const byte CMD_MOVE_FORWARD_1_CM = 2; const byte CMD_MOVE_FORWARD_2_CM = 3; const byte CMD_MOVE_FORWARD_5_CM = 4; const byte CMD_MOVE_FORWARD_10_CM = 5; const byte CMD_MOVE_FORWARD_25_CM = 6; const byte CMD_MOVE_FORWARD_50_CM = 7; const byte CMD_MOVE_FORWARD_1_M = 8; const byte CMD_MOVE_BACKWARD = 9; const byte CMD_MOVE_BACKWARD_1_CM = 10; const byte CMD_MOVE_BACKWARD_2_CM = 11; const byte CMD_MOVE_BACKWARD_5_CM = 12; const byte CMD_MOVE_BACKWARD_10_CM = 13; const byte CMD_MOVE_BACKWARD_25_CM = 14; const byte CMD_MOVE_BACKWARD_50_CM = 15; const byte CMD_MOVE_BACKWARD_1_M = 16; const byte CMD_TURN_AROUND = 17; const byte CMD_TURN_AROUND_RIGHT = 18; const byte CMD_TURN_AROUND_LEFT = 19; const byte CMD_DO_360 = 20; const byte CMD_TURN_RIGHT = 21; const byte CMD_TURN_RIGHT_10 = 22; const byte CMD_TURN_RIGHT_25 = 23; const byte CMD_TURN_RIGHT_45 = 24; const byte CMD_TURN_LEFT = 25; const byte CMD_TURN_LEFT_10 = 26; const byte CMD_TURN_LEFT_25 = 27; const byte CMD_TURN_LEFT_45 = 28; const byte CMD_DO_CIRCLE = 29; const byte CMD_COME_BACK = 30; const byte CMD_MOVE_FORWARD_2_M = 31; const byte CMD_MOVE_FORWARD_3_M = 32; const byte CMD_MOVE_BACKWARD_2_M = 33; const byte CMD_MOVE_BACKWARD_3_M = 34; const byte CMD_SET_SPEED_SLOW = 35; const byte CMD_SET_SPEED_NORMAL = 36; const byte CMD_SET_SPEED_FAST = 37; const byte CMD_TURN_LEFT_45_BACKWARD = 38; const byte CMD_TURN_RIGHT_45_BACKWARD = 39;void setup() { // Starts serial communication at 115200 bps Serial.begin(115200); // Sets the Arduino pin modes pinMode(BVS_RUNNING, OUTPUT); pinMode(BVS_SRE, OUTPUT); pinMode(BVS_DATA_FWD, OUTPUT); pinMode(BVS_ACT_PERIOD, OUTPUT); AllLEDsOff(); // Sets the Arduino serial port that will be used for // communication, how long it will take before a status request // times out and how often status requests should be sent to // BitVoicer Server bvsp.begin(Serial, STATUS_REQUEST_TIMEOUT, STATUS_REQUEST_INTERVAL); // Sets the function that will handle the frameReceived // event bvsp.frameReceived = BVSP_frameReceived; // Prepares the BVSMic class timer bvsm.begin(); // Prepares the motor shield class (pins and timer1) ms.init(); }void loop() { // If it is not connected to the server, opens a TCP/IP // connection, sets connected to true and resets the BVSP // class if (!connected) { Connect(Serial); connected = true; bvsp.reset(); } // Checks if the status request interval has elapsed and if it // has, sends a status request to BitVoicer Server bvsp.keepAlive(); // Checks if there is data available at the serial port buffer // and processes its content according to the specifications // of the BitVoicer Server Protocol bvsp.receive(); // Gets the respective status from the BVSP class and sets // the LEDs on or off digitalWrite(BVS_RUNNING, bvsp.isBVSRunning()); digitalWrite(BVS_DATA_FWD, bvsp.isDataFwdRunning()); // Checks if there is a SRE assigned to the Arduino if (bvsp.isSREAvailable()) { // Turns on the SRE available LED digitalWrite(BVS_SRE, HIGH); // If the BVSMic class is not recording, sets up the audio // input and starts recording if (!bvsm.isRecording) { bvsm.setAudioInput(BVSM_AUDIO_INPUT, EXTERNAL); bvsm.startRecording(); } // Checks if the BVSMic class has available samples if (bvsm.available) { // Makes sure the inbound mode is STREAM_MODE before // transmitting the stream if (bvsp.inboundMode == FRAMED_MODE) bvsp.setInboundMode(STREAM_MODE); // Reads the audio samples from the BVSMic class int bytesRead = bvsm.read(micBuffer, MIC_BUFFER_SIZE); // Sends the audio stream to BitVoicer Server bvsp.sendStream(micBuffer, bytesRead); } } else { // There is no SRE available // Turns off the SRE and ACT_PERIOD LEDs digitalWrite(BVS_SRE, LOW); digitalWrite(BVS_ACT_PERIOD, LOW); // If the BVSMic class is recording, stops it if (bvsm.isRecording) bvsm.stopRecording(); } // If the status has timed out, the connection is considered // lost if (bvsp.hasStatusTimedOut()) { // If the BVSMic is recording, stops it if (bvsm.isRecording) bvsm.stopRecording(); // Closes the TCP/IP connection Disconnect(Serial); AllLEDsOff(); connected = false; } // If a command is running, checks if its duration has // expired. If it has, stop the motors. if (cmdRunning) if (millis() - cmdStartTime >= cmdDuration) RunCommand(CMD_STOP); }// Handles the frameReceived event void BVSP_frameReceived(byte dataType, int payloadSize) { // Performs the appropriate actions based on the frame // data type. If the data type is byte, it is a command. // If the data type is int, changes the activated // period LED. switch (dataType) { case DATA_TYPE_BYTE: RunCommand(bvsp.getReceivedByte()); break; case DATA_TYPE_INT16: digitalWrite(BVS_ACT_PERIOD, bvsp.getReceivedInt16()); break; } }// Runs the command received from the server void RunCommand(byte cmd) { switch (cmd) { case CMD_STOP: ms.setSpeeds(SPEED_STOP, SPEED_STOP); cmdRunning = false; return; case CMD_MOVE_FORWARD: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 60000; break; case CMD_MOVE_FORWARD_1_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 23; break; case CMD_MOVE_FORWARD_2_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 47; break; case CMD_MOVE_FORWARD_5_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 117; break; case CMD_MOVE_FORWARD_10_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 234; break; case CMD_MOVE_FORWARD_25_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 468; break; case CMD_MOVE_FORWARD_50_CM: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 1170; break; case CMD_MOVE_FORWARD_1_M: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 2339; break; case CMD_MOVE_FORWARD_2_M: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 4678; break; case CMD_MOVE_FORWARD_3_M: lastFwdCmd = cmd; ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_FRONT); cmdDuration = 7018; break; case CMD_MOVE_BACKWARD: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 60000; break; case CMD_MOVE_BACKWARD_1_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 23; break; case CMD_MOVE_BACKWARD_2_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 47; break; case CMD_MOVE_BACKWARD_5_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 117; break; case CMD_MOVE_BACKWARD_10_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 234; break; case CMD_MOVE_BACKWARD_25_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 468; break; case CMD_MOVE_BACKWARD_50_CM: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 1170; break; case CMD_MOVE_BACKWARD_1_M: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 2339; break; case CMD_MOVE_BACKWARD_2_M: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 4678; break; case CMD_MOVE_BACKWARD_3_M: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_BACK); cmdDuration = 7017; break; case CMD_TURN_AROUND: ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_BACK); cmdDuration = 540; break; case CMD_TURN_AROUND_RIGHT: ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_BACK); cmdDuration = 540; break; case CMD_TURN_AROUND_LEFT: ms.setSpeeds( motorSpeed * DIRECTION_BACK, motorSpeed * DIRECTION_FRONT); cmdDuration = 540; break; case CMD_DO_360: ms.setSpeeds( motorSpeed * DIRECTION_FRONT, motorSpeed * DIRECTION_BACK); cmdDuration = 1065; break; case CMD_TURN_RIGHT: ms.setSpeeds(motorSpeed * DIRECTION_FRONT, 0); cmdDuration = 503; break; case CMD_TURN_RIGHT_10: ms.setSpeeds(motorSpeed * DIRECTION_FRONT, 0); cmdDuration = 56; break; case CMD_TURN_RIGHT_25: ms.setSpeeds(motorSpeed * DIRECTION_FRONT, 0); cmdDuration = 140; break; case CMD_TURN_RIGHT_45: ms.setSpeeds(motorSpeed * DIRECTION_FRONT, 0); cmdDuration = 252; break; case CMD_TURN_LEFT: ms.setSpeeds(0, motorSpeed * DIRECTION_FRONT); cmdDuration = 503; break; case CMD_TURN_LEFT_10: ms.setSpeeds(0, motorSpeed * DIRECTION_FRONT); cmdDuration = 56; break; case CMD_TURN_LEFT_25: ms.setSpeeds(0, motorSpeed * DIRECTION_FRONT); cmdDuration = 140; break; case CMD_TURN_LEFT_45: ms.setSpeeds(0, motorSpeed * DIRECTION_FRONT); cmdDuration = 252; break; case CMD_DO_CIRCLE: ms.setSpeeds( SPEED_NORMAL * DIRECTION_FRONT, SPEED_NORMAL * DIRECTION_FRONT * 0.60); cmdDuration = 4587; break; case CMD_COME_BACK: RunCommand(lastFwdCmd); return; case CMD_SET_SPEED_SLOW: motorSpeed = SPEED_SLOW; return; case CMD_SET_SPEED_NORMAL: motorSpeed = SPEED_NORMAL; return; case CMD_SET_SPEED_FAST: motorSpeed = SPEED_FAST; return; case CMD_TURN_LEFT_45_BACKWARD: ms.setSpeeds(motorSpeed * DIRECTION_BACK, 0); cmdDuration = 252; break; case CMD_TURN_RIGHT_45_BACKWARD: ms.setSpeeds(0, motorSpeed * DIRECTION_BACK); cmdDuration = 252; break; } // Sets the command start time cmdStartTime = millis(); // Sets cmdRunning to true cmdRunning = true; }// Opens a TCP/IP connection with the BitVoicer Server void Connect(HardwareSerial &serialPort) { serialPort.print("$$$"); delay(500); // Use the IP address of the server and the TCP port set // in the server properties serialPort.println("open 192.168.0.11 4194"); delay(1000); serialPort.println("exit"); delay(500); }// Closes the TCP/IP connection with the BitVoicer Server void Disconnect(HardwareSerial &serialPort) { serialPort.print("$$$"); delay(500); serialPort.println("close"); delay(1000); serialPort.println("exit"); delay(500); }// Turns all LEDs off void AllLEDsOff() { digitalWrite(BVS_RUNNING, LOW); digitalWrite(BVS_SRE, LOW); digitalWrite(BVS_DATA_FWD, LOW); digitalWrite(BVS_ACT_PERIOD, LOW); } 

BVS_Demo3.Ino

Sommige delen van deze schets zijn vergelijkbaar met onderdelen die heb ik in een van mijn vorige Instructables en behandelt de communicatie met de Server van de BitVoicer (BVSP en BVSMic klassen gebruikt). In dit Instructable, zal ik blijf bij de uitleg van de nieuwe onderdelen van de schets. Als u meer informatie over het gebruik van de BVSP en de BVSMic-klassen wilt, stel ik je verwijzen naar de Instructable die ik hierboven vermeld.

  • -Constanten zijn verklaring: aan het begin van de schets, ik verklaar een reeks constanten die in de code wordt gebruikt. De groep-constanten met motor instellingen definieert de standaard motor snelheden en twee richting-constanten zijn. De Pololu motor-stuurprogrammabibliotheek accepteert waarden van -400 tot +400 voor de motorsnelheid waarin nul "af" betekent. Negatieve waarden geven omgekeerde rotatie of, als u de motor draden zoals ik, hebben omgekeerd toekomen rotatie. De groep-constanten met opdracht waarden verwijst naar de opdrachten die zullen worden verzonden vanuit BitVoicer Server. In deze schets ik slechts 40 basisopdrachten van byte type zijn gedefinieerd, maar meer complexe bewegingen kunnen worden uitgevoerd voor het combineren van deze opdrachten.
  • Uitvoering controle variabelen: vijf variabelen worden gedefinieerd in het begin van de code om de uitvoering van opdrachten (motorSpeed, cmdDuration, cmdStartTime, cmdRunning e lastFwdCmd) te controleren. De motorSpeed variabele bevat de huidige snelheid van de motor. Deze variabele wordt bijgewerkt met een van de standaardwaarden die zijn gedefinieerd door de constanten van de snelheid als de Arduino ontvangt een opdracht van de BitVoicer Server bij te werken van de motor snelheden. De variabele cmdDuration bevat de totale duur van de huidige opdracht. Deze variabele wordt vergeleken met de cmdStartTime variabele in alle herhalingen van de lus functie als cmdRunning geldt. Als de tijd van de uitvoering van de opdracht is verlopen, wordt de OpdrachtUitvoeren (RunCommand) -functie opgeroepen om te stoppen met de motoren. De variabele lastFwdCmd bevat de laatste opdracht "go/Verplaats vooruit". Deze variabele wordt gebruikt om te weten van de laatste reisde afstand, dus de "come back" opdracht kan worden uitgevoerd. Merk op dat om dit commando te gebruiken moet u eerst vertellen de robot om te draaien.
  • WiFi-verbinding: aan het einde van de schets ik twee functies te verbinden en loskoppelen van de BitVoicer Server (verbinding maken en verbreken van de verbinding) te definiëren. Deze functies de Microchip WiFi module gestoken opdrachtmodus, open of sluiten van een TCP/IP verbinding en terugkeren van de module in data-modus. Binnen de lus functie, als de variabele aangesloten niet waar is, ik de Connect functie aanroepen. Als de klasse BVSP rapporteert dat de status van de server is verlopen, met andere woorden, geen antwoord heeft ontvangen voor de laatste status aanvraag, ik neem aan dat de verbinding verloren is gegaan en ik roep de functie verbinding verbreken . Dit zal dwingen een nieuwe verbindingspoging in de volgende iteratie van de lus.
  • OpdrachtUitvoeren (RunCommand) functie: deze functie wordt aangeroepen telkens wanneer een opdracht wordt ontvangen van de BitVoicer Server. Duurt een byte -waarde die overeenkomt met een van de fundamentele opdrachten die zijn gedefinieerd door de constanten aan het begin van de schets. Elke fundamentele opdracht wordt geïdentificeerd in de switch zodat de passende motor snelheden kunnen worden ingesteld en de duur van de opdracht. Aan het einde van de functie, de cmdRunning -variabele is ingesteld op true en de tijd die is geretourneerd door de functie millis wordt opgeslagen in de variabele cmdStartTime . Hierdoor is de Arduino aan controle op de uitvoering van de opdracht zoals hierboven beschreven. De tijd, in milliseconden, voor elke opdracht werden verkregen, zoals beschreven in de vorige stap.

Gerelateerde Artikelen

Spraakherkenning met Arduino en BitVoicer Server

Spraakherkenning met Arduino en BitVoicer Server

In dit Instructable ga ik laten zien hoe een Arduino board en BitVoicer Server gebruiken om te controleren enkele LED's met spraakopdrachten. Ik zal met behulp van de Arduino Micro in dit Instructable, maar u kunt elke Arduino board bij de hand hebt.
Arduino stem gecontroleerde Robot met RGB-LED

Arduino stem gecontroleerde Robot met RGB-LED

Hoi is dit mijn eerste project in instructable. Dit is een arduino robot gecontroleerd in drie ways.you kunt bepalen met behulp van spraak, knopbesturingselement en richtingscontrole met behulp van android apps. We kunnen ook een RGB led met Stembedi
Externe gecontroleerde robot met Arduino en T.V. afstandsbediening

Externe gecontroleerde robot met Arduino en T.V. afstandsbediening

Deze externe gecontroleerde auto kan worden verplaatst met behulp van vrijwel elk soort ras zoals TV, AC enz.Het maakt gebruik van het feit dat de afstandsbediening IR(infrared) uitzendt.Deze eigenschap is gemaakt met behulp van een IR-ontvanger, die
Gebaar gecontroleerd robot met behulp van Arduino

Gebaar gecontroleerd robot met behulp van Arduino

Dit gebaar gecontroleerde robot gebruik Arduino, ADXL335 versnellingsmeter en RF transmitter-receiver paar.Wij zullen de hele robot verdeel in 3 delen de zender, de ontvanger en de robot.De verschillende gebaren die zijn toegewezen aan de richting va
Stem gecontroleerde Switch with Arduino

Stem gecontroleerde Switch with Arduino

Dit is voor de eerste keer ben het uploaden van mijn project in Inscrutable. Dus als jullie ieder domme vinden negeren fouten gelieve het.Dus, over mijn project, dit is over de stem bediend lichten geïnspireerd door IRON-MAN film. JARVIS door Michel
Basic Line Na Robot met Arduino

Basic Line Na Robot met Arduino

09/07/2015Een paar jaar geleden dat we aanvankelijk gepost deze elementaire regel volgende Robot met Arduino tutorial, en lijkt zo veel mensen vonden het nuttig dat we een update die loopt van de huidige Arduino Bibliotheken, moet post bevat de nieuw
Externe gecontroleerde robot met mobiele video-opname

Externe gecontroleerde robot met mobiele video-opname

Hey jongens! Dit is mijn eerste instructable... vandaag iam gaanu leert om een extern gecontroleerde robot met camera (mobiele video-opname)Dus als volgt...STAP-1:benodigde materialen:1) 3 gericht motoren (twee voor behandeling en andere voor cam ver
Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Hoe maak je een mobiele telefoon en Computer gecontroleerd 3D gedrukte Robot met Arduino - IoBot.

Als u op zoek bent naar een manier om een Arduino gebaseerde apparaten te controleren, zal deze instructie u tonen hoe om het te doen door het bouwen van eenvoudige robot.De IoBot kan worden gecontroleerd door mobiel en computer toepassing via LAN of
Stem gecontroleerde Robot

Stem gecontroleerde Robot

Nu kunt u uw robot met behulp van uw smart phone gewoon zeggen opdrachten zoals vooruit, zet terug, enz...Stap 1: Essentials:U zult de volgende items, of een gelijkwaardige vereisen.1) 1sheeld bestuur en android smart telefoon / Tablet.2) een Arduino
Obstakel te vermijden Robot met arduino

Obstakel te vermijden Robot met arduino

OBSTAKEL - VERMIJDEN ROBOTEen obstakel te vermijden ROBOT is een die kan een obstakel te vermijden met behulp van ultrasone sensor en navigeren in haar eigen pad. Met een breadboard gekoppeld aan de robot kunt u plezier spelen binnen een korte period
Maken van een Robot met Arduino voor Beginners

Maken van een Robot met Arduino voor Beginners

Stap 1: Materialen die nodig zijn Tamiya Track en wiel instellen vergadering ($7.95 op Pololu)Tamiya 70168 dubbele versnellingsbak Kit ($9.25 op Pololu)L298N Dual H Bridge ($3.65 bij Amazon en misschien wel veel lager bij ebay)4AA batterijhouder (geb
Real Time ' Face-Tracking Robot met Arduino en Matlab

Real Time ' Face-Tracking Robot met Arduino en Matlab

Real time ' face-tracking verwijst naar de taak van het opsporen van menselijke gezichten in een video-stream en bijhouden van de gedetecteerde of herkende gezichten. Er zijn tegenwoordig veel echte wereld toepassingen van gezichtsherkenning en ander
Telefoon gecontroleerde Robot met LinkitONE

Telefoon gecontroleerde Robot met LinkitONE

Ooit afgevraagd hoe robots worden gemaakt? Wilde maken van een cool project? Heb je een bord Linkit? Dan bent u aan het juiste adres!Hier zal ik het maken van een robot met LinkitONE met een aantal lokale robotic delen en servomotoren.Laten we beginn
StorageBot - stem gecontroleerde robotic delen finder

StorageBot - stem gecontroleerde robotic delen finder

VideoIntroductieIk heb de StorageBot om te helpen bij het oplossen van een probleem ervaren door de meeste Makers. Na vele jaren sparen duizenden onderdelen opgeslagen in magazijnbakken, begon ik te gaan gek op zoek naar onderdelen verspreid tussen z