• Models
  • Contests
  • Slicer
  • Login
  • Start Here
    thingiverse-iconprintables-iconcults3d-iconmakerworld-iconmyminifactory-icon

    3D GO

    3D ModelsContestsCollectionsSaved ModelsOn a mobile device?

3D GO

Privacy Policy
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 1
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 2
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 3
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 4
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 5
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 6
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 7
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 8
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 9
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 10
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 11
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 12
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 13
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 14
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 15
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 16
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 17
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 18
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 19
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 20
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 21
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 22
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Image 23
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 1
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 2
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 3
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 4
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 5
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 6
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 7
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 8
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 9
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 10
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 11
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 12
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 13
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 14
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 15
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 16
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 17
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 18
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 19
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 20
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 21
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 22
"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled 3D Printer File Thumbnail 23

"Neurobot 3" - Arduino Educational Robotics Kit, Autonomous / RC controlled

NikolayGrigoryev avatarNikolayGrigoryev

April 1, 2016

thingiverse-icon
DescriptionCommentsTags

Description

Hello world! :)

My name is Nick Grigoryev, I am a professional engineer, and I love to make robots!

I created this constructor kit to let children to learn the Code of Arduino, to prepare the engineers of tomorrow.

They can learn IR distance sensing, LED blinking (to blink the car lights is much more interesting, than one LED), servo control, GPS signal acquiring and processing, LCD screen, piezoelectric buzzers, inertial measurement units, etc.

This is a third version of my "Neurobot 1" (http://www.thingiverse.com/thing:1378603) with LCD screen, 3 radars and Arduino Mega, but without Raspberry Pi for easier assembly and programming.

It is a robot, which can run in autonomous mode or to be RC controlled.
It runs Arduino Mega as a "brain" and three IR sensors (distance 10-90 cm) as his "eyes".
You can run very interesting programs with "Adafruit Ultimate GPS breakout" sensor, RTC (real time clock) etc., installed on the breadboard.

To assemble it, you will need to 3D-print:

Line_11 - 3 pieces
Line_7 - 1 pieces
SwitchHolder_Line7 - 1 piece
Plate_5x11 - 1 piece
Plate_7x11 - 1 piece
Servo_holder - 4 pieces
Servo_holder_vertical - 3 pieces
Proximity_sensor_front - 3 pieces
Proximity_sensor_back - 3 pieces
Knob - 30 pieces
Line_3_13_LEDs_front - 2 pieces
Line_1_13_LEDs_90_deg - 2 pieces
LCD_Holder_front - 1 piece
LCD_Holder_back - 1 piece
Angle_1x1_135_degrees - 2 pieces
Spacer_26mm - 34 pieces

And you will need to buy:

Arduino Mega or Uno - 1 piece
Sainsmart Servo Shield for Mega or Uno - 1 piece
LiPo battery - 1 piece
LiPo checker - 1 piece (optional)
6 volts UBEC - 1 piece
Sharp IR sensor - 3 pieces
1/4 inch threaded rod - 40 inches, and cut them in pieces:
...A) 106 mm - 4 pieces
...B) 98.5 mm - 2 pieces
...C) 91 mm - 2 pieces
1/4 inch nuts - 30 pieces
6/32 bolts 1-1/4 length - 56 pieces
6/32 nuts - 56 pieces
LEDs - 26 pieces
220 Ohm resistors - 8 pieces
Servo extension cable 30 cm - 5 pieces

All the links to buy them, please see here: http://www.thingiverse.com/thing:1378603
(I want to keep one updated list of things to buy, to keep the order).

If you want, you can add RC control (I usually install Futaba Rx and Tx, but you can have it from here if you want: http://www.hobbyking.com/hobbyking/store/__190__190__Radios_Receivers.html?idCategory=190&pc=).

If you want to buy from me this kit printed (all parts except electronic components or all components at once), please write to my email below.

Have fun, I hope, you will like it :)

Nick
[email protected]
(C) Designed in California


Program for Arduino:

// (uncomment these 3 lines of code) #include Servo.h // Includes code of "Servo library", to use the servo functions
// #include LiquidCrystal_I2C.h // Includes standard library to manage LCDs
// #include Wire.h // Includes library to manage I2C devices

Servo wheelServoFrontPassengerSide; // Creates servo objects to control four wheels servos
Servo wheelServoRearPassengerSide;
Servo wheelServoFrontDriverSide;
Servo wheelServoRearDriverSide;

Servo irServoFront; // Creates servo objects to control three IR sensors servos, front, left and right
Servo irServoRearDriver;
Servo irServoRearPassenger;

LiquidCrystal_I2C lcd(0x27, 20, 4); // Creates object "lcd" on address 0x27 for a 20 chars and 4 line display

int wheelServoFrontPassengerSidePin = 10; // Defines the pin numbers for wheels
int wheelServoRearPassengerSidePin = 9;
int wheelServoFrontDriverSidePin = 11;
int wheelServoRearDriverSidePin = 8;

int irServoFrontPin = 12; // Defines the pin numbers for servos which turn IR sensors
int irServoRearDriverPin = 6;
int irServoRearPassengerPin = 5;

int irFrontPin = A2; // Defines the pins for Sharp IR distance sensors
int irPassengerSidePin = A3; // Power supply for them is Vc = 5V, not 6V as for Hitec servos
int irDriverSidePin = A1;

int ledLightDriverSidePin = 34; // Defines the pins for front LED lights
int ledLightPassengerSidePin = 35;

void setup() {

pinMode(irFrontPin, INPUT); // Sets pins of IR distance sensors in input mode
pinMode(irPassengerSidePin, INPUT);
pinMode(irDriverSidePin, INPUT);

pinMode(ledLightDriverSidePin, OUTPUT); // Sets pins of front LED lights in output mode
pinMode(ledLightPassengerSidePin, OUTPUT);

Serial.begin(9600); // Starts Serial port at the speed 9600 baud
Wire.begin(); // Starts I2C bus
lcd.begin(); // Starts lcd object

wheelServoFrontPassengerSide.attach(wheelServoFrontPassengerSidePin); // Attaches wheels servos to four pins
wheelServoRearPassengerSide.attach(wheelServoRearPassengerSidePin);
wheelServoFrontDriverSide.attach(wheelServoFrontDriverSidePin);
wheelServoRearDriverSide.attach(wheelServoRearDriverSidePin);

irServoFront.attach(irServoFrontPin); // Attaches IR servos to three pins
irServoRearDriver.attach(irServoRearDriverPin);
irServoRearPassenger.attach(irServoRearPassengerPin);

wheelServoFrontPassengerSide.write(93); // Sends the signal to wheels servos to stop
wheelServoRearPassengerSide.write(93);
wheelServoFrontDriverSide.write(93);
wheelServoRearDriverSide.write(93);

digitalWrite(ledLightDriverSidePin, HIGH); // Turns LED lights on, sending 5V to LEDs
digitalWrite(ledLightPassengerSidePin, HIGH);

irServoFront.write(90);
irServoRearDriver.write(171);
irServoRearPassenger.write(7);

lcd.backlight(); // turns on backlight
lcd.clear(); // clears LCD
lcd.setCursor(7, 1); // takes cursor to position 8 of line 2
lcd.print("Hello!");
lcd.setCursor(3, 2);
lcd.print("Hulk is alive :)");

}

void changeSpeedOfWheels(float a1, float a2, float b1, float b2, int stepTime, int cycleTime)
{
a1 = -a1;
a2 = -a2;
b1 = -b1;
b2 = -b2;

float an = a1;
float bn = b1;
int n = (int) (cycleTime / stepTime + 0.5);

for (int i = 1; i <= n; i++)
{
int i_want_movement_right = (int) (an + 0.5); // this is real movement, range from -70 to +70
int i_want_movement_left = (int) (bn + 0.5); // this is real movement, range from -70 to +70
int pos_Right = -i_want_movement_right + 90; // 60 full backward 120 full forward 90 stop
int pos_Left = i_want_movement_left + 90; // 120 full backward 60 full forward 90 stop
wheelServoFrontPassengerSide.write(pos_Right + 3);
wheelServoRearPassengerSide.write(pos_Right + 3);
wheelServoFrontDriverSide.write(pos_Left + 3);
wheelServoRearDriverSide.write(pos_Left + 3);
an = (a2 - a1) / n + an;
bn = (b2 - b1) / n + bn;
delay(stepTime);
}
int i_want_movement_right = a2; // this is real movement, range from -70 to +70
int i_want_movement_left = b2; // this is real movement, range from -70 to +70
int pos_Right = -i_want_movement_right + 90; // 60 full backward 120 full forward 90 stop
int pos_Left = i_want_movement_left + 90; // 120 full backward 60 full forward 90 stop
wheelServoFrontPassengerSide.write(pos_Right + 3);
wheelServoRearPassengerSide.write(pos_Right + 3);
wheelServoFrontDriverSide.write(pos_Left + 3);
wheelServoRearDriverSide.write(pos_Left + 3);
}

void loop() {

delay(1000);

int irFrontMassive[156]; // Declares 3 massives for front, driver side
int irDriverMassive[159]; // and passenger side semicircles
int irPassengerMassive[160];

for (int i = 0; i <= 160; i++) { // Initialize three massives with zeros
irFrontMassive[i] = 0;
irDriverMassive[i] = 0;
irPassengerMassive[i] = 0;
}

int maxVectorFrontLength = 2000; // Starts the vector value with closest max
int maxVectorFrontAngle = 0; // Starts the vector angle with zero
irServoFront.write(11);
delay(500);
for (int i = 11; i <= 167; i++) { // Fills up the front distance massive with data from front IR sensor
irServoFront.write(i);
delay (10);
irFrontMassive[i] = analogRead(irFrontPin);
if (maxVectorFrontLength > irFrontMassive[i]) {
maxVectorFrontLength = irFrontMassive[i];
maxVectorFrontAngle = i;
}
}
irServoFront.write(90);

int maxVectorDriverLength = 2000; // Starts the vector value with closest max
int maxVectorDriverAngle = 0; // Starts the vector angle with zero
irServoRearDriver.write(12);
delay(500);
for (int i = 12; i <= 171; i++) { // Fills up the driver side distance massive with data from driver IR sensor
irServoRearDriver.write(i);
delay (10);
irDriverMassive[i] = analogRead(irDriverSidePin);
if (maxVectorDriverLength > irDriverMassive[i]) { maxVectorDriverLength = irDriverMassive[i]; maxVectorDriverAngle = i; }
}
irServoRearDriver.write(91);

int maxVectorPassengerLength = 2000; // Starts the vector value with closest max
int maxVectorPassengerAngle = 0; // Starts the vector angle with zero
irServoRearPassenger.write(7);
delay(500);
for (int i = 7; i <= 167; i++) { // Fills up the passenger distance massive with data from passenger IR sensor
irServoRearPassenger.write(i);
delay (10);
irPassengerMassive[i] = analogRead(irPassengerSidePin);
if (maxVectorPassengerLength > irPassengerMassive[i]) { maxVectorPassengerLength = irPassengerMassive[i]; maxVectorPassengerAngle = i; }
}
irServoRearPassenger.write(88);

lcd.clear(); // Clears LCD

lcd.setCursor(0, 0); // Takes cursor to position 1 of line 1
lcd.print("Front A=");
lcd.print(maxVectorFrontAngle);
lcd.setCursor(12, 0);
lcd.print("L=");
lcd.print(maxVectorFrontLength);

lcd.setCursor(0, 1); // Takes cursor to position 1 of line 2
lcd.print("Left A=");
lcd.print(maxVectorDriverAngle);
lcd.setCursor(12, 1);
lcd.print("L=");
lcd.print(maxVectorDriverLength);

lcd.setCursor(0, 2); // Takes cursor to position 1 of line 3
lcd.print("Right A=");
lcd.print(maxVectorPassengerAngle);
lcd.setCursor(12, 2);
lcd.print("L=");
lcd.print(maxVectorPassengerLength);

// XXXXXXXXXXXXXX Now we need to choose the maximum vector by length out of three

int maxVectorLength = maxVectorDriverLength; // Checks which vector is longer

if (maxVectorLength > maxVectorFrontLength) { maxVectorLength = maxVectorFrontLength; }
if (maxVectorLength > maxVectorPassengerLength) { maxVectorLength = maxVectorPassengerLength; }

int maxVectorAngle = maxVectorDriverAngle - 180; // -180 ... +180

if (maxVectorLength == maxVectorFrontLength) { maxVectorAngle = maxVectorFrontAngle - 90; }
if (maxVectorLength == maxVectorPassengerLength) { maxVectorAngle = maxVectorPassengerAngle; }

// XXXXXXXXXXXXX Now we need to turn the car to the angle and go length of the choosen vector

int timeToTurn = map(maxVectorAngle, -180, 180, -2200, 2200);
int lengthToGo = map(maxVectorLength, 160, 30, 100, 1500);

lcd.setCursor(0, 3); // Takes cursor to position 1 of line 3
lcd.print("Angle=");
lcd.print(maxVectorAngle);
lcd.setCursor(11, 3);
lcd.print("Dist=");
lcd.print(lengthToGo);

if (timeToTurn > 0) {
changeSpeedOfWheels(-35, -35, 35, 35, 20, timeToTurn);
changeSpeedOfWheels(-35, 0, 35, 0, 20, timeToTurn/3);
changeSpeedOfWheels(0, 35, 0, 35, 20, lengthToGo/6);
changeSpeedOfWheels(35, 35, 35, 35, 20, lengthToGo);
changeSpeedOfWheels(35, 0, 35, 0, 20, lengthToGo/6);
}

if (timeToTurn < 0) {
changeSpeedOfWheels(35, 35, -35, -35, 20, -timeToTurn);
changeSpeedOfWheels(35, 0, -35, 0, 20, -timeToTurn/3);
changeSpeedOfWheels(0, 35, 0, 35, 20, lengthToGo/6);
changeSpeedOfWheels(35, 35, 35, 35, 20, lengthToGo);
changeSpeedOfWheels(35, 0, 35, 0, 20, lengthToGo/6);
}

delay(300);
}

License:

GNU - GPL

Related Models

Spotmicro - robot dog preview image

Spotmicro - robot dog

KDY0523 profile image

KDY0523

5,203

Arduino Stand preview image

Arduino Stand

burm profile image

burm

919

ToyREP 3D Printer preview image

ToyREP 3D Printer

thorgal profile image

thorgal

3,674

51单片机最小系统板 preview image

51单片机最小系统板

TomatoET profile image

TomatoET

335

ProtoTank preview image

ProtoTank

timmiclark profile image

timmiclark

3,029

Poop Shoot Conveyor Belt System VERSION 2 preview image

Poop Shoot Conveyor Belt System VERSION 2

3DPrintAdventures profile image

3DPrintAdventures

511