PDA

View Full Version : Custom Controllers for Wireframes.



lostbucket
12-20-2017, 02:52 PM
If anyone needs a controller or help making your own let me know. I do everything by hand.

This is a 20 year old controller that was all breadboard and relays, when I redone my display the 4 channel chase was out so i threw in the 50 buck chaser from Amazon as a quick fix.

https://i.imgur.com/2RlH2rL.jpg

This is my current controller. it cost 58 bucks and does 4 channel chase, 2 channel flip/flop for elves and horse head, and 3 channel with return so 1-2-3-2-1 and repeat.

https://i.imgur.com/aH6jDwW.jpg

If you dream up a pattern I can make it go blink blink like you want it to or help you do it yourself.

yellowdog87
12-22-2017, 12:13 AM
Ur the man, Iím gonna start following u on here so I donít miss anything!


Sent from my iPhone using Tapatalk

lostbucket
12-22-2017, 12:22 AM
Thanks Yellowdog, I am not the man just a guy who had 25k lights on his house 20 years ago and did it all by hand. NO ONE had anything like what I had back then so everything WAS SECRET, now that everything is out there on how to make stuff, I figured I can help people make their own, or build it for them if they dream something up but don't want to rely on Vixen, or xLights to get some simple animations done.

ukewarrior
12-22-2017, 02:11 AM
- cancel, please ignore-

yellowdog87
12-22-2017, 09:45 AM
Where abouts are u located?


Sent from my iPhone using Tapatalk

lostbucket
12-22-2017, 02:46 PM
Illinois 20 mins from Downtown St Louis,

wood_guy
12-23-2017, 01:20 PM
I was thinking of building my own 4 channel chase controller until I found this one. I was using LEDs so the low current rating was not an issue. At $45 it was worth it.

http://www.christmasdonebright.com/s.nl/it.A/id.78/.f

lostbucket
12-23-2017, 03:33 PM
Wood guy you can build your own 4 channel chase for 17 bucks using 2 amp solid state relays. Just so you know for the future!

stenersonj
12-23-2017, 04:36 PM
I saw this thread a few days ago. had always wanted to play with an Arduino. ordered nano and other components and received them already. took me about 45 minutes to get it going. We need some wireframe controllers for our park display. these are the answer. Thanks for sharing the idea and the help you provided though PMs.

MCas_4380
12-23-2017, 04:57 PM
I want to follow this since I just got a bunch of used frames that need controllers and Im not far from you.

lostbucket
12-23-2017, 05:12 PM
You mind sharing pics of the frames you got for us?

ukewarrior
12-23-2017, 05:20 PM
I have something that may be of interest.

I created a carrier board for the Arduino Pro Mini awhile back for use in automating models.
I think this Arduino is a lot of power for a small price. It also has a full complement of I/O pins without the size of an UNO.
The point of the board was to breakout all the pins of the Mini (including the goofy A4-A7 interior pins) and to provide some regulated power sources to be used for low amperage needs and to power the Arduino. This way, your input supply doesn't have to be exactly what the Arduino Needs.
So, the thought was with a 12V input, you'd have three voltages available. (12, 5, 3.3) This also allows the board to be used with 3.3V or 5.0V arduinos.
The carrier measures 4x5cm.
I have extra's if anyone wants to give it a spin. They cost a whopping $1.
Here's a pic: (click to enlarge)

38899

lostbucket
12-23-2017, 05:26 PM
Here are the controllers we are using https://www.amazon.com/gp/product/B01I9EVQEM/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

The pins all run in a straight line... don't think the breakout boards would work on these.

https://images-na.ssl-images-amazon.com/images/I/611Wo4Ijx-L._SL1000_.jpg
https://images-na.ssl-images-amazon.com/images/I/61Xso3VoW5L._SL1000_.jpg

ukewarrior
12-23-2017, 05:29 PM
Correct, that is an Arduino Nano, not a Pro Mini.
My post was for anyone that wanted to DIY wire their own setup together and needed a starting point.
These would work just fine with the EM relay boards you show in the first couple of posts.
Just a different way of using the exact same core technology.


However,
Here are the controllers we are using https://www.amazon.com/gp/product/B01I9EVQEM/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

The pins all run in a straight line... don't think the breakout boards would work on these.

lostbucket
12-23-2017, 05:36 PM
If it's a controller for myself that isn't going into a central box I just do this....

https://i.imgur.com/P3PYRI1.png

Cut off the input pins I don't need and screw the ones I am using in the sketch right to the relay board... this one is just doing a 3 channel Chase here.... I ground the relays from the Ground aurdrino pin... add VCC and GND to Aurdrino and VCC and you have a control box.

Barnabybear
12-24-2017, 10:31 AM
Hi, posts #34 & 35 might be of interest if your working with Nanos. I`m going to do some more work on this in the new year.
https://diychristmas.org/vb1/showthread.php?8146-1-universe-170-pixel-(WS2811)-controller-E1-31-over-cable-(cat5)-not-wireless&p=93811#post93811

wood_guy
12-24-2017, 11:41 AM
Wood guy you can build your own 4 channel chase for 17 bucks using 2 amp solid state relays. Just so you know for the future!

Thanks for the info. I was in a bit of a hurry and this was the quickest path to the end.

Now I see that you just attach a nano right to a sainsmart relay board. I'm going to start experimenting with the Arduinios.

lostbucket
12-24-2017, 12:18 PM
Thanks Barnabybear... I can control the nano / uno thru Vixen just i went to 128 channels off of one using shift registers. I have stand alone animation controllers using them, and now I see I can control 300 pixels with 1 nano and an ethernet adapder you add, with code you showed me. I can use the nano in xLights as I have my nano pretending to be a LOR flashed PIC but i need to work on the code some more and clean it up, as it's not stable past about 30 mins and stops responding.... there isn't much you can't do!

lostbucket
12-24-2017, 12:20 PM
Thanks for the info. I was in a bit of a hurry and this was the quickest path to the end.

Now I see that you just attach a nano right to a sainsmart relay board. I'm going to start experimenting with the Arduinios.

Wood, in that picture its a 3 channel chase waiting 1/4 of a second bettween 1-2-3. I cut off all the pins at the board except GND D3 D5 D7 and D9 and those pins hit the 4 relays perfectly.

dirknerkle
12-24-2017, 12:22 PM
If you're looking for a simple, quick, and cheap, standalone 4-channel chase controller, here you go... This thing is thin and slides inside a 1" piece of PVC... connect it to your 120vac... provide 5vdc trigger current via a controller or even a wall wart, and this will do the job for up to 1A per channel...

lostbucket
12-24-2017, 12:26 PM
/* A simple sketch to switch relays/SSRs from an E1.31 source.
* Copyright 2017 Barnabybear <diychristmas.org> Full details at end of code.
* First issue 25-Oct-2017
*
* Ethercard section based on a sketch 'udpListner' by Brian Lee <cybexsoft@hotmail.com> 2013-4-7
*/

#include <EtherCard.h>
#include <IPAddress.h>

// sets static IP
#define STATIC 1 // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// ethernet interface ip address
static byte myip[] = { 192, 168, 1, 62 };
// gateway ip address
static byte gwip[] = { 192, 168, 1, 1 };
#endif

// ethernet mac address - must be unique on your network.
static byte mymac[] = { 0x70, 0x69, 0x69, 0x2D, 0x30, 0x31 };

// the universe number to listen for.
unsigned int universe = 1;

// the number of outputs used (1 to 16).
const byte num_outs = 14;

// the channel numbers to apply to the outputs (1 to 512).
int channel[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};

// the output numbers to use - channel order from above is displayed on these outputs.
// 10, 11, 12 & 13 are used by the ethernet module.
byte output_num[16] = {2, 3, 4, 5, 6, 7, 8, 9, 14, 15, 16, 17, 18, 19};

// to use all 16 outputs - change 'num_outs' to 16.
// comment out the line above and uncomment the line below.
// NOTE: you will need to remove the nano from your circuit to flash it
// as we are now using Tx & Rx to drive relays and comment out the
// serial output for testing or it will switch your relays/SSRs.

//byte output_num[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 15, 16, 17, 18, 19};

// set outputs as standard or inverted - one pair must be commented out.
// standard outputs: on = high, off = low.
bool out_on = 1;
bool out_off = 0;
// inverted outputs: on = low, high = high.
//bool out_on = 0;
//bool out_off = 1;

// enables the serial output for setup testing - one set must be commented out.
//bool setup_output = 0; // serial output disabled
bool setup_output = 1; // serial output enabled

int n; // a variable for counters
byte data_1; // a variable for data

byte Ethernet::buffer[681]; // tcp/ip send and receive buffer


//callback that prints received packets to the serial port
void sACN_data(uint16_t dest_port, uint8_t src_ip[IP_LEN], uint16_t src_port, const char *data, uint16_t len) {

// check to see if the packet is an ASC-E1.17 type
if (!((data[4] ^ 0x41) && (data[5] ^ 0x53) && (data[6] ^ 0x43) && (data[7] ^ 0x2D) &&
(data[8] ^ 0x45) && (data[9] ^ 0x31) && (data[10] ^ 0x2E) && (data[11] ^ 0x31) &&
(data[12] ^ 0x37))) {

// check to see if the universe number is correct
if (!((universe ^ data[114]) + (universe >> 8 ^ data[113]))) {
if (setup_output) {
Serial.print("Universe = ");
Serial.println((data[113] <<8)+(data[114]));
}

// Serial.print("Channel count = ");
// unsigned int x = (((data[123] << 8) + data[124]) - 1);
// Serial.println(x);

for ( n = 0; n < num_outs; n++) {
data_1 = data[channel[n] + 125];

if (data_1 > 127) {
digitalWrite(output_num[n], out_on);
if (setup_output) print_high(); // setup print

}
else {
digitalWrite(output_num[n], out_off);
if (setup_output) print_low(); // debug print - comment out during normal use.
}
}
}
}
}
void setup() {
if (setup_output) Serial.begin(115200); // debug print - comment out during normal use.

for (n = 0; n < num_outs; n++) {
pinMode(output_num[n], OUTPUT);
digitalWrite(output_num[n], out_off);
}

if (setup_output) Serial.println(F("\n[backSoon]")); // debug print - comment out during normal use.

if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
if (setup_output) Serial.println(F("Failed to access Ethernet controller")); // debug print - comment out during normal use.
#if STATIC
ether.staticSetup(myip, gwip);
#else
if (!ether.dhcpSetup())
if (setup_output) Serial.println(F("DHCP failed")); // debug print - comment out during normal use.
#endif

if (setup_output) {
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}

//register udpSerialPrint() to port 5568 (e1.31 port).
ether.udpServerListenOnPort(&sACN_data, 5568);

//register udpSerialPrint() to port 42.
ether.udpServerListenOnPort(&sACN_data, 42);
// Serial.end();
for (n = 0; n < num_outs; n++) {
pinMode(output_num[n], OUTPUT);
digitalWrite(output_num[n], LOW);
}
}

void loop() {
//this must be called for ethercard functions to work.
ether.packetLoop(ether.packetReceive());
delay(1);
}

// a function to print data for setup.
void print_high() {

Serial.print("Output ");
Serial.print(output_num[n]);
Serial.print(" : Channel ");
Serial.print(channel[n]);
Serial.print(" : Channel offset ");
Serial.print(channel[n] + 125);
Serial.print(" : Channel data ");
Serial.print(data_1);
Serial.print(" : Output ON ");
Serial.println("");
}

// a function to print data for debuging.
void print_low() {

Serial.print("Output ");
Serial.print(output_num[n]);
Serial.print(" : Channel ");
Serial.print(channel[n]);
Serial.print(" : Channel offset ");
Serial.print(channel[n] + 125);
Serial.print(" : Channel data ");
Serial.print(data_1);
Serial.print(" : Output OFF ");
Serial.println("");
}


/*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/


Here is the code to have the nano become a Pixel controller controlling around 325 pixels safely. With a nano and ethernet adapter. Pretneding to be a SansDevice doing E1.31 So you would just pull in the controller you make to xLights / Vixen as a sansdevice using the E1.31 proto.