header



Welcome to the Micro Center Tech Support Blog!
Find free technical support on a variety of products featured at Micro Center and plenty of how-tos on new technology. Start searching our Blog below or search our Tech Center archives »

Can't find what your looking for? Take advantage of our Tech Support services »

Join the MC Tech Support Community Forum: Get direct advice from the Knowledge Experts @ Micro Center.
Click here to access the Forum »

Search This Blog

Wednesday, May 29, 2013

MiniPingBot Construction

MiniPingBot
This small Arduino obstacle-avoiding robot is an experiment in reducing 
the size and complexity of larger kit and Do It Yourself (DIY) robots.


Bot Mechanics:

I started with an enclosed 4-cell AA battery pack. This had an advantage of having a small slide switch mounted in the case, so you don't have to keep disconnecting the power connector.

battery pack 

Two mini (9g) continuous rotation servo motors (RobotShop.com ~$5 / ea.) were attached to the back of the battery case using double-stick foam tape. Hot glue further secures the motors to the case, but probably is not needed as long as the tape is reasonably fresh and tacky.

servo motors 

A pair of small wheels off of a toy car were hollowed out, and were the perfect size for the round disk servo horn. The horn disk was press-fit into the wheel and super-glued in place. Hot glue on the inside of the wheel adds additional support between the disk and the inside surface.

small wheels 

A breadboard was trimmed down on the band saw to make a better fit, and the double-stick foam backing used to anchor the board to the lid of the battery box.

breadboard 

A piece of 1/8" plastic sheet was trimmed to make a mount for a 4-pin ultrasonic sensor module. Using a pencil, the position of the two cylindrical sensors was marked out on the plastic, and holes cut using a Dremel tool with a multi-purpose routing drill. A small piece of sticky-back Velcro helps space the sensor from the plastic and help hold it in place. Two O-rings are added to hold the sensors in the openings. A bead of hot glue was run along the edge of the breadboard and two small screws anchor the sensor assembly securely to the bot.

plastic sheet 

For the front wheel, a tiny ball-bearing was screwed to the battery box. (The front end of the box is mostly empty space, so there is no chance of shorting the batteries.) A hunt in the junk box came up with a small wheel assemble from some old printer parts, and a valve stem cap from a bicycle tire that fits over the bearing perfectly. A little cutting and sanding of the plastic frame with the tiny wheel, and then the two parts were glued together with more hot glue.

ball-bearing

small wheel
glued together 

Bot Electronics:

The Arduino Nano connects directly into the breadboard. This is mounted at the rear of the board to allow access with the USB cable for programming the bot. A ground wire is connected between one of the negative rails and the "GND" pin on the Nano. Power is provided by a wire running from "VIN" on the Nano to the positive 5v rail.

breadboard 

The power wires from the battery pack are cut off close to the front of the breadboard. The positive (red) and negative (black) wires are each soldered to a pair of pins in a 2x2 connector and hot glue used to insulate the exposed pins. This fabricated connector plugs into one of the power rails of the breadboard. (This will be our 6v rail - assuming there are four 1.5v Alkaline batteries in the box)

power wires

A 5v regulator has the input pin bent out and a red wire soldered to it. (Hot glue can coat the exposed pin, or use a small piece of heat-shrink tubing to cover it.) The center pin (ground) and 5v output pin are trimmed off and inserted directly into the second power rail of the breadboard. (Note that this step is probably not required, but was done only as a precaution to provide 5v or less for the ultrasonic sensor and Arduino boards.) The red wire has the end soldered to a single pin or is stiffened by tinning the end with solder. This is then connected to the positive side of the 6v rail from the batteries. A wire connects both negative (ground) rails together.

power wires

Servo Motor wires have the signal wire split off and the power wires trimmed shorter. Another 2x2 pin connector has the two servo motor ground wires soldered on, and the two power wires soldered on the remaining two pins. Hot glue to insulate, and then the servo motor power is connected to the 6v rail. The two signal wires from the servo motors have enough reach to be connected to any of the Arduino pins. These each have a small pin soldered to the end and insulated with hot glue. Servo motor signal wires are attached to Arduino D10 and D11.

Servo Motor wires 

A four-wire connector is prepared for the sonar module. The outside power (Vcc and Gnd) connections are soldered to a pair of pins and connected to the 5v power rail. The inside pair of pins (Trig and Echo) are soldered to another pair of pins and connected to D5 and D6.

four-wire connector 

Programming:

Sample sketches are included. MiniPingBot1_0.ino is the first attempt to create a very simple program that uses a single ping to check distance. Then, based on the result, it moves forward, or if it detects an obstacle close by, backs up, rotates to the left and continues. This sketch is using the NewPing library and the core routines from the whisker-bot sketch from Parallax.

#include <NewPing.h>    // include new-ping library
#include <Servo.h>      // Include servo library

#define TRIGGER_PIN  5  // using 4-pin Ping Sensor
#define ECHO_PIN     6
#define MAX_DISTANCE 200  // max distance is 500cm (~16.4 ft)
Servo servoLeft;         // Declare left and right servos
Servo servoRight;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //declare sonar (ping sensor)

void setup() {
  servoLeft.attach(10);       // Attach left servo signal to pin 13 
  servoRight.attach(11);      // Attach right servo signal to pin 12
  //Serial.begin(115200);     // Open serial monitor at 115200 baud to see ping results
}

void loop()  {
    delay(50);                 //wait 50ms between pings
    int uS = sonar.ping_cm();  // get distance in cm from sensor

// based on distance, do something...
// if uS = 0 distance to object is >= MAX_DISTANCE

  //Serial.print("Ping: ");      // Monitor ping results in
  //Serial.print(uS);            // serial monitor window
  //Serial.println("cm");        // comment out when done debugging

if (uS > 30)   {
    forward(300);       // forward 1/2 second
}
else {
    backward(100);       // obstacle detected closer than MAX_DISTANCE
    turnLeft(400);      // try turning left a bit and check again
}

}


// Servo control from Parallax BOE-Bot Whisker sketch

void forward(int time)                       // Forward function
{
  servoLeft.writeMicroseconds(1700);         // Left wheel counterclockwise
  servoRight.writeMicroseconds(1300);        // Right wheel clockwise
  delay(time);                               // Maneuver for time ms
}

void turnLeft(int time)                      // Left turn function
{
  servoLeft.writeMicroseconds(1300);         // Left wheel clockwise
  servoRight.writeMicroseconds(1300);        // Right wheel clockwise
  delay(time);                               // Maneuver for time ms
}

void turnRight(int time)                     // Right turn function
{
  servoLeft.writeMicroseconds(1700);         // Left wheel counterclockwise
  servoRight.writeMicroseconds(1700);        // Right wheel counterclockwise
  delay(time);                               // Maneuver for time ms
}

void backward(int time)                      // Backward function
{
  servoLeft.writeMicroseconds(1300);         // Left wheel clockwise
  servoRight.writeMicroseconds(1700);        // Right wheel counterclockwise
  delay(time);                               // Maneuver for time ms
}

MiniPingBot1_1 changes the method of determining distance with the sensor. One problem I noticed with the 1.0 version of the code was that the ping sensor would occasionally return a bad value and cause the bot to correct multiple times, even when no obstacle was close. Using the PING_MEDIAN function, five pings are used and the median result is returned to the program. This seems to eliminate the odd course corrections.
int uS = sonar.ping_cm();
      // get distance in cm from sensor uS using single ping 
becomes:
unsigned int uS = (sonar.ping_median() / US_ROUNDTRIP_CM);
      // Get average distance for 5 pings, convert to cm
      // US_ROUNDTRIP_CM = distance sound travels in cm/sec
MiniPingBot files (zip) <== Click to download the MiniPingBot 1.0 & 1.1 sketch files and NewPing library. To use: extract the contents of this zip file to your Arduino working directory. Open the containing folder for the Arduino.exe program and locate the "libraries" subdirectory. Copy the entire "NewPing" folder into the libraries directory.

For more assistance contact Technical Support here.

Wednesday, May 22, 2013

Tech Tip: How to back up your Outlook local content and archives (.pst)

This article shows how to locate your Outlook.PST* file so that you can backup or transfer your outlook content to removable media, a network location or to another location. Illustrated below is the process for Outlook 2010 with Windows 7 as operating system. There are many ways to locate and backup your outlook.pst archive, but this procedure should be similar for most versions of Outlook or Windows you are using.

Note: you may need to change folder settings to view hidden and system folders.
  1. Left click on Start.

    Start
  1. Left click on Control Panel.

    Control Panel
  1. Make sure your Control Panel View by is set to Large or Small Icons.

    View by
  1. Click on Mail (32-bit).

    Mail (32-bit)
  1. Click on Data Files.

    Data Files
  1. Click on Open Folder to locate the directory containing your Outlook.pst and any other Outlook archive files.

    Open Folder
  1. If outlook is running, and you have messages, tasks, or other Outlook content open, you must close all open dialog or editing windows belonging to outlook, and then exit from outlook to ensure a clean copy of the files.
  2. Copy your outlook pst files to a USB flash Drive or any other media.

    *An Outlook Personal Storage Table (PST) file contains your local copies of email messages, calendar events, contacts, and other user created folders.
For more assistance contact Technical Support here.

Tech Tip: How to fix DNS errors

Description: Sometimes a computer will inform the user that it is having a DNS error and can't connect to the internet. Flushing the DNS can often fix this:
  1. Hold down the Windows key and select the R key once to open the Run window.

    Windows key
    R

    Run window

  2. Type cmd into the space there and select OK. This will open the Command Prompt window.

    cmd

  3. In that window, type ipconfig /flushdns and select the Enter key.

    ipconfig /flushdns

  4. Once that's done, type ipconfig /release and select the Enter key.

    ipconfig /iprelease

  5. Then type ipconfig /renew and select the Enter key.

    ipconfig /renew

  6. Then type exit and tap Enter. You have now reset the DNS.
For more assistance contact Technical Support here.

Thursday, May 2, 2013

When 2 Terabytes just isn't enough...

Sooner or later, you'll find yourself saying "Ya' know, 2,199,023,255,552 bytes (also known as 2TB) of data on
one hard drive is just not enough for me - I need more, lots more."

Well, first the good news --- hard disk drive prices are running below $100 per Terabyte, and if you REALLY have a lot of data even the 16TB network attached storage (NAS) drives with "data center class" drives are coming in about that price per Terabyte.

NAS
Network Attached Storage (NAS) drives and enclosures
use RAID to provide data redundancy and error checking, and to provide a very large storage capacity.


Now the not so good news --- you need to move on from Windows XP (Microsoft will be dropping support for Windows XP SP3 and Office 2003 in April, 2014 so you have a year to prepare). Windows XP didn't expect to "last" as long as it did, and expected to be replaced before the time that hardware manufactures hit the 2TB limit
of the MBR (Master Boot Record) format drives.

Vista, Windows 7, Windows 8, and OS X are all capable of using the "Advanced Format" disks that trade in the 512 byte blocks for 4,096 byte (4KB) blocks as well as the GPT (GUID Partition Table) format that breaks through the 2.1TB limit. This change allows for much greater storage on a single hard drive.
chart

One other gotcha that you may not be aware of, and which we found out the hard way - some of the external adapters for hard disk drives ALSO have a limit. So here at the store we wasted several
hours troubleshooting a 3TB drive when it was really the SATA/USB adapter that was the issue. "Never assume."

SATA/USB adapter
USB drive adapters (or their drivers) could have drive size limitations. If you are having problems detecting a large
capacity drive attached to an adapter or drive enclosure, don't assume it's defective hardware. Double check supported hardware on the manufacturer's site or look to see if a new device driver is available. Don't forget, your operating system must be able to support the drive capacity as well!


Can't part with XP until next year? Most of the disk manufactures supply software that help XP over the 2.1TB limit but if you're putting all of those "eggs" into one large hard disk drive "basket" you'd be wise to look at newer operating systems that come on newer, faster hardware, running in 64-bit more which allows you to also break past the 3GB of main memory (RAM) for increased
speed.

In summary, the hardware and software have to be in synch with each other to support the larger capacity drives. Most recently we saw with the 137GB limit, before that it was the 32GB limit, and if you go further back there was not only a 2GB limit but --- brace yourself --- a 32KB limit to what a hard disk drive could hold.

Got questions? Our Sales Associates in the Build Your Own PC in each Micro Center can make sure you get the hardware, software, and information you need to do the things you want to do.

For more assistance contact Technical Support here.