The µbotino Microcontroller Board

Similar documents
The Robot Builder's Shield for Arduino

Bill of Materials: PWM Stepper Motor Driver PART NO

Ten Tec DDS Board Assembly Procedure

Lab 2: Blinkie Lab. Objectives. Materials. Theory

Circuit Board Assembly Instructions for Babuinobot 1.0

Bill of Materials: Metronome Kit PART NO

Sten-Bot Robot Kit Stensat Group LLC, Copyright 2013

Heartboard PCB Assembly Instructions

INSTANT ROBOT SHIELD (AXE408)

Congratulations on your purchase of the SparkFun Arduino ProtoShield Kit!

HAW-Arduino. Sensors and Arduino F. Schubert HAW - Arduino 1

INA169 Breakout Board Hookup Guide

ESE141 Circuit Board Instructions

Breadboard Arduino Compatible Assembly Guide

PS2-SMC-06 Servo Motor Controller Interface

Digital Electronics & Chip Design

Adafruit 16-Channel Servo Driver with Arduino

MP573 Assembly guide. Soldering. MP573 Assembly guide PCB split PCB split. Document revision 2.2 Last modification : 22/08/17

Objectives: Learn what an Arduino is and what it can do Learn what an LED is and how to use it Be able to wire and program an LED to blink

Circuit Board Assembly Instructions

Geiger Counter Kit Assembly Instructions ( )

FABO ACADEMY X ELECTRONIC DESIGN

TekBot Remote Control Receiver Board Construction

Tek-Bot Remote Control Transmitter Board Construction

Pacific Antenna - Easy TR Switch

USER MANUAL SERIAL IR SENSOR ARRAY5

Adafruit 16-channel PWM/Servo Shield

DC Motor. Controller. User Guide V0210

Lesson 3: Arduino. Goals

Programming a Servo. Servo. Red Wire. Black Wire. White Wire

SoftRock v5.0 Builder s Notes. December 12, Building a QSD Kit

ZX Distance and Gesture Sensor Hookup Guide

Nano v3 pinout 19 AUG ver 3 rev 1.

Build this Direct Digital Synthesizer "Development Kit" By: Diz Gentzow, W8DIZ

ArduTouch Music Synthesizer

Pacific Antenna Easy TR Switch

1. Controlling the DC Motors

Pololu Dual G2 High-Power Motor Driver for Raspberry Pi

LA502 Assembly guide Main PCB Resistors - (2)

Assembly Instructions

TS500 Assembly guide. Soldering. TS500 Assembly guide Main PCB 1. Diodes. Document revision 1.2 Last modification : 17/12/16

3.3V regulator. JA H-bridge. Doc: page 1 of 7

APDS-9960 RGB and Gesture Sensor Hookup Guide

Pingable Envelope Generator

Battle Crab. Build Instructions. ALPHA Version

Programmable Timer Teaching Notes Issue 1.2

MICROGRANNY v2.1 - Assembly Guide

Simon Tilts Assembly Guide

ScaleRCHelis.com V Light Controller Kit

IR add-on module circuit board assembly - Jeffrey La Favre January 27, 2015

LITTLE NERD v1.1 Assembly Guide

The Motor sketch. One Direction ON-OFF DC Motor

1. Line Follower Placing the Line Follower Electrical Wiring of Line Follower Source Code Example and Testing...

Adafruit 16-channel PWM/Servo Shield

You'll create a lamp that turns a light on and off when you touch a piece of conductive material

Name & SID 1 : Name & SID 2:

Build a Mintronics: MintDuino

Patton Robotics, LLC.

Configure your Arduino as a simple web server or let it get data from the worldwide web.

Pololu DRV8835 Dual Motor Driver Kit for Raspberry Pi B+

SoftRock v6.0 Builder s Notes. May 22, 2006

Coding with Arduino to operate the prosthetic arm

For this exercise, you will need a partner, an Arduino kit (in the plastic tub), and a laptop with the Arduino programming environment.

LDB-1 Kit Instructions Page 1 of 8

Lab 5: Arduino Uno Microcontroller Innovation Fellows Program Bootcamp Prof. Steven S. Saliterman

Compact Motor Driver Robot Shield

Gat ew ay T o S pace AS EN / AS TR Class # 07. Colorado S pace Grant Consortium

Figure 1. CheapBot Smart Proximity Detector

DASL 120 Introduction to Microcontrollers

Assembly notes for RFX Teensy 3.x carrier board

Arduino STEAM Academy Arduino STEM Academy Art without Engineering is dreaming. Engineering without Art is calculating. - Steven K.

J. La Favre Using Arduino with Raspberry Pi February 7, 2018

FROM SCHEMATIC TO VEROBOARD

Line Following Circuit Board Wiring Guide

Serial 8-Servo Controller User s Guide

D.I.Y L.E.D CUBE 4X4X4. Level: Intermediate

Ardweeny 1.60" 0.54" Simple construction - only 7 parts plus pins & PCB! Ideal for breadboard applications

Lesson 2: Soldering. Goals

Simple LFO Features. 2. Application. 3. Description. Simple and easy to build LFO module for Analog Synthesizers.

Arduino: Sensors for Fun and Non Profit

DuoDrive Nixie Bargraph Kit

OpenROV. Guide 3 - Electronics. We will now move to the assembly of the electronics that will control the ROV. Written By: OpenROV

LaserPING Rangefinder Module (#28041)

Tarocco Closed Loop Motor Controller

SoftRock v6.0 Builder s Notes. April 6, 2006

Switcher Assembly guide. Switcher Assembly guide 1. Soldering. 2. Switcher3 vs Switcher2. 3. PCB split.

16 Bit Micro Experimenter Assembly and Check out Instructions

Training Schedule. Robotic System Design using Arduino Platform

Pacific Antenna Field Strength Indicator Kit

Polyphase network kit

Adafruit 16-Channel PWM/Servo HAT & Bonnet for Raspberry Pi

Eight channel remote relay card. Total solder points: 277 Difficulty level: beginner advanced K8056 ILLUSTRATED ASSEMBLY MANUAL

100UF CAPACITOR POTENTIOMETER SERVO MOTOR MOTOR ARM. MALE HEADER PIN (3 pins) INGREDIENTS

ABC V1.0 ASSEMBLY IMPORTANT!

Arduino Microcontroller Processing for Everyone!: Third Edition / Steven F. Barrett

Penrose Quantizer Assembly Guide

Warm Tube Clock. Before we start, please make sure that you have all required parts that come for the main board :

Assembly Manual for VFO Board 2 August 2018

Never power this piano with anything other than a standard 9V battery!

Introduction 1. Download socket (the cable plugs in here so that the GENIE microcontroller can talk to the computer)

Transcription:

The µbotino Microcontroller Board by Ro-Bot-X Designs Introduction. The µbotino Microcontroller Board is an Arduino compatible board for small robots. The 5x5cm (2x2 ) size and the built in 3 pin connectors for sensors and servos, along with the 1 Amp dual H- bridge, makes the µbotino board easy to use for any small robot project. Features: ATmega328P microcontroller, DIP case (for easy replacement), with Arduino bootloader and Blink sketch loaded SN754410 dual H-bridge, 1 Amp per motor, uses digital pins 5-8 and Timer0 for PWM 5 digital 3 pin connectors (GND, Vcc, Signal), digital pins 0-4 5 servo 3 pin connectors (GND, Vxx, Signal), digital pins 9-13, uses power from jumper J1 6 sensor 3 pin connectors (GND, Vcc, Signal), analog pins 0-5, uses regulated 5V GND pin next to the UART pins for 3 pin serial cable 6 pin inline FTDI cable connector standard ISP hardware programmer connector power LED (green) pin D13 LED (red) jumper J1: place the shunt to Vin position for servos, or to Vcc position if you use sensors jumper J2: remove the shunt to disable motor power when testing jumper J3: remove the shunt to disable pin D13 LED (Red) in case a servo is connected to the D13 pin Vsrv: optional unpolarized power connector for servos, insert the negative towards the ISP connector and the positive towards the H-bridge (also remove the J1 jumper shunt), in case you need to use more than 6V for motors polarized power connector On/Off switch 1Amp 5V LDO voltage regulator reset button

Assembly. The kit is easy to assemble. You will need to following basic tools: fine tip soldering iron, low temperature diagonal cutters rosin core solder The kit contains all the parts needed for the µbotino controller: Start to solder the parts that have the smallest height, then the parts that a bit taller and so on. Here is how I did it: 1. Insert the crystal in its marked place, turn the board upside down, place it on the table and solder the leads. The solder joint should look like a shiny cone and cover the pad ring completely.

2. They should look like in the picture. Using the diagonal cutters cut the leads as close as possible to the solder joint. 3. Insert the yellow 0.1uF ceramic capacitors (104 marking) one by one in their marked place and bend the leads outwards to keep them from falling. Turn the board upside down, put it on the table and solder the leads. Trim the leads. 4. Insert the blue (22j marking) ceramic capacitors in their place next to the crystal, bend the leads so they don t fall, turn the board and solder. Trim the leads. 5. Locate the 2 1k ohm resistors (brown, black, red), bend one lead along the resistor and insert them in their marked place near the LEDs. Bend the leads so they don t fall. Locate the 10k ohm resistor (brown, black, orange), bend one lead along the resistor and insert it in its marked place near the Reset button. You can also place it horizontal like in the picture if you like. Bend the leads so it doesn t fall, turn the board upside down, place it on the table and solder the leads. Trim the leads close to the solder joints.

6. Insert the Reset button in its place, press it down until makes a click sound, turn the board upside down and solder. You don`t need to cut the leads. 7. Insert the Green LED with the flat side (or the short lead) towards the top of the board, in the place marked Power LED. Insert the Red LED with the flat side (or the short lead) towards the top of the board, in the place marked D13 LED. Turn the board upside down and solder. Trim the leads close to the solder joint. 8. Insert the 28 pin socket in it s marked place, press it gently until it clicks, then insert the 16 pin socket in it s marked place, bend 2 opposite corner pins to keep it from falling, turn the board upside down and solder the other 2 opposite corner pins. Make sure the sockets are flush with the board. If they are, straighten up the bent pins and solder all pins. You don t have to cut any leads.

9. Insert 3 groups (rows) of 6 pin headers in the place marked for Sensors (analog pins A5-A0). 10. Use the small conductive foam where the SN754410 was inserted when you received the package to keep the pins aligned and straight. Place the board upside down, place it on the table and solder one pin on each row, remove the conductive foam and check the pins alignment. Re-solder and straighten the pins that are crooked. When they look nice and straight, solder all pins on each row. 11. Insert 2 groups (rows) of 5 pin headers and one group of 6 pin headers in the place marked for pins D0-D4. Use the foam to keep them straight, solder 1 pin on each row, check for miss-alignment, then solder all pins.

12. Insert 3 groups (rows) of 5 pin headers in the place marked for Servos (digital pins D13-D9). Use the foam to keep them straight, solder 1 pin on each row, check for miss-alignment, then solder all pins. 13. Insert 2 groups (rows) of 2 pin headers in the place marked for Motors. Use the foam to keep them straight, solder 1 pin on each row, check for missalignment, then solder all pins. 14. Insert 1 group (row) of 6 pin headers in the place marked for FTDI. Use the foam to keep it straight, solder 1 pin, check for miss-alignment, then solder all pins.

15. Insert 2 groups (rows) of 2 pin headers in the place marked for J2 and Vsrv and 1 group of 3 pin headers in the place marked J1. Use the foam to keep them straight, solder 1 pin on each row, check for missalignment, then solder all pins. 16. Insert 2 groups (rows) of 3 pin headers in the place marked for ISP. Use the foam to keep them straight, solder 1 pin on each row, check for miss-alignment, then solder all pins. 17. Insert 1 group (row) of 2 pin headers in the place marked for J3. Use the foam to keep it straight, solder 1 pin, check for miss-alignment, then solder all pins.

18. Find 3 electrolytic capacitors marked 10µF. Insert them in their marked place with the short lead in the hole marked with an sign. Make sure they are completely inserted, then bend the leads. Turn the board upside down, place it on the table and solder the leads. Trim the leads as close to the solder joint as possible. 19. Look for the 2 capacitors marked 220µF. Insert them in their marked place near the top of the board, with the short lead in the hole marked with the sign. Bend the leads, solder and trim them. 20. Insert the white power connector with the tab towards the Green LED and solder the leads.

21. Insert the Power switch in its marked place and solder it. Trim the middle leads. 22. Insert the voltage regulator in its marked place at the top of the board, with the metallic tab towards the exterior of the board. Solder the leads then trim them. 23. Place the jumper shunts over the pins marked with J2 and J3 and for J1 you can choose to place it towards the Vin marking (top of the board, like in the picture) or towards the Vcc marking (towards the H- bridge IC). Place the microcontroller with the end marked with a D shape towards the left side of the board and the SN754410 with the D shape towards the crystal (like in the picture).

24. You re almost done! The bottom of the board should look like this picture -> Check out your solder joints with a multi-meter, watch out for shorts between adjacent pins. If there is too much solder, use a solder wick to suck up the excess. 25. Battery leads. A usual 4 AA battery holder has 2 wire leads, one Red (for positive) and one Black (for negative). Crimp the 2 terminals to the leads and inserted the Red lead terminal in the hole marked with a 1 (or arrow) in the housing. The Black lead terminal goes right next to it. Verify the polarity with a multimeter, Red should be Positive and Black should be Negative. Warning: If you accidentally swap them, you may burn your H-bridge and the microcontroller. 26. Make sure the On/Off switch lever is positioned towards the marked Off position. Insert the battery connector and make sure the Red wire is towards the voltage regulator. Flip the lever of the Power switch to the On position. The Green LED will light up and the Red LED will flicker, then it will start blinking once a second. You're done! Congratulations! Now build your robot! Usage. Install the µbotino controller on your robot and connect the motors, sensors, servos and other used peripherals. Remember, the µbotino controller has 3 pin connectors, servo style, for all signal pins. The signal pins (the Yellow or White servo wire) are always towards the microcontroller (they are marked on the silk screen with D0-D13 and A0-A5), the power pins (the Red servo wire) are in the middle and the ground pins (the Black servo wire) are towards the outside of the board. The passive sensors (bumper sensors, for example) need only 2 wires, ground (Black) and signal (White or Yellow), while the active sensors need all 3 wires. Most infrared sensors (the remote control sensors, for example) have the ground lead in the middle, so you need to make sure when you make the cable for them you have the power wire in the middle of the connector that plugs into the board.

The Sharp distance sensors have a cable with a small JST connector that plugs into the sensor and free ends that will need to be crimped and inserted into a 3 pin housing. Make sure you insert the Red wire in the middle of the housing and plug the connector with the White wire towards the microcontroller. If you need to connect a buzzer to the µbotino controller, use just the signal and ground pins, similar with a passive sensor. Ultrasonic sensors have 3 or 4 pins. For the 3 pin style, make a female-female cable using a regular servo cable (Yellow-Signal, Red-Vcc, Black-GND). For the 4 pin style, make a 4 wire cable, with one end that matches the sensor pin configuration and the other end with a 3 pin housing (echo (Yellow), power (Red) and ground (Black)) and an extra wire with a 1 pin housing for the trigger pin. I found a 4 wire cable at Radio Shack that I am using for this and for I2C cables, that has White, Black, Red, Green wires and I separate the White wire for the trigger (insert this wire into any digital or analog signal pin) and use the other 3 wires together, with the Green wire for the echo (insert this wire in any digital or analog pin, towards the microcontroller). Programming. Remove the J2 jumper so the robot does not start moving after programming (optional). Use a USB-serial cable or a FTDI Basic 5V board to connect the µbotino to the computer. The cable will provide 5V power the µbotino so turning the Power switch On is not necessary. Only the sensors will be powered, but not the servos and the motors. In the Arduino IDE, select the board as Arduino Duemilanove and the serial port to the one your cable uses. Load your sketch and press Upload. You will see the D13 LED flicker and then the FTDI board LEDs will flicker, but if you re using an FTDI cable there will be no visible indicator that the sketch is loading. Look on the Arduino IDE screen for the message Uploading Done. Remove the USB-serial cable, place the J2 jumper back, place the robot on the ground and turn the Power switch On. The robot will start moving!

Program sample. Here is a sample program used on my Octobotino robot: // Octobotino, a small robot using the ubotino // 2 Pololu micro motors 100:1 and small wheels, // one HXT900 micro servo, one Sharp IR sensor, // 2 AAA battery holders // // Arduino pinout: // // ubotino Funct Arduino ATmega328P Arduino Funct ubotino // +-----\/----+ // Reset 1 PC6 PC5 28 D19 A5 SCL // Rx D0 2 PD0 PC4 27 D18 A4 SDA // Tx D1 3 PD1 PC3 26 D17 A3 // Int0 D2 4 PD2 PC2 25 D16 A2 // Int1 D3 5 PD3 PC1 24 D15 A1 // D4 6 PD4 PC0 23 D14 A0 IR sensor // 7 VCC GND 22 // 8 GND AREF 21 // Xtal 9 PB6 AVCC 20 // Xtal 10 PB7 PB5 19 D13 SCK LED // M1A OC0B D5 11 PD5 PB4 18 D12 MISO Pan servo // M2A OC0A D6 12 PD6 PB3 17 D11 OC2A MOSI // M2B D7 13 PD7 PB2 16 D10 OC1B // M1B D8 14 PB0 PB1 15 D 9 OC1A // +-----------+ // #include <Servo.h> //Inputs/outputs #define Motor_1_PWM 5 // digital pin 5 // Right Motor #define Motor_1_Dir 8 // digital pin 8 #define Motor_2_PWM 6 // digital pin 6 // Left Motor #define Motor_2_Dir 7 // digital pin 7 #define IR_Pin 0 // digital pin 14 (analog pin 0) #define PanPin 12 #define LedPin 13 #define SR 1 //Sharp Short Range sensor #define MR 2 //Sharp Medium Range sensor #define LR 3 //Sharp Long Range sensor #define center 90 //Variables byte dir=0; byte speed1=250; //this motor is faster, slow it down a bit byte speed2=255; int turn90=110; //you need to match this number with your motors speed int turn45=55; //same here int straight=500; int stoptime=200; int IRdistance=0; int treshold=20; //20cm min distance Servo Pan;

//----------------------------------------------------------------------------- void setup() { // set motor pins as output and LOW so the motors are breaked pinmode(motor_1_pwm, OUTPUT); pinmode(motor_1_dir, OUTPUT); pinmode(motor_2_pwm, OUTPUT); pinmode(motor_2_dir, OUTPUT); Pan.attach(PanPin); Pan.write(center); //90 pinmode(ledpin, OUTPUT); digitalwrite(ledpin, LOW); Serial.begin (19200); Serial.println("start"); Forward(); //----------------------------------------------------------------------------- void loop(){ Drive(); //----------------------------------------------------------------------------- void Drive(){ IRdistance=Read_Sharp_Sensor(MR, IR_Pin); Serial.print("IRdistance "); Serial.println(IRdistance); if (IRdistance<10){ TurnAround(); else if (IRdistance<treshold){ Avoid(); Forward(); delay(50); void TurnAround(){ Reverse(); Pan.write(center); Left(); delay(turn90); delay(turn90); Forward(); void Avoid(){ int prev=0; dir=2;

for (byte i=0; i<5; i++){ Pan.write(i*45); //turn 45 degrees at a time, from 0 to 180 degrees delay(200); IRdistance=Read_Sharp_Sensor(MR, IR_Pin); if (IRdistance>prev){ dir=i; prev=irdistance; Pan.write(center); switch (dir){ case 0: Right(); delay(turn90); break; case 1: Right(); delay(turn45); break; case 2: Forward(); break; case 3: Left(); delay(turn45); break; case 4: Left(); delay(turn90); break; delay(500); // Read Sensors int Read_Sharp_Sensor(byte model, byte pin) { int value = 0; value = analogread(pin); switch (model) { case SR: //short range, aka GP2D120 (4-30cm) return (2914/(value+5))-1; break; case MR: //medium range, aka GP2D12 (10-80cm) return 1384.4*pow(value,-.9988); break; case LR: //long range, aka GP2Y0A02YK (20-150cm) return 11441*pow(value,-.9792); break;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Motor control functions void Forward(){ digitalwrite(motor_1_dir, LOW); // forward digitalwrite(motor_2_dir, LOW); // forward analogwrite(motor_1_pwm, speed1); // analogwrite(motor_2_pwm, speed2); // return; void Reverse(){ digitalwrite(motor_1_dir, HIGH); // reverse digitalwrite(motor_2_dir, HIGH); // reverse analogwrite(motor_1_pwm, 255-speed1); // inverted PWM analogwrite(motor_2_pwm, 255-speed2); // inverted PWM return; void Right(){ digitalwrite(motor_1_dir, HIGH); // reverse digitalwrite(motor_2_dir, LOW); // forward analogwrite(motor_1_pwm, 255-speed1); // inverted PWM analogwrite(motor_2_pwm, speed2); // return; void Left(){ digitalwrite(motor_1_dir, LOW); // forward digitalwrite(motor_2_dir, HIGH); // reverse analogwrite(motor_1_pwm, speed1); // analogwrite(motor_2_pwm, 255-speed2); // inverted PWM return; void Stop() { digitalwrite(motor_1_pwm, LOW); digitalwrite(motor_1_dir, LOW); digitalwrite(motor_2_pwm, LOW); digitalwrite(motor_2_dir, LOW); return;

Reference. Here is the schematic for reference use: