Arlo with Eddie board
Hi,
I bought an Arlo some years ago where the Eddie controller card was still included.
I'm trying to use it with the Firmware that is available here: https://github.com/ddegn/EddieFirmware
However, I don't really get it to work. E.g. the command TURN doesn't do as I understand it should.
When trying the example in the Firmware documentation: https://www.parallax.com/sites/default/files/downloads/550-28990-Eddie-Command-Set-v1.2.pdf
TURN FEF1 4B
Should turn the robot -271 degrees but it turns ~90 degrees. However, when trying
TURN 005A 64
i.e. turning 90 degrees with the speed of 100 pos/s everything works fine. The next confusing thing is that
TURN 005A 14
i.e. 90 degrees with 20 pos/s, doesn't work (only turns ~30 degrees).
Am I missing something here?
I bought an Arlo some years ago where the Eddie controller card was still included.
I'm trying to use it with the Firmware that is available here: https://github.com/ddegn/EddieFirmware
However, I don't really get it to work. E.g. the command TURN doesn't do as I understand it should.
When trying the example in the Firmware documentation: https://www.parallax.com/sites/default/files/downloads/550-28990-Eddie-Command-Set-v1.2.pdf
TURN FEF1 4B
Should turn the robot -271 degrees but it turns ~90 degrees. However, when trying
TURN 005A 64
i.e. turning 90 degrees with the speed of 100 pos/s everything works fine. The next confusing thing is that
TURN 005A 14
i.e. 90 degrees with 20 pos/s, doesn't work (only turns ~30 degrees).
Am I missing something here?
Comments
I didn't have an Eddie board to test the software I wrote. I used an external H-bridge to simulate my guess of how the Eddie board would behave.
That said, I'll be glad to try to get the new version of the firmware compatible with the Eddie board.
I my Arlo hardware up and running using a Quickstart board with a dual MC33926 h-bridge.
One of the things I had forgotten about was the way the code stops the motors when there hasn't been any UART command for one second. To change this use the command:
This turns off the internal kill switch. You can experiment with other values once you get your robot up and running.
I personally prefer to use decimal based commands. The following commands will cause the program to accept and output decimal values rather than hexadecimal.
I changed line 76 of the header to:
The constant had previously been set to one which works with the HB-25 motor controllers but not the MC33926 h-bridge.
Type the following commands and count the number of times your robot rotates in place.
The robot should rotate ten times. Make sure to note the start orientation and compare it with the final orientation. If the final orientation is different than the initial orientation, we may need to adjust some of the constants.
As a debug aid, I included debug statements in the code. To activate the debug feature use the following command:
The above command will provide the greatest debug output. A lower value will result is less information being sent to the terminal. Using a parameter of zero with the DEBUG command will turn the debugging back off.
You can change back to hexadecimal input with the following:
A reset or power cycle will also switch back to hexadecimal mode.
Now that I have my hardware hooked up, I should be in a better position to answer your questions.
Thank you so much for all your help!
It took me a bit to get up to speed with the Ping code but I think I'm starting to understand some of the trouble. One of the problems with the present code is only two Ping sensors could be used without changing the constant "PINGS_IN_USE" in the header. I've changed to to allow "MAX_ALLOWED_PINGS" which is set to 10 rather than 2.
Many Ping objects, including the one used in this firmware, have an issue if no Ping sensor is connected. In these cases, the code will hang as it waits for the Ping's pin to change state. I believe in an attempt to watch for a possible hanging cog, I included the variable "pingCount". This variable is incremented each time a Ping sensor is read. This variable would allow one to see if the Ping monitoring cog was blocked. Unfortunately I didn't include a way for the user to monitor this value. The attached code adds the command "PNGC". This returns the value of the pingCount variable.
By default, two Ping sensors are assumed in use. If only one sensor is used, the SPNG command should be used to set an appropriate pin mask. For example, if a Ping sensor is only used on pin #0 use the command "SPNG 1".
I haven't finished my investigations why PNGP (pause Ping monitoring) causes the firmware to lockup. I'll report back here when I figure this out.
I have my Ping sensors mounted on pan/tilt mechanism. In order to position these devices I added the "SERVO" command to the firmware.
SERVO <pin> <pulse length>
The parameter pulse length is in microseconds.
It's been a lot of fun revisiting this project. Feel free to continue asking any questions you might have.
Edit: Added the zip file.