Close
0%
0%

Voice Kitchen Faucet

de Bergerac The Dishes

Similar projects worth following

Touching is far too forward when first getting to know your kitchen faucet.
You must first serenade it ..
.. here then is the Cyrano de Bergerac method of dish washing.

Notations
1. Limited positions to averaging hot/cold/mix in deux bcz .. less is more.
Would diversify per #3.
2. #MakeArduinoCheapAgain
3. Recommend https://github.com/netlabtoolkit/VarSpeedServo as alternative to littering annoying for-statements .. unfortunately avr/interrupt.h is not ESP8266 compatible.
4. Shameless plug for https://www.theio.nyc/
5. Will you ever learn, me?! Shd you believe the arms are long enough .. add more.
6. FYI .. Jacob is my personal AI. Say no to Amaoogpple!

Archive

https://hackaday.io/project/159473-voice-kitchen-faucet
http://vijemiller.com/index.php?entry=entry180829-231919
https://www.thingiverse.com/thing:3074690

Alternative Suggestion for Voice Commands: https://voiceattack.com/

Per Steven Dufresne's healthy skepticism .. https://hackaday.com/2018/09/01/talk-to-the-faucet/ .. a 3+ year old cheese-laden introduction to Jacob:

SSEYO Koan Play File - 1.60 MB - 08/30/2018 at 04:33

Download

SSEYO Koan Play File - 1.60 MB - 08/29/2018 at 22:49

Download

SSEYO Koan Play File - 1.84 MB - 08/29/2018 at 22:49

Download

  • 1 × NodeMCU ESP8266 ESP-12E V2
  • 2 × Micro Servo 9G
  • 1 × 5V Power Supply
  • 1 × Jacob AI (Proprietary)
  • 1 × PLA

  • Code (Version 0.1)

    Vije Miller08/29/2018 at 22:49 0 comments

    This is the bare bones version .. as opposed to a more elegant version one may make with map() the positions and a variable speed servo script

    Relative to your voice command system .. simply have a series of keyword commands like 'kitchen' and 'hot' etc to load the NodeMCU ip address and add /hot=50 et cetera ..

    // Voice Kitchen Faucet V.0.1 (NodeMCU)
    // Vije Miller
    
    #include <ESP8266WiFi.h>
    #include <Servo.h>
    
    const char* ssid = "ssid";
    const char* pass = "password";
    WiFiServer server(80);
    
    Servo left;
    Servo right;
    
    // Servo Pins
    const int ser_l = D6;
    const int ser_r = D5;
    
    // Version 2.0 would map() distance
    // between off and peak temp ..
    
    // Off
    int l_off = 60;
    int r_off = 110;
    
    // Hot
    int hfl = 70;
    int hfr = 50;
    int hol = 60;
    int hor = 10;
    
    // Mix
    int mfl = 90;
    int mfr = 75;
    int mol = 130;
    int mor = 35;
    
    // Cold
    int cfl = 110;
    int cfr = 90;
    int col = 160;
    int cor = 90;
    
    // Position
    int pl = 70;
    int pr = 90;
    
    // LED
    int led = D0;
    
    void setup() {
      Serial.begin(115200);
    
      pinMode(led, OUTPUT);
      digitalWrite(led, LOW);
    
      left.attach(ser_l);
      right.attach(ser_r);
      left.write(l_off);
      right.write(r_off);
    
      // Connect
      Serial.println(ssid);
      WiFi.begin(ssid, pass);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("Connected");
      server.begin();
      Serial.print("http://");
      Serial.print(WiFi.localIP());
      Serial.println("/");
    
    }
    
    void loop() {
    
      // Check
      WiFiClient client = server.available();
      if (!client) {
        return;
      }
      // Wait
      while (!client.available()) {
        delay(1);
      }
      // Read
      String query = client.readStringUntil('\r');
      client.flush();
    
      if (query.indexOf("/hot=50") != -1)  {
        hot(50);
      }
      if (query.indexOf("/hot=100") != -1)  {
        hot(100);
      }
      if (query.indexOf("/cold=50") != -1)  {
        cold(50);
      }
      if (query.indexOf("/cold=100") != -1)  {
        cold(100);
      }
      if (query.indexOf("/mix=50") != -1)  {
        mix(50);
      }
      if (query.indexOf("/mix=100") != -1)  {
        mix(100);
      }
      if (query.indexOf("/off") != -1)  {
        off();
      }
    
      delay(1);
    }
    
    
    void off() {
      left.write(l_off);
      right.write(r_off);
      delay(5);
    }
    
    void hot(int q) {
      if (q == 50) {
        pl = hfl;
        pr = hfr;
      } else if (q == 100) {
        pl = hol;
        pr = hor;
      }
      left.write(pl);
      right.write(pr);
      delay(5);
    }
    
    void mix(int q) {
      if (q == 50) {
        pl = mfl;
        pr = mfr;
      } else if (q == 100) {
        pl = mol;
        pr = mor;
      }
      left.write(pl);
      right.write(pr);
      delay(5);
    }
    
    void cold(int q) {
      if (q == 50) {
        pl = cfl;
        pr = cfr;
      } else if (q == 100) {
        pl = col;
        pr = cor;
      }
      left.write(pl);
      right.write(pr);
      delay(5);
    }
    

  • Simon

    Vije Miller08/29/2018 at 04:38 0 comments

    Seeing as female jumpers seem all but non-existent now .. while boards still offer male leads .. permits me a moment of cursing loudly while soldering.

  • Michael J. Fox Setting

    Vije Miller08/27/2018 at 02:57 0 comments

  • CNC to 3D to BM

    Vije Miller08/23/2018 at 18:48 0 comments

    CNC'd cardboard out of sheer elation having a CNC again .. and while it worked well .. 3D printing this project seems more appropriate. 100's of other projects I can cut alternatively so .. meh.

  • Craftsmenshipiness

    Vije Miller07/11/2018 at 04:32 0 comments

View all 5 project logs

Enjoy this project?

Share

Discussions

Romain LAPIERRE wrote 09/03/2018 at 00:38 point

That's just awesome! Gonna try this out soon :p

  Are you sure? yes | no

Vije Miller wrote 09/03/2018 at 01:03 point

Keep me posted on how it goes .. 

  Are you sure? yes | no

Josh Starnes wrote 09/01/2018 at 23:13 point

you need to paint it and give him a face with some googly eyes

  Are you sure? yes | no

Vije Miller wrote 09/03/2018 at 01:03 point

.. then a Millennial attitude so it only gives me water when I am either nice and/or when it feels like it.

  Are you sure? yes | no

Alexander wrote 08/30/2018 at 05:08 point

Brilliant invention as always! Now I don't even want to see my outdated faucet anymore.

  Are you sure? yes | no

Vije Miller wrote 09/03/2018 at 01:04 point

Pft .. just look at those handles just sitting there all not moving on their own .. pft .. so archaic. I need to add the entire sink to a movable robot so I don't even have to leave the couch to wash my dishes.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates