Het project gebruikt een mobiele telefoon om via bluetooth met een robot te communiceren. Ik heb altijd al een robot willen bouwen en deze via een mobiele telefoon besturen. Na een lange periode van meer dan 12 jaar nam ik de taak op me om een robot te bouwen en te bedienen. Dit is ook mijn eerste project in de Arduino Project Hub. Elektronica en robotica is een van mijn favoriete hobby's en daarom nam ik de taak op me om de robot te bouwen in deze tijd van lockdown vanwege Covid19.
De robot detecteert bluetooth-signalen die door de mobiele telefoon worden verzonden. Het gebruikt de HC-05 bluetooth-module om de commandosignalen van de mobiele telefoon te detecteren en de robot te besturen. Ik heb de ArduinoBlueControl-app gebruikt om de robot te besturen.
Het hart van de robot is de Arduino Nano. Het ontvangt de signalen van de HC-05-module via seriële communicatie en bestuurt de motoren via de L298N-motorstuurmodule voor beweging in voorwaartse, achterwaartse, linkse en rechtse richtingen.
Er moet voor worden gezorgd dat de TX- en RX-pinnen van de HC-05-module met de Arduino Nano worden verbonden. Hiervoor wordt een logische niveau-omzetter gebruikt.
De robot gebruikt de HC SR-04 ultrasone sensormodule om obstakels op zijn pad te detecteren. Bij het detecteren van een obstakel tijdens zijn voorwaartse beweging, stopt de robot. Een RGB-led wordt gebruikt om de status van de robot weer te geven.
De robot is gemonteerd in een 2-wielbasis bestaande uit twee aandrijfmotoren met reductie. De schakeling is gemonteerd op een breadboard met voeding (3,3v en 5v). De Arduino Nano kan de motoren niet rechtstreeks aansturen vanwege de veel hogere stroombehoefte voor de motoren. Daarom wordt de L298N motor driver module gebruikt om de motoren aan te drijven. De PWM-signalen van de Arduino Nano worden gebruikt om de snelheid van de motoren te regelen via de ENA- en ENB-pinnen van de L298N-motorstuurmodule.
Ik hoop dat je mijn bluetooth-gestuurde robot voor het vermijden van obstakels leuk vond. Deze robot kan worden aangepast en uitgebreid voor gebruik in domotica, voertuigen voor het vermijden van obstakels voor de werkvloer enz. en nog veel meer toepassingen.
Code
- Bluetooth-gestuurde Robot_Arduino-code.
Bluetooth-gestuurde Robot_Arduino-code.C/C++
/* Bluetooth-gestuurde robot voor het vermijden van obstakels Voorbereid door:Alok Talukdar Datum:09.05.2020*/#include // Om elke pin op Arduino te gebruiken voor seriële communicatie.// Definieer de digitale pinnen voor de L298-motor regelmodule.#define IN1 5 // voor rechter motor#define IN2 4 // voor rechter motor#define IN3 3 // voor linker motor#define IN4 2 // voor linker motor#define ENA 9 // Activeer A voor PWM-besturing van rechtermotor#define ENB 10 // Schakel B in voor PWM-besturing van linkermotor// Definieer de digitale pinnen voor RGB LED-besturing#definieer rodeLED 8#definieer groeneLED A0#definieer blauweLED 11// Stel de HC-SR04 Ultrasone sensormoduleconst in int trigPin =6; // TRIG-pin aangesloten op pin D6 van Arduino Nanoconst int echoPin =7; // ECHO-pin aangesloten op pin D7 van Arduino Nanoint i,j,k =0;floatduur,afstand; // variabelen voor afstandsmeting// Stel de HC05 Bluetooth-module inSoftwareSerial mySerial (12,13); // (12 --> RX, 13 --> TX) Stringgegevens; // variabelen voor Bluetooth controlint btVal;void setup() {// plaats hier uw setup-code om een keer uit te voeren:pinMode(trigPin,OUTPUT); // Configureer pin D6 om ultrasone pulsen te verzenden pinMode (echoPin, INPUT); // Configureer pin D7 om ultrasone pulsen te ontvangen mySerial.begin (9600); // Configureer de software serieel op baudrate 9600 pinMode (IN1, OUTPUT); // Configureer IN1 - IN4 als OUTPUT om motoren pinMode (IN2, OUTPUT) te besturen; pinMode (IN3, UITGANG); pinMode (IN4, UITGANG); pinMode (ENA, UITGANG); pinMode (ENB, UITGANG); pinMode (rode LED, UITGANG); pinMode (blauwe LED, UITGANG); pinMode (groene LED, UITGANG); digitalWrite (IN1, LAAG); // Configureer de status van de IN1 - IN4 als LOW digitalWrite (IN2,LOW); digitalWrite (IN3, LAAG); digitalWrite (IN4, LAAG); analoogWrite(rodeLED,255); // Schakel de LED's uit. RGB LED is een veelvoorkomend anodetype. digitalWrite (blauwLED, HOOG); digitalWrite(greenLED,HIGH);}void loop(){ // plaats hier je hoofdcode om herhaaldelijk uit te voeren:while (mySerial.available()) { data =mySerial.readStringUntil('\n'); } btVal =(data.toInt()); switch (btVal) { geval 1:forward(); digitalWrite (groene LED, LAAG); analoogWrite(rodeLED,255); digitalWrite (blauwLED, HOOG); dist(); pauze; geval 2:omgekeerd(); digitalWrite (groene LED, HOOG); analoogWrite(rodeLED,255); digitalWrite (blauw LED, LAAG); pauze; geval 3:links(); pauze; geval 4:rechts(); pauze; geval 5:stoprobot(); digitalWrite (groene LED, HOOG); analoogWrite(rodeLED,0); digitalWrite (blauwLED, HOOG); pauze; standaard:digitalWrite (groene LED, HOOG); analoogWrite(rodeLED,255); digitalWrite (blauwLED, HOOG); pauze; } if (mySerial.available() <0) { //Serial.println("Geen Bluetooth-gegevens"); }} // declaraties van motorbesturingsfuncties void forward() { for(i=0;i<=100;i++) { analogWrite(ENA,i); analoogWrite(ENB,i); digitalWrite(IN1,HOOG); digitalWrite (IN2, LAAG); digitalWrite (IN3, LAAG); digitalWrite (IN4, HOOG); } } void reverse() { for(j=0;j<=100;j++) { analogWrite(ENA,j); analoogWrite(ENB,j); digitalWrite (IN1, LAAG); digitalWrite(IN2,HOOG); digitalWrite (IN3, HOOG); digitalWrite (IN4, LAAG); } } void left() { analogWrite(ENA,127); analoogWrite(ENB,0); digitalWrite(IN1,HOOG); digitalWrite (IN2, LAAG); digitalWrite (IN3, HOOG); digitalWrite (IN4, HOOG); } void right() { analogWrite(ENA,0); analoogWrite(ENB,127); digitalWrite(IN1,HOOG); digitalWrite(IN2,HOOG); digitalWrite (IN3, LAAG); digitalWrite (IN4, HOOG); } void stoprobot() { analogWrite(ENA,0); analoogWrite(ENB,0); digitalWrite (IN1, LAAG); digitalWrite (IN2, LAAG); digitalWrite (IN3, LAAG); digitalWrite (IN4, LAAG); } void dist() {digitalWrite(trigPin,LOW); // om een puls te sturen via de TRIG-pin van HC-SR04 delayMicroseconds (2); digitalWrite (trigPin, HOOG); vertraging Microseconden (10); digitalWrite (trigPin, LAAG); duur =pulseIn(echoPin,HIGH); // lees de duur van de pulsafstand =(duur*0.0343)/2; // meet de afstand in cms. Geluidssnelheid is 340 m/s of 0,0343 cm/us als (afstand <20) // als afstand <20 cm is, STOP robot { stoprobot(); digitalWrite (groene LED, HOOG); analoogWrite(rodeLED,0); digitalWrite (blauwLED, HOOG); } vertraging (1000); }
Schema's
Schakelschema van de robot.