Let's Make Robots!

Working on a robot platform for various 'bot experiments

 
AttachmentSize
LeftBrain-RightBrain-Layout-Update25FEB12.jpg3.98 MB

A comment about popsicle sticks. <grins> They have become a tried and tested building material for robots.

Schrödinger is no exception. It is very hard to see as they are hidden, but if you look closely at the last picture at the bottom of the page, you may be able to see that the solar cells are not glued directly to the top-cover, but have 3 popsicle sticks as backing on each one. Because the solar cells are thin and glass, I wanted something to help strengthen and protect them, so each one was lined on the back with, --you guessed it, --the famous popsicle sticks. 

Last update: Updated the schematic. I had not finished drawing the solar charging circuit and needed to add the SpeakJet chip and Shrödinger's audio circuitry. Barring any glaring errors, I think that is Shrödinger's circuitry as built.

Schrödinger is now marked as complete.

Many of you know I had "emergency" cancer surgery recently.  What I might add is that this has left me drained of energy to continue working on this robot project, at least at this time. The doctors want me to do chemo-therapy, and if I do, it will continue for 6 months leaving me even less energetic than I am now...  I have decided to mark this robot project completed.

I hope what is here is enough to give people a few good ideas for their own robots. Over time I had added and changed the parameters and scope of this project to include more and more diversity, but Shrödinger, the robot, has already surpassed it original goals. It moves and avoid obstacles. It has "kid appeal" with its flashy-lights display and funky electronic voice. What I did not finish was the real-world mapping using a combination of sensors and the i²c memory chips. What is missing there is software only, as the sensors (visible-light "eyes" plus an infrared and two ultrasonics as well) and the i²c memory board with three memory chips are all in place. This was a more recent addition to the plan over and above the original scope of the project.

What I have planned now is to show this project complete as is, and if I should get energetic later on and work out the mapping software, I will just make that a new project page.  For now, with my low energy levels, I will do well to simply begin planning for a (possible) future 'walker' project.  If I get that planned out and begin the construction stages on it, I may be 'borrowing' (robbing) parts from Shrödinger (especially brain, batteries, the LCDuino readout board {made by PatrickMcCabe} and maybe the i²c memory board as well) for the walker.

 

Good luck to all of you on your own projects.

 

 

Previous Add: Was an updated schematic drawing. I still don't show the SpeakJet chip on this schematic, but I am certain I will be adding it under control of the Right Brain.

Previously Added:     I added a movie demonstrating the SpeakJet chip I have purchased to add a voice to the robot. I should have mentioned the little LCD unit that held Shrödinger's name and credited PatrickMcCabe on a job well-done in making that "LCDuino" board. It is run by an AtMega328 w/Arduino software, which displayed the text and flashed the one LED mounted on it temporarily. The LCD will not be a part of the Shrödinger project (at least no plans for that at this time). I have changed my mind several times as to what I was going to put on Shrödinger, so it is always possible it could end up on the robot as well at some point... --who knows? If I did, I would then have three brains present, two picaxe and one arduino, -all 28 pin types.

______________________________________________

     Since all of you name your robots, I have named this robot Schrödinger.  (That was the name of one of the early proponents of Quantum Mechanics. --the "cat-in-the-box" guy.)

     I finally did a spinal cord / brain stem operation and have his head functions hooked up.  Still have to test them and if correct, I will seal up his skull. Ok, I never did seal his skull but left it accessable. I did, however, enclose his spinal cord wires in a protective but flexible covering.

     I've added a third video, to show a little led board I will stick on the robot somewhere.  I stated that I did not have the communications between brains worked out, but that is not totally true. Here is how I set that up:

The LEFT BRAIN sends numbers to the RIGHT BRAIN to tell what it is doing. RIGHT BRAIN absolutely refuses to be called a "slave" or to refer to LEFT BRAIN as its "master".  Don't tell him, but LEFT BRAIN is pretty much in control, at least of the i2c bus.

LEFT BRAIN sends status updates like: 1-scanning with IR,  2-object found with IR,  3-scanning with sonics,  4-object found with sonics,  5-object too close,  6-full stop,  7-backing away,  8-contemplating which way to turn,  9-quick scan,  10-turning,  11-forward,  12-bumper switch (interrupt),  13-light scan (eyes),  14-need more light (asking right brain to open covers or turn on headlights),  15-area too bright (asking right brain to close covers or turn off headlights), ...  and so forth. Then it marks the interrupt line high going to RIGHT BRAIN.

Over at the RIGHT BRAIN, it gets the interrupt and reads the first (status) byte from i2c memory.the RIGHT BRAIN, having less work to do, uses this input to adjust its "emotions", displays emotions via mouth LEDs, eye covers, switch on/off the headlights and this little LED (flashy lights) activity board, which uses patterns to display brain activities.  Once the RIGHT BRAIN has picked up the number(s) being sent from the LEFT, it stores a number of its own in the same memory slot. When LEFT BRAIN sees this number (%11111111) appear, it knows RIGHT BRAIN got the last status byte it sent (so it can send another). It stores the next status and switches its interrupt line to RIGHT BRAIN high, to interrupt RIGHT BRAIN and tell it, that it has another new status to read.

In some of the pictures, you see a coil of wires on the left front corner of the chassis that is earlier pictures of his "spinal cord" wires, used to connect the head functions (eyes, mouth, eye-covers & headlights) Those have been hooked up now. The wiring of the main board is done. The top-cover has the IR distance sensor with servo and two ultrasonic distance sensors. It also carries the solar cells for charging the main logic batteries, and a small board (underneath) with the charging circuitry as well. All that shows in the first video is head-turning & steering servos plus the drive motors.  Since that video was made, I got hold of better batteries and have much less problems with batteries going dead. I found out that one of the brand new NiMH batteries is bad. It does not hold a charge more than a couple minutes under load, even though the other three in that set are just fine. I got a second set, and a new motor driver battery and it runs fine without rapid brown-outs.

     For the full schematic as I have it drawn so far, see file attachment (JPG file).

     I feel like mentioning something about the price and project costs... The page where we list the robots asked for a monetary amount but that is still unknown. I already have spent about three hundred US dollars on it. I have about everything I need for this project now but if I think of something I would like better, the price could go up.  My basic budget is somewhere between a $5 toy and a multimillion dollar Mars Rover. --So I am well within my budget limits...!  As to how much time I have put into it, I have no clue about that, either.  I fiddle with it whenever I get free time, and being retired, I have quite a bit of that.  I just keep trying different things. My biggest problem was the programming.  On a complex robot like this, there were a lot of sub-routines, and problems getting them to work together.

___________________________________________________________________________________________________________

Much earlier notes:

     Not long ago, I discovered the Picaxe chip(s) and am using those for this project. I currently have three PICAXE 28X2s (post-Dec.2010) available for this project, but may only use two in the robot itself.  Having lots of miscellaneous bits and pieces laying about, (from 40 years in electronics) and wanting to try out the Picaxe, I decided to make a "testbed" robot upon which I could mount various things and change them around at will.  Also, I generally visit one of my brothers every weekend and he has small children underfoot quite often, so I decided further that I should make it "Child Resistant". (Nothing is totally "Child Proof", after all.)  Consequently, most of the robot is metal construction. 

     While I have no movies of the project, but I do lots of photos.

     Collecting things that look like they want to be part of the robot platform project... Looks like I have enough to get started.  It is funny, but in this picture are some of the things I originally planned to use for this robot, and now that I look at the picture, I notice that less than half of them actually got used. I keep making changes.  Well, I did say it was a "platform" for experimentation...

     That motor controller board is actually part of what will be on the robot. It will be mounted directly above the main "brain board".

     Some people may wonder how I can work on such a "messy" desk... Here is a little (true) story you may find interesting:

     Years ago, when I was in an engineering deptartment, the head of the department (I'll call him "Pinhead") was always very neat. That is, his desk was always clear of everything. (No baskets; no telephone... just a bare desktop.) He would take out a letter or spec-sheet or proposal and stare at it for hours, before putting it away and getting out another.

     One day he came back to where I was working and commented, "Your desk is always cluttered. Don't you realize that a cluttered desk is the sign of a cluttered mind?"

     My immediate answer to him was, "...then thank goodness I don't have an empty desk!"

     "Pinhead" didn't get it. --Not sure he ever did. <grins>

 

     Yes, I think this will work...

     I got this old lathe when someone owed me $50 and asked if I would take the lathe as payment.  Not sure if my eyes lit up like beacons, but I know I felt like saying, "I might if you twist my arm and force me to take it." <grins> --Even an old lathe like this one would sell for hundreds, easy. Since that I have put a couple hundred in it, making it smoother and more accurate.

     Here (above) you can see one of the aluminium hub inserts with its bearings.

     Trying the mouth LEDs. I had to put in several diodes to make the different expressions, since some of the LEDs are used for multiple expressions. (Later changed the plastic piece holding them to a metal one, since the plastic one got melted a bit.)

     The motors have now been replaced, since the old ones were only strong enough to move the robot on flat terrain, --no bumps.

     I was not happy with the power of the first stepper motors, so I ordered new ones. (Sanyo B00224s, what I actually received was the upgraded version called the B00324) Running them at 10 volts, they seem to work fantastically (compared to the other ones.)

.

     I had already tested the new motors and unhooked the wires from this controller and the picaxe breadboard, when I thought of snapping this picture.

     Both the old motors and the new ones had shafts that were too long for the space in my chassis.  I had to (carefully) grind them down and sand off the ends so they didn't hit on the other motor when the suspension goes up and down on one side or the other. (and take care to not get any metal dust/filings in the motors.)

     The white "tie-rods" are pieces cut from cheap wire coat-hangers and bent into shape with needle-nosed pliers. Another odd bit; I planned this servo placement to be temporary, but it worked fine, so I just added a cable tie (aka tie-wrap) and locked it in place as is.

     Ok, after finding the wheels did not turn far enough, I decided to drill a couple new adjustment holes in the steering arms. (See next photo.)  The middle holes seem to give me what I want, but I may tweak the steering further after the controllers, batteries, and driver chips are mounted and I can actually test how it handles when sitting on its wheels.

     I put in place ten of the bright white LEDs (scavanged from an LED light bulb). I decided to mount them over the CdS eyes, since the cadmium sulfide sensors will need the help in low light conditions.  I am setting it up for 'medium' light conditions and adding headlights for dark places, and eye covers for too bright conditions. (I could always use a dual op-amp in a comparator circuit, but not sure that will be needed.)

     I'm using wires stripped from a telephone line cord between the brain compartment and the head because they were designed to flex back and forth thousands of times without breaking. Being fine strands wrapped around cord, they are a bit hard to work with (and solder to) but it can be done.

     I was going to mount eyebrows for kid-appeal, but after I decided to put the headlights above the eyes, I won't have room for the other two servos.

     I think I have decided the only place I can mount this unit is fixed on the front of the vehicle. It will only give reading for movement straight ahead... (and I can calibrate it with a reading on a "fixed" object, while the 'Bot is moving. Mostly the proximity detection will be done with the eyes and a ultra-sonic sensors. I also added an infrared sensor mounted on the "top cover" of the body (below the head).

 

     Have the mouth LEDs mounted on the metal replacement part and wired up.  Mounted it on the head soon after. Next I mounted the servos for the "dust covers" for the eyes. Next picture shows them hooked to the picaxe breadboard and being tested.

     The eye covers are working just the way I want them to. In case of light that is too bright, I can rotate them partially closed to limit incoming light, or if the light is too low, I can turn on the headlights (10 ultra-bright white-light LEDs)

 

     The SR-04 ultra-sonic sensor worked so well, I sent for another one.  Most people seem to be using "name brand" ones that cost much more, but these work fine and only cost $8.49 USD. I am starting to think that the number of sensors, lights and servos must always expand to use up all available I/O pins.  :-)

     I am still thinking of adding a gripper arm on the robot, but have not commited to that yet.  If I do, I could either forego adding the LED display matrix and that will give me 7 additional I/O pins, or else add a separate brain to control arm movement.  I already verified that servos will work just fine on any I/O pin if I use the PULSOUT command instead of the SERVO or SERVOPOS commands.

     Here is a list of my I/O's as I currently see them (Still trying to get these to all work together the best way. Doing a lot of programming and testing. I think this will do it.

____________________________________________________________________________________________
LEFT-BRAIN (PICAXE) CONNECTIONs                    PICAXE PIN    AXE-STACK PIN    Usage (?)
V+                                                                              20                                        +5 volts
GND (0V)                                                                    19 & 8                                   0 volts
____________________________________________________
Output 0 (B.0)                                                              21                         0              Ultrasonic PING Left         (Output)
Output 1 (B.1)                                                              22                         1              Ultrasonic PING Right       (Output)
Output 2 (B.2)                                                              23                         2              Head-Turning Servo           (Output)
Output 3 (B.3)                                                              24                         3              Steering Servo                  (Output)
Output 4 (B.4)                                                              25                         4              R Drive Step Motor 3 (&4)  (Output)
Output 5 (B.5)                                                              26                         5              R Drive Step Motor 1 (&2)  (Output)
Output 6 (B.6)                                                              27                         6              L Drive Step Motor 3 (&4)   (Output)
Output 7 (B.7)                                                              28                         7              L Drive Step Motor 1 (&2)   (Output)

In 0 / Out c0 / Infrain                                                     11                         8              Interrupt Out to Right Brain (Output)
In 1 / Output c1 / PWM 1                                              12                         9              Read Left Ultrasonic            (Input)
In 2 / Output c2 / PWM 2                                              13                        10              Read Right Ultrasonic         (Input)
In 3 / Output c3 / I2C SCI / SPI SCK                              14                        11              Memory I2C SCL 
In 4 / Output c4 / I2C SDA / SPI SDI                              15                        12              Memory I2C SDA
In 5 / Output c5 / SPI SDO                                            16                        13              Interrupt From Right Brain   (Input)
In 6 / Output c6 / Kbrd Clk / SER TX                               17                       14              Right Front Bumper Switch  (Input)
In 7 / Output c7 / Kbrd Data / SER RX                            18                        15              Left Front Bumper Switch    (Input)

ADC 0 / In a0 / ULPWU                                                  2                        16              InfraRed SERVO control    (Output)
ADC 1 / In a1                                                                 3                        17              InfraRed Measurement   (ADC in)
ADC 2 / In a2                                                                 4                        18              Right Eye                     (ADC in)
ADC 3 / In a3                                                                 5                        19              Left Eye                        (ADC in)

____________________________________________________
Serial In                                                                         6
Serial Out / A.4 / ADC 4?                                                7
Resonator                                                                      9 & 10
Reset                                                                            1

____________________________________________________________________________________________
RIGHT-BRAIN (PICAXE) CONNECTIONs                   PICAXE PIN    AXE-STACK PIN    Usage (?)
V+                                                                               20                                         +5 volts
GND (0V)                                                                     19 & 8                                    0 volts
____________________________________________________
Output 0 (B.0)                                                              21                         0               Red LEDs -common
Output 1 (B.1)                                                              22                         1                ...available
Output 2 (B.2)                                                              23                         2               Interrupt In from Left Brain
Output 3 (B.3)                                                              24                         3               Interrupt Out to Left Brain
Output 4 (B.4)                                                              25                         4               Right Eye Cover Servo     (Output)
Output 5 (B.5)                                                              26                         5               Left Eye Cover Servo   (Output)
Output 6 (B.6)                                                              27                         6                ...available
Output 7 (B.7)                                                              28                         7               Brake Light (transistor driver)
In 0 / Out c0 / Infrain                                                     11                         8               Mouth - Happy              (Output)
In 1 / Output c1 / PWM 1                                              12                         9               Mouth - Sad                  (Output)
In 2 / Output c2 / PWM 2                                              13                       10               Mouth - Normal              (Output)
In 3 / Output c3 / I2C SCI / SPI SCK                              14                       11               Memory I2C SCL 
In 4 / Output c4 / I2C SDA / SPI SDI                              15                       12               Memory I2C SDA
In 5 / Output C5 / SPI SDO                                           16                       13               \
In 6 / Output c6 / Kbrd Clk / SER TX                              17                       14                 > LED matrix board
In 7 / Output c7 / Kbrd Data / SER RX                           18                        15               /    (horizontal)
ADC 0 / In a0 / ULPWU                                                 2                        16               Headlights (transistor driver)
ADC 1 / In a1                                                                3                        17               \
ADC 2 / In a2                                                                4                        18                 > LED matrix board
ADC 3 / In a3                                                                5                        19               /    (vertical)

____________________________________________________
Serial In                                                                        6
Serial Out / A.4 / ADC 4?                                               7
Resonator                                                                     9 & 10
Reset                                                                           1


___________________________________________________________________________________________________________

     As to the concerns about the steppers: I've ordered a couple new steppers plus new 32 pitch gears to fit them and have them mounted on the chassis where the others were.

     I am including my current working schematic for the robot as a file attachment (.jpg available above). If you spot anything that does not look like it will work properly, be sure and tell me, so I can change it before testing for maximum smoke in the picaxes.      <grin>

     Oh, something I did not list there. The NPN transistors are 2N3904s and the PNPs are 2N4036s but more or less any common transistors would do.  Those are ones I happened to have lying about. I considered using 2N404s, but decided I might need those germaniums for something special some day --(like in the solar battery charger, for instance).

     As to the dual transistor arrangement on the "mouth" lights, I would not have needed that, but I have already wired the diode matrix that runs them for switched positive rather than ground, so I threw in an extra PNP in each circuit to reverse the logic polarity.

     I also did not show the batteries, power switches and solar charger on the schematic yet. (The solar charger circuit is an option. I may or may not use it on this unit.)

     Main battery:  4 x NiMH,  [5 V by 2.5 AH]  -I have ordered another identical battery pack, to help increase the instantaneous available current for running servos, headlights and so forth at the same time.

     Additional battery to boost Stepper Motors (only) on up to 10 volts:  8 x NiCd,  [5 V by 2.0 AH]

     I listed these rechargeables as 5 volts, not 4.8 volts as that is what both sets actually read.

 

 

     The code above is the MOVEMENT section (only three readings for shorter pauses while moving. Takes 1 second plus.

     (Both that and the next one should speed up a little when not needing to send characters to the terminal at 9600 baud.)

     The one below is in the MAPPING section of the code (more readings, but takes 9 - 10 seconds to produce results).

As mentioned before, the program code is still in the process of development.

 

     I needed a miniature double-pole switch to turn on both batteries at once, and finally found some small slide switches in a parts drawer that were DPST.  One of those worked fine.

     If I do use the solar cells on this robot, I have to figure out a circuit that will charge both batteries --as in, disconnect them from the robot electronics (at least the motor "boost" battery) and charge them in paralell. Once they are charged up, they would then automatically switch back to series mode to power the robot.  I would also like them to swing out of the way when not in use, and align to the sun (or brightest light) when the battery gets low. However, this robot is probably complex enough.  I may not even add the solar cells on this one. If I do, I will probably mount them on the top cover (not shown in these pictures yet).

     I have decided not to use the X-band motion detector.  I already have plenty of sensors and not enough room to mount it on this 'Bot.  Basically, it won't be useful to have it there.

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I hope your health and level of energy improve. Best of luck to you. You are a great part of this community!

Thank you very much.

I saw you use SR-04 ultra-sonic sensor, have you added a resistor on each pin? On the photo it looks like 4 resistors are glued in socket. Thanks!

No, that is illusion. What you are seeing is just wire wrapped around the pins using a wirewrap tool. (note the coppery colour shows it is just wire.)

 

Good luck chief !

Thanks. I'm hopeful.

 

LOL I'm just kidding, of course. I think this bot lit a spark for many in an assortment of ways. I would like to see you take it easy, kick the cancer, and come back to ole Shröd when the moment seems right.

Try to keep us updated on your progression. I know it's not very high on the priority list but I would like to hear the latest news. I also hope your health foregoes the chemo, FWIW. It's a lot of fun I hear but I think you've had enough fun already ;)

Pullin' for ya, buddy!  bOd

Thanks to all for the good wishes.  I am still hopeful.  :-)

Keep fighting and moving ahead. You can do it! Happy holidays Dan!

Thumbs up Dan. Wish you all the best and a nice Christmas Season. Santa may have some good things for you.