Note: There is a discovery attached to this project. This is due on Thursday Jan 25, 2018 6:30pm; directly before class.
A huge element of the Internet of Things vision is the idea that anyone can easily personalize product experiences and interactions to their needs. By making connections between internet appliance, the appliance can adapt to individual needs, preferences and desires. Through these customised connections, there’s the potential to create incredible value to the IoT end user. We’re quite a way off from this, but the potential for hyper-personalized, super-customized ‘internet appliances’ to make meaningful differences in daily habits, simplify routines, and enhance our livingspaces can already be seen in the DIY community.
Development platforms like Particle are empowering maker, hacker and hobbyist enthusiasts. Using these platforms they can quickly create solutions to problems in their lives: to remotely turn on their sprinklers, to hack their coffee pot to brew at the right time in the morning, or get their dishwashers or washing machines text them when the cycle is finished, or track the number of times their fridge is opened each day.
And this is the idea behind your first project: Make a quick hack for your home using the Particle platform.
Here’s the twist: the solution should be personalised, but not to you. Choose someone else in your home - a housemate, a partner, or a family member - and design a personalized IoT prototype for them. (There’s some examples below.)
As part of this assignment you’ll be asked to:
Explore opportunities for connection and personalisation that the IoT and prototyping platforms like Particle bring.
Develop your working knowledge of sensors, input and output components
Work individually to explore, design, develop and program circuits and electronics with the Particle platform;
Embrace tinkering and hacking and develop a prototype connected solution;
Using the tutorials and guides provided you are going to create a simple home hack of your own design that:
Employs at least three components, and at least one is a sensor;
Shares sensor information on the internet through the Cloud API and/or allows it to be controlled via the internet
Provides simple status feedback locally; and
Offers more detailed information online or through third party services
The tutorials and guides are an excellent starting point for this project. Most of what you need to create this project is already given to you; you just need to recombine and tweak it to make it work. Part 1 of this project, a discovery exercise, will help you assemble these resources and plan your project too.
This creative assignment is to be completed individually.
Before you start this project you’ll need to figure out what kind of IoT solution are you trying to create. To do this, you’ll need to find a simple problem that you want to solve. You don’t need to do anything radically innovative, just solve a simple everyday problem by making data available through sensors.
The focus here is on technical implementation rather than aesthetics or presentation. Make sure you have smart use of components and well implemented code that lands at some well thought out functionality.
To help you get started, here’s some things you could try out as potential hacks:
Monitoring plants: Have they green fingers or maybe they kill every house plant they touch? Temperature and light could tell you if you have optimal conditions for your plant’s growth. It’s also really easy to build a moisture sensor with just two nails!
Indoor Air Quality: Do they need motiviation to vacuum or let some fresh air in. There’s loads of sensors for monitoring air quality, dust and gases.
Breathalizer: Like air quality you can also find alcohol and other chemical detectors. It’s super easy to make your own breathalyzer.
Home Security: Do they feel unsafe at home alone? There’s lots of options for home security. Use a Hall Effect Sensor and a magnet to detect doors opening and closing. Use an PIR sensor or an ultrasonic range finder to look people/objects/movement nearby the sensor (and get their distance). Use the tilt sensor in your kits to detect if a lock is turned.
Connected Cooking: Are the a coffee connoisseur? Could you let them know if their coffee cooled to the right temperature to drink? Are they forgetful - could you give them a nudge if they leave a fridge or cupboard door open (tilt sensor/Hall effect)?
Connected Pets: Could you to monitor your pets when you’re away? Make sure your dog’s not barking? Feed your fish remotely? Or set up an internet connected cat toy to occupy your feline friend while you’re not home?
General thoughts: What is it they do everyday or should do everyday? Is there something you could build to make an activity faster, better or automated? Is there something you could do to change their behavior in a positive way (and that they want!)?
Due: Thursday, 25th 2018; directly before class.
The first phase of your project is planning. This is a quick assignment designed to help you gather the resources and assets you’ll need to complete it.
There’s three things you’ll deliver for this
Proposal: Provide a short 100-word proposal for your project. Create a project in the gallery and add this proposal by the deadline. Describe what your hack is and how it will work.
Precedents: Research and report on two technical precedents that immediately help you in your project. e.g. discover a similar project contributed by a community member to Hackster or the Particle Forums, find a code snippet, uncover a useful library for your components, etc. Basically find a starting point that you can borrow, extend or employ in your project. Create a Post in the #discoveries channel on slack that includes the label “#homehack” for grading purposes e.g. An open source nest #homehack. For more details, see discoveries.
Parts: Plan the parts your going to use in the project. Make a list of the components (sensors, actuators, inputs, etc.) you’ll use in your circuit and add them to yoru documentation. Make sure you have them or can access them in the lab i.e. they’re available. Post this to your project on the Gallery too.
Note It’s perfectly OK to hack, remix and rework online examples in this course. In fact, it’s encouraged. But you MUST acknowledge it in your documentation and you must build on them i.e. your work should have unique elements and show effort beyond these resources (see Using Online Material below).
At a minimum you must complete the Core requirements for this project. The project builds a series of progressively more advanced features. Students with prior experience with microcontrollers are strongly encouraged to complete all parts.
All students should be able to complete at minimum the Basic
You must identify a scenario
Your hack must contain a minimum of three components: Choose any combination of input (button, switch, pot), output (light, sound, motion) and sensing (temperature, pressure, noise, etc.). At least one sensor must be used.
You must create a circuit using those inputs, outputs and sensors
You must read from those sensors and make that data available on the Particle cloud.
It’s often helpful to know if a sensor platform is working. Next, you should add an LED to blink when data is updated.
For the Basic requirement, you will add a simple indication of status to the sensor platform. A simple single color LED will suffice. Blink for 100ms when sensor data has been collected and uploaded. Then wait for at least 1 second before retrieving data again.
The data is online and we know it’s being uploaded, but wouldn’t it be nice if we can see what’s happening at a glance?
Use an LED (or other output) to create a glanceable interface for the sensor data. Map the current reading to light and create a visual way to see changes in the data over time. You can take a few approaches to this:
Use a individual single-color LED and fade it to correspond with a sensor value
Use a row of single-color LED to create a simple bar graph
Use an RGB LED to create a color representation e.g. red is bad, green is good, etc.
We can see what the data is now, but do we know when we need to take action? Should our hack tell us when we can ignore it and when we need to do something?
First, decide what the user should know: What changes in data do you want to reveal and why? At what times do you need to take action? For example if we have a plant monitor and the soil is too dry, then the glanceable should blink or indicate action is needed.
Next, implement some decisions (using logic [if] statements) to make the visual display to get the user to take action.
Great. We have something that gives us a lot of information when we’re nearby, but what about when we’re not?
Option 1: Log the Data
Run the sensor for a day and collect the data from it (write a program to collect the data periodically from the device.)
Make use of the data by graphing it or visualizing it in some way.
Report your findings and anything you found interesting about the sensor data.
Option 2: Connect the Cloud information by either:
Creating a web-page or mobile app which displays the live data and/or graphs it so that someone can view it when they’re away from the device
Delivering a remote alert (by email, twitter, push notification, etc.) to the user at the same time as the visual alert is triggered, so that they are notified to take action even when they mightn’t be nearby. Hint: IFTTT integrations for Particle are really useful here.
Problem Statement: Introduce who you are designing for, how they could benefit from an IoT appliance and why you chose this person and the problem
Goal: What kind of solution are you trying to create and why? How does it address the problem? etc.
Process: Show a record of your work as it progressed. This should include: components used, photos and videos of the circuits assembled, code (and versions of your code), reflections and challenges encountered, how you solved problems, iterated etc. Be able to tell the story of your work.
Outcome: Be able to illustrate the final outcome. Explain how complete the prototype is and what you would do/add next? Your documentation for this section must include:
You are welcome to include illustrative diagrams (workflow, etc.), additional photos, or a concept video.
Reflection: Reflect on the process of making this project. What did you learn? What would you do differently? Did you get where you wanted to? If not, why not? What do you need to get there, etc?
Each section should be 200 words max. and well illustrated (images, videos, etc.)
For the Project’s summary description: it must be tweetable - summarise your outcome in no more than 140 characters
It is perfectly fine to use examples, code, tutorials, and things you find on the web to help you realize your project. That’s part of the open-source mentality that surrounds much of Making, Arduino and microcontrollers. However, you cannot just copy and paste these solutions. In your documentation you must acknowledge where you got this content from. Include a link to any tutorials, guides, or code that are part of your final solution.
You should upload your work to the IDeATe Gallery. You can sign up at the following link: http://ideate.xsead.cmu.edu/users/sign_up
Projects should be added to the pool linked above.
To add your project to the pool,
first sign up and be logged in
Click the ‘Join’ button on the top right
You are a member of the pool
You will now see an option to: ‘Add a new project to this pool’. Click this to begin adding your project information.
You should provide a clear and concise description of your project, your process, and the outcomes. It should be quick to get an overview of the project. Ideally, your description of the outcomes should be repeatable too i.e. anyone in the class can replicate it easily from the information provided.