I received the V0.3 prototype boards for the Jetduino last week and I put one together and tested it over the last few days. The reflow portion went well this time and I was able to significantly reduce the time I needed to heat the board to get solder to melt for the joints. However, as I was soldering on the parts my soldering iron started going on the fritz. I believe the heating element is dying on me as I had a lot of trouble getting it hot enough to melt the solder consistently. Sometimes it would work and other times I had to mess with it for a while. I have been using a Weller iron, and this is the second one I have gone through in over a year, so I decided to buy a Hakko soldering station instead. I should get that soon. Even though I was able to finish the soldering on the board, the inconsistent heating still caused some problems for me with several bad solder joints that I had to track down and fix. I was finally able to get that done so I could perform a series of tests. Here are some images of the Jetduino.
I tested the various I/O lines on the Jetduino. The only issue I found was something odd with the PU0 line. I ran into this same problem with V0.2 board as well, but at the time I thought it was caused by damage to the GTL chips due to keeping the heat on too long. The problem is when I try and use the PU0 line as an output. When I put a volt meter to the PU0 line I can command it to go high and low and it does go from 1.8V to ~10mV. However, when I hook it up to the level shifting circuit it suddenly only goes from 1.8V to about ~1.6V. The other PU I/O lines all work fine with the exact same circuit. They go from 1.8V down to a few millivolts still, and I can use them to drive external circuitry.
When I tested V0.1 of the Jetduino I used a different Jetson with an older Grinch kernel on it. I did all my initial design and testing on that one. I switched back to that Jetson and the PU0 line on it worked fine. I also tried using PU0 with a bread-boarded version of the GLT2010 circuit, and with a BSS138 transistor circuit. In all cases it behaved the same with the 21.4 kernel. I can use PU0 and the other I/O lines as inputs with no problems. I poked around a little to try and figure out what is happening, and compared the pinmux definitions on the two kernels, but they are the same as far as I can tell. I have posted something on the NVIDIA forum about this, but so far no one has any comments. One possibility is that at some point in the past I somehow damaged the PU0 line on that Jetson. I plan to setup a third Jetson with the 21.4 kernel so I can test this. If it behaves the same way then it is most likely not a hardware issue. I also plan to upgrade my other Jetson to the latest Grinch kernel and see if it works still. If you have any suggestions then please let me know.
In the last post I described how I was changing the board to allow it to work with any Uno or Mega form factor. As part of this change I modified the shield to use the GEN1 I2C line for communications between the Jetson and the micro-controller. So it is imperative that you make sure the jumper for those lines are set to the correct voltage for the board you are using. For an Uno or Mega it must be set to 5V, for others like the Due you must set it to 3.3V. I tested the Jetduino with several different micro-controller boards. For the most part I only ran some basic tests like digital read/write, analog read/write, and servo control. I have not yet done extensive testing with all the different Grove modules to make sure they all work. Here are the results for each board I tried:
Aside from one major problem, and a few minor issues, I believe the Jetduino is production ready. I plan to fix what issues I can prior to having the first assembled boards produced. Here are the main issues I found.
The only major problem I found is related to the large capacitor placement. I moved one of them too far inward as shown in figure 10. Unfortunately, this blocks you from stacking another shield on top of the Jetduino's shield. So I will need to rearrange the layout of the power filter circuit to move this down some more so it does not interfere with the ability to stack on additional shields.
Another issue I did not notice till I was trying to use the new board is that the USB plug to connect the mico-controller to a computer is blocked by the hard drive power cable. See figures 2 and 8. This was never an issue with the Due since it uses a secondary programming USB port that is shifted over to the right. However, the other ones like the Mega and Uno have the larger USB connector that is just barely blocked. I am not sure there is anything I can really do about this though. Potentially, I could move the shield over a bit, but then I would get into an issue again with it possibly blocking the mounting post with the Jetson, and it would require that the board be enlarged.
For the most part, I do not see this as a big issue. You will primarily only be using the USB when uploading the firmware, or possibly during debugging. When the robot is actually moving around you will not need the USB connected. So when you need to upload the firmware you will need to disconnect the power to the hard drive, and then plug it in when finished. Please let me know what you think about this. Do you feel it would be better to enlarge the board and move the shield over, or is leaving it where it is acceptable?
Another minor issue I found is that the holes I put in for the 3-D printed antenna holder are covered up by the HD power connector and need to be moved over.
As part of the issue with my soldering iron I learned that I need to make the pads on some components a little larger to make it easier to solder onto them.
After I posted the last update I made one more major change to the board design. I decided to remove the integrated smart servo control from the Jetduino board. I would like the Jetduino to be as general as possible, and this seemed more like a feature that would only appeal to a small subset of people. Instead, I decided to create a small Grove Smart Servo board that can be used with any Arduino system. It has Grove connectors and standard 0.1" male headers for communications with any Arduino style board. You will be able to use this with the Jetduino like any other Grove module, and I plan to leave the smart servo control code in the Jetduino code base. I will need to update it to allow you to configure the I/O lines it needs to use though. I plan to start selling these modules very soon. I should receive the first boards in a few days. As soon as I can build and test them I will start offering them for sale.
As soon as I get my new soldering station I plan to start building several Jetduinos. Once I have them tested I will announce the contest. I have a few Jetduino boards that are committed to some people, but I plan to give away two boards as part of the contest. So if you have not signed up for my newsletter please subscribe so you can be notified when the contest starts.
I was not idle while I was waiting for the new Jetduino boards to come in. During that time I was working on the ROS systems for the JetduinoBot. I was mostly focused on getting a simulation environment setup. I produced a lot of really cool meshes to build up the JetduinoBot body model. I will be discussing this in more details soon.
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.