Close
0%
0%

Arduino Plasma Toilet Air Freshener Fail

Ionized Poot Poof - Fail -

Similar projects worth following

Notations

1. Printed gears on a 150$ faux CTC faux Prusa i3 .. not ideal. Sketchup plugin: jimhami42_rack_and_pinion.rbz https://forums.sketchup.com/t/involute-gear-and-worm-gear-plugin/39666/4
2. Mind the gap .. as it is not so much obtaining the sustained spark but focus on the initiation, which shd be ideally half or less before then traveling to the mhz distance.
3. Maker rage! V1 faced an -incident- of impatience of stupidity for stupidity.
4. Gears [deep breath] suck. V1 (pre-smash) was constructed before the gears had been printed - thus halving gears led to variance failures. V2 geared up first.
5. Knock off Nano was trashed - then fried a NodeMCU and servo by using a 12V usb fed power supply bcz wtf?! Burned a new bootloader to faux Nano -- back at it.
6. In principle .. am I right?! No? (>_ლ)


7. FAIL as 30,000 to 40,000 volts regardless of isolation (3 to 5 mm of PLA?!) disrupted electronics and seized the gyroscope. Lesson here? Less is more .. or shielding .. yeah, probably shielding.

SSEYO Koan Play File - 18.12 MB - 08/23/2019 at 19:14

Download

  • 1 × Arduino Nano
  • 1 × 5V Relay Module
  • 1 × 1000 uf Cap
  • 1 × Steel Wool
  • 1 × 47 ohm Resistor

View all 12 components

  • Ion To Some Thing

    Vije Miller07/29/2019 at 04:21 0 comments

  • What Code Go Wrong?!

    Vije Miller07/29/2019 at 00:57 4 comments

    // Arduino Plasma Toilet Air Freshener
    // Vije Miller
    
    #include <FastLED.h>
    #include <Servo.h>
    
    // Neopixel
    #define DATA_PIN 2
    #define LED_TYPE WS2812
    #define COLOR_ORDER GRB
    #define NUM_LEDS 3
    #define BRIGHTNESS 100
    #define FRAMES_PER_SECOND 120
    CRGB leds[NUM_LEDS];
    
    // Servos
    Servo gyro;
    Servo riser;
    Servo level;
    
    // Gyro
    int gyro_pos = 95;
    int gyro_stop = 95;
    int rotate = 77;
    int timer_rotate_initial = 3000;
    int timer_rotate = 9150;
    // hall sensor in next version
    
    // Riser
    int rise = 105;
    int lower = 75;
    int riser_stop = 91;
    int timer_riser_up = 20;
    int timer_riser_down = 20;
    
    // Level
    int level_pos = 125;
    int up = 93;
    int down = 125;
    
    // Relay
    int relay = 3;
    
    // Trigger
    // Mercury Switch
    int trigger = 7;
    int led = 8;
    int state = 0;
    int hold_state = 0;
    
    void setup() {
    
      Serial.begin(9600);
    
      pinMode(trigger, INPUT);
      pinMode(led, OUTPUT);
    
      pinMode(relay, OUTPUT);
      digitalWrite(relay, LOW);
    
      gyro.attach(5);
      gyro.write(gyro_stop);
    
      riser.attach(6);
      riser.write(riser_stop);
    
      level.attach(4);
      level.write(down);
    
      FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
      FastLED.setBrightness(BRIGHTNESS);
    
      // Alert Active
      colorFWD(0x00, 0x00, 0xff, 100);
      colorFWD(0x00, 0x00, 0x00, 100);
      colorFWD(0x00, 0x00, 0xff, 100);
      colorFWD(0x00, 0x00, 0x00, 100);
    
    }
    
    void loop() {
    
      // Clear Strip
      colorFWD(0x00, 0x00, 0x00, 100);
    
      // Read Button
      state = digitalRead(trigger);
    
      // Lid Down
      if (state == LOW) {
        digitalWrite(led, LOW);
        // Lid Down After Open Then..
        if (hold_state == 1) {
          delay(5000);
          freshen();
          hold_state = 0; // reset
        }
        // Lid Open
      } else if (state == HIGH) {
        hold_state = 1;
        digitalWrite(led, HIGH);
      }
    
      // Testing
      if (Serial.available() > 0)
      {
        int cmd = Serial.parseInt();
        Serial.println(cmd);
        if (cmd == 1) {
          rise_up();
        } else if (cmd == 2) {
          go_down();
        } else if (cmd == 3) {
          turn_gyro();
        } else if (cmd == 4) {
          freshen();
        }
      }
    
      delay(1);
    }
    
    // Whole Shabang
    void freshen() {
      rise_up();
      delay(2000);
      turn_gyro();
      delay(2000);
      go_down();
    }
    
    void rise_up() {
      for (int x = 0; x < timer_riser_up; x += 1) {
        riser.write(rise);
        track_led();
        // Convert to Leveler Servo
        level_pos = map(x, 0, timer_riser_up, down, up);
        level_pos = round(level_pos);
        level.write(level_pos);
        delay(500);
      }
      riser.write(riser_stop);
    }
    
    void go_down() {
      for (int x = 0; x < timer_riser_down; x += 1) {
        riser.write(lower);
        track_led();
        level_pos = map(x, 0, timer_riser_down, up, down);
        level_pos = round(level_pos);
        level.write(level_pos);
        delay(500);
      }
      riser.write(riser_stop);
    }
    
    void turn_gyro() {
      // Spin Up Gyro
      for (gyro_pos = gyro_stop; gyro_pos >= rotate; gyro_pos -= 1) {
        gyro.write(gyro_pos);
        delay(50);
      }
      delay(timer_rotate_initial);
    
      // Activate Spark
      digitalWrite(relay, HIGH);
      delay(timer_rotate);
      digitalWrite(relay, LOW);
    
      gyro.write(gyro_stop);
    }
    
    void track_led() {
      colorFWD(0x00, 0x00, 0xff, 100);
      colorFWD(0x00, 0x00, 0x00, 100);
    }
    
    void colorFWD(byte red, byte green, byte blue, int SpeedDelay) {
      for (uint16_t i = 0; i < NUM_LEDS; i++) {
        setPixel(i, red, green, blue);
        showStrip();
        delay(SpeedDelay);
      }
    }
    
    void showStrip() {
    #ifdef ADAFRUIT_NEOPIXEL_H
      // NeoPixel
      strip.show();
    #endif
    #ifndef ADAFRUIT_NEOPIXEL_H
      // FastLED
      FastLED.show();
    #endif
    }
    
    void setPixel(int Pixel, byte red, byte green, byte blue) {
    #ifdef ADAFRUIT_NEOPIXEL_H
      // NeoPixel
      strip.setPixelColor(Pixel, strip.Color(red, green, blue));
    #endif
    #ifndef ADAFRUIT_NEOPIXEL_H
      // FastLED
      leds[Pixel].r = red;
      leds[Pixel].g = green;
      leds[Pixel].b = blue;
    #endif
    }

  • Testing Being Testy

    Vije Miller07/28/2019 at 04:18 0 comments

  • Near ........ Far

    Vije Miller07/26/2019 at 19:39 0 comments

  • Any Moment Now...

    Vije Miller07/22/2019 at 20:48 0 comments

  • Hello, Is It Me You're Looking For? No?! Oh.

    Vije Miller07/19/2019 at 03:43 0 comments

  • Mini It

    Vije Miller07/09/2019 at 20:12 0 comments

    Smaller version with more keen awareness of what made the previous model so g d m f frustrating - under development ..

  • Maker Rage Volume One

    Vije Miller07/06/2019 at 08:52 1 comment

    Smashed for the sake of sanity -- aka mulligan. New design inbound bcz this project is too novelty-stupid to pass up and in my mind it 'works' - for an episode. Stay tuned.

  • Richard Geary

    Vije Miller06/18/2019 at 16:07 0 comments

    Initial rotational test. Inner rotation runs freely - testing variations to improve connection between the first and second ring.

  • Back At 'Er

    Vije Miller06/14/2019 at 19:27 0 comments

View all 15 project logs

Enjoy this project?

Share

Discussions

Chris wrote 08/23/2019 at 03:26 point

Could you post the STLs or design files for the gimbal? That's a very clever design.

  Are you sure? yes | no

Vije Miller wrote 08/23/2019 at 19:16 point

Uploaded a .skp (Sketchup) file (18.1mb) for you with a general break down of the entire project inside/out. See /Files/ section on this page. Cheers.

  Are you sure? yes | no

Starhawk wrote 07/29/2019 at 03:57 point

I am for some reason reminded of the movie "Contact".

;)

  Are you sure? yes | no

Vije Miller wrote 07/29/2019 at 04:29 point

Bcz of the way I remind you of a poorly cast and stunningly weirdly I guess attractive Matthew McConoghuey (I'm not looking up how to spell that) -or- by how disappointed by the end of this project you will be?

  Are you sure? yes | no

Starhawk wrote 07/29/2019 at 04:43 point

Look at the machine in the movie.

Look back at your machine.

Rinse and repeat until you realize what you have.

;)

  Are you sure? yes | no

Daren Schwenke wrote 06/14/2019 at 21:27 point

I have zero idea what the goal here is.  :)

If it is to make the rings rotate within each other, you could possibly skip the additional motors and tune the mass of each, a little off axis, to be just off of a subharmonic of the main ring harmonic.  That way the same rotational motion could generate rotation in whatever ring you choose.  It would help greatly if your relationship between ring rotational axis(ees) was not 90 degrees, but that is probably a design choice and can't be modified.

The relationship will be additive so once you find the first, the rest will be dependent on that.  So... this is *way* beyond me from the math perspective.  From the thought experiment perspective, I think you could probably wing it and experimentally determine it by adding mass to *one* of the most distant from the axis points of each ring.  

Assuming you are designing this to work in a gravity well of course.  Good luck.  :)

  Are you sure? yes | no

Vije Miller wrote 06/15/2019 at 00:53 point

Due to wires running thru the rings and joints between rings - for a purpose to be revealed later (..its to meet Jodie Foster) - there is need for propulsion of the rotation of the rings.

  Are you sure? yes | no

Daren Schwenke wrote 06/15/2019 at 01:09 point

Well, I hope you get to meet Ms. Foster, and subsequently, fulfill your objective here.  The letter I was being abnormally stubborn in my reply. Providence?  Probably not.  *I* have willed it into existence nonetheless.  Good luck sir.

  Are you sure? yes | no

peter jansen wrote 07/28/2019 at 06:21 point

After seeing this project, I was going to write "now all we need is Jody Foster!", but clearly you're already thinking in that direction. :)

  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