LED matrix built into a helmet, hardware questions

Status
Not open for further replies.

Jreegan

New member
I'm building a visor similar to https://youtu.be/16Zui-_R588

I'm trying to figure out what hardware I should/can use. I've purchased a teensy 3.2, octo adapter, audio shield and an add on electret mic, an esp8266 12E for Access Point control, and a WIZio adaptor. Not sure if I even need all of them, but I would like to wirelessly control with my phone the animations, possibly using Touch OSC, while also having an FFT option I can switch it to. I've read that there may be a pin conflict between the ESP and the Audio board, but I'm not sure. I'm sure I'm making it way more difficult than it needs to be. Also, on a side note, can the SD card slot on audio board be used as the file source for Octows2811 or does it need to be the card reader on the WIZ?

Would it just be easier to incorporate an IR remote for switching animations rather than the ESP access point/touch OSC route?
 
I suspect you are over complicating things. Try to do things one step at a time.

I doubt you can use all three boards at the same time, since there are pins that overlap.

Assuming you can settle for mono, and are just playing pre-programmed sounds, rather than doing sound processing in real time, I tend to think the LC Prop Shield is better than a combination of the Octows2811 and Audio Shields. The Octows2811 shield is really set up when you are making a video wall with hundreds if not thousands of LEDs, and you really need to optimize things to do the video processing in 8 parallel streams.

For the Daft Punk Visor, you might be using a hundred or two hundred leds, which you can easily do as a single strand. The LC Prop Shield has two pins (pins 11 and 13) that are translated to 5v, either of which can be used for WS2812B/neopixels (or if you are using APA102/dotstar leds, you need both pins). The LC Prop Shield also does mono output with an amplifier to a speaker. Finally, the LC Prop Shield has an 8 megabyte flash memory card, which eliminates the need for a micro-SD card. Now, if you need stereo, or you want to use bigger speakers than the LC prop shield supports, or you want to process input, or do other synth-type stuff, then yes, you need the audio shield.

Instead of the LC Prop Shield, there is the full Prop Shield which has various motion sensors plus everything in the LC Prop Shield, which might be useful later down (shake your head to speed up/slow down the pattern).

For controlling your gear remotely, it would be a lot simpler to use either bluetooth (assuming your phone supports bluetooth -- note some phones prefer bluetooth classic, and others bluetooth light) or IR rather than getting a full wi-fi stack. On my Samsung phone, it uses classic bluetooth, and I've played around with an HC-05 board, such as this (I've bought various gear from this seller): http://www.ebay.com/itm/HC-05-Bluet...ter-Module-Wireless-Serial-6pin-/221605869160.
 
Last edited:
Thanks for your response. I am not actually needing an audio output, the audio shield is specifically for trying to add a realtime spectral analyzer to my choice of animations. And unfortunately, I have an iPhone so any Bluetooth control would be a pre-made app with little to no modification to fit my needs, unless I'm unaware of one that would work for this. The iPhone vs Android control of arduino type microcontrollers is definitely vastly different from what I've found. Hence trying to use ESP for either a websocket or OSC control over network.
 
Apple uses bluetooth LTE (light). I don't know much about Apple, but I have seen apps that can send text messages, such as: https://itunes.apple.com/us/app/hm10-bluetooth-serial/id1030454675?mt=8. You would presumably just open the app, maybe send 'a' to do the first pattern, 'b' to do the second, '+' to go to the next pattern, etc. Assuming you are doing the bluetooth control, you don't have to get fancy, just send plain text.

On the Teensy side, you just hook it up to one of the serial ports, as Serial1 (pin 0 is RX, pin 1 is TX).

For example, I've used this in the past. I had paired the bluetooth adapter previously:

Code:
#include <stddef.h>

const int leds[] = { 13, 12, 11, 10 };

#define NUM_LEDS (sizeof (leds) / sizeof (leds[0]))

void
setup (void)
{
  size_t i;

  Serial3.begin (9600);
  Serial3.print ("Start\r\n");
  Serial3.flush ();

  for (i = 0; i < NUM_LEDS; i++)
    {
      pinMode (leds[i], OUTPUT);
      digitalWrite (leds[i], LOW);
    }
}

static int number = 0;

void
loop (void)
{
  if (Serial3.available ())
    {
      char ch = Serial3.read ();
      if (ch >= 'a' && ch < 'a' + NUM_LEDS)
	digitalWrite (leds[ ch-'a' ], LOW);

      else if (ch >= 'A' && ch < 'A' + NUM_LEDS)
	digitalWrite (leds[ ch-'A' ], HIGH);

      else if (ch == '.')
	delay (1000);

      else if (ch == ',')
	delay (250);

      else if (ch == '0')
	{
	  for (size_t i = 0; i < NUM_LEDS; i++)
	    digitalWrite (leds[i], LOW);
	}

      else if (ch == '*')
	{
	  for (size_t i = 0; i < NUM_LEDS; i++)
	    digitalWrite (leds[i], HIGH);
	}

      number++;
      Serial3.print ("Bluetooth number: ");
      Serial3.print (number);
      Serial3.print (", read: ");
      Serial3.write (ch);
      Serial3.print ("\r\n");
    }
}
 
Status
Not open for further replies.
Back
Top