View Full Version : Adding Bluetooth to Vex
Blacklight
01-06-2005, 21:08
I'm working on a personal project....I'm an Telecomm. engineering student @ Egypt.
I got the kit,still building it, and had the idea of interfacing VEX byPC via bluetooth....
I'm totally new to the robotics scene...
I've gone through loads of Bluetooth modules and am not sure how to program them and connect them to the microcontroller?!
Any help would be much obliged, I'm a bit lost in this...
thanx
Joe Johnson
01-06-2005, 21:51
I'm working on a personal project....I'm an Telecomm. engineering student @ Egypt.
I got the kit,still building it, and had the idea of interfacing VEX byPC via bluetooth....
I'm totally new to the robotics scene...
I've gone through loads of Bluetooth modules and am not sure how to program them and connect them to the microcontroller?!
Any help would be much obliged, I'm a bit lost in this...
thanx
I believe this is possible.
#1 You will have to get the programmer for the VEX kit or build your own.
#2 I would get a bluetooth module that you could hook up to the outputs of the VEX -- I am not sure but I think THIS RADIO (http://www.blueradios.com/BR-SC11A.pdf) from Sparkfun.com may be something like what you'd want to use (look here (http://www.sparkfun.com/shop/index.php?shop=1&cart=281366&cat=62&)for pricing) . I like this radio (http://zbausa.com/bluetooth_serial_port_adapter.asp) made by Smart Modular and sold by ZBAUSA.com, but it used RS-232 voltage levels which would require a MAX232 chip or some such to get the VEX board to communicate with it (another possible down side is that the Smart Modular radio is BTClass 2.0 -- 10m range -- while the Sparkfun one is BT Class 1 -- 100m range).
#3 You will have to get Bluetooth on your PC somehow either built in or from a UBS-Bluetooth Dongle -- very cheap -- or some other way. Once you have that set up the remote BT looks like a standard PC comm port. You will not have to manage the BT stack or any of that non-sense. It is pretty straightforward actually. Sparkfun.com has a "Bluetooth Primer" (http://www.sparkfun.com/tutorial/BlueTooth/bluetooth_primer.htm) that shows how easy the BT bit is.
#4 I would get the code from Kevin Watson (http://www.chiefdelphi.com/forums/member.php?userid=1028) Kevin.org HERE (http://kevin.org/frc/)
where he publishes his code to make a serial port out a standard I/O pin of the PIC chip. From what I have gathered there are some differences between the FRC and the VEX boards so you will have to port the code somewhat but they use the same micro so you should be able to muddle through pretty easily.
#5 You will have to modify the VEX default code to get messages from the serial port rather than from the Rx radios. Not too complicated I would guess because the VEX machines are supposed to be easily used in autonomous mode. This would look just like an automonomous mode only with information coming in from the serial port.
Finally, one more thing. This document (http://www.chiefdelphi.com/forums/papers.php?&action=single&paperid=522) and the related discussion (http://www.chiefdelphi.com/forums/showthread.php?threadid=38430) may help you (thanks to dez250 (http://www.chiefdelphi.com/forums/member.php?userid=2446) for sharing the paper and starting the thread).
Good luck.
Joe J.
Blacklight
02-06-2005, 16:26
Thank You So Much - Joe!!
The info supplied seem so useful already!
I can see I have alot to read, and alot to order too :)
Making the programming module would be a toughy though...
components are not easy to find here in Egypt, So I'm wondering what's the easiest way to make one ( easiest as in one would least components to look for)?
CyberTroniX
27-09-2005, 20:50
Is it possible to conenct the bluetooth module to Rx1 instead of the serial of the microcontroller ??
mechanicalbrain
27-09-2005, 21:09
Im not that familliar with VEX but maybe a gumstix (www.gumstix.com). They have built in bluetooth and I know they work fine with the IFI controller.
CyberTroniX
29-09-2005, 19:17
i sent a message to the manufacturers of the bluetooth module and they told me it can only be connected to any UART .
so i don't know if the Rx1 on Vex is UART or not ?
i sent a message to the manufacturers of the bluetooth module and they told me it can only be connected to any UART .
so i don't know if the Rx1 on Vex is UART or not ?
yes, rx1 and tx1 are connected to rg1 and rg2 on the user processor. these are the receive and transmit pins respectively of usart2.
CyberTroniX
30-09-2005, 16:41
thanks for the info
do u know the pinout of Rx1 ?
i am also trying to get the schematic of the circuit that has the micrcontroller on in , because i want to know how is the microcontroller is connected to Rx1 or Serial .
Anyone knows how these are connected ??
thanks for the info
do u know the pinout of Rx1 ?
i am also trying to get the schematic of the circuit that has the micrcontroller on in , because i want to know how is the microcontroller is connected to Rx1 or Serial .
Anyone knows how these are connected ??
i made a little chart (http://theEntropyWroks.com). i was planning to add more info, but got sidetracked. the functions of the various pins on the 18f8520 can be determined from the datasheet. as i mentioned rx1 and tx1 are connected to rg1 and rg2 which are also known as rx2 and tx2. the transmit and receive lines on the serial port are connected to rx1 and tx1. very confusing, eh?
anyway, i got the information from the example code at vexlabs (http://vexlabs.com).
CyberTroniX
01-10-2005, 21:16
i'm a bit confused ..
if i can connect the bluetooth module ( which has 4 pins : TX , RX , PWR , GND ) to Rx1 , do i connect it to Rx1 which was used for the RF Module that came with the robot ? or do i connect it to RX & TX that are on the Analod/Digital section of the microcontroller ?
if it's the 1st option then i need to know the pinouts of the Rx1 input ,
if it's the 2nd option then i need to know where to connect the PWR & GND pins of the bluetooth module ?
Something else i'm thinking of doing it ... which is replacing the RF Module on the Remote Control Unit with a bluetooth module . Is it possible ??
CyberTroniX
01-10-2005, 21:24
#5 You will have to modify the VEX default code to get messages from the serial port rather than from the Rx radios. Not too complicated I would guess because the VEX machines are supposed to be easily used in autonomous mode. This would look just like an automonomous mode only with information coming in from the serial port.
Good luck.
Joe J.
Why use the serial input although i can use Rx1 ??
Why use the serial input although i can use Rx1 ??
ok. i have been confused.
my controller is still sandwiched in the middle of my squarebot so i was unable to actually look at it and see the labels on anything. i was under the impression that you were referring to the i/o pins labelled rx and tx on the top side of the controller. connect your blue tooth module to them.
rx1 and rx2 on the back, (?), side of the controller are not serial ports. they are for connecting the vex radio receivers. they wouldn't know an rs232 protocol if it jumped up and bit them on the... well, you know. they expect six channels of pwm data which your bluetooth module will be unlikely to produce.
sorry for the confusion.
mea culpa.
BrianBSL
02-10-2005, 00:10
ok. i have been confused.
my controller is still sandwiched in the middle of my squarebot so i was unable to actually look at it and see the labels on anything. i was under the impression that you were referring to the i/o pins labelled rx and tx on the top side of the controller. connect your blue tooth module to them.
rx1 and rx2 on the back, (?), side of the controller are not serial ports. they are for connecting the vex radio receivers. they wouldn't know an rs232 protocol if it jumped up and bit them on the... well, you know. they expect six channels of pwm data which your bluetooth module will be unlikely to produce.
sorry for the confusion.
mea culpa.
I wouldn't say they aren't serial - they are somehow modulated as there are only 4 conductors there and you have 6 chans of PWM there, so something has to happen to squeeze that onto 4 pins. I would guess, however, that it isn't RS232 but rather some proprietary protocol. If you knew the protocol that was sent there you could use another PIC to convert RS232 to that protocol, but that would be pretty pointless and a lot more work, unless you didn't want to spend $100 on a Vex programming kit and already had a PIC programmer.
I think what foobert is referring to are the TX/RX TTL pins on the same header as the Analog In/Digital IO ports. Note that to do full RS232 you likely need a level converter as well, as I'm pretty sure they are only TTL level.
I wouldn't say they aren't serial - they are somehow modulated as there are only 4 conductors there and you have 6 chans of PWM there, so something has to happen to squeeze that onto 4 pins. I would guess, however, that it isn't RS232 but rather some proprietary protocol. If you knew the protocol that was sent there you could use another PIC to convert RS232 to that protocol, but that would be pretty pointless and a lot more work, unless you didn't want to spend $100 on a Vex programming kit and already had a PIC programmer.
I think what foobert is referring to are the TX/RX TTL pins on the same header as the Analog In/Digital IO ports. Note that to do full RS232 you likely need a level converter as well, as I'm pretty sure they are only TTL level.
ok, last things first. the bluetooth modules these guys are considering are ttl, so no level converter is required.
that was pretty easy, so on to the first thing. the inputs to rx1 and rx2 are ppm which is a sort of multiplexed pwm signal.
the way i understand it is this. for the six channels on the vex radio, you get seven short pulses. the time from the beginning of the first pulse to the beginning of the second pulse is the duty cycle for the 1st channel pwm, the time from the beginning of the second pulse to the beginning of the third pulse is the duty cycle for the 2nd channel pwm, etc.
so the data for the six channels take anywhere from 6 to 12 ms depending on the sum of their duty cycles. these are followed by the seventh pulse and a lengthy pause of say six to twelve ms before the next data frame is sent. the long pause allows the receiver to synchronize the data frames.
hope that makes sense.
The easiest way to do it would be to use the "programming" port on the vex as opposed to the radio port.
Joe Johnson
20-10-2005, 08:06
The easiest way to do it would be to use the "programming" port on the vex as opposed to the radio port.
Does the programming port on the VEX use RS-232 voltage levels (<-5V = 1, >5V = 0) or TTL voltage levels (<1.4V = 1, >1.4V=0)?
Sorry for the silly question. I am out of the loop on VEX stuff.
If the Programming Port uses RS-232 voltages, then you could use an off the shelf Blue Tooth radio like this one (http://zbausa.com/bluetooth_serial_port_adapter.asp).
Otherwise, I would use the TTL voltage level serial port and use one of the modules that is compatible with that voltage level.
Joe J.
Does the programming port on the VEX use RS-232 voltage levels (<-5V = 1, >5V = 0) or TTL voltage levels (<1.4V = 1, >1.4V=0)?
programming port is ttl. programming dongle, however, has level shifter in it and since you need one anyway to program the controller to listen to the serial port, there's no point in not using it with an rs-232 level radio if that's what you've got. otherwise a ttl level radio could be used on either the programming port or the rx and tx connectors up top.
Joe Johnson
20-10-2005, 11:25
programming port is ttl. programming dongle, however, has level shifter in it and since you need one anyway to program the controller to listen to the serial port, there's no point in not using it with an rs-232 level radio if that's what you've got. otherwise a ttl level radio could be used on either the programming port or the rx and tx connectors up top.
This Radio (http://www.aircables.net/serial.html), by AirCables (http://www.aircables.net/index.html), is an RS-232 radio that have used a lot and that I love. It has only 10M range, but it is beautiful in terms of its performance. I have not done it myself, but the engineer at AirCables tells me that if you crack the case it has the ttl signals easily available on pins. Highly recommended.
Joe J.
AJBelayer
07-12-2005, 11:53
Ok I am new to the vex world but I have been in programing (C, C++, java, assembler, etc.) for a while now and I want to add bluetooth to my vex robot for control, I assume this is done easiest over the serial port connection and i have rad this entire thread. Has anyone successful done this? If so would you be willing to help me get figured out where to start and what radios work best? I would like to stay with the 100m range bluetooth.
AJBelayer
I can't really speak to whether this is entirely "doable", however you should post this question on the vexlabs.com forums.
Joe Johnson
07-12-2005, 14:47
As I have said before, I am really happy with AirCables, and recommend that you try to use one of there products.
If you want 100m range, you are going to have to go with something with an antenna. The AirCables parts with antennas are listed as "coming soon" But, I would call or e-mail Juergen at AirCables (http://aircables.net/contact-us.html). I think they are shipping some of these 100m products but have not updated their website.
The PC side is pretty straightfoward. The USB dongle from AirCables is only a Class 2 (10m) device but there are many (http://www.tigerdirect.com/applications/searchtools/item-Details.asp?EdpNo=1293888&sku=G452-5010), many (http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=1533884&CatId=909), many (http://www.newegg.com/Product/Product.asp?Item=N82E16833327108) "Class 1" (100m) Bluetooth USB Dongles available that you can use to make your connection to the robot. I have never used any of them so I can't help you with a specific recommendation. But, I have used many of the 10m devices and they basically all work okay. The only difference between them is whether they use the standard WindowsXP BT driver or whether they have written their own. I had pretty good success with a Linksys 10m dongle as well as the AirCable 10m dongel part for what it is worth. As to the programming, once the device is installed and the BT radios have been paired and connected, the BT driver provides transparent virtual COM port.
Hope this helps.
Joe J.
P.S. I take back many of the good things I said about the SMART Modular Bluetooth Serial Adapter above -- I can't speak for other applications, but for mine, they ended up being the source of subtle problems that were very hard to find but caused me fits for MONTHS. Your mileage may vary... JJ
Joe Johnson
08-12-2005, 16:04
I just came across this product (http://www.sparkfun.com/shop/index.php?shop=1&cart=497072&cat=1&itemid=503&) from the guys at SparkFun.com
Shown here:http://www.sparkfun.com/shop/images/503.jpg
Anyway, the purpose of this thing is to provide an easy way to do level shifting between RS-232 <->TTL voltages.
If you want to use an RS-232 voltage level device with the TTL level pins of the Vex controller, this thing could come in handy.
FYI.
Joe J.
AJBelayer
09-12-2005, 11:44
Ok so I am looking at this http://www.sparkfun.com/shop/images/400.jpg Bluetooth device for me they are a local company so I can pick up the device and not have to worry about any shipping time. As I understand it i connect the Tx and Rx to the Tx and RX on the vex controller but then where do I connect the pwr and ground? An independent power source or is there 3V-6V power on the vex. Also I still have to check with the manufacter to make sure this is putting out TTL signal and not RS232 correct?
P.S. the link for the site of the bluetooth chip is here http://www.sparkfun.com/shop/index.php?shop=1&cart=492615&match_criteria=all&rec=&keywords=Bluetooth&
Joe Johnson
09-12-2005, 15:26
... As I understand it i connect the Tx and Rx to the Tx and RX on the vex controller but then where do I connect the pwr and ground? An independent power source or is there 3V-6V power on the vex. Also I still have to check with the manufacter to make sure this is putting out TTL signal and not RS232 correct?
As to the TTL question, this is from the datasheet (http://www.sparkfun.com/datasheets/RF/BlueSMiRF_v1.pdf)
Note: All pins are VDD tolerant. This means that the BlueSMiRF can interface to 5V logic, 3.3V logic, and even 6.82V logic. Onboard MOSFETs translate the onboard 3.3V to whatever voltage you power the unit to. If you power the unit with 5V, the unit will output 5V for a logic high, OV for a logic low, and can tolerate logic high levels into the input pins up to +5V.
As to the power question, I suppose you can steal power and ground from a PWM output. I have not put a meter to the power but I think it just passes power from the battery. Now that I think about it this may cause you problems.
The problem is that the Vex battery fully charged could be as high as 8V or so. From the datasheet, the input voltage would be okay (under 10V is the spec I see) but the problem is that :
On data TO the radio: I am not sure that the Vex TTL logic level 1 output would be read as a 1 by the radio input (read above)
On data FROM the radio: I am not 100% sure that the Vex TTL logic level input will like have 8V as an input
I would GUESS that it is okay, but I wouldn't want to bet my Vex controller on it.
I recommend buying a 7805 5V regulator and knocking the PWM power output down to 5V.
Good Luck.
Joe J.
As I understand it i connect the Tx and Rx to the Tx and RX on the vex controller but then where do I connect the pwr and ground?
the rx and tx connections on the top of the vex controller each have 5v and ground available on the connector next to them. so connect rx-i on your bluetooth module to the pin next to the label on the rx connector, connect tx-0 on the bluetooth module to the pin next to the label on the tx connector, connect ground to the pin opposite the label on either rx or tx, and pwr to the middle pin on either rx or tx. when you get around to programming you'll be using usart2 rather than usart1 which is the programming port with the rj-12 connector on the back of the unit.
I'm pretty new to all this and wanted to just confirm a couple points, if someone would be so kind... Thanks in advance for your time and help!
1) With the programming dongle, any rs232 bluetooth device should work fine since it has a level shifter built in. Is that a correct statement?
2) Is there power provided on pin 9. I.e. for the devices mentioned (the aircable card http://www.aircables.net/serial.html, and the smart bluetooth module http://zbausa.com/bluetooth_serial_port_adapter.asp)? If not, what would be the easiest way to provide power to these devices? Preferably it would come from the vex module, but an easy external source would be fine too.
3) If you already have the desired behavior occuring between the pc and micro via a thethered link, add a bluetooth link between the pc and programming dongle should be pretty much plug and play (add the module and pc dongle, set up the link, adn we're set). Right? Or am I being too naive here? :)
4) If the power isn't provided for the aircard cable that Joe is recommending (which would currently be my first choice), do you forsee any problems with the following device, which has an internal battery: http://www.lemosint.com/scripts/bluetooth_dongle_class2.asp
Thanks again for taking the time to help where you can. It is greatly appreciated! :)
I'm pretty new to all this and wanted to just confirm a couple points, if someone would be so kind... Thanks in advance for your time and help!
1) With the programming dongle, any rs232 bluetooth device should work fine since it has a level shifter built in. Is that a correct statement?
there's also a microcontroller on the programming dongle. don't know that anyone has actually watched the traffic between ifiloader and the programmer or if anyone has tried looking at the debug info from the controller using hyperterminal. in short, dunno. but probably.
2) Is there power provided on pin 9. I.e. for the devices mentioned (the aircable card http://www.aircables.net/serial.html, and the smart bluetooth module http://zbausa.com/bluetooth_serial_port_adapter.asp)? If not, what would be the easiest way to provide power to these devices? Preferably it would come from the vex module, but an easy external source would be fine too.
5v and ground are available at any of the io and interrupt ports. don't try to get power off the motor ports. that's 7.6v.
Im not that familliar with VEX but maybe a gumstix (www.gumstix.com). They have built in bluetooth and I know they work fine with the IFI controller.
Let me re-emphasize this. You'll probably have a lot less trouble if you just buy the 400MHz Gumstix with Bluetooth, which will run you about $169. Connect one of the serial ports on the Gumstix to the Vex, and write a couple of lines of code on the Gumstix to redirect I/O from the wired serial port to the Bluetooth UART. Then you have your Bluetooth Vex, and you have a nifty off-board co-processor should you ever need it.
Joe Johnson
19-06-2006, 14:48
there's also a microcontroller on the programming dongle. don't know that anyone has actually watched the traffic between ifiloader and the programmer or if anyone has tried looking at the debug info from the controller using hyperterminal. in short, dunno. but probably.
5v and ground are available at any of the io and interrupt ports. don't try to get power off the motor ports. that's 7.6v.
The AirCables and the Smart Modular radios are pretty well voltage tolerant.
I have not looked up the Smart Modular, but I know for sure that the AirCables can take 7.6V with no trouble at all. They will accept 5V too so you have choices.
You can provide power via the DB-9 connector or by using a barrel connector (Radio Shack sells the right size), it makes no difference.
I don't have a VEX in front of me, but if you are planning on using TTL pins on the VEX as a serial port, the most straight forward way to interface would be to use a level shifter to change the voltages to & from TTL/RS-232 (many are available -- sparkfun.com sells a cheap one that I've used before with success). Another, braver method that you can try on the AirCables radio is to crack open the case and to find the pins that are TTL compatible. I have not done this, but I have it on good authority that it the pins are accessible and that this is easily done.
Good Luck.
Joe J.
Joe Johnson
19-06-2006, 14:57
3) If you already have the desired behavior occuring between the pc and micro via a thethered link, add a bluetooth link between the pc and programming dongle should be pretty much plug and play (add the module and pc dongle, set up the link, adn we're set). Right? Or am I being too naive here? :)
I think that this means you are using an RS-232 port on the VEX side and on the PC side. So you are close to being able to just replace the cable with 2 AirCables or BrandX radios, but you are not completely sure of success.
It depends on if the PC/VEX link are using other RS-232 signals for timing etc. For example they could be using anotehr wire for flow control or timing. This may or may not work, depending on the signals you need the radios to duplicate and how critical the timing is.
Even if you are only using 3 wires (TX, RX & GND), you are still not home free. We have had cases were we can get a boot loader to work via a cable and had no success downloading code via a Bluetooth radio set. We think this is due to some critical timing issues but we are not 100% sure of the reason for failure. We do know that Bluetooth is pretty good at making sure that data sent on one end gets to the other side, but it is not so good at meeting critical timing issues.
Good Luck.
Joe J.
vBulletin® v3.6.4, Copyright ©2000-2017, Jelsoft Enterprises Ltd.