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