A few months back, I pushed the ATMEGA256RFR2 to the limit. It was no longer sufficient for what I need.
During this time, I played with a few different MCUS, including ESP8266 and some NXP chips. This created another problem - whenever I needed to switch chip vendors, all the code had to be re-written. The time cost was simply too big to continue, so I had to find another solution: decoupling the sensors with the main processor. What does this mean?
Basically, I replaced the RFR2 with an ATMEGA328P(B), and put all the sensors on a single, 1 square inch PCB. Choosing the 328 ensured that my code could be reused, thus saving a lot of time. The 328 is responsible for processing and transmitting the sensor data over UART, so that I can use any network processor without having to re-write the sensor code.
This independence also means that the sensor board and the main MCU can be upgraded separately. The advantage of this design is quite obvious.
There are also numerous other design changes made. I will go into more detail once I finish with the sensor board.