Close
0%
0%

LED Christmas Pixels

using a raspberry pi to control lights over static network with Arduino Nano nodes

Similar projects worth following
the end goal of all of this is to have 100% automated full blown Christmas light display

how this all works there are 4 main parts

1.vixen 3 the lighting sequencing software

2.raspberry pi loaded with falcon pi player

3. Arduino Nano with a ENC28J60 Ethernet Module (each Nano can control maximum of 240 pixels)

4. a load of 12mm WS2811 LED pixels

FYI everything here is using 5v not 12v

for all of you asking what is all this crap please take a look at this

pi bot.stl

for Big Button PI STL file

Standard Tesselated Geometry - 1.46 MB - 11/11/2016 at 21:25

Download

switch dome.stl

for Big Button PI STL file

Standard Tesselated Geometry - 648.23 kB - 11/11/2016 at 21:25

Download

case ring.stl

for Big Button PI STL file

Standard Tesselated Geometry - 291.88 kB - 11/11/2016 at 21:25

Download

IMG_3034.MOV

testing testing testing

quicktime - 8.15 MB - 01/21/2016 at 02:27

Download

JPEG Image - 1.28 MB - 01/21/2016 at 02:26

Preview
Download

View all 6 files

  • 10 × Nano Arduino Enhancement Pro Mini 5V adjustable
  • 10 × ENC28J60 3.3V/5V ENC28J60 Ethernet Module
  • 1 × Raspberry Pi 2 •A 900MHz quad-core ARM Cortex-A7 CPU
  • 20 × 50pcs LEDS DC5V 12mm WS2811 Full Color Pixel
  • 2 × 8-Port Gigabit Switch TP-LINK TL-SG108

View all 10 components

  • its all working

    shane bourgeois12/14/2017 at 17:18 0 comments

  • Big Button PI 3 extra

    shane bourgeois11/11/2016 at 21:22 3 comments

    i had and extra pi 3 and i have a 3d prtinter i thought it would be really cool to be able to start the show with a large wireless button to i used freecad and set off to work

  • Test and update​

    shane bourgeois09/30/2016 at 01:46 0 comments

    its all coming together

  • 10x arduino nano outdoor boxes

    shane bourgeois09/20/2016 at 00:51 0 comments

    assembly time repeat ten times

    i keep this nice and simple fit 1x Nano Arduino 1x ENC28J60 and 1x 5V Power Supply in side a 2 Gang 32 cu. in. Type-FSE Switch Box.

  • Portable Raspberry Pi with Adafruit LCD + keypad kit

    shane bourgeois09/19/2016 at 16:05 0 comments

    I didn't like my Raspberry Pi moving around all over the table and i want to keep it easily accessible so i put it in a pelican case 1150 with a nice 3D printed envelope. Its really another project in itself and I am planning on doing a write up but for now i loaded it to thingiverse http://www.thingiverse.com/thing:1778896


    SIDE NOTE: This was a lot of work and way beyond what you need to make this work but i had fun and now i know with out a doubt that the brains of the system are well protected.

  • As summer comes to a end

    shane bourgeois09/12/2016 at 13:26 0 comments

    As summer comes to a end here in Boston and i jump back in to this project. it looks like ill have 1150 pixels(maybe 1650 Im thinking about buying another 500) this year with 10 wired ‎Arduinos running you code with FFP and two networks ( one 10.0.0.200 for lights and a wireless 198 for NPT/control)

    I was able to house the each Arduino Nano, ENC28J60 and MEAN WELL LRS-50-5 Series 50W 5V in a 2 Gang ABS Switch Box. (I like the 5V because its cheap but i need to inject power every 50 leds i have made a boat load of 16/2 cables for this )

    as this is my first year doing this im going to keep it simple with the light just clean all around window trim and general outline.

    Im working on getting extra parts now. (that way there is no down time if any thing lets the magic smoke out)

    i was planning on using vixen 3 but i still need to do research i'm not convinced its the quickest software.

    one more fun thing i have on my list is i just got a Arduino Mega2560 MINI i was planning on putting it with 5v 30a power supply Im trying to think of a way to use it for multiple output streams to the WS2811. ( a diy E6804) then putting the unit in side of an Orbit 57095

  • Testing 150 LEDs in groups of 50

    shane bourgeois01/28/2016 at 21:55 0 comments

    test test test

  • Pro Arduino Programing

    shane bourgeois01/20/2016 at 03:16 1 comment

    Programing the Arduino to talk with the LEDs and the ENC28J60 Ethernet Module

    load the sketch below and change the IP and MAC address so each Arduino has its own unique address

    if you don't know any thing about Hexadecimal here is a good site to do the conversions for you (Decimal to Hexadecimal Converter) on the tail end of "const byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x17 };" you just need to change the "0x17" you can keep counting up for some time with out using the converter. FYI 0x18, 0x19, 0x20, 0x21 (the decimal is not sequential in hex but it will not matter)

    this is the code Im using with 12 separate arduinos.

    // E1.31 Receiver and pixel controller by Andrew Huxtable (andrew@hux.net.au)
    // This code may be freely distributed and used as you see fit for non-profit
    // purposes and as long as the original author is credited and it remains open
    // source
    //
    // The ethernet module is an ENC28J60 based item which are easily available
    // for a few $
    //
    // Data connections to the module:
    // Module -> Arduino
    // SI     -> 11
    // SO     -> 12
    // SCK    -> 13
    // CS     -> 8
    //
    // NB Most of the modules run on 3.3v, not 5v - Use caution!  5V logic/data is fine though.
    //
    // Please configure your Lighting product to use Unicast to the IP the device is given from your DHCP server
    // Multicast is not currently supported due to bandwidth/processor limitations
     
    // You will need the Ethercard and FastLed Libraries from:
    // https://github.com/FastLED/FastLED/releases
    // https://github.com/jcw/ethercard
    //
    // The Atmega328 only has 2k of SRAM.  This is a severe limitation to being able to control large
    // numbers of smart pixels due to the pixel data needing to be stored in an array as well as
    // a reserved buffer for receiving Ethernet packets.  This code will allow you to use a maximum of 240 pixels
    // as that just about maxes out the SRAM on the Atmega328.
     
    // There is deliberately no serial based reporting from the code to conserve SRAM.  There is a **little**
    // bit available if you need to add some in for debugging but keep it to an absolute minimum for debugging
    // only.
     
     
    #include <EtherCard.h>
    #include "FastLED.h"
    //#include <avr/wdt.h>
     
    //*********************************************************************************
     
    // enter desired universe and subnet  (sACN first universe is 1)
    #define DMX_SUBNET 0
    #define DMX_UNIVERSE 1 //**Start** universe
     
    // Set a different MAC address for each...
    const byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x27 };
     
    // Uncomment if you want to use static IP
    //*******************************************************
    // ethernet interface ip address
    static byte myip[] = { 10,0,0,10};
    //*******************************************************
     
    // By sacrificing some of the Ethernet receive buffer, we can allocate more to the LED array
    // but this is **technically** slower because 2 packets must be processed for all 240 pixels.
     
    /// DONT CHANGE unless you know the consequences...
    #define ETHERNET_BUFFER 580
    #define CHANNEL_COUNT 450
    #define NUM_LEDS 150
    #define UNIVERSE_COUNT 1
    #define LEDS_PER_UNIVERSE 150
     
    // The pin the data line is connected to for WS2812b
    #define DATA_PIN 7
     
    //********************************************************************************
     
    unsigned long lastUpdate;
     
    // Define the array of leds
    CRGB leds[NUM_LEDS];
     
    byte Ethernet::buffer[ETHERNET_BUFFER]; // tcp/ip send and receive buffer
     
    int checkACNHeaders(const char* messagein, int messagelength) {
      lastUpdate = millis();
      //Do some VERY basic checks to see if it's an E1.31 packet.
      //Bytes 4 to 12 of an E1.31 Packet contain "ACN-E1.17"
      //Only checking for the A and the 7 in the right places as well as 0x10 as the header.
      //Technically this is outside of spec and could cause problems but its enough checks for us
      //to determine if the packet should be tossed or used.
      //This improves the speed of packet processing as well as reducing the memory overhead.
      //On an Isolated network this should never be a problem....
     //for...
    Read more »

  • Raspberry Pi Setup

    shane bourgeois01/20/2016 at 03:04 0 comments

    you need a

    1. 8g mini sd card

    2.usb stick (I use a mini 16g stick)

    3. I also have a Adafruit RGB Positive 16x2 Lcd+keypad Kit for Raspberry Pi

    4. I got a Raspberry Pi A+/B+/2 Adafruit LCD Case from built to spec

    I fallowed these instructions

    Installing the Falcon Player (FPP) on your Raspberry Pi



    The latest FPP release for the Raspberry Pi is FPP v1.5 and is available for download at the following location:



    FPP v1.5 Release Pi SD image: https://github.com/FalconChristmas/fpp/releases/download/1.5/FPP-v1.5-Pi.zip



    The Falcon Player is designed to be treated like a software appliance. To make FPP installation easier on the Raspberry Pi, the player is distributed in a ZIP file which contains the Pi NOOBs installer. This installer will install the Raspbian Linux Operating System and the FPP software onto the SD card. You will need to copy the contents of the FPP .zip file onto a SD card and boot the Pi using the SD card. Upon boot, the NOOBs installer will take over and install Raspbian and the Falcon Player.


    These instructions will guide you through installing the NOOBs image on your SD card that will allow you to easily install the OS and FPP as well as recover your card if the OS becomes corrupted.

    • Insert an SD card that is 8GB or greater in size into your computer.
    • Format the SD card so that the Pi can read it
      • Windows
        • Download the SD Association's Formatting Tool1 from https://www.sdcard.org/downloads/formatter_4/eula_windows/
        • Install and run the Formatting Tool on your machine. We recommend using the SD Card Association utility because the built-in Windows format utility will only format the first partition that Windows recognizes which will not properly re-format some USB drives or drives that have previously been used with the NOOBs installer.
        • Set "FORMAT SIZE ADJUSTMENT" option to "ON" in the "Options" menu
        • Check that the SD card you inserted matches the one selected by the Tool
        • Click the "Format" button
        • Do the same for the USB stick its recommended that the stick be called "media"
    • Download the latest release of the Falcon Player image for the Pi from the link at the top of this post.
    • Extract the contents of the downloaded FPP .zip file onto the formatted SD card. The 'OS' and 'default' subdirectories should be visible in the top level directory on the SD card.
    • Insert a USB flash drive into the Pi. This will be used for sequences, media, FPP configuration, and logs once FPP is running.
    • Insert the SD card into your Pi and connect the power supply to boot the Pi and install FPP. Your Pi will now boot into NOOBS and will automatically start installing the FPP image onto your SD card.
    • Once the install is complete, the Pi will automatically reboot into Linux, and start FPP. All further interaction with FPP will be via the web UI accessible via http://fpp/

View all 9 project logs

  • 1
    Step 1


    vixen E1.31 set up

  • 2
    Step 2

    Arduino NANO, ENC28J60 and WS2811 wiring

  • 3
    up load the code

     This is the code i have running in 23 Arduinos.

       you need to download.  

    1. Install Arduino IDE 1.8.5 
    2. FastLED-3.1.0
    3. ethercard-master

    Then open Arduino.

    1. From the Arduino IDE: Sketch -> Include Library... -> Add .ZIP Library...
    2. Restart the Arduino IDE to see the new "EtherCard" library with examples
    3. From the Arduino IDE: Sketch -> Include Library... -> Add .ZIP Library...
    4. Restart the Arduino IDE to see the new "FastLED-3.1.0" library with examples
    5. From the Arduino IDE: Tool -> Board... -> Select Arduino nano...
    6. From the Arduino IDE: Tool -> Port... -> Select the appropriate COM...
    7. copy and paste the code below 
    8. Change the IP and MAC address so each Arduino has its own unique address

    if you don't know any thing about Hexadecimal here is a good site to do the conversions for you (Decimal to Hexadecimal Converter) on the tail end of "const byte mymac[] = { 0x740x690x690x2D0x300x17 };" you just need to change the "0x17" you can keep counting up for some time with out using the converter. FYI 0x18, 0x19, 0x20, 0x21 (the decimal is not sequential in hex but it will not matter)

    10. Upload the code.

    
    // E1.31 Receiver and pixel controller by Andrew Huxtable (andrew@hux.net.au)
    // This code may be freely distributed and used as you see fit for non-profit
    // purposes and as long as the original author is credited and it remains open
    // source
    //
    // The ethernet module is an ENC28J60 based item which are easily available
    // for a few $
    //
    // Data connections to the module:
    // Module -> Arduino
    // SI     -> 11
    // SO     -> 12
    // SCK    -> 13
    // CS     -> 8
    //
    // NB Most of the modules run on 3.3v, not 5v - Use caution!  5V logic/data is fine though.
    //
    // Please configure your Lighting product to use Unicast to the IP the device is given from your DHCP server
    // Multicast is not currently supported due to bandwidth/processor limitations
     
    // You will need the Ethercard and FastLed Libraries from:
    // https://github.com/FastLED/FastLED/releases
    // https://github.com/jcw/ethercard
    //
    // The Atmega328 only has 2k of SRAM.  This is a severe limitation to being able to control large
    // numbers of smart pixels due to the pixel data needing to be stored in an array as well as
    // a reserved buffer for receiving Ethernet packets.  This code will allow you to use a maximum of 240 pixels
    // as that just about maxes out the SRAM on the Atmega328.
     
    // There is deliberately no serial based reporting from the code to conserve SRAM.  There is a **little**
    // bit available if you need to add some in for debugging but keep it to an absolute minimum for debugging
    // only.
     
     
    #include <EtherCard.h>
    #include "FastLED.h"
    //#include <avr/wdt.h>
     
    //*********************************************************************************
     
    // enter desired universe and subnet  (sACN first universe is 1)
    #define DMX_SUBNET 0
    #define DMX_UNIVERSE 1 //**Start** universe
     
    // Set a different MAC address for each...
    const byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x31, 0x22 };
     
    // Uncomment if you want to use static IP
    //*******************************************************
    // ethernet interface ip address
    static byte myip[] = { 10,0,0,223};
    //*******************************************************
     
    // By sacrificing some of the Ethernet receive buffer, we can allocate more to the LED array
    // but this is **technically** slower because 2 packets must be processed for all 240 pixels.
     
    /// DONT CHANGE unless you know the consequences...
    #define ETHERNET_BUFFER 580
    #define CHANNEL_COUNT 450
    #define NUM_LEDS 150
    #define UNIVERSE_COUNT 1
    #define LEDS_PER_UNIVERSE 150
     
    // The pin the data line is connected to for WS2812b
    #define DATA_PIN 7
     
    //********************************************************************************
     
    unsigned long lastUpdate;
     
    // Define the array of leds
    CRGB leds[NUM_LEDS];
     
    byte Ethernet::buffer[ETHERNET_BUFFER]; // tcp/ip send and receive buffer
     
    int checkACNHeaders(const char* messagein, int messagelength) {
      lastUpdate = millis();
      //Do some VERY basic checks to see if it's an E1.31 packet.
      //Bytes 4 to 12 of an E1.31 Packet contain "ACN-E1.17"
      //Only checking for the A and the 7 in the right places as well as 0x10 as the header.
      //Technically this is outside of spec and could cause problems but its enough checks for us
      //to determine if the packet should be tossed or used.
      //This improves the speed of packet processing as well as reducing the memory overhead.
      //On an Isolated network this should never be a problem....
     //for (int i=0;i<125;i++){
      //  Serial.print(messagein[i]);
      //}
      if ( messagein[1] == 0x10 && messagein[4] == 0x41 && messagein[12] == 0x37) { 
          int addresscount = (byte) messagein[123] * 256 + (byte) messagein[124]; // number of values plus start code
          if ( addresscount > 0){
            //Serial.println(addresscount - 1);
            return addresscount -1; //Return how many values are in the packet.
          }
        }
      return 0;
    }
     
    void sacnDMXReceived(const char* pbuff, int count) {
      //Serial.println("*");
      if (count > CHANNEL_COUNT) count = CHANNEL_COUNT;
      byte b = pbuff[113]; //DMX Subnet
      if ( b == DMX_SUBNET) {
        b = pbuff[114];  //DMX Universe
        if ( b >= DMX_UNIVERSE && b <= DMX_UNIVERSE + UNIVERSE_COUNT ) { 
          if ( pbuff[125] == 0 ) {  //start code must be 0
          int ledNumber = (b - DMX_UNIVERSE) * LEDS_PER_UNIVERSE;
           // sACN packets come in seperate RGB but we have to set each led's RGB value together
           // this 'reads ahead' for all 3 colours before moving to the next led.
          
           for (int i = 126;i < 126+count;i = i + 3){
              byte charValueR = pbuff[i];
              byte charValueG = pbuff[i+1];
              byte charValueB = pbuff[i+2];
              leds[ledNumber].setRGB(charValueR,charValueG,charValueB);
              ledNumber++;
            }
          FastLED.show();  //Do it!
          }
        }
      }
    }
     
    static void sACNPacket(unsigned int port, byte ip[4], unsigned int i, const char *data, unsigned int len) {
      //Make sure the packet is an E1.31 packet
      //Serial.println("*");
      int count = checkACNHeaders(data, len);
      if (count){
        // It is so process the data to the LEDS
        //Serial.println(count);
        sacnDMXReceived(data, count);
      }
    }
     
    void initTest() //runs at board boot to make sure pixels are working
    {
       LEDS.showColor(CRGB(255, 0, 0)); //turn all pixels on red
       delay(1000);
       LEDS.showColor(CRGB(0, 255, 0)); //turn all pixels on green
       delay(1000);
       LEDS.showColor(CRGB(0, 0, 255)); //turn all pixels on blue
       delay(1000);
       LEDS.showColor(CRGB(0, 0, 0)); //turn all pixels off
    }
     
     
    void setup() {
      // Using different LEDs or colour order? Change here...
      // ********************************************************
         FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); 
      // ********************************************************
     
      //Serial.begin(115200);
      //Serial.println("Init.");
       // No checks in here to ensure Ethernet initiated properly.
       // Make sure Ethernet cable is connected and there is DHCP on the network if you are using it ....
    //   if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0){
    //    Serial.println( "Failed to access Ethernet controller");
    //   } else {
    //    Serial.println("Ethernet ok");
    //   }
        ether.begin(sizeof(Ethernet::buffer), mymac, 8);
    // ******************************************************** 
       // DHCP
       //ether.dhcpSetup();
      
      //Static IP
      ether.staticSetup(myip);
    // ********************************************************
     
      // Register listener
      ether.udpServerListenOnPort(&sACNPacket,  5568);
     
      //Once the Ethernet is initialised, run a test on the LEDs
      // If you have problems with lockups/reboots, you might want to disable this
      //initTest();
     
      lastUpdate = millis();
    }
     
    void loop() {
        //Process packets
        if (millis() - lastUpdate > 2000){
           // If no packet recieved in 2 seconds, reboot.
           // I had problems with occational lockups of controllers
           // for some reason.  Slowing the data rate seemed to help.
           // ENC28J60 module probably isnt coping too well.
          asm volatile ("  jmp 0");
        }
       ether.packetLoop(ether.packetReceive());
    }

View all 3 instructions

Enjoy this project?

Share

Discussions

benoit.achette wrote 11/29/2018 at 20:36 point

Hi ! Give a little feedback this year ! All works perfectly with your code, i have just increase the buffer to 800 because i have only 180 pixels by arduino and i had issues in the middle string led... thanks again for this project !!! 

  Are you sure? yes | no

Dan wrote 11/15/2018 at 15:20 point

Hi Shane!!  Awesome project.  The only problem I ran in to was that I am using the Arduino Ethernet Shield.  I was able to tweak it to use the Ethernet and EthernetUdp libraries instead of the Ethercard library.  

Here is a link to the code I am using, just in case someone else runs into the same configuration.

https://drive.google.com/drive/folders/1ol0gB_AZ3bpXuNqkWgBqhshgJKk4bte8?usp=sharing

  Are you sure? yes | no

shane bourgeois wrote 11/15/2018 at 18:56 point

Fantastic!

  Are you sure? yes | no

benoit.achette wrote 11/05/2018 at 11:08 point

Hi Shane ! I'm doing my christmas lightshow with your project this year.  But need a tip. Do you think that i can drive a P10 pixel matrix with this configuration ? It's a different way of wiring because there's one wire by color instead of one wire for data in ws2811. So i don't have any idea of how to connect  the arduino and the P10 matrix (ide)... Thanks a lot for your help !

  Are you sure? yes | no

shane bourgeois wrote 11/05/2018 at 14:12 point

Hello, a P10 pixel matrix uses hub75 you will need something farmore powerfull than arduino. To my knowledge you can drive them one of three ways:

1. raspberry pi matix adapter has 3 outputs and a max of 12 panels per output for a total of 36 panels.

2. octoscroller for beaglebone has 8 outputs and a max of 8 panels per output for a total of 64 panels.

3. ColorLight 5a-75B receiver board.

  Are you sure? yes | no

benoit.achette wrote 11/05/2018 at 19:47 point

Thanks for quick answer !

So the ColorLight 5a-75B receiver board is the cheapest solution ! But is this compatible with the streaming e1.31 by RJ45 and from the falcon pi player ? 

Do I have just to buy one more rapspberry pi (in mutltisync and remote mode) and stream e1.31 signal from raspPI to the ColorLight 5a-75B receiver board ?

thank you so much for all your tips since all these years !!!!!!!!!

  Are you sure? yes | no

stinabeana_07 wrote 10/15/2018 at 20:19 point

Is this still active? What updates do you have planned for this year?

  Are you sure? yes | no

Kaleb wrote 02/28/2018 at 20:26 point

I'm new to arduino. I have done the raspberry pi with a relay board for christmas with falcon player and vixon. I have no experience with coding.  So with your code is it plug in play and it will work.

  Are you sure? yes | no

shane bourgeois wrote 08/06/2018 at 20:09 point

its  close but nothing cheap is plug and play...... there is also pixel-stick

  Are you sure? yes | no

shannond100 wrote 01/28/2018 at 11:29 point

Could you not add some extra ram, ie. 23K256 (32k), to be able to handle a few more LEDs?  Or would the throughput not be there...?

I'm just starting out this year... I have had a play with vixen over generic serial today and it worked very well... (using a 10 pixel string)... I ordered some of the ethernet controllers last week, so hopefully they won't take too long to show up and I can have a bit more of a play with them too ;)

  Are you sure? yes | no

shane bourgeois wrote 02/26/2018 at 18:51 point

how would you add extra ram?

  Are you sure? yes | no

shannond100 wrote 03/02/2018 at 09:18 point

put it on i2c like the ws2811, but I'm thinking, when it comes time to dump the data into the ws, have both chip enable pins enabled at the same time so the ram dumps direct to the ws instead of having to read and write constantly on the arduino? (Timing on the clk should be the same and it's not exactly major data manipulation) I'm only new to arduino though, so I could be barking up the wrong tree... I'm happy to be corrected if I'm wrong... I'd really like to know how to do it. 

  Are you sure? yes | no

firefly723 wrote 10/21/2017 at 22:11 point

should you be able to ping the arduino once you have uploaded the sketch

  Are you sure? yes | no

shane bourgeois wrote 11/01/2017 at 13:32 point

yes  you should be able to ping  your arduino 

  Are you sure? yes | no

firefly723 wrote 10/15/2017 at 17:30 point

arhhhhh please help i've tried everything and still can't get it to work  

  Are you sure? yes | no

benoit.achette wrote 02/28/2017 at 20:24 point

Hi again ! 

I'm building a shooting star. 

50 led for the star (1st arduino) and 150 for the others.(2nd arduino)

The RGB test works fine when I start the arduino but when I test with FPP... I have this...

http://hpics.li/bdf2151

About 25 last led don't work... It looks like ACN information don't arrived at the end...

I tried to modify the code in order to change the number of led and "channel count" but nothing works !

Any ideas ? 

Thanks !

  Are you sure? yes | no

shane bourgeois wrote 02/28/2017 at 21:37 point

looks like you dont have any power enjection 

  Are you sure? yes | no

shane bourgeois wrote 11/01/2017 at 13:43 point

what happens when you go all white with the leds?

  Are you sure? yes | no

benoit.achette wrote 02/10/2017 at 17:49 point

Hello,

I'm in trouble with a 150 led stripes. The sketch works fine but the leds lights up 3 by 3 ! 

How can I modify the skecth to light up the 150 led individually ?

Thanks a lot !

  Are you sure? yes | no

benoit.achette wrote 02/10/2017 at 19:09 point

Ok...I've found the solution... The led stripe is made of 50 integrated circuit...so 1 for 3 leds...!

  Are you sure? yes | no

shane bourgeois wrote 02/11/2017 at 15:57 point

oh yes your using ws2811 led strips  they group them in groups of 3s .

 you can buy high density strips..

 sounds like your code is working fine then. 

do you have any feedback? i want to make this easier for the next person.

  Are you sure? yes | no

shane bourgeois wrote 02/10/2017 at 20:16 point

this is the code Im using and it doesn't do that for me. what are you controlling with?

  Are you sure? yes | no

the_windaube wrote 01/25/2017 at 20:33 point

Hello

Arduino mega has 8ko sram, the board supports 310 leds?

Sorry for my bad English I am french :/

  Are you sure? yes | no

shane bourgeois wrote 02/02/2017 at 04:34 point

theoretically I don't see why not

  Are you sure? yes | no

the_windaube wrote 01/09/2017 at 22:01 point

works with xlights ?

  Are you sure? yes | no

shane bourgeois wrote 01/10/2017 at 13:34 point

yes it will work with xlights

  Are you sure? yes | no

Travis wrote 01/04/2017 at 06:28 point
It would be really cool if you could take just one of the outside boxes and do a couple of youtube video walkthrus for setup and such.   I love the project and see the vision.

  Are you sure? yes | no

shane bourgeois wrote 01/10/2017 at 13:34 point

 i may do youtube videos but i don't really care about youtube

  Are you sure? yes | no

benoit.achette wrote 12/30/2016 at 20:56 point

It's okay NOW !! With the last version of Ethercard lib (It's mentioned on github https://github.com/jcw/ethercard), the CS pin of the ENC28J60  must be connected to the 10th arduino's pin ! Thanks again for your job !

  Are you sure? yes | no

benoit.achette wrote 12/22/2016 at 17:35 point

Hello,

Impossible for me to connect de ECN28J60. I use a TP link switch connected to a freebox V6. All the led (green and yellow) works but when I try to ping the IP with FPP ...every packet are lots... HELp !

  Are you sure? yes | no

shane bourgeois wrote 12/22/2016 at 18:54 point

id love you help but i dont under stand your set up....

in short what are you sayting?

  Are you sure? yes | no

benoit.achette wrote 12/22/2016 at 20:32 point

Sorry...with diagram it will more easy !

First I've tried this set up for the network 

http://hpics.li/87737eb

The ENC28J60 appeared on network but  haven't  MAC adress. FPP not succeed to ping the ip  that I entered in your arduino's code. 

Second I did this set up

http://hpics.li/592c7e7

It's worse...

What's amazing is the fact that the green and yellow led on the ENC RJ45 are flashing so I think all this hardware are communicating...

I'm lost...How to connect all this set up ?

Thanks a lot for your help !

Here is a screenshot of my router ...no mac adress for my ENC...

http://hpics.li/5e258e8

  Are you sure? yes | no

shane bourgeois wrote 12/23/2016 at 01:38 point

2 things I would try right off the bat.

 1. have a completely separate Network E1.31 data use Wi-Fi to connect the Raspberry Pi to the  router/internet for the real world stuff. 

 2. Reload your Nano from the Arduino IDE

  Are you sure? yes | no

dbolivaru wrote 12/19/2016 at 16:47 point

Hi, you have the config for Raspberry?(Outputs)

  Are you sure? yes | no

shane bourgeois wrote 12/19/2016 at 17:09 point

look at the "Raspberry Pi Setup" Log

  Are you sure? yes | no

benoit.achette wrote 12/17/2016 at 20:00 point

hi

I see that you control the pi by a lcd screen and buttons. Can you explain how to do that ? I guess with the gpio input but  what code  ? A little help ? Thanks for this great tutorial !!!

  Are you sure? yes | no

shane bourgeois wrote 12/18/2016 at 22:12 point

i will add more directions letter this week.

in the mean time...... FPP ( Falcon Pi Player ) is pre programmed to use a Adafruit  16x2 LCD+Keypad Kit for Raspberry Pi all you have to do is stack the "Pi plate" on top on the Raspberry Pi... go into Status / Control on the drop down menu you will see "FPP Settings" select that, it will load a new page. on the page the loads will be   some check boxes and text, the text says "Pi 2X16 LCD Enabled" 3rd check box  is the box that turns off and on the screen.

 all it is doing is using the two I2C pins

  Are you sure? yes | no

benoit.achette wrote 12/19/2016 at 08:06 point

Thanks !!!

  Are you sure? yes | no

aperfectpixel1973 wrote 12/05/2016 at 02:09 point

do you have a wiring diagram or how-to for the nano and ethernet modules? Thanks on advance

  Are you sure? yes | no

shane bourgeois wrote 12/05/2016 at 15:26 point

per your request i have up loaded a wiring diagram see INSTRUCTIONS 2

  Are you sure? yes | no

aperfectpixel1973 wrote 12/05/2016 at 22:34 point

thank you

  Are you sure? yes | no

Danny Bolivar wrote 11/26/2016 at 01:22 point

Yes i test the code and Work Fine. Thanks
You can upload one example with 2 universes Please.

  Are you sure? yes | no

shane bourgeois wrote 11/26/2016 at 02:43 point

just change 

#define ETHERNET_BUFFER 520

#define CHANNEL_COUNT 360 //because it divides by 3 nicely
#define NUM_LEDS 240 // can not really go higher than this - Runs out of SRAM
#define UNIVERSE_COUNT 2
#define LEDS_PER_UNIVERSE 120

  Are you sure? yes | no

Danny Bolivar wrote 11/26/2016 at 02:56 point

WOW Work Fine i test with my strip of 50 pcs, 25 for universe and Work Very Good, I hope to finish before December 1st LOL.

Is normal that universe 2 Flicker, the Universe 1 its fine
Lot a thanks.

  Are you sure? yes | no

shane bourgeois wrote 11/26/2016 at 03:24 point

Danny sorry i have no idea  you could ask email Andrew Huxtable (his email is in the code) 

Wait are you using 12 or 5v LEDs you may need to inject power ... 5v LEDs needs new power every 50 LEDs and 12v every 100 LEDs

  Are you sure? yes | no

Danny Bolivar wrote 11/25/2016 at 21:24 point

I replace this code and Work Fine:
static void sACNPacket(unsigned int port, byte ip[4], unsigned int i, const char *data, unsigned int len) {
For This
static void sACNPacket(word port, byte ip[4], const char *data, word len) {

I test you code and still does not work, you uploaded the new code?

Q: When you uses the universe 2 you need setup other pin for the output?

Thanks Great Code

  Are you sure? yes | no

shane bourgeois wrote 11/25/2016 at 22:14 point

did you try the new code?

Keep in mind the each pixel is RGB so each pixel is 3 channels.

  50 pixels of sw2811 =150 channels

If you have more than 512 channels  you need 2 universes for a total of 1024 channels, it will be on the same output  but  it will let you use more pixels 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates