[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Questions on Single Board Computers



+++ Mark Allyn [06-06-11 14:01 -0700]:

> I need some help trying to select a single board computer
> for a project that I am engaged in.

I talked to you in person about this (interesting!) project at debconf, but
I'll post in this thread too by way of general discussion/enlightenment.

> The single board computer will be driving an array of approximatley
> 400 to 500 tri-color LED's that will be sewn into a piece of clothing.
> Each tri color LED has emitters for red, blue, and green. These three
> colors are combined to form any other color.
> 
> This means that I will have about 1200 to  1500 individual light
> levels to control in real time.
> 
> Further, as this is a piece of clothing, it needs to run on a 12
> volt battery. I will not have access to the mains.
> 
> I plan to use a serial packet transmission to get the brightness
> information to each LED. I am currently designing the receive (using
> verilog and most likely a Xilinx CPLD for the packet receive and
> pulse width modulation to perform the dimming (LED brightness control
> is said to be the best then done by pulse width modulation). 

PWM is usual for LED control, because it is easy to do with digital systems.
Current control is also effective but requires different (generally fancier)
electronics. A side effect of PWM can be flickering or intersting visual
effects when combined with motion, depending on PWM speed. For your purposes
I don't think potential stop-motion effects will matter - they may even be
deemed desirable, but it does effect what rate you want to run the PWM at.

> That
> part of the project I see no problem. There is already a lighting
> control protocol, called DMX, for which I have already created
> verilog HDL for implementation.

As you say, you have a plan and a good understanding of this part (it's just fun
to talk about :-)

> The areas that I need help in is finding and assembling a suitable
> main processor. First of all, I need some serial bus (something like
> RS485) that can have one transmitter driving about 100 receivers. I
> know that RS485 is limited to 32 receivers. Can this be expanded? Is
> there another serial interface that can have a single transmitter drive
> up to 100 receivers? 

So this is 100 receivers - each driving about 5x3 LEDs? And thus consuming
15 DMX bits? One DMX serial output would drive 512 LEDs (max) so you need at
least 3 DMX 'universes'. And the IO runs at 250Khz. Presumably as you are
(potentially) designing the hardware at both ends you could run
it as fast as it will actually go. 

> I am only concerned about one way; there is
> no feedback required from the receivers (lamps) back to the
> main processor. From the looks of things; I will need three or
> four such serial drivers on my main processor unit.

I don't really know what comms mechanism would be most appropriate. I2C can
drive multiple outputs, but I don't know if it is fast enough - I doubt it,
but know a man who would know for sure. I'm not a proper hardware engineer,
but it seems to me that a good way to do this is to use the same hardware
that other DMX kit does. It seems to me that you are unlikely to find a
board that already contains the IO hardware you need, although if standard
RS485 serial ports will suffice then you might be able to find something
that has 3 or 4 of these on board.  

DMX kit normally seems to be built with an SN75174 quad differential line
driver and 4 optoisolators. But as devices (lights) are normally daisy
changed perhaps there is no fan-out and merely a repeater in each unit? You
could do it that way but it sounds like you want to try to fan out the DMX
signal (for better sync or simpler endpoint boards?). This page has some
designs for DMX devices, driven via USB, which might be interesting:
http://www.telltronics.org/software/dmx/ 

It includes a linux driver DMX4linux using the FTDI FT232BM chip, which
might be a good way to go, especially for initial prototyping.

It does seem that a plain RS485 UART will do the job, but the fanout limit
is an issue. This is where a proper hardware engineer would come in handy.
(can you just up the drive current a bit to increase the fanout, or make the
other ends more sensitive? I suspect so...) 

> Also, I am looking for a main processor unit (most likely as SMB) that
> can do the following things:
> 
> Be able to drive up to 1500 individual light levels (0-255 steps of
> brightness for each one) at a rate so that each one can be refreshed
> once every 60 seconds.

Do you mean once every 60 seconds (seems rather slow) or 60 times a second?
DMX seems to manage about 44Hz. You don't need much welly to drive the
serial/DMX outputs (244Kbaud). I think CPu sizing  depends how much other processing
you need to do to work out the patterns. FFTs?

> Would have either a wireless or wired network port so that I can
> access it to program it and make changes to the software.
> 
> It must run Linux; use open source tools and software; I don't want
> to have to to $X,000's for commerical software. Preferably, I would
> like to see it run/be programmed from Debian/Ubunto/Mepis or some
> other Debian derivitive.
> 
> Either have, or can accomodate a module with an FPGA; at some point,
> I want to incorporate an Audio A/D and audio signal analysis. I would
> like to drive my display on music; both on amplitude and frequency
> spectral images.
> 
> I have done some looking through Linuxdevices.com. I do see a wide
> variety of devices there, but I cant seem to find anything with
> multiple RS485 interfaces. Perhaps this is asking for a bit much
> and I will have to design a suitable I/O driver (again, using CPLD's
> or FPGA's.

I am not aware of anything that has an uncommitted FPGA and 4 RS485 ports,
and anyway you want 'super RS485' as described above, but there are a lot of
boards out there and there may be something that fits the bill directly. I
suspect you'll end up making your own IO board though.

If you do end up needing to make an add-on IO board then this is exactly what
Balloon (http://balloonboard.org/) is designed for. And it fits the above
spec in terms of free tools, built in audio and A/D, and running Debian, and
low power with a 6-40V power option as well as regulated 5V or 3.3V.
Balloon3 has an FPGA variant, but that is not yet in production. (batch of
200 planned in August). With one of those 20 euro USB->DMX controllers on the
USB host port you should be able to hack up something that mostly works quite
quickly (anything with a USB host port will do for that bit). 

> What I don't want are disk drives, fancy graphcis controlers, fancy
> audio drivers (I am doing a/d; not d/a and driving sound); CD drives;
> SATA / IDE ports; whatever. Many of the devices seem to come with these
> as a default. All I need would be something to drive a small (perhaps
> something like a 4" by 4" inch) touch screen.

4" x 4" is actually quite a big screen if you are driving it from something
like an ARM SOC directly. Balloon supports an LCD, but for a screen that
size you really want something with a video driver chip on it otherwise your
CPU does nothing but refresh the LCD. PDA-sized screens (1/4 VGA) are OK driven
directly.

> It seems to me that PC/104 is a standard for these SBC's. Is this the
> case? I also see something called EBX.

It is a standard for x86 SBC, certainly, and some others come in that form
factor too (Arcom make arm PC104 SBCs, for example), but a lot of arm
hardware comes as modules and boards in no particular standard format.

> I am willing to spend up to $1000 for the main processor, if that
> is what it takes. I am a bit confused at the diversity of pricing.
> I see stuff from GAO Engineering, for example, that is priced around
> $1500 for something that does not look that much better than others
> I see for around $100 to $200.

Prices do vary a lot. Things which come early in the cycle of a particular
chip are often expensive, for example. Balloon fits in your budget, but is
by no means the cheapest board around. 

> I am willing to do all of the programming myself (or look for other
> open source programming to use). If I need to come up with a daughtor
> board, I am willing to do the design myself provided I get open enough
> documentation on interfacing with the SBC.
 
> If this is not the currect forum for this kind of question, perhaps
> can someone please refer me to where I can go with these types of
> questions?

This is a pretty good forum, but I'm not sure how many hardware people are
here. I know there are a load hanging out on openjtag, and balloonboard
lists, who could deal properly with the RS485/DMX fanout question.

And as you can see you have an interesting question so it's not too hard to
get answers :-)

HTH

Wookey
-- 
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK  Tel +44 (0) 1223 811679
work: http://www.aleph1.co.uk/     play: http://www.chaos.org.uk/~wookey/



Reply to: