На хабре недавно была опубликована статья про радио модули, на мой взгляд, в ней незаслужено обделены вниманием 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
Чтобы упросить процесс знакомства с этими устройствами и проиллюстрировать их совместную работу, вашему вниманию представляется следующее демо.
Железо
- Клиентское устройство — ардуино + RF-2400P
- Серверное устройство — ардуино + RF-2400P
- Наблюдатель — Windows PC + RF-2410U
В принципе, без (1) или (3) можно обойтись.
Софт
- Библиотека RFSync и ардуино скрипты для клиентской и серверной части.
- Прошивка для RF-2410U, и драйвера для него.
- Клиентское Windows приложение RF-2410U.
Логика работы
- На клиентской ардуно плате, текущее время записывется в синхронизируемый массив по адресу 0.
- На серверной плате, после синхронизации, данные прочитанные но адресу 0 дублируются по адресу 5.
- После выполнения синхронизации на клиентской плате читается значение по адресу 5 и высчитывается, время потраченное на синхронизацию.
- Весь этот
циркпроцесс синхронизации наблюдается на 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. Осталось загрузить клиентское приложение нажать кнопку старт и наблюдать в реальном времени процесс синхронизации.
Автор: dim133