Gadget Gangster musings
Dr_Acula
Posts: 5,484
I have been playing around with Kyedos, CP/M emulations, large C programs and graphics for a while and have been working on porting things over to Gadget Gangster boards.
I soldered up 4 boards yesterday and stacked them one on top of each other and it certainly is a nice format. They stack very rigidly too - so much so that in many cases the mounting posts/standoffs are not needed between boards.
I found out a few things in the process. One is that there is a fairly low height limit on components, such that a number of larger capacitors either need to be short fat ones, or need to be mounted on their sides. I also found that a few plugs are a bit tall - eg VGA and RCA. These might need to be on longer boards.
And I discovered that micro SD sockets are much cheaper and take up a lot less board space, but they are tricky to solder!
But one thing I have found is that you can't mix and match boards randomly without working out what pins go to where because some combinations are sharing pins. So I thought I would draw out a number of combinations on a spreadsheet, then move the pins around so there is a minimum number of clashes.
The base design is the propeller demoboard and that means that the top 8 pins are devoted to keyboard, mouse, eeprom and the combination download/RS232 port.
Then there are pins 16 to 23. Obviously not every combination is possible, but one idea is combo 1, which is to use these pins for VGA, and combo 2, which is to use these pins for TV and external memory decode and a second serial port for inter-prop comms.
I have put audio on P8 to P11 the same as the demo board.
Three SPI ports - one is for the SD card and there are two general SPI ports.
Chip select on the SPI/SD are via a 138.
And the last bit is the most complicated which is the external memory. I am trying to design a board that can run Kyedos (no external memory needed), can run large C programs (external memory needed) and can run the 256x224 full color graphics. Everything with memory is a compromise between speed and pins and there have been numerous discussions about the tradeoffs in the past. I can almost draw the graph of speed vs pins in my head! Anyway, this design has two latches and blocks are 256 bytes in size. It is fractionally slower than the 4096 byte block driver for the current video, but ought to still be fast enough. It will be a lot faster than the original dracblade as the dracblade latched in all the address pins whereas this design has direct access to A0-A7. It will not be as fast as a number of Cluso's designs but it will give you TV, two serial ports, keyboard and a mouse. It ought to be faster than any serial ram solutions.
I am hoping to breadboard this over the next week or so. Thoughts and ideas would be most appreciated.
I soldered up 4 boards yesterday and stacked them one on top of each other and it certainly is a nice format. They stack very rigidly too - so much so that in many cases the mounting posts/standoffs are not needed between boards.
I found out a few things in the process. One is that there is a fairly low height limit on components, such that a number of larger capacitors either need to be short fat ones, or need to be mounted on their sides. I also found that a few plugs are a bit tall - eg VGA and RCA. These might need to be on longer boards.
And I discovered that micro SD sockets are much cheaper and take up a lot less board space, but they are tricky to solder!
But one thing I have found is that you can't mix and match boards randomly without working out what pins go to where because some combinations are sharing pins. So I thought I would draw out a number of combinations on a spreadsheet, then move the pins around so there is a minimum number of clashes.
The base design is the propeller demoboard and that means that the top 8 pins are devoted to keyboard, mouse, eeprom and the combination download/RS232 port.
Then there are pins 16 to 23. Obviously not every combination is possible, but one idea is combo 1, which is to use these pins for VGA, and combo 2, which is to use these pins for TV and external memory decode and a second serial port for inter-prop comms.
I have put audio on P8 to P11 the same as the demo board.
Three SPI ports - one is for the SD card and there are two general SPI ports.
Chip select on the SPI/SD are via a 138.
And the last bit is the most complicated which is the external memory. I am trying to design a board that can run Kyedos (no external memory needed), can run large C programs (external memory needed) and can run the 256x224 full color graphics. Everything with memory is a compromise between speed and pins and there have been numerous discussions about the tradeoffs in the past. I can almost draw the graph of speed vs pins in my head! Anyway, this design has two latches and blocks are 256 bytes in size. It is fractionally slower than the 4096 byte block driver for the current video, but ought to still be fast enough. It will be a lot faster than the original dracblade as the dracblade latched in all the address pins whereas this design has direct access to A0-A7. It will not be as fast as a number of Cluso's designs but it will give you TV, two serial ports, keyboard and a mouse. It ought to be faster than any serial ram solutions.
I am hoping to breadboard this over the next week or so. Thoughts and ideas would be most appreciated.
pdf
46K
Comments
No suggestions on pin assignments, but I try to mimic the demoboard, as well.
Re soldering sd cards, it is more my eyesight that anything else!
Do you have a suggestion for mounting posts that enable you to build GG towers?
Or just stacking arrangement. If you can common the pins all the way through, (i need to look at the spreadsheet again) then place the headers and connections on top board perhaps billed as an interface board. As to caps, I thought I have seen some SMT tantalums that were in the 1-100uF 35V range. Have you tried hot air reflow for mounting the SD card sockets? I actually used a variant of this (http://www.piclist.com/techref/hotairpencil20usd.htm) to do a project using smt.
Frank
I made up a spreadsheet too to keep an idea of which Gadget Gangster board used what pins. (I have also a spreadsheet which I keep up to date with I2C chip addresses so its easier than going through the relevant pdf file).
I don't usually use mounting posts because the pin / socket connection strength is plenty for me. But the Propeller Platform enclosure uses .5" standoffs - that's with the longer headers.
Thanks for a great dev kit. I rate it right up there with what I have gotten from the NXP FAE seminars at Avnet and the TI eZdsp kit for workmanship.
Frank
do you have a diptrace component for your suggested u sd socket DM3D-SF
I recently downloaded DipTrace for Mac OS X but note there is no headers for 2x20, 2x8 and 2x7 0.1" through-hole mount. I temporarily downloaded the QuickStart board schematic to Copy/paste a 2x20 header. Does anyone know where such library components be obtained.
And, while here, does anyone know if there is a Mac OS X Tutorial? My mouse has two buttons on it, but they are in parallel, apparently. Need to know what to do on the Mac when it calls for a Right button click; like maybe some key can make it appear as a right or left button code when needed.
Thank you, anyone.
Part number:
Digi: HR1941CT-ND
Mouser: 798-DM3D-SF
Massimo
Thanks, I'm sorry I missed you and OBC at the maker faire
@Roadster - no problem, we'll make it back next year.
Like you, I really like the concept of the pin layout and idea behind the GG modules. Is it possible to get these modules without the dual headers mounted? My suggestion would be to try using instead a right angle dual header on each side, and designing an "elevator board" similar to the Freescale Kinetis Tower system like this: http://www.towergeeks.org/page/the-tower-system.
I'm not thinking of using the edge connectors, but I'm thinking that using right angle header GG modules for center modules, and the elevator boards on the side with standard dual row headers that you could plug standard dual row GG modules into. I think this could be used in conjunction with your combination of Kyedos, LCD, keyboard, mouse, etc, etc, into a functional little standalone Prop Tower.
This also could possibly address some of the problems with tall components.
So one idea I have is that if the tower gets too tall, you could split it into two, and join with a 40 way ribbon cable (scavenge one off an old PC's hard drive or get them on ebay for $1). But rather than redesign everything, simply create a new board that takes the GG format and has a 40 way header socket as well.
I have another idea for a similar board to convert the GG format into Cluso's 1" square PCBs.
And I also wonder if one could convert to the Arduino board format (I need to think about that a bit).
So, extending the same concept, I wonder if one could think of an adaptor board that takes the right angle connector and converts to GG format?
A question for Nick - when soldering the SIL headers you have to cut 4 and then cut 16 and then line them all up. I wonder if it might be quicker to cut a header 21 long instead, and add one NC hole in between the power pins and the data pins?
I'm pretty sure this will always be backwards and forwards compatible with existing boards.
* Socket for Gadget Gangster shields
* Socket for Arduino shields
* 512k ram
* TV, VGA, mouse, keyboard, SD card
* 6 analog inputs
* Dual RS232 ports
I'm trying to build something that can do Kyedos, Catalina in external memory, the full color 256x224 video and also bring in the advantages of Gadget Gangster and Arduino shields.
I wouldn't use a 21 pin connecter it's too easy for someone to put in the wrong way, using 2 connectors acts like a key and can only go in one way.
But I must say that the Propeller Proto Board seems to have just about the worst setup for DIP devices. I/O is in a square around the processor and holes are around that.
It is difficult to get power to individual accessory chips and certain I/O is rather hard to power add on chips, mostly the P24-P31.
The old SX Protoboard had a much better design, but even that did not seem to have much serious consideration for the builder.
I suspect that Gangster Gadget has prospered because of all this as good board design is just as much a reason to buy as a great processor.
Personally I hate 2x?? headers as they are only great for ribbon cables. I feel all i/o should be 1x?? with power and grounds on the ends. A 1x10 seems optimal.
I suppose one could think about a different pin layout. Or maybe put a big round white circle on the PCB. Hmm - that could work. How about a half white circle on the PCB on the left end in the middle - same as the notch that is on ICs?
One thing I have been thinking about is an alternative to a mouse, and with an arduino shield you can add a joystick and buttons http://www.sparkfun.com/products/9490
One could do something similar for the GG - eg a small board with an ADC on it.
There is a cure for that, and that is to use one continuous strip of connector on each side in place of the current split affair. The place held by the empty space should be filled with a plugged hole. The connectors plugging into the socket would then have a pin cut in the same location thus keying the connector and thwarting all but the most determined attempt to insert the connector improperly. In my own lowly opinion now that I am aware of this, I would be to ask GG to make this a high priority ECO for the GG usb board. Would not take much to do from the looks of it. Also reduce production costs as well having only to place and solder 2 parts vs 4 parts.
I am not yet stacking up stuff yet, though soon enough. Better someone else found this than me. Magic smoke can get expensive, especially if it came from one of the free samples that otherwise are $$$ (or whatever currency).
Frank
@frank, that is a brilliant suggestion. Reduced number of parts, quicker to solder up, and you have solved the problem of plugging it the wrong way.
@cluso99 - if this board works out maybe you could shrink it?
Anyway, the board with the keyboard/rca/vga plugs has to be on the top as these components are too tall. And so I ended up making the board bigger instead so nothing is on top of these components.
But I did a search on ebay for 'stackable header' and these are getting easier to get. http://www.ebay.com.au/itm/Stackable-Header-80-pieces-40-8pin-40-6pin-kit-Arduino-/220874302755?pt=LH_DefaultDomain_0&hash=item336d226523
Several things with these:
1) You don't need to offset each board as the pins go all the way through. So with headers like this a DIL header PCB pattern is not needed?
2) The pins are long, which gets around the 'tall components' problem
3) They come in groups of 6 or 8. The 8 work out fine because two of them make 16 which fits with the 16 prop pins on either side. The power supply is 4 pins so maybe you cut two off?
I have ordered some and will see how they work out.
1) This is 4 boards in a stack. But I think if I go for the "long" GG format http://gadgetgangster.com/find-a-project/261 I can do this with two boards, one is the motherboard and one is the Dracblade. And the 'motherboard' is the same as the GG USB board http://gadgetgangster.com/find-a-project/56?projectnum=257 , so really it then comes down to one addon board.
2) Tall components are an issue and there are two solutions - one is to use tall headers, and the other has been to put the tall components on the long end of the board (the TV and the mouse and keyboard sockets). The VGA fits under the other boards.
3) I finally worked out how to solder the micro sd card (and other surface mount components). Tin the board first!
4) I needed to redesign the board anyway, after PhiPi's experiments with the VGA resistors.
5) I needed to create some new parts in Eagle PCB right from scratch - including the micro SD card and the TV RCA socket. Eagle is great the way you can make new parts. BatchPCB are making these prototypes.
6) You can see on the top board that the power and data headers have been combined into one header. There is a "no connection" pin between the two. It is backwards compatible with GG boards, and is easier and quicker to solder. I have pondered whether to connect something to that non connected pin - maybe the propeller "reset", though this would not be 100% GG compatible then. The idea would be that you could have the reset button on the highest board so it is easy to get to. Thoughts on this would be appreciated.
I was thinking this morning.. The GG Quickstart module could easily become a way to neatly seperate stacks by reversing the male pins to the top of the board, then interconnecting them with a ribbon cable.
You'd have to do one of those classic "IBM" right-angle cable folds, but it should work. A few of those pass-through pin headers and you'd be in business.
OBC
If you use the Arduino stackable headers, you don't need to alternate boards using the inner, then outer, then inner rows on the GG board. I've been putting the 4 power supply headers on the inside rows, and putting all the data headers on the outside row.
This is a good idea and was also done with ribbon cables to avoid problems. For the GG board Dr A's idea of staggering the power and I/O connectors would also work as long as everyone is on the same page vis a vis which go inside and which go outside.
I've been pestering Nick about stocking stackable headers.. We'll have them in stock soon.
OBC
Re putting power supply pins on the inside row, there is no particular standard here and anyone can do what they want. In practice, you would solder your stacks the same way, but it wouldn't really matter if they were not compatible with someone elses (unless you were selling soldered up boards or something). The 'motherboard' sits on the bottom, and for the Gadget Gangster USB board I ended up putting two rows of SIL headers with every hole filled with a sil socket so all my boards are compatible with that one.
I've found another thing when building this stack (motherboard, SD board, key and display, external ram, 320x240 display) and that is (see photo) that some plugs are on one end and some on the other end.
So I've been redesigning boards so that plugs are on the left and "human interface" things are on the right. So an SD card goes on the right, as do leds and any buttons.
On the right are keyboard, mouse, vga, tv and audio sockets.
So at most one can fit maybe 3 plugs on each board, so I have redesigned the various combinations, so keyboard/mouse/sd/audio go together, and vga/tv go together.
The bottom board on this stack is a dracblade motherboard but it is interchangeable with a Gadget Gangster USB board.
I love the flexibility of these boards. A new stack wouldn't work, so it was easy to mix and match boards to quickly find the fault (I'd forgotten to solder in a pullup resistor - D'oh!).
All great fun