The main message: Do something interesting and hard.
The goal of the final project is to have you develop a complete IoT system on your own in order to:
Give you the confidence to undertake a complete engineering system design for a future class, UROP, or job.
Show that you have synthesized some of the concepts and skills taught up until now.
Get added practice with C/C++ and Python programming.
The 6.08 project must be carried out in teams of four.
While working in teams can be difficult, it is a good learning experience and prep for the real world and how most things get done in engineering. We strongly encourage students further along in their Course 6 studies (or other fields if you feel comfortable) to work with other students at a similar level so that the experiences/capabilities are more uniform within a given team. Teams must be four person in size.
Each project should incorporate the complete IoT chain, i.e., both embedded system and server-side. The balance doesn't have to be 50/50, but we wouldn't want an embedded system that didn't communicate with the world, nor would we want you to take an existing Lab/Exercise and just change the server-side code.
Projects must be carried out in teams of four. All four people must be in one assigned section/meeting time for the final project duration. The students in a team may come from different sections, provided they can all attend the same meeting time and provided there is room in the sections that work.
You are not required to use all the hardware in the embedded system. But you should of course use the ESP32, and battery and powerboard at a minimum in your solution.
The system should be battery-powered and have some level of power management. Buying a huge battery pack to avoid power management is not a valid solution for power management.
The project should be about 4 regular weeks worth of work (each regular week has 2 labs, regular exercises, and Design Exercises) for each person, so about 16 person-weeks worth of work for the team. In other words, much more extensive than an Exercise/Lab. But don't propose something unrealistic.
For projects that wish to purchase parts, each team will have a budget of $80. Note that there is no requirement to purchase parts, though we encourage you to do so in order to extend your system. Info on ordering is on the technical logistics page.
Projects can use class code, or libraries or code snippets from online, but you must (1) obtain permission from the authors if that is required, and (2) understand everything that is going into your system! We would prefer for people to use minimal outside code in order to really get practice writing your own code.
We totally encourage integration with physical equipment, mechanical systems, etc..., but we want to ensure that the focus of your project is on the EECS-side so keep that in mind. When it comes to designing systems overall, the staff may encourage cutting corners in terms of mechanical implementations (depending on timing, etc.)
If your project depends heavily on being integrated together for functionality, please ensure you'll have time to budget for that. In 2017, a team made a medical bracelet. Some of the demonstrations were hard to achieve since the final "build" of the product wasn't done until the last week. The individual pieces were all developed separately, but it wasn't until when it was all put together that the overall design really shined.
The main message: Do something interesting and hard.
You have an acquired a large number of tools. But it doesn't really come together until you put them to use in a project that is of interest to you. So pick something interesting. It could be a wearable system, or a stationary sytem that monitors or controls soemthing in your room. With four team members, a social networking project or a game are viable options.
At proposal stage, we'll provide feedback on our estimate of the difficulty of the project. A safe project will lose in the creativity and reach category of grading.
Summaries added soon.
PSET Pals Ever been stuck on a pset and wished you had someone to work with? Or maybe you’d like to meet other people in your class and bond over work. Pset Pals is developed to help students just like you. This application provides a fast and easy way to find other students in your class who are working on the same assignment. Join groups based on an appointed location and time, then get a live feed of your distance away from your pals when it’s time to work! If there are no current groups that meet your needs, no worries! Start your own group, and set your own location and time preferences. Pset Pals -- never be left alone again on a difficult pset.
Twitch Plays Piano We plan on building a player piano controlled in real time by an online chat. We will use Twitch as our chat platform, which has the added benefit of allowing us to stream a video of the piano playing to the chatters, giving them close-to-real-time feedback and incentive to continue using it. Our embedded system will connect to the chat endpoint, parse messages sent by users, and actuate individual keys or combinations of keys based on the parsed messages. (Note that it will not stream any video - that will be the responsibility of a dedicated external system.) The embedded system will not require a connection to any external services except the chat endpoint, and will be powered by a USB adapter since the system will require large amounts of power to drive multiple actuators, and is intended to operate autonomously for long periods of time (multiple days). As part of our project's final deliverable, we will perform a power analysis of the system.
Multiplayer TetrisWe plan to implement single and multi-player tetris. This is a game played on a 10x20 board in which players try to use pre-set blocks to complete/clear rows of blocks. In single-player tetris, the blocks fall faster and faster, and the player loses when a column of blocks stack all the way to the top of the screen. For multi-player tetris, players can challenge nearby players in a timed battle - whoever accumulates more points in a specified time limit wins. We will also create a viewable online database of players with their ELO rankings (computed as a function of previous wins/losses and ELO rankings of opponents). This online database will contain information about each player’s ELO, win/loss rate, and highest score in the 1-player version.
Support DeviceOur proposed project is an interactive speech-enabled emotional support device that is personalized to the particular user. The inspiration for the project came when one of our team members had a friend who was going through some difficult events. She wanted to be there for her friend in person but could not, so the group decided to build a device that might be able to instead. One component of this implementation will be a simple speech-enabled chatbot, where the trick is to sound like another person (only in terms of speech intonation, volume, tone, etc., not in terms of actual content). We could use existing chatbot frameworks (like the python implementation of ELIZA on the backend), or code/customize our own. The second component of this implementation is basic memory augmentation, where a user can save/record a memory for themselves or for another user. A happy memory can then be recalled, for example, when the user is feeling/sounding depressed. If we have additional time after these portions have been implemented, we would like to move beyond numerical measures of speech and into specialized content for emotional support.
Bike Buddy Bike Buddy is a device that will make biking a breeze. This system, by incorporating both the embedded system and server-side of the IOT chain, will alleviate all the inconveniences of cycling. The cyclist will be able to enter his or her desired location manually, and then using GPS and Google Maps API, the route will be loaded onto the system. Helpful suggestions of places to visit based on GPS location will also be displayed on the screen if the cyclist wants to search a keyword instead. The Teensy will use the Inertial Measurement Unit (IMU), sensors, GPS data, and the screen to the display useful information regarding the cyclist’s speed: the current speed and then average speed and total mileage at the end of a ride. No longer will the rider need to revert to hand signals when turning, as strategically placed LED lights controlled by the IMU, in conjunction with the Google Maps Directions API data, will illuminate on braking or turning, acting as indicator signals and automatic braking lights.
Thinking Cap The Thinking Cap will be a fashionable but functional winter cap. It will amplify a hat’s normal function of warming your head by detecting the temperature outside the hat and activating heating elements to keep your dome warm on even the coldest days. Further, Thinking Cap will act as a helpful wearable by incorporating a number of voice activated functions. The Thinking Cap AI, named CapChap, will speak up when you squeeze a button on the flap of the hat, asking what it can do for you. The first major function CapChap can accomplish is to play music, letting you pick a specific song, artist, or radio station. The next function will be directions. If you ask CapChap to take you to an address or location, it will vocalize instructions for you as you walk, guiding you to your destination. The final major function will be location based advice. You can ask CapChap for the best nearby places to get coffee, and it will reply with several potential cafes. Then, you can pick a location and get directions to guide you there. Altogether, these functions will make Thinking Cap the perfect winter headwear, as it allows you to get around and stay warm, and you will never have to take your hands out of your pockets to use Google Maps or play your favorite song.
Music Thing Music is a key part of our lives, and technology is taking the music experience to the next level. Services like Spotify boast millions of users, and people looking for different genres and artists have easier access to songs than ever before. Our final project takes this experience many steps further by launching an intelligent playlist system that caters to every individual and their unique tastes in music as well as provides opportunity to listen to new types of music. To give a brief overview, our system allows Spotify users to access the public playlists of other users in proximity in hopes of inspiring their music tastes to be more diversified. Users can add songs from others’ playlists to their own, as well as create new playlists for songs they take a liking to. As users add new songs, their “diversity ranking” fluctuates, as can be seen on the diversity graph displayed on each user’s profile. Our system also has a “group” aspect. Upon entering new locations, users can tune into the “group playlist” that consists of all songs added to individuals’ playlists in a given area. For example, students in the Student Center can scroll through songs that other users have explored perhaps just a few tables away from them. Users can like or dislike these songs and become part of a music community.
IOT Archery Our final project is an archery simulation game, designed to be used indoors when an archer would otherwise be unable to practice due to space or safety constraints. After calculating the force applied to the bowstring using the IMU and the angle, a button press will “shoot” and the position of where the arrow would theoretically land will appear on the LED screen, along with a point score that correlates with accuracy. Beyond practice, the system will also be able to be used as a multiplayer game, competing to see who can score the most points. The overall goal is to create a system that realistically simulates archery!
IOT Bike The aim of this project is to create an IOT device that mounts on an everyday bike to make riding and navigation more fun. The device will also measure and display real-time information about the rider’s trip. At the start of the trip, the rider will be able to input the destination either through voice commands using the Google Speech API or by scrolling through characters on the OLED Screen using pushbuttons. Once this is confirmed, they will receive directions and the estimated time of arrival to the specified location. Throughout the ride, the device will also display the rider’s speed and RPM of the wheels with the help of magnets and a reed switch. Using these readings in combination with the GPS data, it will update the estimated time of arrival accordingly. There will also be LED strips that notify the rider when a turn is coming up, as well as blinkers and brake lights to convey their intentions to the surrounding traffic.
Piano-Assisted Learning Normally, beginner pianists must learn how to read sheet music in order to learn how to play the piano. This is a tedious process that can deter music loves from finding their true passion in piano. We are creating Piano Assisted Learning (PAL) in order to solve this problem. PAL is a system that involves an LED light strip that can be added to a piano to facilitate faster and more natural learning of songs. A user starts by choosing a song by flipping through a list of options that are displayed on the teensy. Once a song is selected, the user can choose the speed that they want to play at. They can choose quarter, half, or full speed, according to their stage of learning. Once the settings are selected, that song is pulled from the database, and LEDs will light up above piano keys to indicate which notes the user should play in order to play a song. If the user wants to play with their human pal, they can use the duet option, which will light up the LEDs in different colors for each player. In order to add a new song to the repertoire of music, a user can enter the relevant song information into our online interface, after which it will be added to the database and available for all users to play on PAL.
IOT Toaster Our project is to create an IoT device that attaches to a toaster and helps users collect data regarding their “toasting” experience. The device will use a microphone in order to ask users about their toasting experience and collect their comments. It will also have a camera attached to take pictures of the toast before and after toasting so that users can see the results of the toaster’s current settings. Then, the device will upload the data to a website called “Toastbook.” Users can then scroll through the toasting information and rate the posts they see; Toastbook will then use this information to choose the ”Top Trending Toast”. Our target audience is the everyday toaster who is curious about how to get the most out of their toasting experience, and toasting enthusiasts will love the fine-grained control over temperature profile.
Vitals Tracker Our project aims to address the challenge of monitoring daily activities and vital signs in order to provide a comprehensive overview of the wearer’s condition and a sense of security for those who may need it. We propose a wearable device (which will be placed just below the chest) embedded with sensors to collect basic information such as the user’s daily steps taken and daily path using GPS to visualize the user’s typical day. We will also use the device to interact with the user (button-based input and response, such as reporting weight and height) and motivate/update the user based on daily data. We will also include a heart rate sensor and a breathing cycle monitor; using this information, we hope to compare this information with data gained from healthy adults in order to determine whether any abnormalities in vital functions occur (this feature specifically for the elderly). We also intend to include an accelerometer to detect whether the user has fallen down (or experienced some other kind of physical trauma) and alert caregivers/the police as needed. We thus aim to address the needs of both those who are becoming less able to care for themselves (but do not have constant supervision) as well as those who simply want to monitor their lifestyles.
Air Drums Our project goal is to simulate playing air drums through gesture recognition. By strapping (or holding) Teensys to our arms and legs, we should be able to mimic the movements of drumsticks and hitting the bass pedal. The patterns of acceleration associated with each movement will correspond to a certain sound that will be stored on the Teensy. We’ll also be able to record “songs”, or sequences of movements and store them on a server. These songs can be accessed and replayed at will. We will also include lights that turn certain colors depending on the detected movement and pitch, for aesthetic effect.
Pizza Loophole System We wanted to develop a system that would allow an MIT student to order pizza and also combine their order with someone else’s if they happen to be ordering from the same dormitory. Then would the student be able to order a medium pizza of up two toppings? The answer to that is that if two medium pizzas are ordered, we can use a special coupon that makes each pizza 5.99. Normally, a medium pizza with two toppings would cost around 11. If we are able to use the coupon, however, we can help save people a lot of money. More money, more pizza. The way our system works is as follows. The person is greeted with a message and will then be asked to select their dorm. Then they will be asked to select the first and second toppings. Then they will have to put their credit card information as well as their phone number using the keypads. Once this is done their order will be placed. If in 5 minutes, another user from the same dorm makes an order, the orders will be combined into to make use of the any-two-for-$5.99 coupon. The order will be be charged to the first user. One may think that the user will be paying more but actually, ordering one medium pizza with no coupon is almost as expensive as ordering two medium pizzas with the coupon. The second user will of course have to pay back the second user.
Pictionary Our team aims to create a Pictionary-inspired game, where a player sends another player a picture of an object, and the other player has to guess what the object is. Different prompts will be stored in the database, which will give the players an increasingly more difficult topic to draw and guess. We plan to use a touchscreen as a way for players to draw and receive images. From there, the other player says their guess, which is transcribed using the Google API and sent to the other player. Players will be able to start a new game or join a game and compete for the highest number of correct responses! This will be displayed on a leaderboard for all the world to see.
Weather App We are building a Weather application for our teensy device. This device will be part of a network of teensys and will access other teensy locations through a database of saved coordinates. The device will display the user’s current location and the user can scroll through the weather information of the other teensys in the network. This project will incorporate a larger LED display and specified weather display animations.
MusicBuddy MusicBuddy is an IoT device for musicians everywhere, but for the scope of this project, we’ll start out with a small but growing market niche: ukulele players at MIT. The device will allow musicians to tune their instrument, find other musicians to jam with, access saved songs and tablature from their personal “cloud”, and most importantly, the device will teach musicians how to play songs with chords they are unfamiliar with! MusicBuddy will have a separate hardware component that can be placed on a user’s ukulele, and will allow the user to load up a song they wish to learn. MusicBuddy will then take the chords and light them up on the ukulele itself, so the musician will be able to place their fingers on the correct frets and play away!
A Travel Expert On your wrist Our application aims to be an open-ended tourist’s guide to the Boston/Cambridge area, with a game aspect. Based on preferences entered by the user, the app will generate a list of places of interest, such as restaurants, museums, or monuments. The user will be able to select or reject places in the list based on the description provided (the history of the place, average rating, or general information). The device will display directions to guide the user. Upon arrival, points will be added to the user’s profile and tips on what to explore in the place of interest will be displayed, and the user may rate the destination, so that friends will see the rating later. Additionally, the place will be added to a list of visited places, so that the app can be used many times. Points will also be accrued for distance travelled. Friends will be able to compete and see their rankings. The system aims to make exploring a city more efficient and enjoyable!
Teensy Trivia Get ready for a fast paced trivia game for the Teensy, complete with sound effects and multiplayer functionality! Our final project is a jeopardy style multiplayer game that utilizes the Teensy, the display, sound, buzzers, and IOT to allow players to compete to be the trivia master. Players are presented with questions on their screens and have to buzz in their answer the fastest in order to win points and rank up on the leaderboards. There will be multiple choice questions and buttons so that players can send in their answers to the servers. This game can be played with other Teensy users through interfacing with a database and figuring out who has the high score. Coming to your 6.S08 Lab Spring 2016.
Fitbit-2.0 Fitbit-2.0 is a device that you can use while you run to track your progress, visualize your run afterwards, and compare yourself to your previous bests. Throughout your run you can look at the Teensy to see how far you’ve gone, your current heart rate, calories burned, amount of time that has passed, and a comparison of these values to your previous best in order to keep yourself motivated. Afterwards, Fitbit-2.0 will allow you to visualize the path you took through google maps, as well as your heart rate at each point along the run.
The fridgenator We want to create a project that helps us learn more about how our 2 fridges survive extended and frequent use by 40 people living on our hall. We want to look at statistics about the refrigerator temperatures and also how often/how long they are open for. We will collect our data using a pressure and temperature sensor. Following data collection, we will write python scripts to meaningfully analyze the data we have collected and present it in a fun and interactive website. Finally, in the spirit of the internet of things, we want to add the functionality of an automated email if the refrigerator is open for more than 5 minutes and a weekly digest with interesting statistics.
Capture the Base Game We are developing a game in which players will “capture” different areas on campus, and will win the game once they have captured the most areas. Campus will be divided into predetermined regions, and once a player enters a new region, they will have to randomly play one of three games to be able to capture the area. One game will be the rolling ball game, and if the player scores a certain amount within a time limit, they will capture the area. The second will be a variation on Turn Turn Revolution, expect we will add hardware components so the game will be more like BOP-IT. The third will be a trivia type game in which they will have to answer a question correctly within a given time frame. The games will scale in difficulty depending on how many areas the team has captured.
IOT Skateboard We’ll create a lightweight longboard which opens up on the inside to reveal a complete internet-of-things circuit of components, surrounded by a strip of LED lights, like so.
These components will include a GPS, accelerometer, and a wifi-connected microcontroller. The system’s primary functionality will be this series of steps: (1) read in a user’s desired destination, (2) interface with Python server-side code to connect with Google Maps to find the path of navigation to destination, (3) use the GPS module to determine which direction the user should longboard in to arrive at that destination, and finally (4) light up the part of the skateboard that corresponds to that destination so the user knows where to head. Additionally, the system will give continuous feedback to the user about current distance longboarded and current velocity.
IOT Wardrobe For this project we will make sure anyone can feel safe and secure at all times. The main purpose of the project is to create an article of clothing that can recognize when you are in trouble. Using a combination of force sensors and an accelerometer, this can find out if you are injured and contact others for assistance. The system will also be able to heat you up whenever it gets too cold outside with the use of heating pads and temperature sensors. Finally, it will help you find the closest restroom using the gps. For all of this we will be using 2 different API’s: Google Maps API for location Refuge Restrooms’ API for location of restrooms.
Scavenger hunt Our project will be an implementation of a scavenger hunt-style game/tour system using the wearable system. Users will be able to select a tour from a list produced using GPS/Wifi data. The device display will then direct them to a location to start their tour with a compass heading, and a location name. The tour continues to give directions based on GPS data, and NFC tag check-ins. To continue from certain locations, users will have to solve riddles or puzzles which lead them to hidden NFC tags they must tap in order to continue the tour. We will also add functionality so users can upload new tours so they can show off the favorite parts of their neighborhood.
Friend-finder Our project will be using the teensy as friend matching assistant. The user will use different gestures to select answers to multiple choice questions. Based on the percentage overlap of answers, users will be matched with each other. After two people are matched, they can read each other's bios and communicate via emoticon messages from device to device.
Interactive Maze Our final project is centered on the idea of an interactive maze. Users will be able to use the Teensy to scroll and select their kerberos, along with their choice in level, which will correspond to difficulty. Once selected, the player will appear as a dot at the starting point of a maze on the OLED screen. There will be a timer at the top of the OLED screen, measuring how long it takes the user to pass through the maze and acquire a certain number of a larger set of treasure chests located in different areas of the maze. Travel in this maze is controlled by the turns and steps physically made by the user. The walls of the maze will stop the user’s dot on the screen, not allowing it to go through walls. Once the user navigates through the maze, a scoreboard will appear, displaying the kerberos, number of chests collected and time of the five fastest players of the level. If the current player beats the time of a top five player, their kerberos and time will appear on the scoreboard.
Virtual Bowling Our project is a virtual bowling game on an external display utilizing multiple Teensies that would serve as a each player’s bowling ball. By moving our teensies and then pressing a button to indicate the release of the bowling ball, we are essentially moving and letting go of the bowling ball that would show on the display. The bowling ball would then knock down the pins. Using the display already on our Teensy, we would update the scores of each player.
\ / /\__/\ \__=( o_O )= (__________) |_ |_ |_ |_Course Site powered by CAT-SOOP 14.0.4.dev5.