“Self-Watering” System

Elise Chapman

 

Simple Description

This system rewards the user for “watering” themselves (pouring a glass of water) with a sweet, printed poem. This encourages the user to be cared for both mentally and physically.

 

Overview Images

Printing and taking a poem

Overview photo

Tech insert details

Where to plug in external power for printer

Output of printed “poem”

 

Process Images and Review

Initial drawings of concepts for project 2

Beginning my project, I knew I wanted to do something that was a little more abstract, but mostly was also mostly a vehicle for me to design something interesting. My goal was to do something that would be more challenging with physical build and hardware and not so challenging with software, to reflect my personal abilities. After some discussion with Zach, I decided to go with the poem printer. I thought that it would be something different, but still fun! The only thing I changed from my initial concept was to do the poem selection based on the weight class of a glass of water. This was a way for me to include another physical input form that I hadn’t tried before. Buttons are fine but I wanted to challenge myself a little more.

Creation thoughts and sketches, as well as some measurements for laser cutting

On the design concept side, I found a lot of my inspiration through just looking through the scrap pile in the laser cutting room of ideate. There was this great mirrored acrylic scrap that there was enough to work with, so I grabbed it! I had the idea to make the mirrored material to look like a puddle to reflect (no pun intended) the glass of water that was going to go in as a part of the build. I think this style of design turned out well and the final build feels polished, largely in thanks to the mirrored acrylic.

Freshly laser-cut mirrored acrylic, before I inserted the printer, speaker, and switch, and put it on its base

Two major points of my project were getting the load cell working and getting the printer to print poems out of an array.

beginning to work w load cell

Beginning of working with the load cell

Firstly, getting the load cell to work within my final model was quite tricky. Getting it to work in general was fine, but that was in the context of standard tables and the lab, aided with clamps. That came back to bite me later as I was trying to insert the load cell into my final build. I assumed that I would be able to duct tape the load cell to the lid of my build, therefore creating enough tension for the load cell to function. In practice, however, that was not the case. I duct taped it in, but it was not calibrating correctly and not calibrating consistently.

Some of the strange outputs I was getting while trying to calibrate a non-clamped load cell

I then realized that I needed to provide more support to the one side of the load cell. So, I tried to add in vertical supports underneath by cutting and propping up some of the eighth-inch laser cutting wood. That didn’t really work. So, I decided that what I really needed was to recreate the clamp sensation within my build. So, I hauled myself to the design product studio to find blocks of wood and screws. I created a wooden base, which I screwed into the base of the build and then I screwed the load cell into that. This, finally, was enough to recreate the tension support of using a clamp on the load cell bar.

My triumph of getting the load cell to work

Then, my second challenge, which I still have not overcome: the printing poems out of an array. Originally, the problem was that I had very little to paper to test on, so I did most of my initial programming with Serial print in mind. However, this part of the problem was resolved when the printer paper came in.

The more difficult and ongoing issue for printing the poems is memory. Unfortunately for me, the Arduino has very little memory, so even something as small as a haiku takes up far more memory than that little thing has. Therefore, when trying to print poems out of an array, I simply can’t. For reasons I don’t know, even trying to print single words out of an array seemed to be posing an issue for my system. The printer can print cohesivelyIt’s rather frustrating because printing the poem is the crux of my device—without it, it seems to do nothing at all besides make some noise. Sometimes, my printer will print seemingly random characters, ones that aren’t even a part of the poems; meaning that it’s reading something out of the arrays, just I’m not sure what. All in all, it’s something I am still working to fix.

Some code from my most recent help session with Zach

To try and remedy this I have met with Zach two times now, to very little success. We added in an microSD card in hopes that by having the Arduino pull from text files, it will bypass the memory issue. So far, we have been able to pull information out of the text files on the microSD card, but transferring that information to the printer still seems to be an issue. The last we left off, the printer could print parts of my poems, but not the entire poem. Once again, it’s following some form of logic that I personally can’t follow. Although this project is over for the class, I plan to continue working on this project. I really want to see it through. Despite how frustrated it makes me, I still think the concept is interesting and I want to have a piece that I can show the world.

 

Discussion

This has been quite a difficult project for me. I think what has proved quite a challenge has been the things I did not expect to be a challenge at all, doubly so because they seemed to appear last-minute, but not have been easy to solve at all. 

Some things, of course, did go easily: like the design. I’m happy with how the design turned out visually. It looks clean but still interesting and I think that people respond to the mirror acrylic in a way I hoped they would. I wanted to create something playful but still sophisticated. For example, in the in-class crit, I got good positive feedback including “very aesthetically pleasing”, “the design was well executed”, and “the laser cut mirror acrylic panels on the top were really effective”. My design was the biggest thing I felt confident about and it was nice to see that reflected. Also importantly to me, people in the in-class crit seemed to understand my intent with the project, despite its flaws. My favorite comment was: “I love the meaning and thought behind the project. I also love that the poem is printed and feels more meaningful than just seeing it printed on the screen”. I try to incorporate a materiality of being into my work, making things where you walk away with something, tangible or not. As I often describe it, I like making my work something to be existed with, not just tangentially to. It made me feel proud that others can see my work in the same way that I see my work. As a designer, I often worry about communicating the things in the way I intend to, so especially on abstract projects like this one I am not sure my message is getting through. But it really seems like it is, and I’m glad for it. 

But on this project’s flaws, it has one main large one: The poems will not print properly. Like I mentioned before, this is incredibly frustrating because the poem printing is sort of the crux of the machine, it’s sort of its point. I didn’t even expect the poem printing to be an issue. I didn’t know about the Arduino’s limited memory going into the project, so I simply assumed that pulling out an array of strings would be easy. I’ve coded with arrays before so it felt like familiar territory. In fact, I assumed that the harder part would be to get the printer printing in general. Not so much. It really is something that I’m still working towards fixing and I do want it fixed eventually. I don’t think I’ll really step back from this project until it feels like a total dead end. 

Overall, I am so-so on this project. On one hand, I am happy with the visual appearance of the design. It’s self-contained and pretty; it’s something I wouldn’t mind having on my desk or on my night stand, which was the goal. It satisfied my desire to try to design an object totally independently of a class. It’s a good accomplishment for me. On the other hand, I would be lying to say it works. The poems will not print properly. It’s something I’m really disappointed about. I’m frustrated with my inability to get it working, but I’m reminding myself that I can’t even get it working with Zach’s help, who is far more experienced with Arduino and code than I am. I stand by the concept, but if I could go back and tell four-weeks-younger Elise to just to do audio of reading the poems or something, I would.

 

Block Diagrams

Without the microSD card, presented on the final presentation day

With the microSD card

Schematic Diagram

 

Code (As it appeared on presentation day)

/*elise chapman
self-watering project
weight of a glass of water to printed poetry + a little jingle

pin mapping:
  load cell uses pins 2 and 3, as well as 1 GND and 2 PWR
  thermal printer uses pins 5 and 6, as well as 2 GND and 1 PWR
  speaker uses pin 8

parts of code sourced from:
  Nathan Seidle's HX711 Github Repository: https://github.com/sparkfun/HX711-Load-Cell-Amplifier/tree/master/firmware
  Adafruit's Thermal Printer library
  Arduino Project Hub's "How to make music with an Arduino" refrence
  Great assistance from Prof. Zacharias
*/

  
//load cell
#include "HX711.h"
#define calibration_factor -7050.0 //from the Calibration sketch
#define zero_factor 8421804 //from the Calibration sketch
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;

//printer & poems
#include "poems.h"
#include "Adafruit_Thermal.h"
#include "SoftwareSerial.h"
const int TX_PIN = 6;
const int RX_PIN = 5;
SoftwareSerial mySerial(RX_PIN, TX_PIN);
Adafruit_Thermal printer(&mySerial); 
long pickNum = 0;

//jingle
#include "pitches.h"

void setup() {
  Serial.begin(9600);
  
  //load cell
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(-700000); //from the Calibration sketch
  scale.set_offset(879228); //Zero out the scale using a previously known zero_factor

  //printer
  pinMode(7, OUTPUT); digitalWrite(7, LOW);
  mySerial.begin(19200);  // Initialize SoftwareSerial
  printer.begin();  // Init printer (same regardless of serial type)
  printer.setFont('A');
  printer.setSize('S');

  //jingle
  pinMode (8, OUTPUT);
}

void loop() {
  //load cell
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1); //scale.get_units() returns a float
  Serial.print(" lbs");
  Serial.println();

  //poem and printer
  if (scale.get_units()<=0.3) {
    printer.println(poems[0]);
  }
  else if (scale.get_units()>0.3 && scale.get_units()<=0.4) {
    pickNum=random(1,3);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.4 && scale.get_units()<=0.5) {
    pickNum=random(3,6);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.5 && scale.get_units()<=0.6) {
    pickNum=random(6,8);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.6 && scale.get_units()<=0.7) {
    pickNum=random(8,10);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.7 && scale.get_units()<=0.8) {
    pickNum=random(10,13);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.8 && scale.get_units()<=0.9) {
    pickNum=random(13,17);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>0.9 && scale.get_units()<=1) {
    pickNum=random(17,20);
    printer.println(poems[pickNum]);
  }
  else if (scale.get_units()>1) {
    pickNum=random(20,22);
    printer.println(poems[pickNum]);
  }
  
  //jingle
  tone(8,NOTE_F5);
  delay(250);
  tone(8,NOTE_G5);
  delay(250);
  tone(8,NOTE_A5);
  delay(250);
  tone(8,NOTE_G5);
  delay(250);
  tone(8,NOTE_A5);
  delay(250);
  tone(8,NOTE_F5);
  delay(400);
  tone(8,END);

//  //waits for 1 min before measuring the water again
//  delay(60000);
  delay(20000);
}

pitches.h

#define NOTE_B0 31

#define NOTE_C1 33

#define NOTE_CS1 35

#define NOTE_D1 37

#define NOTE_DS1 39

#define NOTE_E1 41

#define NOTE_F1 44

#define NOTE_FS1 46

#define NOTE_G1 49

#define NOTE_GS1 52

#define NOTE_A1 55

#define NOTE_AS1 58

#define NOTE_B1 62

#define NOTE_C2 65

#define NOTE_CS2 69

#define NOTE_D2 73

#define NOTE_DS2 78

#define NOTE_E2 82

#define NOTE_F2 87

#define NOTE_FS2 93

#define NOTE_G2 98

#define NOTE_GS2 104

#define NOTE_A2 110

#define NOTE_AS2 117

#define NOTE_B2 123

#define NOTE_C3 131

#define NOTE_CS3 139

#define NOTE_D3 147

#define NOTE_DS3 156

#define NOTE_E3 165

#define NOTE_F3 175

#define NOTE_FS3 185

#define NOTE_G3 196

#define NOTE_GS3 208

#define NOTE_A3 220

#define NOTE_AS3 233

#define NOTE_B3 247

#define NOTE_C4 262

#define NOTE_CS4 277

#define NOTE_D4 294

#define NOTE_DS4 311

#define NOTE_E4 330

#define NOTE_F4 349

#define NOTE_FS4 370

#define NOTE_G4 392

#define NOTE_GS4 415

#define NOTE_A4 440

#define NOTE_AS4 466

#define NOTE_B4 494

#define NOTE_C5 523

#define NOTE_CS5 554

#define NOTE_D5 587

#define NOTE_DS5 622

#define NOTE_E5 659

#define NOTE_F5 698

#define NOTE_FS5 740

#define NOTE_G5 784

#define NOTE_GS5 831

#define NOTE_A5 880

#define NOTE_AS5 932

#define NOTE_B5 988

#define NOTE_C6 1047

#define NOTE_CS6 1109

#define NOTE_D6 1175

#define NOTE_DS6 1245

#define NOTE_E6 1319

#define NOTE_F6 1397

#define NOTE_FS6 1480

#define NOTE_G6 1568

#define NOTE_GS6 1661

#define NOTE_A6 1760

#define NOTE_AS6 1865

#define NOTE_B6 1976

#define NOTE_C7 2093

#define NOTE_CS7 2217

#define NOTE_D7 2349

#define NOTE_DS7 2489

#define NOTE_E7 2637

#define NOTE_F7 2794

#define NOTE_FS7 2960

#define NOTE_G7 3136

#define NOTE_GS7 3322

#define NOTE_A7 3520

#define NOTE_AS7 3729

#define NOTE_B7 3951

#define NOTE_C8 4186

#define NOTE_CS8 4435

#define NOTE_D8 4699

#define NOTE_DS8 4978

#define END -1

poems.h

const char poems[][100] PROGMEM = {"Pour yourself something! Hydrate yourself :)",
                                "The Short Ones\nAtticus\n\nSometimes\nthe short poems\nare the hardest\nto write\nchange one word\n and the whole poem\navocados.",
                                "The Tiger\nNael,age 6\n\nThe tiger\nHe destroyed his cage\nYes\nYES\nThe tiger is out",
                                "Trees\nJoyce Kilmer\n\nI think that I shall never see\nA poem lovely as a tree.\nA tree whose hungry mouth is prest\nAgainst the earth’s sweet flowing breast;\nA tree that looks at God all day,\nAnd lifts her leafy arms to pray;\nA tree that may in summer wear\nA nest of robins in her hair;\nUpon whose bosom snow has lain;\nWho intimately lives with rain.\nPoems are made by fools like me,\nBut only God can make a tree.",
                                "A Fairy Song\nWilliam Shakespeare\n\nOver hill, over dale,\nThorough bush, thorough brier,\nOver park, over pale,\nThorough flood, thorough fire!\nI do wander everywhere,\nSwifter than the moon’s sphere;\nAnd I serve the Fairy Queen,\nTo dew her orbs upon the green;\nThe cowslips tall her pensioners be;\nIn their gold coats spots you see;\nThose be rubies, fairy favours;\nIn those freckles live their savours;\nI must go seek some dewdrops here,\nAnd hang a pearl in every cowslip’s ear.",
                                "Warning\nJenny Joseph\n\nWhen I am an old woman I shall wear purple\nWith a red hat which doesn’t go, and doesn’t suit me.\nAnd I shall spend my pension on brandy and summer gloves\nAnd satin sandals, and say we’ve no money for butter.\nI shall sit down on the pavement when I’m tired\nAnd gobble up samples in shops and press alarm bells\nAnd run my stick along the public railings\nAnd make up for the sobriety of my youth.\nI shall go out in my slippers in the rain\nAnd pick flowers in other people’s gardens\nAnd learn to spit.\nYou can wear terrible shirts and grow more fat\nAnd eat three pounds of sausages at a go\nOr only bread and pickle for a week\nAnd hoard pens and pencils and beermats and things in boxes.\nBut now we must have clothes that keep us dry\nAnd pay our rent and not swear in the street\nAnd set a good example for the children.\nWe must have friends to dinner and read the papers.\nBut maybe I ought to practice a little now?\nSo people who know me are not too shocked and surprised\nWhen suddenly I am old, and start to wear purple.",
                                "On the Ning Nang Nong\nSpike Milligan\n\nOn the Ning Nang Nong\nWhere the Cows go Bong!\nand the monkeys all say BOO!\nThere’s a Nong Nang Ning\nWhere the trees go Ping!\nAnd the tea pots jibber jabber joo.\nOn the Nong Ning Nang\nAll the mice go Clang\nAnd you just can’t catch ’em when they do!\nSo its Ning Nang Nong\nCows go Bong!\nNong Nang Ning\nTrees go ping\nNong Ning Nang\nThe mice go Clang\nWhat a noisy place to belong\nis the Ning Nang Ning Nang Nong!!",
                                "Lines on the Antiquity of Microbes\nStrickland Gillian\n\nAdam.\nHad ’em",
                                "Love After Love\nDerek Walcott\n\nThe time comes when, with elation\nyou will greet yourself arriving\nat your own door, in your own mirror\nand each will smile at\nthe other’s welcome,\nand say, sit here. Eat.\nYou will love again the stranger who was your self.\nGive wine. Give bread. Give back your heart\nto itself, to the stranger who has loved you\nall your life, whom you ignored\nfor another, who knows you by heart.\nTake down the love letters from the bookshelf,\nthe photographs, the desperate notes,\npeel your own image from the mirror.\nSit. Feast on your life.",
                                "How to Get There\nLeunig\n\nGo to the end of the path until you get to the gate.\nGo through the gate and head straight out towards the horizon.\nKeep going towards the horizon.\nSit down and have a rest every now and again,\nBut keep on going, just keep on with it.\nKeep on going as far as you can.\nThat’s how you get there.",
                                "Risk\nAnais Nin\n\nAnd then the day came,\nwhen the risk\nto remain tight\nin a bud\nwas more painful\nthan the risk\nit took\nto blossom.",
                                "Autumn\nT.E.Hulme\n\nA touch of cold in the Autumn night –\nI walked abroad,\nAnd saw the ruddy moon lean over a hedge\nLike a red-faced farmer.\nI did not stop to speak, but nodded,\nAnd round about were the wistful stars\nWith white faces like town children.",
                                "My life has been the poem I would have writ\nHenry David Thoreau\n\nMy life has been the poem I would have writ\nBut I could not both live and utter it.",
                                "Believe This\nWilhelmina Stitch\n\nYou’re winning. You simply cannot fail.\nThe only obstacle is doubt;\nThere’s not a hill you cannot scale\nOnce fear is put to rout.\nDon’t think defeat, don’t talk defeat,\nThe word will rob you of your strength.\n“I will succeed,” This phrase repeat\nThroughout the journey’s length.",
                                "The Shortest And Sweetest of Songs\nGeorge MacDonald\n\nCome\nHome.",
                                "The Duck Poem\nOgden Nash\n\nBehold the duck.\nIt does not cluck.\nA cluck it lacks.\nIt quacks.\nIt is specially fond\nOf a puddle or pond.\nWhen it dines or sups,\nIt bottoms ups.",
                                "147\nSappho, trans. Anne Carson\n\nsomeone will remember us\nI say\neven in another time",
                                "24A\nSappho, trans. Anne Carson\n\nyou will remember\nfor we in our youth\ndid these things\nyes many and beautiful things",
                                "The Old Pond\nMatsuo Bashō\n\nAn old silent pond\nA frog jumps into the pond—\nSplash! Silence again.",
                                "Lighting One Candle\nYosa Buson\n\nThe light of a candle\nIs transferred to another candle—\nSpring twilight",
                                "Spring Ocean\nYosa Buson\n\nSpring ocean\nSwaying gently\nAll day long.",
                                "The West Wind Whispered\nR.M. Hansard\n\nThe west wind whispered,\nAnd touched the eyelids of spring:\nHer eyes, Primroses."
                               };