nRF24L01+ через USB

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

nRF24L01+ через USB

Сообщение MaksMS82 » Пт ноя 15, 2013 2:12 pm

В продолжение темы "Сеть беспроводных устройств на Arduino"..

Разрабатываю прошивку под USB устройство на базе м/к Atmega8 используя библиотеку V-USB.

Устройство не нужно собирать-паять, а просто покупаем USBasp (например http://www.ebay.com/itm/330809608976 ) за 3$ и перепрограммируем другой прошивкой через другую плату USBasp или Arduino.

Клиентов теоретически может быть до 5 плат(поправка: до 36) Ардуино или просто м/к AVR ,использующих библиотеку RF24 https://github.com/maniacbug/RF24

Прошивка USB переходника пишется на языке С# ,а клиенты могут быть собраны как на языке Ардуино ,так и на С#..

Отправка данных на клиентов возможна только 4 байт,например :

Код: Выделить всё

typedef struct{
  char val1;
  char val2;
  char val3;
  char val4;
}
Прием возможен до 32 байт за раз так же в виде структуры typedef ,но здесь необходимо определится какой набор переменных мы будем отправлять .т.к. поменять его можно будет только перекомпилировав клиентскую программу для компьютера...

Клиентская программа может принимать и отправлять данные в виде массива данных и может легко интегрирована в MajorDoMo как на Linux ,так и Windows.Программа консольная и написана так же на С#.
Через команды в программу могут поменяны параметры на лету: скорость,канал.

Пользователи в теме пока могут затариваться USBasp ,лучше сразу парой :) ,а так же подумать над структурой принятых данных ,например какие типы данных добавить в готовую клиентскую программу по умолчанию.Структура данных для каждого клиента может быть своя,пример:

Код: Выделить всё

typedef struct{
  char identifier;
  int Analog;
  int Digital;
  boolean Rele1; 
 float temperature_Sensor;
} 
Надеюсь ,что прошивка и клиентская программа будет готова к концу ноября и будет опубликована в данной теме..

Пользователям знакомым с Arduino не составит труда запрограммировать клиентские модули и поправить структуру принятых данных в клиентской программы в исходном коде.
Последний раз редактировалось MaksMS82 Чт янв 02, 2014 8:33 pm, всего редактировалось 2 раза.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: nRF24L01+ через USB

Сообщение sergejey » Пт ноя 15, 2013 3:35 pm

Очень интересный вариант.
Насчёт структуры данных -- я у себя пользуюсь вот такой, как описано в статье http://smartliving.ru/Main/ArduinoVirtualWire -- пока на всё хватает, и снятие показаний и управление.
А с чем связано ограничение по количеству клиентов? Отправляем сигнал в эфир и там уж сколько хочешь клиентов его слышит, нет?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
handy76
Сообщения: 33
Зарегистрирован: Пт авг 23, 2013 12:15 pm
Благодарил (а): 0
Поблагодарили: 0

Re: nRF24L01+ через USB

Сообщение handy76 » Пт ноя 15, 2013 4:42 pm

Ограничение в 6 каналов nRF24L01+ и библиотеки RF24. Можно организовать сеть через RF24Network. Там можно что то около 5 000 клиентов поставить.
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: nRF24L01+ через USB

Сообщение MaksMS82 » Пт ноя 15, 2013 7:36 pm

Тут все же ограниченные ресурсы ,всего 8 кб флеш и 1 кб ОЗУ ,сейчас занято около 4 кб флеша + 2 кб усб загрузчик,чтобы заливать прошивку без программатора.
Изначально рассматривал именно вариант с RF24 и 6 каналами -тут должно хватить ресурсов м/к.Потом может и поизучаю RF24Network..

Пока не знаю как себя поведет такая связка с 5 клиентами ,т.к. тут необходимо время процессора для обработки данных от USB..

Логика такая: USB переходник запрашивает и читает данных с клиентов и хранит массивы данных у себя,например каждые 5 секунд.Компьютер запрашивает их при запуске клиентской программы в режиме и write и read.

Если со стороны компа будет запрос на передачу данных клиенту,то USB переходник немедленно отправляет полученные данные на клиента (и читает) и время обновления обнуляется.

На счет структуры данных: скорее всего для экономии памяти отправка состояний пинов м/к будет по умолчанию хранится в битах ,т.е. например можно считать весь порт м/к одной строкой и отправить на компьютер,а тут уже клиентская программа разобьет биты визуально.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: nRF24L01+ через USB

Сообщение dmw » Пт ноя 15, 2013 10:09 pm

Мне больше понравился вариант: STC15L204 + NRF24L01:
Изображение
В основе полноценный микроконтроллер STC15L204 который можно перепрограммировать под свои нужды и будет самодостаточное отдельное устройство.
Вот например человек перепрошил его в 1-wire контроллер для температурного датчика DS1820: http://jjmz.free.fr/?p=179
Кстати цена тоже $3 (с радиомодулем $5).
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: nRF24L01+ через USB

Сообщение MaksMS82 » Сб ноя 16, 2013 7:32 am

dmw писал(а):Мне больше понравился вариант: STC15L204 + NRF24L01:
В основе полноценный микроконтроллер STC15L204 который можно перепрограммировать под свои нужды и будет самодостаточное отдельное устройство.
Вот например человек перепрошил его в 1-wire контроллер для температурного датчика DS1820: http://jjmz.free.fr/?p=179
Кстати цена тоже $3 (с радиомодулем $5).
Да ,но эту плату нельзя сразу подключить к компьютеру,как я понял она может работать через UART (+пару баксов за его ),а программировать её сложнее скорее всего..
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: nRF24L01+ через USB

Сообщение MaksMS82 » Вс дек 22, 2013 6:06 pm

В связи с занятостью проект забросил на месяц ,но сегодня нашел время и протестировал работу с 2 клиентами.
Столкнулся с проблемами ненадежной отправки данных на клиентов ,особенно заметна нестабильная работа,что странно , с клиентом на базе мега2560..Возможно проблемы с питанием..

Дата выхода публичной версии пока известна ,но желающие могут получить прошивку и программу по запросу.
artko
Сообщения: 51
Зарегистрирован: Пн дек 10, 2012 12:17 am
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: nRF24L01+ через USB

Сообщение artko » Ср дек 25, 2013 11:11 am

А что с защитой передаваемых данных? Сейчас тоже изобретаю собственный беспроводной велосипед, но пошел несколько другим путем - есть шлюз беспроводка<>ethernet и для конечных беспроводных устройств (базовый модуль тоже nRF24L01) все выглядит так, как вроде они напрямую включены в домовую сеть. Пока думаю, чем закрыть обмен - все же не есть хорошо, если любой желающий сможет подкинуть данные в сеть.
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: nRF24L01+ через USB

Сообщение MaksMS82 » Ср дек 25, 2013 11:17 am

У модуля nRF24L01 насколько я знаю есть аппаратное шифрование .Не так просто вклинится в сеть не зная адресов устройств
artko
Сообщения: 51
Зарегистрирован: Пн дек 10, 2012 12:17 am
Благодарил (а): 2 раза
Поблагодарили: 4 раза

Re: nRF24L01+ через USB

Сообщение artko » Ср дек 25, 2013 11:59 am

Нет там шифрования.. И адреса открыто передаются. (Раздел 7.3 даташита). Т.е. достаточно иметь приемник умеющий GFSK модуляцию на заданных частотах чтобы перехватить данные все вообще. А дальше смотрим адреса и подкидываем свои пакеты :)

Я бы поостерегся принимать в расчет данные от датчиков, которые так передаются, или открывать вот так наружу исполнительные устройства. Разве что для некритичных участков.
Ответить