If you design a product that includes a non certified RF transmitter, and
sell it, then it needs certification prior to the sale. If you sell an RF
receiver with it, the receiver will need a declaration of conformity.
If your product is Part 15 compliant, that just means the end-user won't
need a license to operate it. Assuming they don't make any modifications
prior to use.
Download this: http://www.fcc.gov/oet/info/rules/pa...15-2-16-06.pdf
Section 15.1 explains what Part 15 is about.
For hobby projects read section 15.23 on Home-built devices
It doesn't matter which RF modules you use. The TWS/RWS, Linx modules
or any others that are not pre-certified. It will require certification first if you
sell the finished product using them. It doesn't matter if you sell just 1 or
ten million. Your transmitter still needs to be certified, and you'll need a
declaration of conformity on the receiver.
You can build the end product with "pre certified" modules, and antennas so
you don't need to have it certified again. But you need to have proper labels
fixed on the finished product.
For example, if your using a Maxstream 9XSTREAM pre-certified module in your
product;
(quote from 9XSTREAM documentation)
The 9XSTREAM module has been certified by the FCC for integration into OEM
products without any further certification (as per FCC section 2.1091.)
Changes or modifications not expressly approved by MaxStream could void
the user’s authority to operate the equipment.
In order to fulfill the certification requirements, however, the OEM must
comply with FCC regulations:
1. The system integrator must ensure that the external label provided with
this device is placed on the outside of the final product.
2. The 9XStream may be used only with Approved Antennas that have been
tested with this module.
Note that you may still need a 2nd certification if you use a microcontroller
in the design. When in doubt, send it to a pre-screening lab like Linx. It's
worth every penny you spend on making sure whatever you crank out there
is going to have the okee-doke from the FCC.
As for range with the TWS-434A/RWS-434 combination, you can normally
expect between 300-500' depending on your finished circuit design or board
layout.
Linx LC series, 300' max normally. Linx LR series, up to 3000' line of sight.
Range with most any RF modules is going to be determined by your finished
design, antenna choice, operating environment, and a ton of other factors.
For simple stuff like remote control on/off type applications, you normally
don't need to mess with manchester encoding/decoding, but you do need to
work out some method of synchronizing the transmitter/receiver, and
validating all data when it's received.
I can't share code we make money with, but I'll share a small part of what I
use on simple encoding/decoding type apps with PIC's & inexpensive RF
modules like the TWS/RWS, and Linx modules.
Transmitter:
Code:
PreAmble CON $A5 ' 10100101 preamble
Synch CON "~" ' 01111110 synch byte
SEROUT2 E_OUT,BAUD,[PreAmble,Synch,Address,DAT_OUT,Address,DAT_OUT,CHK_SUM]
The PreAmble helps DC balance the data slicer (fancy word for a comparator).
The synch byte is locked onto by the serin routine indicating the start of the
address/data payload.
I mixup my address and data bytes, and send them both twice in the same
data stream. Address,DAT_OUT,Address,DAT_OUT which makes it very hard
for noise on the receiver end to duplicate my actual payload like this.
CHK_SUM is just a single byte. It contains Address + DAT_OUT where all 4
bytes are simply added together prior to sending a packet.
It doesn't matter that CHK_SUM overflows when adding them together. It's
just another simple data validation byte to make sure I get a match when
duplicate bytes of address & data are added together again on the receiving
end.
Partial receiver code:
Code:
' Wait for Synch byte, then get new inbound address and data
SERIN2 D_IN,BAUD,[WAIT(Synch),ADD_IN1,DAT_IN1,ADD_IN2,DAT_IN2,CHK_SUM]
' / **** Begin data validation **** /
' Calculate checksum by adding all 4 address and data bytes together
CheckSum = (ADD_IN1 + ADD_IN2)
CheckSum = CheckSum + (DAT_IN1 + DAT_IN2)
' Test new checksum against one received in CHK_SUM
IF CheckSum != CHK_SUM THEN MAIN
' Test address & data bytes for match
IF (DAT_IN1) != (DAT_IN2) THEN MAIN
IF (ADD_IN1) != (ADD_IN2) THEN MAIN
' Test received address against hardware address
IF ADD_IN1 != ADDRESS THEN MAIN
' Do something with the data received here
This is really simple stuff, but still very effective. It's easy to synch up both
ends of the link. Even with really noisy receivers like the Linx LR series or
RWS-434.
The Ruff-Bot project works because it continuously sends the same data. It
will definitely miss a great deal of packets, but with this particular project, it
really is a moot point. It's also sending data at 9600 bps which is well above
the TWS/RWS max data rate is, but it still gets enough packets through to
do the job it was intended to do.
Bookmarks