Hmmmm, I seem to have tripped over a very weird problem. I am unable to program my BotBoarduino from Linux Mint 15. I’ve tried the distribution version (v1.0.3), v1.0.5, and v1.54 of the Arduino IDE. I am unable to program my BotBoarduino with any of these. Every one of these versions programs a true blue Arduino Diecimilia with the Atmega328, using the same IDE settings.
I am in the middle of rebuilding W.A.L.T.E.R. (the basic platform is all assembled and wired with motors and motor controller). I want to use my BotBoarduino as the locomotion and basic sensory processor. However, I can’t do that right now due to this programming issue.
Has anyone else run into any weirdness trying to program the BotBoarduino with any Linux distribution? If so, has anyone solved this kind of problem and how?
I have been meaning to try it out for awhile. I have Linux Mint 15 Cinnamon (64 bit), installed on an Intel NUC (I5, 8gb mem, 128gb), I had already downloaded Arduino 1.5.4 to this, but had not actually tried programming a board with it. I have noticed a few display issues with Cinnamon where when you are looking at the menu, the selected item does not display properly (like white text on white background).
So this morning I got out a BotBoarduino and plugged it in. I started up the IDE, which asked if I wanted to Run In terminal, clicked that button, I then opened the blink example program, Selected the correct board and then tried to select the proper comm port, and the menu item was disabled… Tried upload which failed. Closed IDE.
Then I went to a terminal window, cd to the IDE and ran it using sudo and the ide came up and now when I go to the Port menu item, it shows two items
(/dev/ttyUSB0 and /dev/ttyS4). Selected the the USB0 and the download worked.
I then downloaded 1.0.5 IDE and it also worked using sudo.
Again I am running 64 bit, but my guess is the same for 32 bit.
Kurt
Edit: after doing a little more research I found that I did not have the proper permissions, so I then used the following commands:
sudo adduser kurt dialout
sudo adduser kurt tty
I then logged off and then logged back on. I then started up the command without being super user and the comm ports showed up. Did not try to program it, but hopefully would work
@Kurte, if you need to use sudo, it is likely because your normal user (assuming ‘kurte’) isn’t part of the ‘dialout’ group. If you do
sudo adduser kurte dialout
and then log out and in again (for the group change to take effect), the you should be able to run Arduino as your normal user.
@Dale, we tested the BotBoarduino with Ubuntu 13.04 Desktop 64-bit and confirmed that does work. If you are able to upload to the Diecimilia, then it is unlikely that you have the dialout group problem. Have you chosen the “Arduino Duemilanove w/ ATmega328” from the Tools->Board menu?
I have my userid in the dialout group, and have selected “Arduino Duemilanove w/ ATmega328” from the IDE Tools->Board menu.
I just added my userid to the tty group and rebooted my laptop. Strangely, I can now program my BotBoarduino! This is excellent! I did NOT have my userid in the tty group when this was not working.
Now, I can proceed with testing my sensors and servos for W.A.L.T.E.R. and hopefully I will have him moving around sometime later today, under control of my BotBoarduino.
Now, it isn’t working again. I may have blown my BotBoarduino. I plugged a Ping sensor into a digital pin backwards. Now, I am just getting garbage from the BotBoarduino.
I think I just damaged pin 3 on the board, but will have to do more checking on that. Otherwise, everything seems to be working as it should. It’s annoying that Linux seems to like to swap my BotBoarduino from ttyUSB0 to ttyUSB1and back again though. Very strange. It’s a good thing I won’t be using my BotBoarduino with Linux!
I did discover that I have one bad Ping and one bad GP2D12 IR sensor. I wasn’t happy about that, but at least I know now rather than finding out after they are mounted on the robot. This still leaves me three good GP2D12 and one good Ping, which is enough to get W.A.L.T.E.R. working properly.
Now I have to test my motor controller and the motors and servos. I’m going to use my shiny new SSC-32 for servo and motor control. That’s overkill now, but it won’t be in the future.
I know what you mean about ttyUSB0 can become ttyUSB1. It all depends on the order the devices are enumerated. For the Raspberry Pi and Beagle Bone black, I did not want to have to deal with this in the code for detecting which usb device was an SSC-32 or an XBee or a … So I used the linux capabilites of setting up rules in a file /etc/udev/rules.d/…
Where I detect which FTDI device is inserted and create a symbolic name for it like: ttyXBee or ttySSC-32, which I use in my code.
I was able to create one on the NUC for the Botboarduino (which I named /dev/ttyBBuino). Unfortionatly it does not look like the Arduino IDE will pick up this symbolic link.
If you are interested I put notes about this as well as other things I have pickedup as I have been learning linux on several different boards up in the Readme.md file that is part of my Raspberry_Pi project up on github (www.github.com/kurte/Raspberry_Pi)
Great idea! I need to master this technique too! I need to do it for my BotBoarduino, SSC-32, Rasberry Pi, etc.
This is too bad! Well, the Arduino IDE is still broken in a few places, so this is really not too surprising.
I already have you bookmarked! Good work on all this stuff!
I am working on a Device Control System, in Python at present, that can control small smart devices over a messaging network called App.Net, which I am very active on. I have a developer account. I successfully controlled two LEDs on my Rasberry Pi from my laptop last night, using my DCS!!
I have a Python master that runs on the laptop, and a Python client that runs on the Pi. The master sends messages to the Pi over an App.Net channel, the Pi reads the messages from the channel that are addressed to it, and then processes them. Only one App.Net account is required for as many devices as you want to connect up. I have a red and green LED wired up to my Pi, which can be controlled from anywhere. I’ve been working on this for over two months and have written almost 3000 lines of Python code for the Device Control System so far. I’m also working on a way that smaller devices, like Arduinos, can be connected up. If a device has some sort of wireless capability, it is very likely I could connect it up to my DCS and control it, but it has to be able to communicate through App.Net and read messages from a channel. With as inexpensive as the Rasberry Pi is, I’m not sure I would want to deal with anything smaller for the DCS.
Back to BotBoarduinos! I have a working IR and Ping sensor connected to the front pan/tilt of my robot now, and just have to add the tilt servo (a Hitech 645). I’m going to use my SSC-32 for all servo and motor control, as I have done in the past. I hope to have my robot rolling around within the next couple of weeks or so.
I love this little BotBoarduino board, and it is a pleasure to tinker with because it has all the right stuff on it. It’s the only Arduino compatible board I tinker with now. I don’t know of any higher endorsement I could give the BotBoarduino. Lynxmotion did Arduino right!! I am looking forward to writing a lot of code for it.