The following table shows the differences in intialisations of the RFM12B for the JeeNode applicaiton to receiver weather station data from both FSK and OOK stations, and send it to the JeeNode home sensor network, and eventually to HouseMon:
JeeLib native WH1080 FSK JeeLib OOK Jeelib native remark WH1080 FSK Remark JeeLib OOK
0x8205 0x820D disable some circuits disable some circuits
0x80E7 0x80E7 868 Mhz, enable tx+rx identical disable TX and RX buf
0xA640 0xA67C 0xA68A frequency
0xC613 0xC613 0xC691 bitrate N/A ?
0x94A2 0x94A0 0x9489 134kHz, -0dBm, 91dBm 134kHz, -0dB, 103dBm 200khz, -6db, 97dbm
0xC2AC 0xC220 datafilter = digital datafilter = OOK
0xCA83 0xCA83 0xCA00 identical FIFO disabled
0xCEnn 0xCED4 group ID groupID=0xD4!
0xC483 0xC49F 0xC473 AFC auto, free, DQD4 AFC manual slow +-16 DQD2 AFC @PWR, auto, +-4 DQD4
0x9850
0xCC77 0xCC67 0xCC67 PLL don't care PLL don't care
0xE000 0xE105 wakeup timer don't care
0xC800 0xC80E 0xC800 disable low duty cycle
0xC049 0xC006 0xC040 clock out, low batt level don't care don't care
0XB800 0XB800 clear transmit buffer clear transmit buffer
0x82DD 0x82DD 0x82C0 enable relevant circuits identical enab receiver, baseband
taking a look at the differences between the native-FSK and WH1080-foreign-FSK, there seem to be some obvious required differences, but also some differences that may not matter that much. For example the auto frequency control (AFC) settings, auto-mode, unrestricted, versus manual, slow, restricted to +/-16steps may not a big deal. So I tested this by making a sketch that receives foreign-FSK, and as soon as a signal is received, it programs the RFM12B to native mode and transmits the package into the sensor network. I extended the RF12 driver with functions below, which speak for themselves. The minimal set of changes can be seen in the following functions:
void configureWH1080 () { rf12_setGroup(0xD4); rf12_setBitrate(0x13); // 17.24 kbps rf12_setFrequency(0x67C); // 868.300 MHz rf12_setFixedLength(LEN_MAX); // receive fixed number of bytes } void deconfigureWH1080 () { rf12_setGroup(GROUP_ID); rf12_setBitrate(0x06); // 49.2 kbps rf12_setFrequency(0x640); // 868.000MHz rf12_setFixedLength(0); // number of bytes to be received in packet header }
This approach avoids using the slightly costly rf12_initialize() funnction which reprograms the SPI bus and resets the RFM12B.
If you made it to here, but think what is this all about. See this:
Decoding the Oregon Scientific V2 protocol
Receiving OOKASK with a modified RFM12B
FSK 868MHz weather stations on JeeNode
WH1080 protocol V2 – FSK