TVShow 5X04 NodeMCU Sexy Curtains
The room employing this particular device is un-ish-viewable during the day light tho highly visible at night with interior lights, alight. Due to these parameters, the curtains automatically (photoresistor) open-close relative. Amended is a wifi (lower-case) channel to permit a voice activated command (url submit) to open-close the curtains, shd the moment arise, mmm-hmm.


Ingredients
NodeMCU ESP8266 12E
Photoresistor
(2) MG995 Servo (mod'd to 360)
5 Volt Power Supply
String

Sexy Code
// NodeMCU Sexy Curtains
// Vije Miller

#include <ESP8266WiFi.h>
#include <Servo.h>

// Wifi Data (Static)
IPAddress ip(192, 168, 1, 47);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
const char* ssid = "ssid";
const char* pass = "password";
WiFiServer server(80);

Servo left;
Servo right;

// Stop
int zero = 90;

int ols = 85;
int ors = 95;
int cls = 95;
int crs = 85;

// Servo Position (Time)
// 1 = 1 Second = Full Close
// 10 = Full Open
int pos = 0;
// Half Rotation -> Specific
int slow = 910;
int full = 10;

int sensor = 0;

void setup() {
Serial.begin(115200);

left.attach(D5);
right.attach(D6);

left.write(zero);
right.write(zero);

// Connect
Serial.print("SSID: ");
Serial.println(ssid);
WiFi.config(ip, gateway, subnet);
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("/");

delay(5000);
}


void loop() {

// Sensin'
sensor = analogRead(A0);

// Convert to simplier times
sensor = map(sensor, 0, 1023, 0, full);

// Gotta' see it to believe it
Serial.print(sensor);
Serial.print(" ");
Serial.println(pos);

// Listenin'?
WiFiClient client = server.available();
if (client) {
if (client.available()) {

String query = client.readStringUntil('\r');

if (query.indexOf("/o") != -1) {
open_fast();
Serial.print(pos);
Serial.print(" ");
Serial.println("open fast");
delay(200000);
} else if (query.indexOf("/c") != -1) {
close_fast();
Serial.print(pos);
Serial.print(" ");
Serial.println("close fast");
// Set to a generous (2) minutes for sex
delay(200000);
}
}
client.flush();
}

// Now whadda'ya do?
if (sensor > pos) {
open_slow();
} else if (sensor < pos) {
close_slow();
} else {
hold();
}

delay(100);
}

void open_slow() {
if (pos < full) {
left.write(ols);
right.write(ors);
delay(slow);
pos++;
}
hold();
}

void close_slow() {
if (pos > 0) {
left.write(cls);
right.write(crs);
delay(slow);
pos--;
}
hold();
}

void open_fast() {
if (pos < full) {
left.write(ols);
right.write(ors);
pos = pos * 1000;
delay(pos);
pos = full;
}
hold();
}

void close_fast() {
if (pos > 0) {
left.write(cls);
right.write(crs);
pos = pos * 1000;
delay(pos);
pos = 0;
}
hold();
}

// Don't ya' move
void hold() {
left.write(zero);
right.write(zero);
delay(5000);
}

Notation(s)
1. Timing is every thing .. preferring servos as opposed to steppers, this code requires a precise timing-per-rotation for the width of the curtain draw.
2. Patience .. just bcz it runs at 16mhz doesn't mean you shd. Averaging sensor reads .. delays .. give 'er a rest other wise the curtains will be flappin' back and forth like a chicken raised by geese tryin' to head south.

Archive
https://hackaday.io/project/164851-nodemcu-sexy-curtains
TVShow 4X35 Doctor Range (NodeMCU)
IoTkazam! There is nothing up my sleeve .. save for this giant WIFI and Bluetooth enabled flash paper igniter.With a sleight of hand .. a touch of the screen .. and poof. No one is paying attention any ways bcz they are looking at their phones too. #MillennialMagic


Ingredients
NodeMCU 12E
HC-05 Bluetooth Module
(3) RC Glow Plugs
(3) 5V Relay Modules
(3) AA Batteries
CR2 3V Battery
Flash Paper

Code
// Magic Flame Hand Thing
// Bluetooth Only Version
// Vije Miller

// Pins
int one = D0;
int two = D1;
int thr = D2;

// Burn Time
int burn = 1500;
int mix_burn = 1500;

void setup() {
Serial.begin(9600);

pinMode(one, OUTPUT);
pinMode(two, OUTPUT);
pinMode(thr, OUTPUT);

digitalWrite(one, LOW);
digitalWrite(two, LOW);
digitalWrite(thr, LOW);
}

void loop() {

if (Serial.available())
{
char data;
data = Serial.read();
if (data == '1') {
digitalWrite(one, HIGH);
Serial.write("Yep");
delay(burn);
digitalWrite(one, LOW);
}
else if (data == '2') {
digitalWrite(two, HIGH);
Serial.write("Sure");
delay(burn);
digitalWrite(two, LOW);
}
else if (data == '3') {
digitalWrite(thr, HIGH);
Serial.write("Okay");
delay(burn);
digitalWrite(thr, LOW);
}
else if (data == '4') {
digitalWrite(one, HIGH);
Serial.write("Bomb's Away");
delay(mix_burn);
digitalWrite(two, HIGH);
delay(mix_burn);
digitalWrite(one, LOW);
digitalWrite(thr, HIGH);
delay(mix_burn);
digitalWrite(two, LOW);
delay(mix_burn);
digitalWrite(thr, LOW);
}
}

}


Notations
1. Prototype .. read the room.
2. NodeMCU (wifi) + HC-05 (not BLE) + TIP120 (relays) shd be a maker board. "VijeCU"?
3. Bcz the glow plugs are simply resistance wire coils, they gnd the circuit. MOSFET was attempted yet interference troubled the MCU+BT. For a more immediate impatient solution, we must use mechanical relays. Huge, bulky, module, relays...sigh.
4. WTH happen to those Radio Shack drawer 'mini' 5V relays?!
5. Isolate.
6. "Fallen Hero" by Emily M. Klassen
7. UPDATED http://vijemiller.com/index.php?entry=e ... 526-211639

Archive
https://hackaday.io/project/163522-nodemcu-bt-wrist-hand-flame-flash-idk
https://www.audioblocks.com/stock-audio/fallen-hero-153246.html
http://vijemiller.com/index.php?entry=e ... 526-211639
Arduino Dead or Alive
Trick for treat .. the illusion of proving you are alive .. and alive enough to even enjoy a treat.

This particular project is a carry over from a request to simply 3D print a heart for a 4th grade class demonstration -- and after negotiations negated instead reanimating a heart in a lightning storm .. uh, with an Arduino obviously .. we (me) pitched a pulse driven beating heart .. that in turn rewards your having proved to subsist, with a treat.


Ingredients
Arduino Uno
Servo
(2) 10K Potentiometer
LCD Display
Pulse Sensor
(2) 330 ohm Resistor
1000 uf Capacitor
Piezo Buzzer
2N2222 Transistor
4007 Diode
Neopixels
(2) Toggle Switch
MDF

Code
// Arduino Dead or Alive
// Vije Miller

#include <FastLED.h>
#include <LiquidCrystal.h>
#include <Servo.h>

#define NUM_LEDS 5
CRGB leds[NUM_LEDS];
#define PIN 6

// Beat Var LED
int bpm_led_delay = 500;

// Buzzer Pin
const int ekg = 9;

// LCD
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Switch
int aux = 7;
int aux_state = 0;

// Servo
Servo srv;
int st = 110;
int ps = 45;

// Pulse
int pulse = A0
int val;
int tot;
int nxt;
int high;

void setup()
{
Serial.begin(9600);

FastLED.addLeds<WS2812, PIN, GRB>
(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );

pinMode(ekg, OUTPUT);
digitalWrite(ekg, LOW);

pinMode(aux, INPUT);

srv.attach(10);
srv.write(st);

lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Dead or Alive?");

}

void loop() {
// Motor and Buzzer Switch On/Off
aux_state = digitalRead(aux);

// Reset Value
tot = 0;
nxt = 0;
set_bpm = 0;

// Smoothing Pulse
for (int n = 0; n <= 5; n++) {
for (int i = 0; i <= 25; i++) {
val = analogRead(pulse);
tot = val + tot;
// Display Per Peak
if (val > 580) { // Adjust
// If Motor and Buzzer
if (aux_state == HIGH) {
beat_led(0xff, 0x00, 0x00);
delay(bpm_led_delay);
// If No Motor and Buzzer
} else if (aux_state == LOW) {
beat_led_non(0xff, 0x00, 0x00);
delay(bpm_led_delay);
}
}
delay(2);
}
nxt = tot / 25;
set_bpm = set_bpm + nxt;
}
// BPM Maths
bpm = set_bpm * 12;
// Not Very Accurate .. Meh!

if (bpm > 30) {
lcd.setCursor(0, 0);
lcd.print("Alive!");
lcd.setCursor(0, 1);
lcd.print(bpm);
lcd.print(" BPM");
} else if (bpm <= 30) {
lcd.setCursor(0, 0);
lcd.print("Undead!");
}

}


// Neopixel FastLED Fade Red via http://tweaking4all.com
void beat_led(byte red, byte green, byte blue) {
float r, g, b;
for (int k = 0; k < 256; k = k + 8) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
digitalWrite(ekg, HIGH);
srv.write(ps);
}
digitalWrite(ekg, LOW);
srv.write(st);
for (int k = 255; k >= 0; k = k - 10) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
}
}

void beat_led_non(byte red, byte green, byte blue) {
float r, g, b;
for (int k = 0; k < 256; k = k + 8) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
}
for (int k = 255; k >= 0; k = k - 10) {
r = (k / 256.0) * red;
g = (k / 256.0) * green;
b = (k / 256.0) * blue;
setAll(r, g, b);
showStrip();
}
}

void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
FastLED.show();
#endif
}

void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}

void setAll(byte red, byte green, byte blue) {
for (int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}

Notations
1. 'Clear watermelon' filament .. (>_ლ)
2. Censored #$@*!$#% about people, places and things.
3. Extensive modification of https://3dwarehouse.sketchup.com/mod... by Profesor D.
4. Did not earn a TVShow episode bcz .. it had been done.
5. Original concept included a candy dispenser that required evidence of life.

Archive
https://hackaday.io/project/161614-arduino-dead-or-alive
https://3dwarehouse.sketchup.com/model/ufce9d3ab-1e98-442f-afb3-7ed2d09802dd/heart
https://www.thingiverse.com/thing:3186600
NFT Hydroponics @ Pool Side
The IONYC makerspace neighboring Boys and Girls Club requested a hydroponics adaption from a broken pool table .. which meant employing children to hard labor .. as intended by Nature.

Dreary grey and brown (and tree countable) NYC collaborated with being below grade in a stone tomb of a building begged for more of an atmospheric eloquence-ish .. attempt; waterfalls (for oxygenation?) and LED status enclosure (for anxiety?!) .. bearing in mind that kids today are over-stimulated creatures demanding jangling keys to retain interest.


Ingredients
4" PVC
4" 90° PVC
22L Plastic Tub
Pool Table
Lever Switch
Float
5V Relay
LED Strip
Velcro
Florescent Fixture
Timer
Water Pump (min 1L/m)
Vinyl Tubing (0.5" and 0.25")
Threaded Barbed 0.25"
(4) Florescent Grow Lights
12oz Plastic Cups
Plant Nutrients
Clay Pellets

Notation(s)
1. Float valve built from a lever switch, stick and foam .. to a 5V relay .. flips the LED strip from blue to red .. alerting the user.
2. 3D printed 0.5 and 0.25 inch tube connections .. failed. Layered grain leaked no matter the tension of the pipe clamps.
3. Damn! .. -ed the tube every 10 cups to increase water level -- cut from excess piping.
4. Tattered soldering iron and /red/ (shd be white) plastic cups .. holes and hallucinations. Breathe with me-akhdfncsowpa;/.sa,
5. Themed blue and white relative to the BGC in question. Each over-paid unnecessary manager of this facility will elate to yet another assured tax-funded monthly income now thx in large part to my involuntary volunteering. Question your 'community centers' ..
6. Velcro lashing to secure and make removable the tubes.
7. https://en.wikipedia.org/wiki/Nutrient_film_technique

Archive
https://hackaday.io/project/161663-hydroponics-pool-side
(Retired) Orbital Clock Page
Due to disinterest in updating scripting to retain precision measurements collaborated with more recent ease of data acquisition online .. we have shut down the OTC page (vijemiller.com/otc) after 10+ years. Links to the numerous categories of data aggregated will remain accessible on the OTC hold-page hosted locally. PHP and JS script will be made available both locally and on GitLab.

OTC remains our modern measure of time and will continue to improve relative to refinement of data. The Chromium extension displaying OTC day of year and year remains available here: otcext [download .zip]
Storm in a Box (Maker Faire New York)
Per request .. assisting in (doing) the construction of a display project for IONYC and the Boys and Girls Club of Astoria for Maker Faire NYC. The original proposal was for a Raspberry Pi 'weather station' .. but seeing as 'weather' is not abundant at a booth in Queens, we (me) decided to bring the weather to the weather station.


Ingredients
(2) Arduino Uno
Raspberry Pi
Wind Vane
Anemometer
Rain Gauge
Adafruit Neopixels
Water Pump
12V Fan
Servo

Arduino Neopixels Lightning Code
https://hackaday.io/project/161295-storm-in-a-box/log/152968-lightning-neopixel-code-borrowed-and-modd-from-james-bruce

Notations
1. Acrylic acquired from disposed picture frames. So .. so much waste.
2. Wind is windy .. stop being so negative pressure!
3. Deadline was this project's undoing; shd have dome'd.
4. Due to circumstances .. SIAB will be left to a third party to operate (?!) at MFNY

Archive
https://hackaday.io/project/161295-storm-in-a-box
TVShow 4X31 Center Surround Sound (NodeMCU)
When settling speakers in to place, you are idealizing that you will always sit dead center .. yet in our more lethargic reality, we lounge off-center. As consequence, you cease being the center of the speaker array .. until now ..


Ingredients
NodeMCU ESP8266 ESP-12E V2 (2)
Digital Potentiometer (2)
5V Power Supply (2)
4 Dip Switch (2)
4 Slot Terminals (2)

Code
https://hackaday.io/project/160842-center-surround-sound/log/152358-speaker-code-each

Notations
1. Intended to create an app with MIT App Inventor .. how-ever .. per the previous HaD FP (Voice Kitchen Faucet) .. it was decided to employ an alternative favored open source (-ish) voice command software http://voiceattack.com purely as demonstration.
2. Adding additional speakers merely requires copy-paste and if-statement modifications .. tho ideally a more advanced 'find' function upon installation would be coded.
3. Variances of % may depend on wattage (See #4)
4. Higher voltage systems would subsequently require HV digital potentiometers (AD7376)
5. Why is this .. not already a thing?!

Archive
https://hackaday.io/project/160842-center-surround-sound
https://www.thingiverse.com/thing:3085630
https://hackaday.com/2018/09/19/voice-controlled-stereo-balance-with-esp8266/
TVShow 4X30 Voice Kitchen Faucet (NodeMCU)
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.


Ingredients
NodeMCU ESP8266 ESP-12E V2
(2) 9G Micro Servo
5V Power Supply
Jacob AI (Proprietary)
PLA (3D Printer)

Code (Version 0.1)
https://hackaday.io/project/159473-voice-kitchen-faucet/log/152022-code-version-01


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!
7. Alternative suggestion for voice commands: https://voiceattack.com/

Archive
https://hackaday.io/project/159473-voice-kitchen-faucet
https://www.thingiverse.com/thing:3074690
https://hackaday.com/2018/09/01/talk-to-the-faucet/
TVShow 4X29 Ionic Sonic Heatic Fork


Stop eating like a neanderthal.

Notation(s)
1. Did /not/ use heating element wire bcz .. it is a plastic (PLA) prototype.
This was a hypothetical to establish concept .. for credit. ¯\_(ツ)_/¯
2. Shout-out to https://www.theio.nyc/ makerspace.

Archive
https://hackaday.io/project/159913-ionic-sonic-heatic-fork
https://www.thingiverse.com/thing:3066014
TVShow 4X27 Plugtite
Lamps, alarm clocks, pencil sharpeners .. we leave some plugs in outlets for years unnoticed and hidden by furniture .. but over time these plugs can become loose and exposed .. leading to dangerous conditions.

Plugtite is your do-it-your-self-tho-Vije-did-it-for-you 3D printed solution to secure your plugs for life .. so that your home can safely burn down around you for a cadre of other reasons.


Notation(s)
1. Shout-out to https://www.theio.nyc/
2. Use a heated soldering iron shaft or stove to soften the legs for bending.
3. Dependent on print quality .. sanding the mounting feet may be required.
4. For narcissism's sake; the quality of the opening scene is rubbish due to now redundant voluntary third-world-prison filming conditions.

Download(s)
https://cdn.hackaday.io/files/1602396855665376/plugtite_018_2.stl
https://cdn.hackaday.io/files/1602396855665376/plugtite_018_2.skp

Archive
https://hackaday.io/project/160239-plugtite
https://www.thingiverse.com/thing:3046608
Last PageNext Page