Pages: [1] 2   Go Down
Author Topic: What's next after Arduino?  (Read 4556 times)
0 Members and 1 Guest are viewing this topic.
Chicago
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
Conquering the world, one BattleMech at a time...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello all-

So I've been playing around with my Arduino for a few months now, and I love the thing. However, I think I'm ready to move onto bigger things. I want to learn how to basically wire my netbook to a roomba and drive it, or basically use a computer to replace the arduino. I guess I'm looking to head into more professional applications (by no means am I slighting the Arduino, I love them, and own 3). What is my next step? I've tried googling it, but I can't find what my next step should be. What's the programming language, whats the UI, whats the board that I'll plug into my computer to interface with servos? Can I use it with LabView?

So many questions, any guidance would be greatly appreciated. I'm starting an education in the robotics industry, and would love to learn where I should focus, and where to start. Any info would be greatly appreciated! Thanks!
Logged

New Hampshire
Offline Offline
God Member
*****
Karma: 17
Posts: 781
There are 10 kinds of people, those who know binary, and those who don't.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

http://www.ros.org/wiki/
http://opencv.willowgarage.com/wiki/
Logged


Chicago
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
Conquering the world, one BattleMech at a time...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I've looked at ROS (the Robot OS), but dont see any tutorials on actually implementing it. One of my favorite things with Arduino was its low barrier-to-entry, where anyone can learn it. I guess I'm looking for the same.
Logged

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 40
Posts: 5594
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Why not use the Arduino (or multiple Arduinos - or, more like, multiple standalone 328s) to interface to the servos/motors/sensors, and communicate with them using the laptop/PC/whatever? In other words, make your "end components" "smart", and communicate with them using a PC.

If you don't have enough USB ports, then you could, potentially, use a single "master" Arduino, the Wire library, and have the other Arduinos (remember, these are likely all going to be standalone instances - I am just using the term "Arduino" as a placeholder) be "slaves" over I2C/SPI. That way, only the master Arduino needs a USB connection, and the slaves are just hooked into the master I2C/SPI adressable bus.

Another option would be to give each Arduino an ethernet interface, then connect them to the PC via a small switch (a variant of this would be to put groups of Arduinos, using the master/slave I2C/SPI concept above, with the master having the ethernet connection - grouping could be based upon logical end-uses: Sensor Group, Servo Group, Motor Group, Arm Group(s), etc).

A benefit of such a system would be that as a standalone type distributed system, you could give each a level of autonomy, error reporting, etc - it could be configured in such a manner so that should something go wrong, that portion could be shutdown automatically, and throw a flag that the main PC could be looking for to indicate an issue (and either take action or just pop a log entry or something). Also, you could easily do "set and forget" functionality, so that the main PC (or the "master" Arduino) wouldn't need to get bogged down in coordination and control issues. Just set it, forget it, and check the queue every now and then to see if an issue has occurred, if not, continue with more important processing tasks (like vision or routing - things that the PC needs a lot of horsepower to begin with to perform well).

Of course, all of this leads to a much more complex system, but at the same time, it could become more fault tolerant. You don't have to take the Arduino out of the loop; instead, incorporate it into the loop. That's what microcontrollers are for (and why there's one in a PC keyboard, among other myriad places).
Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Chicago
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
Conquering the world, one BattleMech at a time...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok cool, I like that idea. Now, looking at the Wire library, my question is this, say I had a master arduino, and then a servo attached to a slaved arduino. If i wanted to send a move command to the servo, does it have to be translated into binary or anything, or do i just pass the code as usual. Thanks again for the help and ideas smiley
Logged

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 40
Posts: 5594
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok cool, I like that idea. Now, looking at the Wire library, my question is this, say I had a master arduino, and then a servo attached to a slaved arduino. If i wanted to send a move command to the servo, does it have to be translated into binary or anything, or do i just pass the code as usual. Thanks again for the help and ideas smiley

Just as if you were trying to control the servo on the Arduino via the USB serial interface, you would have to come up with a communication protocol to send from the master to the slave via the Wire library. There isn't any easy ways around this (but there is a lot of example code). Something to keep in mind when you design this is how this protocol is going to work (in both directions, ideally); you need to, from the PC, be able to say "move this servo to here", and the system needs to be able to easily translate that. Depending on how smart you make everything, you could (for instance) have the PC query the network, and discover all the nodes and logical groupings, then command them as needed (that way, if you move a node or something, not much code has to change, and most or all of it will be on the PC itself).
Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Chicago
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
Conquering the world, one BattleMech at a time...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Passing the code from the master to slaved arduino, would i basically:

- Send code to the master arduino to turn servo A to position 90
- Have master arduino take that command and parse it into a simple string easily sent via serial (i.e., "a90")
- send that command via the Wire library to the slaved arduino
- slaved arduino acts
- slaved arduino sends a "operation complete" code

I'm making this up as I go, i've never used the Wire or Serial libraries (apart from using serial to sent text to the debugger). Thanks!
Logged

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 40
Posts: 5594
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Passing the code from the master to slaved arduino, would i basically:

- Send code to the master arduino to turn servo A to position 90
- Have master arduino take that command and parse it into a simple string easily sent via serial (i.e., "a90")
- send that command via the Wire library to the slaved arduino
- slaved arduino acts
- slaved arduino sends a "operation complete" code

I'm making this up as I go, i've never used the Wire or Serial libraries (apart from using serial to sent text to the debugger). Thanks!


Yes, essentially. The trick, depending on how complex your network is, is in routing the messages properly to the appropriate points. You might take a cue from the internet on this, and have some kind of "addressable" system, so that each point along the way knows how to pass things up and down the chain. It certainly wouldn't need to be as complex as the NIS layering topology. If you set it up right (and perhaps have some kind of "self-discovery" mechanism involved), you could end up with a system that could make it easier for future uses (as in a library that could be put onto multiple arduinos, specifying which are masters, which are slaves, addresses, etc - and it "just works").

Or - if your goal is more on the robot - just take the "quick-n-dirty" approach, but keep good notes of what goes where so your PC control code can be written and work properly.

smiley
Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3289
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello all-

So I've been playing around with my Arduino for a few months now, and I love the thing. However, I think I'm ready to move onto bigger things. I want to learn how to basically wire my netbook to a roomba and drive it, or basically use a computer to replace the arduino. I guess I'm looking to head into more professional applications (by no means am I slighting the Arduino, I love them, and own 3). What is my next step? I've tried googling it, but I can't find what my next step should be. What's the programming language, whats the UI, whats the board that I'll plug into my computer to interface with servos? Can I use it with LabView?

So many questions, any guidance would be greatly appreciated. I'm starting an education in the robotics industry, and would love to learn where I should focus, and where to start. Any info would be greatly appreciated! Thanks!

Sorry to be mean (or rude), but... looking to other platforms before actually learning the "Arduino" is not the way to go.
The Arduino is really the ATmega328 (and the USB chip, of course), and if I ask you how to setup the ADC, or create a timed interrupt by using the registers inside the ATmega328, would you be able to?

So before moving on, if I were you, I'd learn C, get the AVR-GCC and start learning how to setup the internal peripherals on the ATmega328 to do what you need. Once that is covered, you'll probably feel like there is a bit more you can do, or at least in a different way than by using the Arduino IDE.
No UI is needed with AVR-GCC. And to interface the servos you can continue to use your Arduino, or create a board with a controller chip for servos. Maybe in a shield form. I don't think people use high power controllers to control servos either way... that is normally done by some other chip on the board.

Hope to have answered your question. It's not really where you should go... it's how deep you should learn stuff. And right now, your head is still above the water. 
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wireless (mesh) sensor networks with a few mobile nodes are the robots of the future.  This is a great presentation,



Think of Hawking Technologies mesh network with a few mobile nodes, that's where everything will converge,

http://www.hawkingtech.com/

or in Star Trek terminology, everything will converge in The Borg, faster than most people think,

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Where i can get AVR-GCC and some tutorials?
Logged

the land of sun+snow
Offline Offline
Faraday Member
**
Karma: 159
Posts: 2916
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

AVR-GCC is embedded in the Arduino IDE. If you want to bypass the Arduino
stuff, you might go over to the avrfreaks forum and ask there.
Logged

0
Offline Offline
Sr. Member
****
Karma: 8
Posts: 394
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

One should also consider wireless solutions.  If you wire Bluetooth to your Arduino robot, your laptop can communicate with it over the virtual serial port.  No need to 'glue' it to the robot.

Another option is to add a Raspberry Pi or a Beagle to your robot which works with the Arduino in a similar fashion.  For example, the new RPi camera could become a cheap and effective robot vision system.

Your laptop can then talk to the Pi (or Beagleboard) which talks to the Arduino.  A 3 level solution! 

When you walk down the street your neocortex talks to your cerebellum which talks to the brain stem which fowards commands to nodes in the lower spinal column.  That is at least 4 levels. 

Note that mother nature adds new layers on top of what already works.  She discards nothing.  So keep the Arduino - it is natures way  smiley

Joe


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

AVR-GCC is embedded in the Arduino IDE. If you want to bypass the Arduino
stuff, you might go over to the avrfreaks forum and ask there.
Thank you smiley i just want to learn how atmega really works inside and all this stuff
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 181
So, you want to make something, huh?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You could buy a cheap Bluetooth module and connect your arduino to your android phone. There is an easy way to program your android phone. It's called basic4android. I'm currently trying to learn it. You could also do open cv on your android phone
Logged

If you want to meet a beautiful nurse you must be patient.

Pages: [1] 2   Go Up
Jump to: