Vivid 2018 LED IoT Apparel !

Hello! 

Continuing with the tradition of creating something beautiful and covered in LED lights, this year we have something special!

Previously, we had the LED Jacket with Tearschu, and the LED Dress with Naifel. Taking inspiration from these, and solving a lot of the problems I faced with them, I bring the latest iteration of light up fun.

This year, I have taken a pair of high heel boots, and an umbrella from Daiso, added plenty of pretty lights, and of course, this year marks the first year the entire project is connected to the internet.

 

 

The project was built using mostly the same core components for each item. 

The shoes each have:

  • Lithium Ion Battery (1000mAh)
  • LiIon Charge / Boost circuit MP2636 
  • WeMos D1 Mini
  • A random switch for power
  • A strip of WS2812 LEDs

The umbrella is similar, except instead of the MP2636 boost circuit and 3.7v Lithium battery, I used a 3s LiPo battery, and a 5v step down regulator capable of high current.

 

The physical build was pretty straight forward, hook up everything how you please, battery to boost/charge, from there to the WeMos / LEDs, and then route the wires how you please. For LED placement on the shoes, I went with up along the front as I feel this will look the best having the light cover the most area, and for the umbrella I ran the lights down the spokes of the umbrella.

Unfortunately with my design you cant really CLOSE the umbrella anymore but as this is just for Vivid I am not too fussed πŸ™‚ 

To attach the LEDs to the umbrella I initially tried to use hot glue, but it was actually melting through the umbrella, and the parts that didn’t, did not hold very well, so I ended up using clear packing tape, as it does not seem to get in the way of anything and is barely noticeable! 

The LEDs here are hooked up in parallel with each other, so each spoke on the umbrella will be the same.

This slideshow requires JavaScript.

Once it is all made up physically, we can move on to the code.

I was looking into using the McLighting project for control of these, as it has both an internal web interface as well as support for things like MQTT, but I could not get it to work reliably, and it didn’t support running in AP mode, only client mode, which was a big turn off for me.

So what I ended up using was the JSON LED code from BRUH Automation, because I use this for other things at home and it works pretty reliably.

One thing to note here, for my LEDs I had to add the following two lines of code, BEFORE including the libraries, to prevent flickering of the strip. (not sure why this works?)

#define FASTLED_INTERRUPT_RETRY_COUNT 0
#define FASTLED_ALLOW_INTERRUPTS 0

 

(at the verryy top of the sketch)

 

Now my initial plan included taking a small portable router, and a Raspberry Pi 3 out with me to vivid, running a local MQTT server on a local network, with the Pi running Home Assistant (Hass.IO) all locally so I could connect to it to control things. However I ran into many problems attempting to do this, I am not sure if its because I don’t know how to properly setup static IP’s in resin, or just because it hates me, but I kept not being able to connect or it wouldn’t respond to my commands, it just wasn’t working great.

 

One day though, my good friend Mark came over and we needed a project to work on, so what we set up was a private mosquitto MQTT broker, that requires authentication, running in Docker on a Ubuntu Server 18.04 LTS install!

What this meant,  was I now had a secure way of connecting a remote node to my Home Assistant running back home.

 

I went right ahead and adjusted the code on the three items for the new server, forwarded the ports in my router, added the config to my production Home Assistant server, and hey presto, was I glad to see, everything JUST WORKED.

 

I made a view in Home Assistant and threw all the entities into it, and here’s how that looks:

So as you can see, we can control both shoes together, each individually, the umbrella on its own, or everything as a group!

We also can change the animation speed of the various effects.

I will be heading out to vivid to shoot a small video and some photos with this, with my good friend Tsugumi modelling it for me, on the 9th of June 2018 from about 6PM onward, Not sure if I will be at Circular Quay or Darling Harbor yet, keep your eye on my Instagram to find out! πŸ˜‰ 

 

Thanks for reading!!!

ESP8266 Servo Control

I wanted to control a Servo using the Blynk library form an ESP8266,

So I hooked up a TowerPro SG-5010 servo to my ESP8266 devkit 1.0 thing, uploaded the servo sweep test code to see if it works, and IT WORKED!
Until the magic smoke came out…

It looks like ive fried my dev board goddamnit, maybe i shouldnt have pulled 5v from the VIN pin on the USB TTL adapter….. D:

 

goddamnitO:nGRLIKJRSNKLJB

 

 

Update:

OK!

With a new dev board, a v0.9 one, and an external 5v power source we have done away with the magic smoke!
Ill upload the Blynk sketch and see how we go.

13382147_565081053665324_2136274505_n

 

hugometer

starting pitch

hugometer

an led bar graph, an arduino, and a bluetooth module. (RTC module too?)

the arduino scans for a bluetooth mac address (the mac of the phone belonging to the person the cuddleometer will respond to)

it will measure the time it is within proximity of that mac address and proportionately raise and lower the bar graph based on time since it sees the mac and time since is SAW the mac.

this allows it to “recharge” when you are with your significant other, and to “discharge” when you are away for them.

once the graph gets low, an additional led could flash indicating dangerously low cuddle gauge levels. and requesting a recharge.

this allows couples to keep track of the cuddle levels and ensure they always stay at a safe level.

additional thoughts

-gsm module to allow for e-cuddles
-wifi to allow proximity based cuddles / pausing cuddle drain when at home
-analog meter support for base station cuddle-o-meter
-a decided upon name
-a add on device that can be activated when a physical hug is engaged that speeds up the recharge process significantly

hardware

gsm – http://www.ebay.com.au/itm/251728140941
mcu – http://www.ebay.com.au/itm/371535922801
bar – http://www.ebay.com.au/itm/151775473664
led – http://www.ebay.com.au/itm/171371213386
wifi – http://www.ebay.com.au/itm/161849472764
btle – http://www.ebay.com.au/itm/191736126745
batt – http://www.ebay.com.au/itm/191547561905
usb – http://www.ebay.com.au/itm/172143472382
rtc –Β http://www.ebay.com.au/itm/131523900632

Neopixels, ESP8266, NodeMCU and Arduino IDE

Hello everyone!

Another update on the ESP8266!

Recently, an Arduino compatible IDE was released for the ESP and I’m super keen to try it out. I’ll download it later today and give it a go, ideally I want the adafruit neopixel library to work as then I can connect my coaster to the internet!
More on that in a minute.

Yesterday two things arrived in the post, my 16 neopixel ring, and my NodeMCU dev board.

image

Both very exciting!
Maybe I can combine the two? πŸ˜‰

image

The dev board is because ive had difficulty flashing the ESP chips in the past so I was hoping to have better luck with a breakout board with inbuilt USB TTL and a flash button. I did! It flashed the latest NodeMCU firmware right away!

image

Node MCU is an alternate firmware for the ESP that has a runtime for Lua 5.1.4 inbuilt! So this is the excuse I’ve needed to learn a bit of lua!

image

I’ll also be using this later with the Arduino IDE and I’ll make up an image for cross referencing pins.

The neopixel ring is to be used in my ongoing quest for the most amazing coaster ever.

It will make my drink disco!

I’ve had a prototype in the past using a single RGB LED, then another using a disc of them, and this one is a ring, but they’re addressable!

What I’m hoping to get is a sort of rainbow flowing effect happening.

Ive got the code at a good starting point, for effect testing.
All I did was modify the example sketch that goes through a bunch of possible modes πŸ˜€

I’m driving it from a digispark board, and in the final build it will use a 3.7v lipo for power.

image

The LED ring does seem extremely bright, and gets a little hot during normal operation so I better look at dimming the LEDs as I only need enough light to light up my drink! Not the room Hahaha

There’s a few different sized ones too. The one with 16 and the one with 60 LEDs cost the same! D: sadly I don’t need that many though it’s far too big for my purpose hahaa

Maybe I can find a use for 60… Hehehhhh..
Oh and they come in strips too and individual of course! And boards… THERES LOTS OF CHOICES OK?

Anyway,

That’s all for now, I’ll keep y’all posted!

Bonus: it sticks to the wall of the train lol

EasyIoT DS18B20 Temperature Sensor – ESP8266

I needed a temperature node, but I didn’t have a DHT22 temp/humidity sensor!?

So I modified the example sketch for the DHT to use a DS18B20 Digital Temperature Sensor instead!

It works great!

The sensor is connected as shown here:

http://www.hobbytronics.co.uk/ds18b20-arduino

Heres the code:

 

/*

DS18B20 Digital Sensor Node Sketch for EasyIoT Server
Modified by Lewys Martin <[email protected]>
See: blog.lewys.eu for details

Original Code:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

V1.0 – first version

Created by Igor Jarc <[email protected]>
See http://iot-playground.com for details
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/
#include <Esp8266EasyIoT.h>
#include <SoftwareSerial.h>
#include <DallasTemperature.h>
#include <OneWire.h>

#define CHILD_ID_TEMP 1
#define SENSOR_DIGITAL_PIN 2
Esp8266EasyIoT esp;

SoftwareSerial serialEsp(10, 11);

OneWire oneWire(SENSOR_DIGITAL_PIN);
DallasTemperature sensors(&oneWire);

float lastTemp;

Esp8266EasyIoTMsg msgTemp(CHILD_ID_TEMP, V_TEMP);
void setup()
{
serialEsp.begin(9600);
Serial.begin(115200);

Serial.println(“EasyIoTEsp init”);
esp.begin(NULL, 3, &serialEsp, &Serial);
//esp.begin(NULL, &serialEsp);
esp.present(CHILD_ID_TEMP, S_TEMP);

sensors.begin();
}

void loop()
{
while(!esp.process());

sensors.requestTemperatures();
float temperature = (sensors.getTempCByIndex(0));
if (isnan(temperature)) {
Serial.println(“Failed reading temperature from sensor”);
}
else if (temperature != lastTemp)
{
lastTemp = temperature;
esp.send(msgTemp.set(temperature, 1));
Serial.print(“T: “);
Serial.println(temperature);
}
}

And some pictures:
image

image

ESP ARDUINO PERFBOARD THING

I actually managed to produce something that is NEAT

and well laid out (in my opinion)

Parts:

β€’ Arduino Nano
β€’ ESP-01
β€’ 5-3v Level Shifter
β€’ Β Perfboard
β€’ Bunch of headers
β€’ Some wire
β€’ Soldering Iron + 0.3mm Solder
β€’ Dremel to clean things and cut things and stuff

 

As you can see in the photos:

The board as a whole:

Whole Board

The board with components removed:

Components Gone

The underside of the board:

Underside

Cleaned edges with Dremel:

(i got a Dremel for christmas btw)
(i got a Dremel for christmas btw)

The things I have to add still:

Also, as you can see, theres a notch missing from the Arduino near the ICSP pins, I used my Dremel to grind that away (theres no traces there as far as i can tell) so that the ESP module fits so perfectly there and the whole package fits inside the dimensions of the perf board πŸ˜€

Arduino pin 2 for DHT22, 13 for relay.
Arduino pin 2 for DHT22, 13 for relay.

This node has been added to my EasyIoT Server as a secondary relay node for the time being, but I want to get my hands on a DHT22 to add a temp/humidity sensor to my bedroom πŸ˜€

Then I can start expanding to other rooms in the house! MWAHAHAA

MY BEDROOM LIGHT IS NOW CONNECTED TO WIFI

Using a full size Arduino Uno modified to 3.3v, and that weird shield I built, modified to software serial pins 10 and 11, and also to add a power input of 5v that gets regulated to 3.3v on both the shield for the ESP8266, and the arduino for… itself?

It connects to a Raspberry Pi running the latest version of Raspbian and EasyIoT Server, I figured out their API without even a mention of there BEING ONE ON THEIR WEBSITE (they don’t mention it anywhere but i noticed a mention of it in the console log and figured it out)

The ESP8266 01 type connects to the main WiFi, then to the server, from then I can browse to the IP of the server and theres a beautiful interface πŸ˜€

The EasyIoT server also supports the RasPi GPIO and the MySensors stuff, so Im gonna use that for things like doors, and temp/humidity sensors

Photos will come soonish:

image

image

image

image

image

ESP-01 and 07 progress

After a few weeks of playing with them I finally have something worth writing about!

For the 07 nothing much more than I finally made a breakout board, as you can see here:

image

Its raised on a random SMD electro cap, and connected to the perfbpard with zero ohm resistors.
(The cap has only one purpose, raise the module)

As for the 01,
I rewired the serial lines up to pins 10 & 11, for software serial, then using the EasyIoT library have it connected to the Easy IoT server running on a raspberry pi elsewhere in the house!

At the moment it’s got a relay, but when I get some more sensors and modules I’ll make a while bunch of things. Need some of those temperature and humidity combo sensors, and some of that 2.4ghz rf transceivers for low power nodes. Also need some 3.3v pro minis πŸ˜€

Here’s the 01:

image

External 5v goes in, relay feeds It’s VCC off this, then it goes through an 13337 based regulator down to 3.3v for the esp, (have to wire in a selection switch for powering the arduino also from this 5v source. Then a proper power connector.

Will update soon with any changes πŸ™‚

ESP8266 Arrives!

Good news everyone!
My first two ESP8266 modules have arrived!

First thing I did was hook one up to my USB serial adapter and poke around inside.
They are REALLY annoying so far hahaa

I found a good way to mount it on the breadboard is using one or two rows of stackable headers to raise/bend so it fits.
This leaves plenty of room underneath for the wires too!
wpid-wp-1417556621430.jpeg
I got one connected to my WiFi, but I can’t figure out how to do anything else haha…

10818585_354546261385472_1682648906_n 10841528_354546254718806_1924527517_n 10834160_354546271385471_227573354_n 10818842_354546231385475_435118054_n

I made up a sketchy little arduino protoshield, but I think I did the voltage dividers wrong as when I monitor the tx lines I can see the arduino trying to talk, but the esp module isn’t saying anything….
I think maybe I lowered the voltage too much. A friend has some things I could try, or I’m contemplating modding an arduino to 3.3v for this shield.

10814108_354546164718815_1377251317_n 10822264_354546224718809_1872469390_n 10846800_354546184718813_771261920_n

I’ll post up some photos soon, I need to get a digital temp sensor today if I can, trying to make a test little data logger with thing speak. If I can get this working I’ll make one to monitor the letter box and make graphs of what time the mail arrives! πŸ˜€

Will update as I do things!
And I may put a whole bunch of reference material here too.

 

I GOT IT WORKING!!!
I did the 3.3v conversion on one of my arduino Unos, and now its uploading data!! πŸ˜€

10822715_354546398052125_1390798376_n 10818677_354546354718796_937293101_n 961471_354546924718739_10215617_n10836393_354546331385465_1665828002_n

see:

 

The code im using is:

 

 

 

See below for formatting.diy_bloke

#define SSID “xxxxxxxx”
#define PASS “xxxxxxxx”
#define IP “184.106.153.149” // thingspeak.com
String GET = “GET /update?key=xxxxxxxx&field1=”;
void setup()
{
digitalWrite(0,LOW);
Serial.begin(9600);
Serial.println(“AT”);
delay(5000);
if(Serial.find(“OK”)){
// connectWiFi();
}
}
void loop(){

int t=analogRead(0);
String tempC=String(t);
updateTemp(tempC);
//char buffer[10];
//String tempF = dtostrf(tempC, 4, 1, buffer);
//updateTemp(tempF);
delay(4000);
}

void updateTemp(String tenmpC){
String cmd = “AT+CIPSTART=\”TCP\”,\””;
cmd += IP;
cmd += “\”,80″;
Serial.println(cmd);
delay(2000);
if(Serial.find(“Error”)){
return;
}
cmd = GET;
cmd += tenmpC;
cmd += “\r\n”;
Serial.print(“AT+CIPSEND=”);
Serial.println(cmd.length());
if(Serial.find(“>”)){
Serial.print(cmd);
}else{
Serial.println(“AT+CIPCLOSE”);
}
}

//
//boolean connectWiFi(){
// Serial.println(“AT+CWMODE=3″);
// delay(2000);
// String cmd=”AT+CWJAP=\””;
// cmd+=SSID;
// cmd+=”\”,\””;
// cmd+=PASS;
// cmd+=”\””;
// Serial.println(cmd);
// delay(5000);
// if(Serial.find(“OK”)){
// return true;
// }else{
// return false;
// }
//}

 

 

reference area:

 

 

https://nurdspace.nl/ESP8266

https://github.com/guibom/ESPTempLogger/blob/master/ESPTempLogger.ino

http://www.instructables.com/id/ESP8266-Wifi-Temperature-Logger/?comments=all#CZEPCA4I36LFMYG

http://www.esp8266.com/viewtopic.php?f=8&t=390

http://zeflo.com/2014/esp8266-weather-display/

http://www.ebay.com.au/itm/USB-Micro-B-Micro-Breakout-Board-For-Arduino-AVR-PIC-Prototyping-/231367421713?pt=AU_Gadgets&hash=item35de92af11

https://learn.sparkfun.com/tutorials/voltage-dividers

http://www.ebay.com.au/itm/Arduino-Pro-Mini-ATmega328-3-3V-8M-Compatible-Board-FAST-Shipping-SYDNEY-/281368337443?pt=LH_DefaultDomain_15&hash=item4182dc1c23

https://anibit.com/sites/default/files/product_files/ESP8266_Specifications_English.pdf

http://www.seeedstudio.com/document/pdf/ESP8266%20Specifications(Chinese).pdf

https://github.com/aabella/ESP8266-Arduino-library/wiki/ESP8266-AT-Commands-Set

 

http://www.esp8266.com/viewtopic.php?f=6&t=553&p=2908&hilit=channel#p2908