[Swansea Hackspace] Flip-Dot Display Group Project: Update

Justin Mitchell justin at swansea.hackspace.org.uk
Sat Jul 14 14:43:40 BST 2018


I'm just trying to knock together some proposals for the computer to
panel comms protocol.

Putting all my code and documents together on github:
https://github.com/popemadmitch/flipdot

Please have a look through the PROTOCOL.md document there and see what
you think, its just a starter set of primitives, and ive tried to make
it simple to use. 

the idea being its a fairly simple plain text protocol that will be
easy for someone to write python or whatever other scripts and code
they like on an RPI (or well anything really) to send out of the serial
port.

the individual panel drivers will take those graphics primitives and
deal with all the mess of working out differences and updating the
panels.

its not the absolute best possible bandwidth efficiency, but i think
the physical refresh of the panels is going to be the limiting factor
anyway. 

I will try and knock together a simple panel exercise routine on an
arduino for monday so we can see if we are right so far.  I am happy
then to work on the coding for this part of the project if someone else
does the higher level stuff.



On Sat, 2018-07-14 at 10:50 +0100, Nathan Hackett wrote:
> Thanks Peter for the info! My immediate thought was to add active
> cooling to the coils although I know that's ridiculous...
> I think a nice web interface would be a good approach - if it works
> on the network then great, if not we just fullscreen a browser on the
> pi and run it from localhost.
> Given that this potentially has some 'realtime' requirements for web
> based control pads etc, and the need for some glue logic to talk to
> the serial interface, personally I'd gravitate towards a basic python
> framework like Flask, or maybe one of the asyncio variants with
> websockets support such as Quart or Sanic. Just in terms of speed and
> ease of development, they're great for toy projects. I guess it comes
> down to which stack is preferred among those willing to help. :)
> 
> I can lend a couple of wireless Gamecube Wavebird pads with usb
> adapter, which are very robust. As long as they're not likely to
> wander off on their own. ;)
> 
> On Fri, Jul 13, 2018 at 12:29 AM Peter Barnes <pe5erb at gmail.com>
> wrote:
> > Nathan,
> > 
> > The spec sheet for the panels is that we can refresh an entire
> > display at 2Hz. We may be able to push this further, but the coils
> > will burn if they are left on too long / used too often.
> > 
> > As we will be driving each display individually, this refresh rate
> > will not be affected by combining multiple panels into a billboard.
> > 
> > I'm sure we can achieve a much higher refresh rate by only changing
> > the pixels that need changing (frame interpolation), enough to run
> > a game such as Tetris etc.
> > 
> > 
> > If we use an RS-485 bus to connect the panels, this will not limit
> > the refresh rate, we will almost certainly be limited by the
> > maximum duty cycle of the coils or the speed at which we can
> > address the panels.
> > 
> > We haven't had much discussion about the front end software, but
> > it's looking like we might write something that will run on a Pi 3
> > with a monitor, that will let us switch between different programs
> > that we've written for the panels.
> > 
> > For games, wired pads would work well but they could get broken
> > easily. We could make a web controller that people could use with
> > their phones. The network was rock solid last time but i'm a little
> > apprehensive about relying on a connection for everything to work.
> > 
> > 
> > 
> > Peter
> > 
> > On Thu, Jul 12, 2018 at 10:31 PM Nathan Hackett <nhackett1 at gmail.co
> > m> wrote:
> > > Great to see this project take shape, amazing the motivation a
> > > deadline can create. ;)
> > > 
> > > You're all better placed to make decisions about driving the
> > > board's so I won't jump in on that except to ask, what do we
> > > think is the theoretical refresh rate for the entire display?
> > > Assuming a low number of pixels changing each frame, like in
> > > Pong. And is the proposed serial interface fast enough to update
> > > the entire panel matrix at this rate from a bitmap source?
> > > 
> > > What's the plan for the software, who's helping? I'd love to help
> > > with the games - would we be going for wired pads or some sort of
> > > web interface? What's the wireless network situation at EMF?
> > > 
> > > I'm still planning to donate up to two panels to the space once
> > > this display has served its promotional purpose, but just so
> > > everyone's aware I'll want the rest back in time to split up for
> > > xmas gifts! :)
> > > 
> > > 
> > > On Tue, 10 Jul 2018, 16:32 Justin Mitchell, <justin at swansea.hacks
> > > pace.org.uk> wrote:
> > > > On Tue, 2018-07-10 at 13:47 +0100, Peter Barnes wrote:
> > > > > Justin/Gwion,
> > > > > 
> > > > > > Have you documented which pins do what, the voltages and
> > > > currents
> > > > > > required, etc ?
> > > > > 
> > > > > Yes, Tom has put together a full schematic in KiCad for the
> > > > display,
> > > > > which along with exported logic analysis from a scope at uni
> > > > has
> > > > > allowed us to figure out which pins do what.
> > > > > 
> > > > > > I looked at the project page you listed but it only points
> > > > to other
> > > > > > peoples similar projects. 
> > > > > 
> > > > > I've just updated the Project Page with all of this new
> > > > information,
> > > > > so that should make a lot more sense now. 
> > > > 
> > > > I have grilled Tom to get a breakdown of how you communicate
> > > > with the
> > > > panels, as this info is not yet on the project page or reverse
> > > > engineering log.
> > > > 
> > > > So it boils down to 4 IO lines at 5V, plus a 15V power supply.
> > > > 
> > > > Column select, row select, pixel value, and latch.
> > > > 
> > > > So assuming some goals for the drivers:
> > > > 
> > > > * one driver per display panel, so they are interchangable.
> > > > * minimise changes to individual dots when changing display
> > > > * minimise data between master controller (RPI?) and panels.
> > > > * keep costs low whilst avoiding too much hardware building
> > > > 
> > > > My first suggestion would be to drive each panel with an
> > > > arduino pro
> > > > mini board, they cost about a pound each these days, and
> > > > running them
> > > > from a 5V power supply line means they can interface directly
> > > > with the
> > > > panel.
> > > > 
> > > > If they implement a double-buffered graphics controller, 16x32
> > > > pixels =
> > > > 64 bytes ram per buffer is easily achieved. so that when
> > > > signalled it
> > > > will update the display from memory flipping only the dots that
> > > > have
> > > > changed since last update.
> > > > 
> > > > Then use a simple serial protocol to feed it graphics commands
> > > > over the
> > > > serial port. just a few commands box, circle, line, text,
> > > > bitmap,
> > > > update-display, would probably do.  there are plenty of
> > > > libraries
> > > > around to implement the actual drawing and fonts eg u2g or
> > > > adafruit gfx
> > > > library
> > > > 
> > > > to attach several panels to one master controller, assuming it
> > > > doesn't
> > > > have many serial ports, and you want to run them fast, i would
> > > > suggest
> > > > adding RS485 interface chips. You can get breakout boards with
> > > > MAX485
> > > > chips on them from aliexpress for 25p each.  that lets you have
> > > > upto 32
> > > > devices share one serial port.
> > > > 
> > > > you then run whatever high level code you want on the RPi,
> > > > receive
> > > > twitter messages, decode videos, play games, whatever.  it
> > > > creates a
> > > > set of gfx commands to update the display panel buffers, and
> > > > when the
> > > > updates are complete send a sync/update command to all the
> > > > panels to
> > > > have them flip the dots to match the internal memory.  nice and
> > > > smooth.
> > > > 
> > > > 
> > > > 
> > > > as an alternative, for single panel independence you could
> > > > drive a
> > > > panel using an ESP8266/32 with just a few transistors or a
> > > > level
> > > > shifter to connect to the drive pins. a cheaper solution when
> > > > you just
> > > > want a single panel to be doing some things on its own, like
> > > > being a
> > > > clock or status display or something.
> > > > 
> > > > 
> > > > happy to help implement parts of that, although i dont get to
> > > > the space
> > > > all that often lately.
> > > > 
> > > > 
> > > > _______________________________________________
> > > > Hackspace mailing list
> > > > Hackspace at swansea.hackspace.org.uk
> > > > http://swansea.hackspace.org.uk/mailman/listinfo/hackspace
> > > 
> > > _______________________________________________
> > > Hackspace mailing list
> > > Hackspace at swansea.hackspace.org.uk
> > > http://swansea.hackspace.org.uk/mailman/listinfo/hackspace
> > 
> > _______________________________________________
> > Hackspace mailing list
> > Hackspace at swansea.hackspace.org.uk
> > http://swansea.hackspace.org.uk/mailman/listinfo/hackspace
> 
> _______________________________________________
> Hackspace mailing list
> Hackspace at swansea.hackspace.org.uk
> http://swansea.hackspace.org.uk/mailman/listinfo/hackspace




More information about the Hackspace mailing list