If I wanted to use a cheap RF Transmitter/Reciever to communicate wirelessly between a PC and an Arduino, do I necessarily need to have an Arduino on the receiving end?
It seems to me I should be able to wire the receiver to a serial -> USB converter and then just read that directly rather then putting an Arduino in the middle. I need the transmitter on an Arduino since I have some additional logic incorporated. All logic on the receiving end will be in a Java app, so if I used an Arduino, it would just be passing along whatever is received from the RF receiver.
I'm new to both Arduino and Electronics in general, but have lots of programming experience. Am I on the right track with this, or is there some reason a microcontroller is needed on the receiving end?
You are correct that no Arduino is required, if the serial side of the USB converter works at TTL levels.
If it is a USB to RS232 converter, you will still need some sort of circuitry on the receiver to invert and shift the receiver RX output, before connecting it to the converter RX input.
The example you link to (letsmakerobots) uses the VirtualWire library and this would require the receiving side to also use this library. In this configuration a direct link to a PC USB/TTL adapater would not work.
As an alternative you could connect the RF transmitter to the Arduino USART and then use Hardware serial (Print statements) to send data via RF directly to a USB/TTL connected RF receiver. The downside to this is a less robust protocol (VirtualWire implements some clever error/recovery schemes although at the expense of processing capacity).
Another alternative is to use an Arduino as a USB/TTL adapter which would allow you to run VirtualWire on both sides of the link.
Thanks for the feedback. The comment re. TTL helped a lot as it gave me something else to research and learn.
I also read through all of the Virtual Wire source, and it would not be hard to port the logic over to another language or app that was receiving signals.
To complicate things a bit, I purchased an rf receiver/transmitter pair that uses encoding. I am not familiar with the encoder/decoder chip, but it sounds like something fairly standard. I don't think this would interfere is I was to use Virtual Wire, but it I think it implies if I was to use multiple transmitters, I would have to make sure they all use this encoding.
Since I want to have one receiver and multiple transmitters, sending temperature readings, I need to make sure all transmitters work with the receiver.
Does anyone have any thoughts or suggestions on these encoding chips? I am tempted to try this out as an exercise, but then move to one of the low cost rf's I've seen mentioned and use Virtual Wire.
I also read through all of the Virtual Wire source, and it would not be hard to port the logic over to another language or app that was receiving signals.
The issue here is not the porting, but the fact that VirtualWire works at the bit level. If you connect a low cost RF receiver directly to USB/TTL you will only have access to bytes and anything you send from your Arduino(s) with RF transmitters will have to conform to USART/TTL (e.g. 8-bit, start/stop etc.).
Above said - I still think you may be able to get away without encoding for short to moderate range/speeds. Also you could improve your odds through implementing the parts of the VirtualWire protocol that work at the byte level (e.g. add a training sequence, use bytes with a favorable bit distribution, packetized data with checksum, send each sample multiple time for redundancy). Also use Hardware serial on the Arduino transmitters for more precise timing.
Hardware encoding is always an option, but will of course add to cost and complexity.