views:

1507

answers:

20

What is the best way to get started with programming things outside of your computer?

I don't mean mainstream things like cell phones with APIs.

Please assume working knowledge of C/C++

+3  A: 

I recently heard about the BUG which calls itself "open source hardware development". Is this the sort of thing you're looking for?

Greg Hewgill
Sounds like it, basically I want to tinker with hardware and then program it.
Brian R. Bondy
Sounds like a good option but pretty expensive for something I just want to tinker with.
Brian R. Bondy
+13  A: 

Brian, you might find the Arduino interesting. It is inexpensive and pretty popular. I started playing around with micro controller boards and such a few years back and that lead to an interest in robots. Kind of interesting, at least to me.

itsmatt
Thanks I'll check it out to get me started.
Brian R. Bondy
If you're in the New York City area, NYC Resistor does occasional classes on Arduino programming. I took one in November and it was a great introduction to the board, its programming environment, and how to control devices.
Ben Combee
+1  A: 

Maybe start with small microcontroller projects. This may be helpful: http://www.kmitl.ac.th/~kswichit%20/

jmissao
+2  A: 

I'd look into stuff like (unofficial) GBA development or the like, sure there are "Libraries" but you can go digging and just stick bits into specific addresses and make stuff happen. You can't get more "No API" then raw memory-mapped hardware access.

Dre
Console dev FTW. You've got to love hardware that the manufacturer is desperate to sell as cheaply as possible :)
+12  A: 

Embedded programming is fun.
You can start with things like the Basic stamp or PIC, or since you know c/c++ you can use a real microcrontroller like an Atmel AVR. look at the Butterfly or Arduino kit

The Arduino has an amazing community of projects and info behind it.

Martin Beckett
The Basic Stamp is easy-peasy to hook up to other interesting things (like, for example, a smoke machine and motion detector: http://www.atalasoft.com/cs/blogs/stevehawley/archive/2008/10/24/a-geek-on-hallowe-en.aspx)
plinth
+7  A: 

It's not a microcontroller, but the Lego Minstorm is a good place to start learning the ins and outs of embedded programming.

Bill the Lizard
+1  A: 
brian d foy
A: 

There are a lot of programmable robots around. In fact, even some of the Roombas (automated vacuums) can be programmed. This is particularly good if you want to teach kids how to program.

Uri
+20  A: 

I vote for the Nintendo DS:

  • Nice hardware : 2 CPUs, 2 screens, touchscreen, mic, speakers, wireless, 2D and 3D acceleration
  • No OS to speak of
  • Freedom to talk to the bare metal without restriction
  • Well-documented
  • Very active dev community
  • Enthusiastic audience for anything cool you create
  • Cheap (shockingly so if you go for 1st-gen units)

All-in-all it's really excellent fun to play with.

To get started:

  1. Get an DS
  2. Get a SLOT1 flash-cart (I've got a DS-X, but there are plenty of others)
  3. Get devkitpro
  4. Go here for help or advice
A: 

If you have a Nintendo Wii, you can crack it using Twilight Princess. You don't even have to buy it. I just rented it for a couple days. Go to WiiBrew.org and check out some of the projects that are available there. Most if not all are open source, and should give you a good starting point. Lots of ports of existing stuff, along with some original programs written specifically for the Wii. You would of course do the programming on your computer, and transfer the compiled binaries to the Wii. I haven't looked into how hard it is to get a development environment set up and having it build for the Wii, but if you email they project maintainers from wiibrew.org, they may be able to set you up.

[EDIT]

Just browsing around, I found DevkitPro, which seems to be the toolkit of choice for developing on many different console and handheld systems, including the Wii.

Kibbee
A: 

To ease yourself into embedded programming, you may want to try using XNA for either the Xbox or the Zune. You won't be doing memory management, but you'll get used to the constrained hardware if you do it on the Zune. Admittedly, it's using C#; but you could always do the programming itself using CIL.

TraumaPony
+5  A: 

I find dogs pretty easy to program. With some treats and a squirt bottle you can teach them to make you breakfast.

Cats are hopeless. Don't even try.

I've been trying to program my wife for a while but I keep getting a SleepOnTheCouchError.

Alex Miller
lol, offtopic, but funny nonetheless. =]
mdec
I find it funny that someone found this offensive :)
Brian R. Bondy
+1 for the cat comment.
Chris
A: 

I have personal experience and would recommend using these products to program PICs:

Programming board GCBasic (Open Source Basic)

The PICs are cheap ($2 bucks or so) and the board will cost you around $120.

Recently, I have been impressed with TIs wireless USB chips/programmers. You can get 2 chips and a programmer for $50 bucks. It also comes with a free C compiler. By default it comes with a sample remote temperature program.

TI wireless target board

dr_pepper
A: 

I think it's fun to hack old iPods. You can get a fourth generation iPod (or any of a number of supported devices), run Rockbox on it, then get the source and help hack on it.

jfm3
+1  A: 

Buy yourself an HP 10C Calculator, and then program all those "programming 101" math algorithms using its insanely small but practical calculator language. Reminds me of assembler, but it's not.

rickumali
+1  A: 

I'd strongly recommend to find an open-source project next to one of your leisure occupations.

First, open-source because the support is mostly very friendly, then open-source because other contributors will have at least one comparable hobby, and then favorite pastime occupation so you can see a need for tools etc.

Two projects I have been playing around with very successfully:

  • Music: Rockbox, a firmware replacement for many mp3-players and portable media players.
  • Photography: CHDK, a firmware addition to numerous Canon compact still cameras.
lImbus
A: 

I would also recommend AVR (8-bit) and Butterfly or DB101 kit. The main advantage is that there is a GCC compiler available and that you can program them through the Serial Port, without the need of a tool. Inexpensive programming and debugging tools are also available. There is a very strong AVR community in AVRFreaks

Another alternative is ARM7 and ARM9 microcontrollers (32bit). If you are interested in using an OS (ucLinux/FreeRTOS for ARM7, Linux for ARM9), you should go that way. There is of course a free GCC compiler. You can buy kits and tools at Olimex

kgiannakakis
+1  A: 

Give SparkFun a shot. For me, servos are what I love to hack around with.

Optimal Solutions
A: 

You can try with BeagleBoard, though its kind of mainstream, nonetheless very impressive performance to speak off at just 149$.

Chintan
A: 

If you would like to create a cool gadget using a microcontroller as a learning experience, you can look at the starter kits from Rabbit (website). They have a variety of low-cost kits with 8-bit microcontrollers to get started with a particular technology.

guzelo