Linking boards

Questions about the Really Bare Bones Board
Post Reply
shags199
Posts: 1
Joined: Tue Nov 25, 2008 8:17 pm

Linking boards

Post by shags199 » Tue Nov 25, 2008 8:39 pm

I am a software engineer working with emulators. I am still getting my feet wet but I have come across two types of busses. How could I implement a combination software/hardware solution to link two or more of the boards and communicate via one of the digital input/output pins? I was hoping to use a facsimile of CAN 2.0b but with a software emulation of it not necessarily a hardware solution. I will work out the software part but I need help understanding how I might get the next board to receive the bit stream in order to do with something with it. Any links would be great.

I am just playing around with communication with two of your boards (I have one of each). I was hoping to get the BBB to talk to the RBBB acting like the main controller and then use the RBBB for a subsystem controller. Is this possible? Sorry if this is elementary, I am a noob to robotics so the hardware implementation is sometimes confusing for me. I am not sure I will use this in a robot but I want to know how to do it so maybe when I get a little further along I can get two bots to link and talk or create a more complex bot with subsystems.

Thank you

paul
Site Admin
Posts: 734
Joined: Mon May 12, 2008 4:19 pm

Re: Linking boards

Post by paul » Tue Nov 25, 2008 10:13 pm

shags199,

I think some people have made some progress on a CAN bus - you can check the Arduino forum and also the Exhibition section of my forum for a "MODBUS" implementation.

However I think your best bet for interchip communication is asynchronous serial. The Atmega has a USART built in so it receives in hardware without bogging down the processor, If you use the RX and TX lines you can take advantage of the serial commands. See "Serial.print" etc in the Arduino docs.

You should be aware that the receive (RX) function runs on the UART hardware but the (TX) function does not, and Serial.print won't return until it sends the second to last character (don't ask me why not the last). Hardware implementation of the TX function is just work that the programmers haven't gotten to, and I think and someday fairly soon get around to implementing a the "send" function in the proper hardware.

Just hook the RX of one chip up the the TX of the other and go to town. Polling Serial.available will tell you if new serial has arrived, and how many bytes so you can wait for the proper packet.
The docs are kind of thin on the details of how this works but if you Google around the aruduino.cc site you'll find lots of example code. Also check the examples folder of the IDE. You should also check softwareSerial library for using pins other than the RX and TX pins. This can make it handy to develop then move back to the RX / TX pins once development is done.

If you're looking to implement a larger network of chips, I know an engineer that has implemented a type of mesh network, but can't really tell you how it worked. Email me at sales@moderndevice.com and I'll send you his name.

Paul

min0n
Posts: 4
Joined: Wed Nov 11, 2009 8:14 am

Re: Linking boards

Post by min0n » Fri Nov 13, 2009 4:57 pm

hi there,

there is a can module for arduino[1], i have not tested it..
[1]http://www.arcan.es/

Post Reply