Input on Propeller Robotics Board? I want your Opinions, and Ideas!!
rwgast_logicdesign
Posts: 1,464
So a few weeks ago an old friend had gotten in touch with me, it turns out he was building a robot based on a laptop with a Linux/OpenCV/RobotOS software combination. He knows very little about electronics and microcontrollers, but he knows that he is going to need one in order to interface his laptop with the sensors and motors. So I went through the basics with and, hooked up an AVR, an Arduino, a Bs2, and a Propeller and showed him how to control a servo using each of them and explained there various advantages and disadvantages. He decided he wanted to go with a Propeller (no surprise there) and asked me to make a custom board. Later we agreed that in payment for my time designing and he would shell out for enough components to make two boards and have a batch of real PCBs made so I could try to make a bit of money selling these things.
Im curious as to what you all would like to see on a Propeller board aimed at Robotics. Right now as it stands this is what the board will have for sure..
Two switched regulators for 5v and 3.3vs both power rails will be 500mA. The point of this is so the board can be plugged in to any size battery up to 40 volts with no problem and not waste a ton of energy using the traditional Low Drop Out linear regulators found on almost every other commercial propeller board. When your doing robotics saving power is a huge deal. The other plus side is that even when everything else is dead your 3.3v system should still be up and running so you can have your bot send a beacon out to a host with its position or whatever you want. Im also planning on putting a DS1307 on board with a temperature compensated crystal oscillator for higher accuracy, I figure this may also be useful when most of the other power systems in a bot are dead, and probably needed if you’re not hooking a PC up to your bot. The other nice things are depending on the propeller chip itself ive been able to push my design up to 112mhZ when over clocking (thank you Sepheia and Cluso99). Would anyone be interested in a VCTXO, this would allow you to adjust the propellers clock without having a bunch of crystals around, the other solution is a programmable clock chip, JMG showed me one from SILabs which can generate 8 programmable clocks, this may be the way to go, not only for easy over clocking but also these lines could save a few propeller pins by generating the SPI clocks and such, I think. Im just not sure how important OCing is to everyone else really.
The next main requirement is obviously I/O depending on what sort of robot your designing you may need a lot of I/O. I figured first of all I would be adding an mcp3208 to give give the user 8 analog ports, thinking more about this though maybe I should use two ADC’s? Does 16 analogs I/O’s sound like overkill? The next is digital I/O I will be using a few mcp23018 chips which will give 16 GPIO pins a piece that are 5v tolerant, and are individually addressable and work just fine for slower things like PWM, and most digital sensor I/O. The idea is to add a second mcp23018 which is used to interface to two TLC5940 chips. The 2 TLCs will use 10 of the gpio’s and in return give 16 dedicated PWM lines that can also be used with servos.
So for I/O this gives us 32 dedicated PWM lines, 22 addressable GPIO @ 1MHZ, 8 or 16 Analog I/O. Costing a mere 5 to 8 propeller pins depending on number of analog ports.
The next thing is communications.. This is really where I need some input. Obviously you will have the serial port which is used to program the propeller, but that may not be enough. Im really not sure how many UARTs to add, but I was thinking maybe two FTDI chips, the one on pins 39 & 40 which that is the standard programming & serial line and then a second FTDI usb to serial. The thing is for myself I would really like two have two wireless UARTs using the HC05 serial over Bluetooth and maybe even experiment with getting the standard programming UART working over Bluetooth instead of a cable, this way you could wirelessly program your bit while its wandering around. But for now I guess right now what I know can be done is two Bluetooth UARTS and an FTDI based UART for programming, that’s 4 extra propeller pins, is there a need for wired UARTs?
Im also undecided on memory and storage..
There should definitely be an SD socket I know that, this is another 4 propeller pins. As far as EEPROM I have an idea but not sure if its what anyone else would want. Im thinking there would be a standard 24cl512 64Kbyte EEPROM so you would have room for your program and then the upper 32k for storage, what my idea is, is to add a jumper where you can select to boot from a separate 24cl256 32Kbyte EEPROM that is preprogrammed with boot from SD? It may be useful to have the ability to boot from either a hard EEPROM or SD with the flick of a switch, and this is at the cost of 0 propeller pins. What do you guys think? The next thought im wondering about is adding a 1Mbit QuadSPI sram chip on board at the cost of 4 propeller pins, this could be usefull for a lot of things including machine vision type stuff.
So here an overview of the board In basic form
Switched Power regulation 5v and 3.3v, board is easily Over Clock’able (On the flow Propeller clock clock Control?)
22 GPIO
32 PWM
8 Analog I/O
15 Propeller Pins
3x UART (1 wired, 2 wired or BT?)
DS1307 Real Time clock
SD socket
64KByte EEPROM (Add second for dual boot System?)
Adding another 8 analog pins will cost 3 more pins and and adding QSPI Sram will cost 4, both option will only leave 8 propeller pins, I could save 3 of those by tying the two ADC on the same SPI bus but then you wouldn’t have simultaneous access to them, i.e you could only read from one ADC at a time.
So any opinions or suggestions are very welcome! I want to know your ideas, what you guys would like to see!
Im curious as to what you all would like to see on a Propeller board aimed at Robotics. Right now as it stands this is what the board will have for sure..
Two switched regulators for 5v and 3.3vs both power rails will be 500mA. The point of this is so the board can be plugged in to any size battery up to 40 volts with no problem and not waste a ton of energy using the traditional Low Drop Out linear regulators found on almost every other commercial propeller board. When your doing robotics saving power is a huge deal. The other plus side is that even when everything else is dead your 3.3v system should still be up and running so you can have your bot send a beacon out to a host with its position or whatever you want. Im also planning on putting a DS1307 on board with a temperature compensated crystal oscillator for higher accuracy, I figure this may also be useful when most of the other power systems in a bot are dead, and probably needed if you’re not hooking a PC up to your bot. The other nice things are depending on the propeller chip itself ive been able to push my design up to 112mhZ when over clocking (thank you Sepheia and Cluso99). Would anyone be interested in a VCTXO, this would allow you to adjust the propellers clock without having a bunch of crystals around, the other solution is a programmable clock chip, JMG showed me one from SILabs which can generate 8 programmable clocks, this may be the way to go, not only for easy over clocking but also these lines could save a few propeller pins by generating the SPI clocks and such, I think. Im just not sure how important OCing is to everyone else really.
The next main requirement is obviously I/O depending on what sort of robot your designing you may need a lot of I/O. I figured first of all I would be adding an mcp3208 to give give the user 8 analog ports, thinking more about this though maybe I should use two ADC’s? Does 16 analogs I/O’s sound like overkill? The next is digital I/O I will be using a few mcp23018 chips which will give 16 GPIO pins a piece that are 5v tolerant, and are individually addressable and work just fine for slower things like PWM, and most digital sensor I/O. The idea is to add a second mcp23018 which is used to interface to two TLC5940 chips. The 2 TLCs will use 10 of the gpio’s and in return give 16 dedicated PWM lines that can also be used with servos.
So for I/O this gives us 32 dedicated PWM lines, 22 addressable GPIO @ 1MHZ, 8 or 16 Analog I/O. Costing a mere 5 to 8 propeller pins depending on number of analog ports.
The next thing is communications.. This is really where I need some input. Obviously you will have the serial port which is used to program the propeller, but that may not be enough. Im really not sure how many UARTs to add, but I was thinking maybe two FTDI chips, the one on pins 39 & 40 which that is the standard programming & serial line and then a second FTDI usb to serial. The thing is for myself I would really like two have two wireless UARTs using the HC05 serial over Bluetooth and maybe even experiment with getting the standard programming UART working over Bluetooth instead of a cable, this way you could wirelessly program your bit while its wandering around. But for now I guess right now what I know can be done is two Bluetooth UARTS and an FTDI based UART for programming, that’s 4 extra propeller pins, is there a need for wired UARTs?
Im also undecided on memory and storage..
There should definitely be an SD socket I know that, this is another 4 propeller pins. As far as EEPROM I have an idea but not sure if its what anyone else would want. Im thinking there would be a standard 24cl512 64Kbyte EEPROM so you would have room for your program and then the upper 32k for storage, what my idea is, is to add a jumper where you can select to boot from a separate 24cl256 32Kbyte EEPROM that is preprogrammed with boot from SD? It may be useful to have the ability to boot from either a hard EEPROM or SD with the flick of a switch, and this is at the cost of 0 propeller pins. What do you guys think? The next thought im wondering about is adding a 1Mbit QuadSPI sram chip on board at the cost of 4 propeller pins, this could be usefull for a lot of things including machine vision type stuff.
So here an overview of the board In basic form
Switched Power regulation 5v and 3.3v, board is easily Over Clock’able (On the flow Propeller clock clock Control?)
22 GPIO
32 PWM
8 Analog I/O
15 Propeller Pins
3x UART (1 wired, 2 wired or BT?)
DS1307 Real Time clock
SD socket
64KByte EEPROM (Add second for dual boot System?)
Adding another 8 analog pins will cost 3 more pins and and adding QSPI Sram will cost 4, both option will only leave 8 propeller pins, I could save 3 of those by tying the two ADC on the same SPI bus but then you wouldn’t have simultaneous access to them, i.e you could only read from one ADC at a time.
So any opinions or suggestions are very welcome! I want to know your ideas, what you guys would like to see!
Comments
Again there are many choices, if you are able to provide pcb space for a simple "solder your connector, plug-in & go" you will have greater chances for success.
Same thing regarding RF (xbee, nRF24L01, ble, etc)
Your price tag is another requirement that will drive design and limits the features you might include or you may provide as an user expansion (either with plugin modules or solder your chip options)
Whatever you decide to provide included should be of enough low BOM as to not deter users that are not wanting that feature from buying your solution.
Good luck and let us know of the outcome!
Alex
as far as interfacing i was thinking id just breakout standard servo ports for all the pwm pins. the rest would be grouped gpio/prop/analog with groups of female headers. A better option may be to take some of the i/os and make an arduino compatible pin system. im not sure but i may be able to just use the mcp23018 pins for arduinos digital pins. not sure if arduinos digtal pins are faster than 1mhz though.
that is a good point though id really like to know what people think the ideal way to group all these pins togather is...
judging by the fact ive got no responses to this thread really is making me double think this idea, this is a big exspensive board to put all this work into and not sell. i definately dont need 32 pwms or slot of this in my bots but i was trying to take into account the people making walkers and humanoids too