49713 Designing for the Internet of Things
· 25 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
A body clock for women to tell when period-related events are coming and be prepared.
We worked on a project to send message regarding a
woman’s menstrual period. While that reminds a taboo for some occasions, we
designed an ambient device for the owner to have a communication with her own
body. Menstrual period is a very important part of a woman’s life, preparations
such as getting tampons are required when the date is approaching. It affects
woman in many different ways, physically and emotionally. While the calculation
of menstrual period is helping women, by telling them information such as the length
of the menstrual cycle the possible time of ovulation, we need to figure out
how we can transfer this information non-intrusively.
The ambient device we made is a personal device that will be setting up in a personal space like a bedroom. The device will tell the owner when four events would happen: pre-period, period, ovulation and post-period. By telling the owner when the period will come, it gives her enough time to get necessary supplies for this upcoming event. Inspired by the read "Enchanted Objects", we though of incorporating these functions within everyday objects to make the information even more transparent to others.
We planned to use light (powered by a Neo Pixel) as the ambient display that changes color according to dates. We have two sets of lamps prepared, one with a 3D printed lamp that is semi-transparent so that the light will come out gently and elegantly which can serve as an aesthetic, feminist object. The second lamp is a clock-shaped cover that will be put on the Neo Pixel to show a concept of “body clock” that only the owner would understand. Four colors were picked up to match the four different events as blue for pre-period, red for period, green for ovulation and yellow for post-period. One day, if the device is showing a blue light (changed from yellow), the owner would know that her period is coming in two days.
Because the device is using sensitive data, we decided to do a period tracker for the potential user. Menstrual period is an event that repeats every month so we need to find method that enables the light to change regularly every month. We had multiple alternatives for connecting the photon with an internet based data. One is using a website that sends reminder emails every month for the days of period, but we determined that this is not enough because we want to provide more information about the entire cycle. Thus, we decided to use Google Calendar (requires that we manually entering the period cycle) which can be connected to IFTTT to publish events. We set up four events through IFTTT to search for keywords such as “period”, once the keyword is found, an event will be published. Then the photon can subscribe the event and change color accordingly. Going along this direction, we bumped into an issue that the trigger of IFTTT was searching the entire calendar instead of the current date. We bypassed the issue by setting the trigger in specific times during the day so that the only one keyword will be searched at a time.
#include<neopixel.h>
#define PIXEL_PIN D6
#define PIXEL_COUNT 16
#define PIXEL_TYPE WS2812
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
void setup() {
Particle.publish("test1","insideSetup");
Serial.begin(9600);
pinMode(PIXEL_PIN, OUTPUT);
strip.begin();
// strip.setPixelColor(0,255,0,0);
strip.setBrightness(100);
strip.show();
// Initialize all pixels to 'off'
Particle.subscribe("period", periodHandler);
Particle.subscribe("ovulation", ovulationHandler);
Particle.subscribe("preperiodhandler", preperiodHandler);
Particle.subscribe("postperiod", postperiodHandler);
}
void loop(){
delay(1000);
}
void periodHandler(const char *event, const char *data )
{
Particle.publish("test1","periods time");
SetLedColor(strip.Color(255, 0, 0));
}
void ovulationHandler(const char *event, const char *period)
{
Particle.publish("test1","ovulation time");
SetLedColor(strip.Color(0, 255, 0));
}
void preperiodHandler(const char *event,const char *period)
{
Particle.publish("test1","preperiods time");
SetLedColor(strip.Color(0, 0, 255));
}
void postperiodHandler(const char *event , const char *period)
{
Particle.publish("test1","postperiods time");
SetLedColor(strip.Color(255, 75, 0));
}
void SetLedColor(uint32_t c) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
}
}
Click to Expand
Our prototype is working as we expected with the Neo Pixel changing color according to the events set-up in Google Calendar. We wish that we could set the Neo Pixel so that the light changes gentler, thus, instead of changing color at 12:00 am, the colors will transfer without rapid change and the set-up is more sophisticated. We also wish to add a pushbutton so that the device can be turned off if the user wants.
We like the project because it is helpful for woman who have trouble remembering their period cycle and prepare accordingly. Additionally, the product also helps inform the women about their fertile or non fertile days to help them plan their pregnancies.
We kept a fairly simple code for the neo-pixel ring without experimenting with effects and combinations. This would be something we would like to do in the future. The IFTTT events proved to be more tricky than we expected but it was a great learning experience to try and overcome the glitches to get the product working as per our imagination. We found it helpful to work on the project as a team that every one of us had a chance to participate every part of the project and help each other out whenever there is an issue. Also diversified opinions helped us to come up with optimal solutions.
A hands-on introductory course exploring the Internet of Things and connected product experiences.
A body clock for women to tell when period-related events are coming and be prepared.
February 7th, 2018