As I mentioned in the last post on the Jetduino, I have been concerned about a few things with the current design. The primary worry I have is that it is simply too expensive. A second concern I have is that it is locked into using the Arduino Due. I originally chose the Due because I really wanted to have the extra speed and processing horsepower that a 32 bit controller provides. I also wanted the Mega form factor with the larger number of additional I/O, I2C, and serial lines. However, those are not necessarily the same priorities that others may have for their project. Also, the Due is kind of the weird step-child of the Arduino world, and is the least supported of the bunch. Who knows if at some point they may just replace it entirely? So in addition to price concerns, I also really wanted to see if there was some way to open it open to be more flexible in the Arduino types it can use.
Looking at the pricing, a reasonable chunk of the cost is tied up in performing the level shifting of the Due's 3.3V signals to 5V. Getting rid of that would let me eliminate a number of expensive parts. A suggestion from one of the forums where I post updates on the Jetduino helped lead me to a solution to both of the main concerns I have. Clem Martins asked if I had considered using the ChipKit boards from Microchip. ChipKit boards are an alternative to Arduino that use PIC micro-controllers instead of Atmel. They have a different IDE that still uses Arduino sketches and can program both ChipKit and Arduino boards. The good thing about them though is that they are 5V tolerant, where until recently the Arduino boards were not. Early on I had considered this, but Arduino is so ubiquitous now that I dropped the idea.
However, the new Arduino 101 was released not long ago as a replacement for the Uno, and it also has 5V tolerant I/O. This sparked a new idea for how I could reduce costs for the board, and make it more flexible. I plan to remove the level shifting on the shield almost completely. The only level shifting that will be kept on the shield is for the RX1 line for reading from the smart servos. If you need to do something with the micro-controller section where it has to use 5V then you can choose to use a 5V tolerant board. For example, if you really need a Mega form factor that must interface with 5V devices, then you need to use an Arduino Mega, or if you also really need 32 bit speeds, then you need to use the Max32 ChipKit board instead.
The cool thing is that this opens up the Jetduino for use with any Uno or Mega form factor board. So if you only really need a dirt-cheap Uno for what you want to do then you can pop it on and use that to reduce your overall cost. Or for a little more money you could upgrade to the Arduino 101 instead and get 32 bit processing speeds. It frees the board up so you can decide how you want to use it instead of locking it into using the Arduino Due, while at the same time eliminating a decent number of parts and reducing the cost.
Another way I have been trying to reduce costs is to eliminate anything that is redundant, or that can be moved off the board with another part. After the first version I had planned on adding an additional ADC chip with I2C communications to the Jetson. I removed this entirely. There is no real difference between what this is doing and just having the Arduino do it, and it added a significant expense.
I also eliminated the USB power circuitry. It is up in the air on whether I will even build the Jetson USB hub at this point. I got very little feedback that this was something anyone wanted. However, to leave the option open for building it in the future, I have instead added header pins to the filtered power supply where a 5V DC-DC converter can be connected. If you want to use the USB hub this would give you the option of doing so, but would not force every board to have the power supply for it.
Version 2 of the Jetduino also had mounting holes for two WiFi antennas. Unfortunately, even though I mocked it up, the hole for one of them still interfered with the HD SATA cable. Trying to find a place to add these mounting holes is a real challenge, and causes the board to have to be larger. I have decided to not have these on the Jetduino main board. Instead, I have added two M3 holes where you can attach an antenna mounting board. I plan to offer a small 3-D printed part that will allow you to mount the antenna's to the board, or elsewhere, if you want. This allows me to reduce the length of the board to be just a few millimeters larger than the Jetson.
Finally, I also consolidated part types wherever possible. A good example of this is that in the first version I had three different RobotGeek 3-pin headers. I had a 19 pin, a 12 pin, and an 11 pin part. For each of those I would need to get a minimum order quantity of 1000, and that adds up fast. In the latest version I consolidated this to a single 12 pin type for all three positions. This meant that I had to eliminate the remaining 7 pins from the digital I/O section though. You will still have access to all the I/O using the stackable header, but only the PWM I/O will be available on the 3-pin headers.
One thing that is seriously increasing the price of the Jetduino is the fact that it needs a second board to act as a connector. I really do not understand why NVIDIA choose such a weird 2mm female header for the TK1. I guess they did not really think anyone would want to use this board for these purposes, or they were focused only on a specific use case and reducing the footprint, but it provides us with a headache. Even a male 2mm header would have made much more sense. I am glad they decided to fix this with the TX1. The problem is that there is a lot of cost in just having a board produced and shipped that cannot be reduced, so having to have the connector at all adds a decent amount to the total. One thing I am looking to do to reduce the costs for this part is instead of using 3x25 and 2x25 2mm headers, I am going to only use a few, smaller single row headers where they are needed. The Jetduino only uses a small percentage of the lines coming from the full headers, and those other connections are simply wasted money. Only paying for headers that are used will help me reduce the price, but having this connector still hurts the overall total.
I also got feedback that some users may not care at all about the Grove and RobotGeek connectors. They simply want the base board with the level shifting functionality so they can more easily communicate with the Jetson. To address this, I plan to offer two versions of the Jetduino. The first will be a low-cost, bare-bones version. It will have the level shifting circuits for the Jetson, the power filter circuits, and the stackable headers for an Uno form factor Arduino. The second option is the full-up board with all the parts on it. The board layout will be exactly the same in both cases. The difference is that a lot of the other parts will not be added on during assembly for the bare bones version. So it will be missing the other Arduino stackable headers, the Grove and RobotGeek connectors, and one screw terminal from each power source. However, I have made all of these parts through-hole components, so if you purchase the bare bones board then you will be able to order parts from me later and add on just want you need. For example, say you do not care about the Grove and RobotGeek parts, but really want to use a Mega form factor. I will have the other stackable header parts available for purchase, and you can then solder those parts on yourself.
Below is a recap table showing what features will be available for the two board options, and the estimated price for each one. Please keep in mind that these are estimated prices. I believe it is a good estimate, but there is the possibility it will change slightly in the final version.
Each Jetduino will include the components listed in table 2 with the base price. The antenna mounting board and DC-DC converter will be optional add-ons that can be purchased separately. Also, please note that an Arduino will not be included by default. You will need to supply your own, or purchase one as an optional add-on when getting the Jetduino.
I was a little annoyed with myself that I did not see these things earlier, and that I will have to build yet another prototype board. Once I started looking at the final costs, and took into consideration some of the feedback I received, it kind of popped out at me though. I believe these changes will make the Jetduino less expensive and far more flexible. This will make it easier for you to choose how you want to use it, and make the robots you want. Please feel free to leave comments, feedback, and suggestions. As you can see, I am trying to take this into account and adjust based on the feedback. Are these prices reasonable? Is there some ultra-cool feature or change I have not thought of that needs to be considered? There may be some things I can change, and others I may not be able to alter, but I would still love to hear what you think. I plan to wait a couple of days before ordering this new version to see if there is any relevant feedback that may change things.
Finally, once this version of the prototype board is complete and tested I plan to have a contest where you can enter to win one of two Jetduino prototype boards that I will build by hand. After the contest is over I also plan to launch the crowdfunding campaign. So if you have not already subscribed to my newsletter then please join up so you can be informed of new developments, and when the contest begins.
Please subscribe to my Newsletter!
NeuroRobotic Technologies is dedicated to creating the next generation of intelligent, adaptive robotic systems by building autonomous controls systems that mimic the brains of real animals.