I have been thinking about playing around with robotics in my spare
time and have been searching the net and newsgroups for information but
have become overwhelmed with all the information flying around.
I want to try and build a robot that will use extensive servos
(hexapod or arm type of project) that will use sensors and its own AI
rather than human controller.
THe current controllers I have been looking at are the OOpics and the
AVRs (STK 500). I program in C/C++ and Java so those 2 looked pretty
good. I took a look at the IsoPod/IsoMax stuff but don't want to have
to pay that much and learn a new language just starting off.
THe OOpic stuff looked good but I felt that to much of the stuff was
already programmed into it and that it would take much of the nitty
gritty stuff out so I wouldn't learn as much. Anyone else feel the
I've taken a look at avrfreaks.com and tried to grasp some of the
basics of the AVR, but still seems confusing. But it seems many people
are raving about these.
Any help would be greatly appreciated.
Well, you don't have to pay that much, and you won't get that much
either. But since I make the IsoPod(TM) and invented IsoMax(TM) etc. you
can assumed I'm biased.
These sorts of post, "which processor" are rather perenial, and usually
touch off a "processor war" because we all have our own favorites. Some
guys get very fond of one particular processor and stick with it, and
some of us switch our favorites over the years as newer things come out.
You are more likely to find more PIC and AVR users, because they have
been around since (approximately) 1990 and 1997 and many folks stick to
what they start with. There will be more literature and also many
examples because they have accumulated over time. (But for that matter,
the 68HC11 is also a good choice with lots of robotics literature.)
You can do a considerable amount of computing with a PIC or an AVR, (or
HC11) but you usually have to resort to assembly level programming with
interrupt driven programming to get the very most out of them.
On the other hand, since you might want to stick with what you start
with, it would make sense for a beginner to go with something more
modern, with more capacity and more future growth potential. I'm very
impressed with the ARM lately. Our ARM boards are running neck and neck
with our 'PODs and there are many ARM chips running even faster,
hundreds of MHz. Philips announced last week a series of ARM chips that
sell for $1.47 in 10K quantity. That's pretty amazing: a 32-bit
processor with big memory under two bucks. I don't know of anything else
out there that can compete with so much bang for the buck.
I think if I were starting out today, and could only do one, I'd go ARM.
"Randy M. Dumse" wrote
I've started using PIC and mikropascal a year ago and I'm very happy with
it. But the ARM keeps drawing my attention. I have a dev board with a
philips LPC2*** that I'm trying to get me motivated to do something with it.
The only disadvantage I see with ARMS (and please correct me if I'm wrong)
is that packages are too small and SMD only... in order to do a quick and
dirty prototype you'd need to have an adapter board or something similar.
I don't know if a micro can be too small. I like 'em small. Particularly
now that they are rather complete systems with plenty of RAM and FLASH
inside. Mostly they just need some small amount of support extrernal.
As far as dealing with SMT... there's always some supplier that will
make a nifty little board with the chip mounted for you.
My company, New Micros, is one. We are offering the LPC2131 with 8K Ram
32K Flash, and a 60MHz 32-bit ARM7 processor all mounted with RS-232
conversion, power regulation, crystal, LED's, etc., for $29.
We've just brought out signal pins to a dual in-line .1" connector that
are easy to use on a prototype baord, or in a strip socket. So at about
half the price of a Stamp-like processor, you've got something like 20X
the computing power, in a similar foot print (narrower). Hopefully that
will make your quick and dirty prototypes even faster to whip out,
wtihout having to mess with SMT or the support circuitry.
So back to the original poster's question, I'm not sure I'd bother with
an 8-bit PIC from the past, anymore than I'd recommend you start with a
16 MHz 286 (designed about the same year) to use for your starting desk
top. Why? No modern software even runs on that processor.
By the time you're proficient with the PIC, you'll be about two decades
behind everybody else, or with a AVR, about a decade and a half. I'm
really lost on why people are so engrained in a past, that's ...
well,... past. What's up with that?
Back in the early 90's I was working for the USAF keeping track of
utility purchases and resale at a couple of thousand sites in the
Dakotas and surrounding states (missile sites, bombing ranges, ect).
This was around the time that 486's were coming out. I was handling
all of this on a Zenith 100 which was a partially compatible 286
machine. It got the job done.
The point of this is that you don't need the latest technology to get
the work done. PIC's and AVR's are cheep. There are lost of examples
out there describing how to use them. There are plenty of different
programmers and programming languages available for them. At some
point I'll need to use a POD or an ARM7 because I can't do it any other
way, but for now, I am making entire robots for less than the cost of a
Randy, you make a great product and it can be used fairly easily by a
beginner, but for a beginner to use a POD to run a line follower or a
sumo bot is sort'a like using a Humvee instead of a bike to deliver
papers in your neighborhood - overkill. On the other hand, a Humvee is
great for desert recon where a bicycle would fail miserably just like
your POD's can easily handle some very complex problems that take
multiple PIC's and incredible programming finesse to even attempt. The
right tool for the job.
Eventually, DSP's and ARM7's will be so cheep that they will be used
for every little project, but PIC's have at least a good five years
left and AVR's at least a decade. By then, the early adopters will
have plenty of code examples and a broad choice of highly efficient
free compilers for upper level languages that working with them will be
easy even if you spend the last decade working with the old tech.
Randy M. Dumse wrote:
The great thing with the newmicros boards is you
do not need anything else or other software.
Everything is in the box when you get it.
All you need is a serial terminal program and that is it.
With their arm based products you can use arm gcc
for c or c++ with eclipse ide or your favourite text editor - all free.
You don't just have to use forth or isomax.
There is also multiple c compilers for the 56f80x chips.
The stk500 is nice and can be programmed directly from avr studio.
Some cheap boards at
Can get a basic for the avrs
Bascom avr there is a free lite version
Free c compiler for avrs win avr (gcc port for avr)
Available from avrfreaks or
My favourite of the commerical avr compilers is Imagecraft ICC avr
for 45 days then becomes has a 4k code size limit
Free c compiler for the 18f pics from microchip.
Student version that stops optimising code after 60 days.
It works from inside mplab
Philips just announced a few new lower priced arm7 chips
LPC2101 (8KB flash, 2KB SRAM)
LPC2102 (16KB flash, 4KB SRAM)
LPC2103 (32KB flash, 8KB SRAM)
see very bottom for announcement text
Which are going to be cheaper than pics ,
may take a while for pricing to trickle down for small quantities.
70MHz , 17MHz IO speed , 2 uarts , 10 bit adc ,2 timers
up to 32 5v tolerant inputs , on chip oscillator
Big bonus is plcc 44 , aimmed at replacing the plcc44 8051
and pic plcc44 chips.
Seems plcc44 will be available some time after the tqfp.
Gcc for arm7 is already fairly easy to use.
Make files can be a a pain to learn.
These tell you how to set it up with the free eclipse ide
Can use the demo version of Keils ide + armgcc or their compiler.
GCC isn't restricted in any way only Keils debugger
only supports programs up to 16KB
Same with the Kickstart versions of IAR's arm tools for the lpc2xxx chips
Philips today announced the 3 newest members of the LPC2000 family,
the LPC2101, LPC2102 and LPC2103.
Built on 0.16um flash process, with 128-bit wide access, the trio
operate up to 70HMz, 63 MIPs, making them the fastest Flash ARM7TDMI-
S-based microcontrollers on the market. In addition, the new LPC210x
members feature Fast I/O capability allowing bit-toggling operation
of 17.5MHz, more than 4 times faster than other competing ARM
microcontrollers. At the same time, these MCUs incorporate
innovative power management features that allow deep power down
current consumption, with the real-time clock running, to be less
LPC2101 (8KB flash, 2KB SRAM), LPC2102 (16KB flash, 4KB SRAM), and
LPC2103 (32KB flash, 8KB SRAM) will be available starting November
2005. The per unit Manufacturer Suggested Retail Price in quantities
of 10,000 are USD $1.47, $1.85, and $2.20 respectively. Packages are
available in 7mm x 7mm TQFP-48 and PLCC-44. These new devices are
specified at an operating temperature range of -40°C to +85°C.
For more details, go to:
Quite honestly, I can't imagine what you guys can be building. At the same
time, I haven't a clue what I would do with a LQFP64 package. 18 pin thru
hole DIPs is much closer to what I can make use of. Small qty chip prices
aren't that far apart between PICs and the ARM, but what do you prototype
on? Am I the only one without a wave solder station at home, or do you guys
just buy the $200 dev kits?
Really? Not to be contrary, but, I find I can tax out a processor pretty
completely these days. Let me give you a brief accounting of my very
At the moment I'm in the 18 servo hexapod walker code, trying to figure
out how to start a gait from standing, and return to standing from
I'm also trying to figure how I can make the walker turn smoothly around
a point. I thought I had a simple understanding of it based on Ackerman
steering, but I was going at it a little too simplisticly. I was already
doing quite a bit of trig to stretch the key pattern to fit the desired
direction of the body. So now I realize I need a ton more trig functions
to figure how to angle the legs, not just the stroke, relative to the
commanded turning point.
I've found I can do gaits and walking pretty well. The turning is
starting to stress my 80MHz DSP. I figure it's my fault because there
has to be a simpler algorythm for what I'm trying to do. I am doing too
many calculations per second.
In the mean time, I've set aside the Robomagellan Tank project I was
working on. There I had two channels of PID control of the motors with
Odometry, Navigation, Drive to a point, and GPS monitoring all running
on one processor. I have yet to integrate in the CMUCam color tracking
works. I'm not going to make it to the contests this year though, due to
some health set backs.
A couple weeks ago, I got a 115200 baud radio link going for them with
the SparkFun bluetooth interface. Nice to have your robot operating
autonomously, and still have an interactive data channel to be able to
gather data, and tweak values while it is on the move.
Can a PIC even bit bang a UART at 115200, and have any significant
amount of cycles left over to do something useful? I'm rather doubtful,
and I don't think they have UARTs that run that high, either. So using
one of those processors would likely mean my data channel would be
limited to much lower rates.Tragic? Maybe not. But what does it do to my
productivity? What is my time worth. Are my tools enabling me, or
My point is, I'm trying to push the envelope on robotics, and PIC's and
AVR's are not well suited to play there. Even the wonderful processors
with 20x performance I'm using are stressed there. And they have
hardware support built in to handle tough motion control issues (without
any processor intervention!) that lesser processors have to bit band to
have at all.
So I know the future of robotics is not with the processors of the
previous decades. And the future of robotics isn't with the processors
of today, either.
Perhaps the next generation of processors will start to do what we
really need done. Since it looks to me, the ARM has a clear path of
non-obsolesence for a generation or two to come, that's why I wouldn't
bother with lesser processors today, but if I could only learn one, I'd
learn the ARM.
No, most don't have a wavesolder machine at home. I don't. In fact, what
you'd need to do this SMT really is an IR oven anyway. No, most don't
have those capabilities, so they buy the development kits.
But that's rather my point. My company will sell you a development kit
for a LPC2131 for $29. It has all the hard stuff (multilayer, LED's
Xtal, RS-232, power conversion) done. You just hook up to .1" pins. And
if you find you run out of RAM or Flash (8K/32K), good news, we have a
whole line that fits in that same board format, with up to 64K of RAM on
one type board, and up to 512K of Flash on another. BTW, I see the DKits
on these higher end units are less than $100. While I may have the low
price point with our $29 board, I assure you, I am not the only vendor
out there selling development kits for ARM's in this ball park.
So, back to the original poster's quandray, I don't know any other
processor, than the ARM's, where you can buy one for less than $2 and
buy another with the same base core that will challenge the computing
ability of the best PDA's. ARM has just taken a unique place in
computing history that no other processor has ever attained.
"Randy M. Dumse"
This thread is being very instructive to me, it is closely related to the
poll I posted earlier too.
Although I still think there will be plenty of live left for PICs, Atmels
and other MCU's, for harder stuff I know it must be ARMs, DSPs or something
better that could come up in the next few years.
So, knowing that there are kits and adapter boards available, I still want
to be able to solder the IC to a board of mine. Is it still possible (note
that I'm not asking if it's easy) to make my own board (photosensitive) at
home and hand solder one of those little chips?
The LPC chips come in a 0.5mm pitch QFP. Personally, I have no fear of
soldering small quantities by hand onto commerical-quality boards.
I am not so sure about using a home-made board-- you're talking
roughly the equivalent of 8 mil lines and spaces, which is fairly
fine. It should be possible with photosensitive (preferably heat-
laminated photoresist), probably not with toner transfer.
Good point! Anything that is slow and works beats anything that is fast
but doesn't work.
Yes, but that's what I'm saying, that day... _is_ today.
This just happened. The balance just tipped. (In my opinion, for sure
last week, with the new Philips price announcements to be certain.)
For example, we make a Barrel Racing Timer in our Pegasus subdivision.
We use IR remote ciruits to make a break beam. We have a little LCD on
the box, so you can read the run times right off the heads. So we used a
little 8-pin PIC iirc. Less than $2. Has 2K of code space and a very
small amount of RAM. My head of engineering did the programming on that
Anyway, with feature creep, we got to where we needed just one more
feature, to detect if we had a remote console attached. There wasn't
room in the code. Ugh. After a couple months of messing with it, he got
the feature in.
Now, today, if I were going to do the same product, do you think I'd
consider a PIC? No way. For the same money, same assembly cost, just a
different processor, I could have room for feature creep for generations
without hitting the boundaries of the LPC2131. It has 16x the memory.
And if I did feature creap out of the LPC2131, then there's the 2132,
2136, 2138 to switch to. The 2138 has 32K RAM and 512K flash. Same
footprint. The larger memory part would solder down right to the same
pads in the same product. Plus there are far more features, faster
UARTs, A/D's, I2C, CAN, etc. etc. that can be brought to my product
while staying in the same family. I could even have USB and talk to a
Further, when you talk about development: There is a build in boot
loader in the ARM that is fast! There is a JTAG port on the ARM that can
be used to debug the program. There are powerful debuggers.available as
freeware. There are fine compilers available, freeware and professional.
There are many language languages. This is a real processor that can do
subroutine calls, and run real time OS's, do interactive debugging, and
so on. Etc. Etc.
Man, why would I ever choose a PIC when I could have one of these ARMs
at the same price?
Actually, I used to favor the HC908s. Now, I wouldn't consider them
either. I'd start out assume a ARM would be the cheapest solution (in
the run sizes I normally get involved with anyway).
To get a comparable AVR (ATMEGA128) albeit still slower, I'd have to pay
~$15. (I know, we sell them too on the same size boards.) The ARMs are
way less than that.
That's what I mean when I say the day, when the ARM's are so cheap they
are used in every little project, is here today.
(115 kbaud? I think they do. USB works too well and too easily to bother.)
That's rather my point, as well. It's not $2 a chip to me, or even $29. It's
more like $89 (Pluga21xx) to do anything useful. As the business owner, you
already know that. Just the same, I don't mind spending the money where it's
Alright, I'll play. Shopping from your shelves only, what do I need to get
started (and be reasonably happy with 4 years from today, to match the PIC's
track record)? I want to develop on my Windows or Linux box, push it to the
processor, and have it act in a motor control and power management role.
(Drive a few BLDC motors, some sensorless, some with Hall sensors, some with
quadrature encoder; two three phase AC induction motors; read a few 10-bit
or better ADC channels, monitor a handful of digital lines; converse with
the controlling PC, exchanging status and command info. USB would be nice;
IR or RF would be better; hardwired UART would need strongly compelling
If you care to put together a list, add a "Buy Now!" button. I might be
crazy enough to hit it. Tack on a dummy tax if you like, for doing my
legwork for me.
For what you are doing, you have the right tool. For what I am doing
it would be the wrong tool. I just finished the first draft of the
first article in a series that I plan to submit to Servo entitled
"Beginning Robotics for $50 a month". While the first article was
about necessary tools, how to solder, and things to look out for when
shopping online, the second article builds a complete, programmable,
expandable robot for $50. Even with the extremely good price of your
$29 ARM board, I could not hit my price target if I used your board. I
am using a DIP ATMega8, internal osc, simple cable programmer. It does
what I need at a total price I can afford. My bots are running (well,
one is half torn down so I can take pictures for the second article,
but it was running before and will again) on a $5 processor with $2
worth of power conditioning. The $22 I saved compared to your board
paid for motors, H bridge, and battery holders.
If I can fight my own laziness and write the entire series, I will be
able to show all the basic sensor and communication interfaces with
that AVR. Each month adding enough new capability to keep a novice
interested in those tough early months. Beginners need cheep, simple,
and easy to understand. POD's are simple and easy to understand, but
they are not yet cheep. ARM's have dropped dramatically in price, but
the need work with SMD makes you trade off either simple of cheep.
Like you, I got a Stewart tank waiting to become a robo-Megellan
contender. If I ever get to it, I will probably need more powerful
processors to make it work (although I am a sucker for distributed
systems). At that point, I'll have to take a good look and see what is
the right tool for the job. There is a good chance I'll place an order
with you for one of those ARM boards, but there will probably be a PIC
or two in there too.
Unfortunately not getting enough time to play with the free Keil MCB2130
I got from the recent circuit cellar contest
(its being lent to a few people at uni anyway) as just started working on a
video imaging project (TI DM642's / TMS320C6415 etc)
One of the example programs on the Keil MCB2130 dev board
is voice play back. Record 5-7 3 second samples
convert to format that can be compiled into a project
then play it back.
For prototyping either make your own or buy modules from newmicros ,
olimex/sparkfun.com or one of the other small modules or cheaper boards.
Have used a few newmicros boards - isopod , servopod , plug an arm.
I want one of these boards
with a plug an arm.
Randy any update on availability yet ?
You can battery power the olimex boards if necessary.
The wave / drag type tips for a standard type desolder station work wonders.
If you think lqfp64 is bad, try a tsop56 package on a pcb that warps when
Price wise the chips are all ready the same price or cheaper than 18f pics
usb or extra can bus versions are a bit priceier
lpc21xx Plcc44 is coming up soon from Philips, as I have sockets and other
boards using plcc44 already, its not to bad to use veroboard.
But you can push the envelope by using multiple processors.
Perhaps you could handle the turning easier if you had one processor
per leg handling the kinetics and sensors for that leg. And a
more central processor that handles the interaction of the
In the future we'll have procesors that can do more. But for now
we have to work with what is available. I've seen people do wonderful
things on a small PIC, and see people flub a robot with a PC.
I think that it's what we do with what we have available that
For now I'm looking for a good single-leg processor. It would need to:
1. Handle motor control for three/four motors
2. Read encoders from each motor
3. Read sensors on the leg to verify pressure and position.
4. Communicate with other processors in the system.
Perhaps the Tiny-ARM can do it. I don't know. Maybe even a Tiny-Pod
(I like Forth). Heck, perhaps even an AVR or PIC can do it if I tune
the algorithms right.
I don't know enough about the ARMs to make an intelligent decision.
They look like they have the computing power, but do they have the
microcontroller peripherals, like ADC and PWM?
And you have a pinout that I would have to create a custom PCB
to use. The rows of pins are too close together to fit into a
breadboard. I can use your dev kit but that adds money on top of
Also, I would have been *much* happier had you just had TTL-level
serial communications instead of RS-232. I generally prefer to
communicate with other processors. If you're going for an "RS",
I would have preferred RS-485. Of course, that is personal preference.
D. Jay Newman