I am confused about which Arduino board I should select in the IDE as I couldn’t find it explicitly called out in the product page or documentation. Should I select Duemilanove?
The only reason I ask is because the comments for the main sketch in the github repository specific that the latest build now supports Arduino Pro Mini.
Also, for the PS2 controller, should the “ANALOG” button be pressed / active? I am not using the Lynxmotion adapter but rather I am just running male / male jumpers from the controller’s plug to the botboarduino.
For the board, please choose board Duemilanove and chip ATmega328. As a side note, the Due is very similar to the Uno with one major difference: the Uno uses an AVR chip as the USB interface whereas the Due (like the BotBoarduino) uses an FTDI chip for the USB interface.
For the controller, the analog button should be activated to use both analog joysticks. Are you using a Lynxmotion PS2 v3 controller?
No, not using a Lynxmotion PS2 v3 controller. I am using a PS2 controller I picked up at a second hand store. I have a couple so I will try the second one today (in case there is an issue with the first controller).
Still no luck getting the Phoenix to work.
Set the Arduino board to Due and successfully uploaded the sketch.
Set the baud rate on the SSC-32 to 38.4k
Getting solid green light on the SSC-32 but I triple checked the serial connections between the SSC-32 and the botboardduino.
Any other typical areas to double check.
I have a second kit so I am going to start with just the botboarduino, the SSC-32, and one servo to see if I can get the servo moving. I’ll write a very basic sketch to sweep the servo.
Be careful with PS2 controllers as many of them are not 5 V and may not work with the BotBoarduino when connected directly or even damage the microcontroller.
Please provide one or more pictures of your setup so we can help determine the issue. Make sure to clearly show all connections going to the SSC-32 and the BotBoarduino, including all serial connections, power connections and jumpers.
Trying it out a simple kit like that may be good to figure out any wiring issues. If you need details on the commands used by the SSC-32, you can check the manual here.
As mentioned earlier, the DUE board is not at all compatible with the Botboarduino, so I can not imagine it would work.
Choose the Arduino Duemilanove or Diecmila (ATmega328) board.
The handling of different PS2’s can be tricky. Not all are created equal. For example all three versions of the Lynxmotion one have acted differently. So if it were me, one of my first steps would be to run one of the simple PS2 test programs. I know there were some that are posted up here or are up on the old Lynxmotion website…
Next up I would confirm that your SSC-32 is configured to the same baud rate as the code. It has been a long time since I looked at the Lynxmotion code base, so I don’t know how much different it is than my code bases up on github (kurte).
Is there a manual for the botboarduino - i.e. what the push button A, B, and C are for. And, what do the red, green, yellow LEDs do - appear to be marked D4, D3, D6 (are the just connected to those digital pins just like the LED marked L under the PWR LED is connected to digital pin 13)?
Also, I am little confused on addressing pins on the BotBoarduino. (I have it oriented with the terminal block and USB connector to the left, typical Arduino pins across the top, and the I2C pins along the bottom). I wrote a simple sketch to flash the LED marked L (under the PWR LED). I referenced this LED a pin 13. But there are also pins along the right side of the board and looking at the code for the Phoenix, the right hand side pin 13 is used for the serial connection to the SSC-32 board. Are they both addressed as pin 13 and I just have to know not to use them both?
Yes, there is a manual for the BotBoarduino. You can view it here.
Pins on the right side of this picture are the same as the ones found on the top row. This setup was made to ensure compatibility with Arduino shield (top & bottom row of female headers) while allowing the extension for easy servo motor connections (right side male headers). Therefore, if you use any of the pins numbered 2-13 on either the top row or the right side, you cannot use it on the other since they are all linked internally.
Please note that for the right-side pins, the inner column is the signal pin/GPIO, the middle one is VCC 5V / VS (may be higher depending on VS power source) and the column near the end of the board is the GND.
Concerning use of the SoftwareSerial library with the BotBoarduino, you must use pins 12 & 13 for proper function.
Kurte,
Thanks for the clarification regarding the Due board. I mistyped; I meant to say that I selected Duemilanove and successfully uploaded the sketch. Some how stopped typing at “Due”.
Sebastien - exactly the info I needed. I wrote a very simple sketch - serial communication to the SSC-32 board to move a single servo - and successfully uploaded it to the botboarduino. It worked. So, I know I wired / connected everything properly on the hexapod.
Taking a step back and coding up a very simple sketch with just the botboarduino and the SSC-32 with one servo connected was a very helpful exercise to ensure that the jumpers, serial communications, etc were correctly wired. I was amazed at how little code was required to move a servo.
Kurte - Next up is to trouble shoot the PS2 controller. Thanks for the background on “not all controllers work the same way”. I think that I saw some controller test / sample code along the way. I will track it down and try it out.
Again, I really appreciate your feedback / support. I post an update in a few days once I play around with the controller issue.
Got everything working but still have some issues and questions.
Question 1: You’ll see from the sample code above that I set the baud rate on the SSC-32 and in the code to 38.4k. I used that because that’s what the same code had. But, now, I re-read the assembly guide and it states that the SSC-32 is setup for 115.2 baud. Can I use the higher baud rate (115.2) for the botboarduino to SSC-32 communications (I guess I could just try it)?
Issue 1: I am having an interesting logic power supply issue. When I use the single 9v battery to power the logic on the SSC-32 and the botboarduino, the hex doesn’t work - can’t seem to get any serial communications between the two boards. The SSC-32 is powered - solid green LED just above the DB9 port. However, the PWR LED on the botboarduino pulses - it’s not exactly a blinking because it doesn’t look like the LED turns off all the way but rather just dims and then goes back to normal brightness. But, if I run a 5v power to the botboarduino (i.e. via a USB connection) and a separate 9v power to the SSC-32, everything works fine (looks like the only common ground point is the serial connection ground).
On the SSC-32, I have left the VS1=VS2 jumper in place (the power for all servos is coming from a battery pack on VS1). I did remove the VL=VS jumper. In addition to connecting the positive wire from the 9v battery connector (I added a switch inline) to the SSC-32’s VL positive terminal, I ran another wire from the SSC-32’s VL positive terminal to the botboarduino’s VL positive terminal. Likewise for ground from the 9v battery connector.
On the botboarduino, I have the VS=VL jumper in (didn’t think it mattered since I was only bringing power in on the VL terminal) and the jumper for USB vs ext is set to USB. Logically, it seems that this jumper should be set to ext but I have it set to USB on my bare bones setup (my spare botboarduino and SSC-32) and it works fine as is on that system. I would switch the jumper on my built hex and try it out but that would mean dismantling it in order to get to the jumper.
It’s a fresh 9v battery - reads a little more than 9v on the multimeter.
As a work around, I was going to run 5v from the botboarduino to the SSC-32’s VL terminal (5v into the botboarduino’s USB plug) but then I read that the SSC-32’s logic operates on 6v - 9v so that wouldn’t work.
Wondering if anyone has run into this VL power issue before.
A fresh 9V battery should be able to power the logic of both the SSC-32 and BotBoarduino without issues. Since you mention having the BotBoarduino on USB instead of EXT, that would definitely be an issue since this means the board will ignore power coming in from VL. We recommend that you change that jumper ASAP or for the time being provide power to it using a long USB cable while doing your tests / calibration. You may be able to change the jumper to EXT without dismantling the hexapod with some dexterous manipulation of the jumper using long nose pliers.
If you change the speed to 115200, make sure to change it both in the code and the hardware (SSC-32 jumper’s). We recommend that you stick to 38400 since it is plenty fast enough for the hexapod and slower speeds usually result in more signal power / less signal noise.
I just completed the build of my Phoenix hexapod. Instead of the botboarduino and SSC-32 hardware, I am using a Raspberry Pi 2 running Windows 10 IoT Core and servo control hats from Adafruit. It’s not nearly as smooth - movement wise - as the example software that Lynx provided but I will continue to work on the movements and refine them. And, since I am using Windows 10, I am using an Xbox controller rather than a PS2. Once I get the movements better coordinated, I will ditch the controller and make it a little more autonomous.
Thanks to those who responded to my questions on this forum a month or so ago when I was getting started. I appreciate the help.
Note: I have not use the servo control hats from Adafruit. But have run a RPI connected up to SSC-32U. Note these days, I am mostly instead working with robots that are using Dynamixel Servos (AX-12) and using something like an USB2AX (you can purchase from Seeedstudio), or Arbotix Pro (Trossen), or my own boards using Teensy 3.1 or 3.2 boards.
But as you have noticed, you can run into issues of it not being as smooth as running it all on simpler boards like (Arduino or Teensy or …). This is because with the simpler boards you are directly in control on when things are done. where with boards like the RPI, you are running as a task under scheduler…
Note: my stuff up on github is setup to run with Linux. So far I have not tried anything out with Windows 10 on any of these boards, so I don’t know how much would need to change.
Hopefully you are having some fun!
Kurt
As for smoothness while running under Linux. Yes there can be issues