Bionic Arduino – Introduction to Microcontrollers with Arduino

Bionic Arduino

Bionic Arduino is a set of four 3-hour classes in November 2007 hosted by Machine Project and taught by Tod E. Kurt. It is an introduction to microcontroller programming and interfacing with the real world using the Arduino physical computing platform. It focuses on building new physical senses and making motion with the building blocks of robotics, using Arduino as a platform.

In the class, participants are shown and experiment with the Arduino’s capabilities and learn the basics of common microcontroller interfacing, such as: digital output to control lights and LEDs, digital input to read switches and buttons, analog output to control motor position or LED brightness, and analog input to read sensor inputs.

The class assumes no previous electronics knowledge, though it does assume a little programming knowledge. No soldering is needed during the class, as all circuits are built with solderless breadboards.

Class Notes

Arduino Sketches Used in Class

Processing Sketches Used in Class

Parts Suppliers, New

  • SparkFun — Arudino board and shield, and many other neat gizmos.
  • Jameco — General electronic parts, easy-to-use, also has computer parts.
  • Digikey — Exhaustive parts supplier. Cheaper than Jameco usually, has more variation, more hard-to-find parts.

Parts Suppliers, Surplus

112 Replies to “Bionic Arduino – Introduction to Microcontrollers with Arduino”

  1. Hey Todd,
    i am successful with nunchuck and arduino.
    It is really great !!! Thank you for your explanation of this all.
    But my wireless nunchuck (from logic3: FreeBird Wireless Nunchuk for Wii, NW806) does not communicate with arduino.
    Is there a solution?
    Or is there a wireless nunchuck, which works fine with arduino?
    Thanks.
    Max from Baden-Baden, Germany.

  2. Yes, I love little helper chips (like, say the something like a BlinkM ;-)

    Hackaday has been having a series of parts posts that cover some interesting “Lego-like” helper chips usable with Arduino and other microcontrollers.

    Anyone reading this: what are some of the things you’d like to do or chips you’d like to learn how to use that go beyond basic Arduino knowledge?

  3. Tod,
    Thanks for the quick reply!

    I was wondering about “playing” a few different small .wav or .mp3 files with the Arduino and “Helper Chips” without having them attached to a computer to do so.

    Also a lesson on different “Helper Chips”, their applications and construction would be great.

    Thank you!

  4. Hi Sparky,
    Thanks! I might be teaching Arduino at Machine Project later this year, and hopefully it can be a bit more advanced.

    What are some topics you’d like to learn more about? Also, feel free to ask any questions you might have about more advanced things here in the comments.

  5. Todd,

    Great lessons!!! They really introduced me to the Arduino.

    Are you going to release more?? Maybe an intermediate, Advance and expert level lessons??

    Thank you for your hard work on these great lessons!

  6. Just had to say, this is my one-stop-shop for all my diy controller needs. Excellent site, accept no other

  7. Hi Matt,
    I’m pretty sure that one needs a fairly beefy microcontroller like an ARM or better to be able to run a Bluetooth HID host stack in order to talk to the Wii remote. Bluetooth HID is of the same complexity as USB HID. Those Bluetooth modules implement only the Bluetooth SPP serial profile, and that can be pretty simple comparatively.

  8. Hi,

    Really interesting tutorials here, especially the Wii peripheral interfacing. On this line of thought, is it possible to interface a Wii remote to a micro controller using the bluetooth HID interface? Say just using a bluetooth serial device such as a smirf or ESD200?

  9. Thanks for the response guys! I figured it would be something that would be tricky (if not impossible) to do as I would need to read data from both Nunchucks at the same time. I wonder if you could read separate functions from two Nunchucks at once- meaning that you only needed the accelerometer x axis from one Nunchuck and the y axis accelerometer reading from another, without having any overlapping readings. I guess I really just need to sit down and play with it.

    This also begs the question as to when the Wii Motion Plus is available if an Arduino would be able to read data from both that and a Nunchuck at the same time. That would be cool. I know it’ll be a while before they’re released so I guess we’ll just have to wait and see…..

  10. A few chip vendors (at least Maxim and either NXP or ST come to mind) make I2C switch/mux ICs that solve problems just like this one. They take one I2C bus and give you 2,4,6,8 buses in return (how generous of them!).

    Some chips pass-through interrupts, while others don’t, so check the datasheets if you care.

    You just put each of your same-IDed I2C devices on different buses and when you want to talk to one, you tell the switch which bus to address, send/grab the data, and so on.

    The majority of these chips are SMD parts though, although I vaguely remember that some of the simpler parts *might* have been around in DIP/PDIP packages.

  11. Hi Jerome,
    That’s a really good question. The I2C address of the nunchuck is hardwired to 0x52 (as far as I can tell). So if you hook up two Nunchucks and do a query as normal, you get back weird overlapping chunks of data. So you can’t do it that way.

    The other thing one might try is to power up only one nunchuck at a time, take a reading, power up the other one, repeat. This also doesn’t work, as the unpowered nunchuck loads down the I2C lines inappropriately.

    Two other techniques I can think of off the top of my head: using transistors to switch the I2C clock or data lines between the two nunchucks, or using other pins on the Arduino to act as an I2C master interface. Such a “software I2C master” bit of code exists out there for AVR chips so could work with Arduino. I spent a bit trying to get two of the most known to work and didn’t have much luck.

  12. Hi Tod,
    I just had a quick question. Do you think it would be possible to have multiple Nunchucks connected to a single Arduino? I’ve been reading all your BlinkM articles (I really need to pop by Sparkfun and pick some up)about connecting them together on a common I2C bus and I wondered if it would be possible to read two Nunchucks on a single bus. I imagine the code could be a bit complex….

    Thanks!

    Jerome

Leave a Reply

Your email address will not be published. Required fields are marked *