1) Есть датчик. У датчика есть интерфейс SPI. Я хочу опрашивать его пару тысяч раз в секунду и передавать значения без какой-либо обработки на компьютер на онтопике или смартфон на Android. При этом извращения в виде втыкания в смартфон всяких специальных приёмников через USB OTG не хочу. Должно быть нужно только приложение. В компьютер же можно что-нибудь и воткнуть (тот же Bluetooth донгл, но на ноутбуках практически всегда есть из коробки).
2) Поток данных - несколько килобайт в секунду. Однако было бы не плохо, если можно уходить в какой-нибудь режим ожидания и начинать передачу лишь по запросу. Да так чтобы это давало большой плюс к пункту 4.
3) Дальность: 5-10 метров это ок. Сотни метров не нужно.
4) Низкое энергопотребление. Вся система будет работать от аккумулятора и должна быть достаточно компактной (так что советы прикрутить к этой штуке аккумулятор от КАМАЗа идут лесом). В даташите на NRF24L01 указан ток потребления порядка 13 мА в момент передачи. С учётом того, что мне дальность можно поменьше (на улице дальность достигает 50-70 метров по моим личным тестам у этого модуля), как и скорость, то будем считать, что радиомодуль должен жрать не больше 5 мА в среднем.
По этим хотелками я прихожу к выводу, что мне должен идеально подойти Bluetooth (Wi-Fi явно завалит 4-ый пункт, а всякие NRF24L01 не проходят по 1-ому пункту - смартфон с ней работать не будет). Но тут есть вопрос: обычный Bluetooth или Low Energy? Поразбираться немного подольше я не против, если это даст заметный прирост в автономности. Или же BLE при непрерывной передаче нескольких килобайт данных в секунду жрёт не меньше, чем обычный Bluetooth?
Дальше. Есть два варианта - отдельный радиомодуль и отдельный микроконтроллер или комбинированное решение. По идее в плане энергопотребления второй вариант лучше, зато первый проще в реализации (я могу выбрать любой микроконтроллер, который умею программировать).
Так что можете посоветовать под мои хотелки, господа?
Вот, например, есть CC2540. Но там 8051 и не совсем понятно, что с SDK и компилятором (можно ли использовать какой-нибудь SDCC или надо обмазываться win-only софтом). Вроде как китайские платки с ним прошиты таким образом, чтобы управляться AT-командами. Возможно ли при этом будет воспользоваться всеми фишками BLE (допустим, я прикручу какой-нибудь MSP430 между радиомодулем и самим датчиком)?
Или, может быть, вы знаете какие-то другие хорошие микроконтроллеры со встроенным радиомодулем? Или может есть радиомодуль без микроконтроллера (чтобы не жрал лишнее), который бы я подключил к своему микроконтроллеру?