I'm designing low-power sensor modules which will be spread over a reasonably small area. The modules are all battery powered and should operate for a decently long time without having to recharge/replace the batteries (the longer the better, think at least a few weeks if not months or years). The idea is that every half hour or hour the module will wake from low-power mode, take some samples, and transmit the data to a central data-logger. The central data-logger will likely be wall-powered so low-power consumption isn't as necessary. I don't expect any modules to be any further than 100m from the central logger, likely much less.
I've identified some possible transceiver modules that potentially could work:
- ALPHA-TRX433S, 433 MHz
- ALPHA-TRX915S, 915 MHz
- Microchip MRF89XAM8A, 868 MHz
- Microchip MRF89XAM9A, 915 MHz
From what I've read, these modules all operate in FCC unregulated bands and should be safe to use. The Alpha modules advertise 300m range, but I can't figure out what the expected max range of the Microchip modules would be. How would I go about calculating this?
Also, since I do have my choice of bands, which should I pick and why (i.e. what do I get from 915 MHz over 433 MHz and what do I lose)? In order of what parameters I would consider most important:
- Low-power
- Transmission range (more is better, within reason)
- Immunity to other environmental factors (i.e. wifi/cell networks, running microwave ovens, walls/physical obstacles, temperature, etc.). The target use is in a residential environment and there will likely be significant temperature variations (say -20C to 50C).
- Data rate. This isn't terribly important as I'm expecting very little data per sample (few bytes at most).
Another question I have is how to handle multiple modules trying to transmit data at the same time. I have a few thoughts about how to mitigate this, but I'm not sure which solution to proceed with:
Use a random time offset for when data is transmitted. The hope is that collisions will simply be avoided. This would probably be the simplest to implement and potentially will use the least power. However, this doesn't guarantee that there will be no collisions. Also, getting a good randomness source or unique pseudo-random seed may cause problems, though not unsolvable.
On wake-up and attempting to transmit, check to see if there are any transmission currently in progress. Just wait for the end of the transmission before sending data. The problem then becomes how do I handle multiple sensors in the wait state, as they could potentially both decide that the last transmission has ended and both begin transmitting at the same time.
Some other solution.