Friday, October 28, 2016

Massive Air Force or MAF

Two carbon fiber 21x5.5 propellers on a Multistar Elite:
First, the boards started moving, but I later decided to stake the board down.
Ramp up to 2/3 of maximum power.
@240FPS
Hopefully, I can tame this beast and convert it into a non-traditional fan.

“What I've learned from running is that the time to push hard is when you're hurting like crazy and you want to give up. Success is often just around the corner.” 
― James Dyson

Tuesday, October 18, 2016

Coffee

A Keurig coffee maker controlled by an ESP 8266 , Cayenne myDevices, Arduino Pro Mini and a stepper motor with driver.
In essence, a hot cup of coffee made at 7:00 each morning.


Follow my Mail tutorial for info on setting up Cayenne and use this code on the ESP 8266:

#define CAYENNE_DEBUG         // Uncomment to show debug messages
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
#include <CayenneDefines.h>
#include <BlynkSimpleEsp8266.h>
#include <CayenneWifiClient.h>
#include <Arduino.h>
#include <SoftwareSerial.h>
// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = ""; //device code
char ssid[] = ""; //your ssid
char password[] = ""; // network password
void setup()
{
  Serial.begin(9600);
  Cayenne.begin(token, ssid, password);
}
void loop()
{
  Cayenne.run(); 
}
This code needs to go into your Arduino

#define IN1  5
#define IN2  6
#define IN3  10
#define IN4  11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;
const byte IOTpressed = 1;
// Interrupt Service Routine (ISR)
void switchPressed ()
{
 if (IOTpressed==HIGH){
    while(steps_left>0){
  currentMillis = micros();
  if(currentMillis-last_time>=1000){
  press(1); 
  time=time+micros()-last_time;
  last_time=micros();
  steps_left--;
   }
  }
  Direction=!Direction;
  steps_left=4095;
}
else {
 IOTpressed==LOW;
 }
}
void setup ()
{
  pinMode(IN1, OUTPUT); 
  pinMode(IN2, OUTPUT); 
   pinMode(IN3, OUTPUT); 
    pinMode(IN4, OUTPUT); 
 pinMode(IOTpressed, INPUT);
  attachInterrupt (0, switchPressed, CHANGE);  // attach interrupt handler
}  // end of setup
void loop ()
{
  // loop doing nothing 
} 
void press(int xw){
  for (int x=0;x<xw;x++){
switch(Steps){
   case 0:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   case 1:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, HIGH);
   break; 
   case 2:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 3:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 4:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 5:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
     case 6:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 7:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   default:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
}
SetDirection();
}
} 
void SetDirection(){
if(Direction==1){ Steps++;}
if(Direction==0){ Steps--; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
}


Connect Pin D2 from the Node Mcu Esp8266 to Pin 2 on your Arduino.

Connect pins 5,6,10,11 to your stepper driver board.

Use self taping screws to attach your stepper motor.
Use super glue and a popsicle stick to extend the stepper motor shaft. (I used a piece of a broken propeller)


Inspiration:

Friday, October 14, 2016

Mail

A simple email notification sent by Cayenne and triggered by a PIR motion sensor3 (connected to a Node MCU ESP82665) powered by a USB power bank.


Paste the device token into the Arduino code.
Add your SSID and Password to the Arduino code as well.
And upload to the Node MCU ESP82665 .
#define CAYENNE_DEBUG         // Uncomment to show debug messages
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space

#include <CayenneDefines.h>
#include <BlynkSimpleEsp8266.h>
#include <CayenneWifiClient.h>
#include <Arduino.h>
#include <SoftwareSerial.h>



// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = "";
char ssid[] = "";
char password[] = "";

// Virtual Pin of the Digital Motion Sensor widget.
#define VIRTUAL_PIN V1

// Digital pin the motion sensor is connected to. Do not use digital pins 0 or 1 since those conflict with the use of Serial.
int motionSensorPin = 4;

void setup()
{
  Serial.begin(9600);
  Cayenne.begin(token, ssid, password);
 
}

void loop()
{
  Cayenne.run();
  checkSensor(); 
}


int previousState = -1;
int currentState = -1;
unsigned long previousMillis = 0;

void checkSensor()
{
  unsigned long currentMillis = millis();
  // Check sensor data every 250 milliseconds
  if (currentMillis - previousMillis >= 250) {
    // Check the sensor state and send data when it changes.
    currentState = digitalRead(motionSensorPin);
    if (currentState != previousState) {
      Cayenne.virtualWrite(VIRTUAL_PIN, currentState);
      previousState = currentState;
    }
        previousMillis = currentMillis;
  }
}

Plug the Node MCU ESP82665 into your power bank.


Connect power and ground to your PIR motion sensor3 (depending on your sensor you may need to provide 5V from the power bank) and the signal out to Pin D2 of your Node MCU ESP82665 .


Add the digital motion sensor to Cayenne after the device connects.
Make sure to select your "Arduino"-(Node MCU ESP82665), Virtual Pin, and Pin V1.


Click the top right drop down and add a trigger.
Drag your ''Arduino"- (Node MCU ESP82665) to trigger and add your email to notify.


Place in your mailbox for the unsuspecting mailman.


Enjoy that feeling of knowing your package has arrived safely in your mailbox from anywhere in the world!
I would like to thank Cayenne for sponsoring this project and Chao @Electrodragon1 for some amazing and cheap parts (that I hope to arrive soon)!

"I get mail; therefore I am."
-Scott Adams


Thursday, September 22, 2016

The TErover | Custom Bamboo Deck | Hanger Trucks | Turnigy Aerodrive SK3 motor | Custom Mount | 8S | VESC

I haven't posted a project for quite some time and decided an electric skateboard was the way to go.

The Board

I first mixed up some epoxy: 
 The hardeners set time is around 2 hours which gives me plenty of time to make 3 boards.

Then I filled the grooves with it.
 A tongue and groove bamboo flooring was the perfect choice for a solid and appealing board.

I slotted the boards together.
 The process was repeated once again for a total of 3 bamboo floor boards per longboard deck.

Ratchet straps were used to put the joints under pressure. 
 Although the size of the straps might have been a bit overkill they did provide enough tension to put a slight curve in the "composite" board.

Mineral spirits saved the day!

The extra epoxy that oozed out was easily wiped off with paintbrush cleaner. 

For the layout of the board I used Adobe Illustrator:

At this point, I used 3M Super 77 spray adhesive to stick the template to the rough side of the board.
I first used a combination of a handsaw and a circular saw, but quickly realized those were not the right tools for the job. Thankfully the Touchberrys (my friend's parents) let me use their bandsaw and router until 11PM. 
 Top after being cut out and sanded.
Bottom after being cut out and sanded.

Power Train 

To mount the motor I used a piece of aircraft grade aluminum that was cut drilled and bent at home:
Marking holes for the motor mount and using a hacksaw to cut out the piece.
My largest drill bit was not quite big enough.
 So I used a drill rasp to make it larger.
 Large enough hole.
Mounting holes drilled.
This video:
and this one:
and this presentation (especially page 28):
and this forum thread: 
http://www.rcuniverse.com/forum/tips-techniques-180/265481-how-do-i-harden-k-s-soft-aluminum.html
are very useful if you are planning to bend your own motor mount.
To anneal (soften) the aluminum plate I first used a regular lighter to put a layer of soot on the aluminum to indicate temperature.
 I then used a blowtorch to heat the plate until the soot disappeared.
 I then bent the plate at a 90degree angle with both a homemade metal brake and regular hammer.
 I repeated the annealing process, but this time I quenched the aluminum on ice (heat treating).
I then put the mount in a toaster oven at 200 degrees for 1 hour for the precipitation process to occur (hardening aluminum is complicated). I used a thermocouple attached with Kapton tape to monitor the temperature more accurately.

On the wheel side, I used a timer pulley that I modified by knocking out one bearing.
 I then drilled and tapped holes on the pulley and screwed in M3 screws.
I also had to file down the truck so that the inside of the pulley did not scrub.
On the motor  side, I used an 8mm bore hole timing drive pulley and the collet provided with the motor.
 I drilled holes in the board for the mount.
(Drill from the clean face down if you don't wan the ugly chips seen here).
I then bolted on the mount.

Test run of the board:
I used this belt from eBay.
I am using this board from Walmart to test things out before mounting onto the bamboo board.


The problem with the current setup is that the belt slacks after use and then starts to skip teeth.
 In order to try and solve this, I tested different types of tensioning, but to no avail.
Back to the drawing board for the motor mount.

ESC

Building Benjamin Vedder's  VESC was a major challenge that I decided to take up. 

You need very fine tweezers in order to place SMD component's on a PCB.
It also really helps to use double sided tape to stick down the cut tapes and then mark the parts on the table with an expo marker.

Bamboo skewers are the perfect tool for dabbing solder paste on all the pads.

When (not if) you drop an SMD component, sweeping the area around you helps (unless you have carpet, in which case the static discharge probably killed it (or that's what you can tell yourself anyway) ).
Into the toaster oven at 170 degrees Celsius for 30 seconds.
Then Ramp the temperature to 225 as rapidly as possible and keep it there until the solder reflows.
Lower the door keeping the temperature high for around a minute and then allow the board to cool fully before taking out.

I had quite a few solder bridges, so I used solder wick to clean up the board.
"Whatever good things we build end up building us."
- Jim Rohn