In a previous article, I played with an arduino combined with a TI CC1101.
The CC1101 is a great and cheap chip to send datas over the air at frequencies below 1ghz, using different modulations.
You can tweak a great many options which should make this chip work with many other devices.
I had been looking for weeks (months actually…) to use ASK/OOK modulation in order to link it with my chacon temperature/humidity sensors or even with my RFXTRX433 (from RFXCOM).
It seems I finally managed to find the right settings for ASK/OOK : my two devices now talk to each other (@433mhz) using this modulation 🙂
I believe I am still a long way from talking to my chacon or rfxcom devices but still, I made some progress.
Before I forget, here below my settings : it could be helpful for some other geeks out there.
Now if someone out there manage to interface his cc1101 with an ASK/OOK device, please let me know !
/* # Sync word qualifier mode = 30/32 sync word bits detected # CRC autoflush = false # Channel spacing = 199.951172 # Data format = Normal mode # Data rate = 4.79794 # RX filter BW = 101.562500 # PA ramping = false # Preamble count = 4 # Whitening = false # Address config = No address check # Carrier frequency = 433.919830 # Device address = 0 # TX power = 0 # Manchester enable = true # CRC enable = true # Deviation = 25.390625 # Packet length mode = Variable packet length mode. Packet length configured by the first byte after sync word # Packet length = 255 # Modulation format = ASK/OOK # Base frequency = 433.919830 # Channel number = 0 */ void config2() { byte PA_TABLE[]= {0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,}; cc1101.writeReg(CC1101_IOCFG0,0x06); cc1101.writeReg(CC1101_FIFOTHR,0x47); cc1101.writeReg(CC1101_PKTCTRL0,0x05); cc1101.writeReg(CC1101_FSCTRL1,0x06); cc1101.writeReg(CC1101_FREQ2,0x10); cc1101.writeReg(CC1101_FREQ1,0xB1); cc1101.writeReg(CC1101_FREQ0,0x3B); cc1101.writeReg(CC1101_MDMCFG4,0xF5); cc1101.writeReg(CC1101_MDMCFG3,0x83); cc1101.writeReg(CC1101_MDMCFG2,0x33); cc1101.writeReg(CC1101_DEVIATN,0x15); cc1101.writeReg(CC1101_MCSM0,0x18); cc1101.writeReg(CC1101_FOCCFG,0x16); cc1101.writeReg(CC1101_WORCTRL,0xFB); cc1101.writeReg(CC1101_FREND0,0x11); cc1101.writeReg(CC1101_FSCAL3,0xE9); cc1101.writeReg(CC1101_FSCAL2,0x2A); cc1101.writeReg(CC1101_FSCAL1,0x00); cc1101.writeReg(CC1101_FSCAL0,0x1F); cc1101.writeReg(CC1101_TEST2,0x81); cc1101.writeReg(CC1101_TEST1,0x35); cc1101.writeReg(CC1101_TEST0,0x09); //thid 1 is needed otherwise only first packets has data cc1101.writeReg(0x07,0x00); // packet automation control //notice the burst mode to write beyong the first position (0) ... cc1101.writeBurstReg(CC1101_PATABLE,PA_TABLE,8); }
I was able to interface a legendary non cc1101 device to my cc1101 kit but the way i did it is through synchronous mode.
But later in my development, i found out that there is a way to do it using the normal packet mode but not quite as straightforward as the synchronous mode (but doable). i remember i posted this in TI forums last year.