Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Radio controlled robot and control panel for obstacle course based on arduino electronics

Notifications You must be signed in to change notification settings

iostwestcoast/radio_bot

Repository files navigation

Radio Bot

Remote controlled bot based on an Arduino using a radio module

The final look of the bot:

photo_2023-06-13_16-50-49

The final view of the control panel:

photo_2023-06-13_16-51-03

1.mp4

Сomponents:

  • NRF

  • NRF+

  • Motor Shield

  • Arduino Leonardo/Amperka Iskra Neo

  • Arduino Pro Micro

  • x2 18650

  • x2 DC motor

  • x2 joystick

  • RGB LED strip

  • potentiometer

  • x2 bradboard

  • powerbank

  • vape mod

  • servo 360

The bot was created to pass a certain obstacle course and unfortunately for technical reasons did not meet expectations

In the end, 1/4 of the obstacle was passed and it took 9.45 minutes to complete the entire course

image

  1. Control panel code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(8, 10);
int data[3];

#define PIN_VRX A2
#define PIN_VRY A3

void setup() {
  Serial.begin(9600);

  radio.begin();
  radio.setChannel(1);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);
  radio.openWritingPipe(0x2234567890LL);
  radio.stopListening();

  pinMode(A1, INPUT);
}

void loop() {
  int potval = analogRead(A1);

  radio.write(&data, sizeof(data));
  delay(50);

  Serial.println(potval);
     
  int valX = analogRead(PIN_VRX);
  int valY = analogRead(PIN_VRY);

  Serial.print("X = ");
  Serial.println(analogRead(PIN_VRX));

  Serial.print("Y = ");
  Serial.println(analogRead(PIN_VRY));

  data[0] = potval;
  data[1] = valX;
  data[2] = valY;
}
  1. Bot code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

Servo servo;

#define servoPin 11
int data[3];

RF24 radio(9, 10);

#define SPEED_1      5 
#define DIR_1        4
 
#define SPEED_2      6
#define DIR_2        7

#define LED_PIN 3
#define LED_NUM 3
#include "FastLED.h"
CRGB leds[LED_NUM];
byte counter;

void setup(){
  Serial.begin(9600);

  radio.begin();
  radio.setChannel(1);
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_HIGH);
  radio.openReadingPipe(0, 0x2234567890LL);
  radio.startListening();

  servo.attach(servoPin);

  for (int i = 4; i < 8; i++) {     
  pinMode(i, OUTPUT);

  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_NUM);
  FastLED.setBrightness(200);
  }
}

void loop(){
  if (radio.available()){
    radio.read(&data, sizeof(data));
    Serial.println(String(data[0]) + "; " + String(data[1]) + "; " + String(data[2]));
  
  int potVal = data[0];
  servo.write(map(potVal, 0, 1023, 0, 180));

  delay(50);
  
  int valX = data[1];
  int valY = data[2];

  if (valX < 112) {
   digitalWrite(DIR_1, LOW);
   analogWrite(SPEED_1, 255);

   digitalWrite(DIR_2, HIGH);
   analogWrite(SPEED_2, 255);
  }
  else if (valX > 912) {
   digitalWrite(DIR_1, HIGH);
   analogWrite(SPEED_1, 255);

   digitalWrite(DIR_2, LOW);
   analogWrite(SPEED_2, 255);
  }
  else if (valY < 112) {
   digitalWrite(DIR_1, LOW);
   analogWrite(SPEED_1, 255);

   digitalWrite(DIR_2, LOW);
   analogWrite(SPEED_2, 255);
  }
  else if (valY > 912) {
   digitalWrite(DIR_1, HIGH);
   analogWrite(SPEED_1, 255);

   digitalWrite(DIR_2, HIGH);
   analogWrite(SPEED_2, 255);
  }
  
  else if (112 < valX < 912){
   digitalWrite(DIR_1, HIGH);
   analogWrite(SPEED_1, 0);

   digitalWrite(DIR_2, HIGH);
   analogWrite(SPEED_2, 0);
  }
  else if (112 < valY < 912){
   digitalWrite(DIR_1, HIGH);
   analogWrite(SPEED_1, 0);

   digitalWrite(DIR_2, HIGH);
   analogWrite(SPEED_2, 0);
  }
  }

  for (int i = 0; i < LED_NUM; i++) {
    leds[i].setHue(counter + i * 255 / LED_NUM);
  }
  counter++;
  FastLED.show();
}

About

Radio controlled robot and control panel for obstacle course based on arduino electronics

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages