На хабре недавно была опубликована статья про радио модули, на мой взгляд, в ней незаслужено обделены вниманием 2.4 GHz устройства с SPI интерфейсом. Привлекают они ценой в два-три бакса за штуку, и готовым протоколом общения, включающим адресацию, CRC, отсылку подтверждения и прочие удобства.


Модули RF-2400Р от Inhaos построены на чипе BK2421, который похоже слизан с Nordic NRF24L01. Поэтому, для работы с ними можно использовать библиотеку Mirf, написанную под Nordic.

Задача, которую я решал, состояла в организации обмена данными между несколькими модулями, поэтому логика работы, использованная в Mirf и построенная на взимодействии между парой модулей оказалась не совсем удобна. Вместо этого был организован некий виртуальный кусок памяти, синхронизируемый по радио интерфейсу, который использовали несколько устройств одноврем��нно. Получилась вот такая библиотечка для ардуино.


Кроме RF-2400Р модулей Inhaos предлагает очень симпатичный USB «свисток» RF-2410U построенный на том же BK2421 но уже в связке с микроконтроллером C8051F321, который идет с прошитым бутлоадером и может быть запрограммирован по USB, с помощью поставляемого загрузчика.

На мой взгляд получается очень доступное и интересное решение для системы типа «умный дом» — куча дешевых радио модулей, которые благодаря цене можно встраивать даже в лампочки и компактный управляющий интерфейс в виде «свистка», который можно воткнуть в любой комп не заморачиваясь с дополнительными проводами и наличием последовательного порта.

RF- 2400 Demo


Чтобы упросить процесс знакомства с этими устройствами и проиллюстрировать их совместную работу, вашему вниманию представляется следующее демо.

Железо

  1. Клиентское устройство — ардуино + RF-2400P
  2. Серверное устройство — ардуино + RF-2400P
  3. Наблюдатель — Windows PC + RF-2410U

В принципе, без (1) или (3) можно обойтись.

Софт

  1. Библиотека RFSync и ардуино скрипты для клиентской и серверной части.
  2. Прошивка для RF-2410U, и драйвера для него.
  3. Клиентское Windows приложение RF-2410U.


Логика работы


  1. На клиентской ардуно плате, текущее время записывется в синхронизируемый массив по адресу 0.
  2. На серверной плате, после синхронизации, данные прочитанные но адресу 0 дублируются по адресу 5.
  3. После выполнения синхронизации на клиентской плате читается значение по адресу 5 и высчитывается, время потраченное на синхронизацию.
  4. Весь этот цирк процесс синхронизации наблюдается на Windows машине с подключенным RF-2410U модулем с помощью клиентского приложения.


Запуск

1. Подключаем RF-2400P модули к платам ардуино по следующей схеме:
Модуль Ардуино
MISO 12
MOSI 11
SCK 13
CE 8
CSN 7
3.3 V 3.3 V
GND GND

2. Копируем код библиотеки в папку ардуино и прошиваем клиентский и серверный скрипты.

3. Наблюдаем обмен данными через последовательный интерфейс.


4. Загружаем прошивку в RF-2410U.
  • убедитесь что модуль не подключен к компьютеру
  • запустите приложение для прошивки.
  • выберите прошивку, нажимите «Download»
  • вставьте RF-2410U модуль в USB порт
  • дождитесь сообщения Download Succeed



5. При подключении RF-2410U попросит драйвера, дайте их ему.

6. Осталось загрузить клиентское приложение нажать кнопку старт и наблюдать в реальном времени процесс синхронизации.