Close
0%
0%

Arduino Door Catcher

Robotic Jerk Compensation

Similar projects worth following

For the 50 per cent of the population whose spatial and auditory senses are diminished by what one could only presume is due to massive brain damage caused by a series of tragic falls down several flights of stairs, this heroic ballet-ing robit will reserve your obnoxiousness from the rest of us who acknowledge that other people exist.

Notations

1. 9G servos (plastic gears) torque limited - remodeled with MG995s.
2. Divvyed up the segments for printing sake - to make alterations and not rehash the entire build.
3. 33 hours remaining in the MacroFab contest - wrote a new Arduino serial testing script for multiple servos. https://hackaday.io/project/166931-arduino-door-catcher/log/166873-arduino-control-multiple-servos-thru-serial-monitor
4. MacroFab extended the deadline by 20 days - sigh of unnecessary relief. https://macrofab.com/blog/macrofab-design-contest-useless-machine-sponsored-by-mouser-electronics/
5. The door handle 'grasp' -er relies a bit on circumstance - tension must be applied by pressure to the knob to initiate rotational shift of the grasp which then applies tension to the handle permitting the turning subsequent of the turning. Got it?! Rotation tensions rotation that tensions rotation.
6. 5V 2A power supply was insufficient for VarServoSpeed code which runs servo simultaneously. Separated the Nano and magnetic module to another 5V - gnd together.
7. VarServoSpeed is magic! https://github.com/netlabtoolkit/VarSpeedServo

8. MacroFab Useless Machine Contest 'entry' suffixed to the video -- The Door Uncloser

9. It was brought to our (my) attention that this project in fact could be un-useless - by permitting those with arthritis to open/close doors with ease while still fulfilling need for closed doors - say for while watching grandchildren or pets or et cetera. [sneer]

10. Thx Kreia (whom ever you are) https://imgur.com/gallery/ZEzPUyz

  • 1 × Arduino Nano
  • 3 × MG995 Servo
  • 1 × 9G Servo
  • 1 × Magnetic Spring Module

  • Thusly Thus Thyn

    Vije Miller08/10/2019 at 20:57 0 comments

    // Arduino Door Catcher
    // Vije Miller
    
    #include <VarSpeedServo.h>
    
    VarSpeedServo stopper;
    VarSpeedServo base;
    VarSpeedServo mid;
    VarSpeedServo handle;
    
    int pos;
    
    // Magnetic Sensor
    int hall = 2;
    int magnet;
    int state = 0;
    
    void setup() {
    
      Serial.begin(9600);
    
      pinMode(hall, INPUT);
    
      stopper.attach(3);
      stopper.write(140, 60, true);
    
      handle.attach(6);
      handle.write(95, 60, true);
    
      base.attach(4);
      mid.attach(5);
      base.write(180, 70);
      mid.write(25, 50);
      base.wait();
      mid.wait();
    
    }
    
    void loop() {
    
      // Did Door Open?
      magnet = digitalRead(hall);
    
      // Door Opened
      if (magnet == HIGH) {
        // Door Was Closed
        if (state == 0) {
          Serial.println("Active");
          delay(1000);
          engage();
          state = 1;
          // Door Was Open
        } else if (state == 1) {
          do_it();
          Serial.println("Deactived");
          delay(1000);
          state = 0;
        }
      }
      delay(47);
    }
    
    // Release Door Slide
    void engage() {
      stopper.write(40, 80, true);
    }
    
    void do_it() {
      // Retract
      stopper.write(140, 80, true);
      // Set
      mid.write(90, 50);
      base.write(130, 30);
      mid.wait();
      base.wait();
      handle.write(0, 50, true);
      // Push
      mid.write(70, 40);
      base.write(90, 40);
      mid.wait();
      base.wait();
      // Retract
      mid.write(90, 50, false);
      base.write(130, 50, true);
      // Set to Grab
      handle.write(95, 50, true);
      mid.write(85, 50, true);
      // Grab Door Handle
      base.write(95, 100, true);
      handle.write(0, 50, true);
      // Close Door
      mid.write(77, 50, false);
      base.write(77, 50, true);
      handle.write(95, 50, true);
      // Retract
      mid.write(90, 50);
      base.write(120, 30);
      mid.wait();
      base.wait();
      // Home
      mid.write(25, 50);
      base.write(180, 70);
      mid.wait();
      base.wait();
    }

  • Arduino Control Multiple Servos thru Serial Monitor

    Vije Miller08/09/2019 at 21:57 1 comment

    You can easily find a script to control a servo thru the serial monitor -- but what about more than one? This script permits as many servos as possible by truncating the input -- so it does require some attention to detail as you type -- but hey -- awesome sauce.

    // Multiple Serial to Servo Position
    // Vije Miller
    
    /*
      Type: Servo No. + Position
      Example: 290 (Servo 2 Position 90)
      10 to 1180 for Servo 1
      20 to 2180 for Servo 2
      30 to 3180 for Servo 3
      40 to 4180 for Servo 4
      50 to 5180 for Servo 5
    */
    
    #include <Servo.h>
    
    Servo one;
    Servo two;
    Servo three;
    Servo four;
    Servo five;
    
    String input;
    String also;
    int also_int;
    
    void setup() {
      Serial.begin(9600);
    
      // Assign Pins
      one.attach(3);
      two.attach(4);
      three.attach(5);
      four.attach(6);
      five.attach(7);
    
      one.write(90);
      delay(500);
      two.write(90);
      delay(500);
      three.write(90);
      delay(500);
      four.write(90);
      delay(500);
      five.write(90);
      delay(500);
    }
    
    void loop() {
      if (Serial.available() > 0)
      {
        input = Serial.readString();
        also = input;
    
        // Get Servo Number
        input.remove(1);
    
        // Get Position
        also.remove(0, 1);
        also_int = also.toInt();
    
        Serial.print(input);
        Serial.print(" ");
        Serial.println(also_int);
    
        if (input == "1") {
          one.write(also_int);
        } else if (input == "2") {
          two.write(also_int);
        } else if (input == "3") {
          three.write(also_int);
        } else if (input == "4") {
          four.write(also_int);
        } else if (input == "5") {
          five.write(also_int);
        }
        delay(100);
      }
    }

  • The Ghost of Art Bell

    Vije Miller08/09/2019 at 15:03 0 comments

  • Arm and a Leg

    Vije Miller08/08/2019 at 21:25 0 comments

  • Segment 1 of 2 of 1

    Vije Miller08/05/2019 at 19:31 0 comments

View all 5 project logs

Enjoy this project?

Share

Discussions

Morning.Star wrote 08/19/2019 at 04:34 point

Dude, you totally nailed this :-D

I love the arm action... Yes, its completely nuts, and it works, and its so you. XD

  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