6.08 Documentation

You are not logged in.

If you are a current student, please Log In for full access to the web site.
Note that this link will take you to an external site (https://oidc.mit.edu) to authenticate, and then you will be redirected back to this page.

Below is a one-stop shop for all reference documentation for 6.08. Questions about hardware? Boom, answered here. Software? Yep for sure. If you still have questions, please feel free to post on Piazza or as a staff member! We could have forgotten something.

1) 6.08 Hardware Kit:

The hardware kit which you'll build up over the semester is comprised of a number of submodules that get linked together. Details regarding each module are found in the links below:

Other Groups of Common Parts:

Below are some quick writeups on some parts which I noticed are very common in 2018's final projects. These pages should serve as starting points in working with these parts. They are by no means exhaustive in terms of what they cover.

Some server-side stuff:

Your kit can break! In particular the OLED display is delicate even though we do have a protective cover. fter a night of partying, do you wake up with your phone's IMU broken? No. You wake up with your phone's screen cracked. That'll happen with the kits too. So if you go out partying with yout kit, treat it carefully...or don't even take your kit maybe. You get one free replacement part for the semester. After that you'll need to talk with an instructor and possibly start shelling out cash money for newer parts. There was one kid in 6.08 in 2017 (he shall remain nameless), who broke five or six OLEDs. Don't do that. Some pro-tips:

  • Objects tend to have mass. Because force is proportional to mass and acceleration, and we always experience acceleration in a downward direction because of gravity, placing your kit underneath objects will potentially cause problems. Three textbooks on top of your kit at the bottom of your bookbag might cause problems.
  • Don't throw your kit around. The bag is designed to contain a catastrophic battery failure, not really absorb blunt trauma so please be carefult
  • Consider wrapping your kit in some paper towels or bubble wrap while in your fire-proof lunch-box.
  • Don't leave your kit behind! While the resale value of the kit is low (nobody is going to pawn this kit), people might still take it if the opportunity presents itself. Put your name on it along with contact information!

Traveling for Spring Break? Great. We hope you go to a nice place. Mexico is nice at that time of year. If you take your kit with you and it goes on a plane, be aware that it can look suspicious. Be open and willing to discuss your kit in case security asks about it. For traveling we'll advise you to leave teh lithium polymer battery home.

2) Microcontroller Software

In order to work with the 6.08 lab kit, you need the following two pieces of software, both of which are compatible with modern, recent *Nix, Mac, and Windows Operating Systems: Arduino and the Arduino ESP32 Core. There are details on how to install these pieces of software for you particular operating system in Lab 01A.

3) Additional Helpful Software

Arduino's native IDE (Integrated Development Environment) is not bad, but it can quickly annoy with its pecadillos, particularly with larger code bases. Same with the default Python editor IDLE. If these work for you, then excellent! Don't feel like you need another editor just because the Joneses over there are using emacs with custom keybindings. With that said, you may find another editor (such as Sublime or something similar) to be a better coding experience. An easy way to integrate that with Arduino is by disabling the native Arduino IDE: Go to File>Preferences and then check "Use external Editor." Then you can use another editor to make changes to your code, hop back over to Arduino, and simply compile and/or build.

Do not use Microsoft Word, Apple Pages, or Google Docs to store, edit, or share your code. These programs are word processors and as a result will potentially try to "help" you by capitalizing words, fixing spaces, etc, which are usually going to damage your code (Python cares about white space and C++ cares about capitalization, for example).

4) Python

We will be using Python 3 for this class. Python 2 will not work. It must be Python 3. In case you're wondering if Python 2 is ok, it is not. Instead you should use Python 3.

You are free to use whatever Python editor/environment is out there (Spyder, Anaconda, arbitrary animal name), but we can't guarantee it will work with everything we want. We will assume just simple, base Python installation. Nine times out of ten this will probably not matter to you, but we want to let you know now.

Standard Python 3 Installation instructions for each major operating system class can be found here:

For this semester we'll be using a limited set of non-standard Python libraries including but not limited to:

If you can get copies of these things in your environment, then great. If you can't that is maybe an indication to use the standard Python install.

5) Command-Line Interfacing

You will need to have a *Nix-style terminal at your disposal to enable you to perform a number of operations on one of our servers starting in Week 3. We'll add some starter information into Exercise 03, but there's really no GUI-based way around it, so you will need to make sure you can get to a terminal. On Mac or *Nix systems this will be available to you natively. (Mac folks just look/search for terminal).

Windows folks, you have a number of options.

  • The first, is Cygwin. This is pretty widely used.

6) API Development Helper

We'll be doing a lot of HTTP GETs and POSTs in 6.08, and having the ability to easily and quickly generate these sorts of requests is extremely beneficial for debugging purposes. One really nice piece of software is Postman which is available for most major operating systems. There are several other systems out there too. I like Postman since you sign up once for it (for free) and then it just works. There are some web-enabled ones but you end up wasting half your time identifying which squares in an chopped-up image have road signs or cows in them and it gets frustrating.