Страница 2 из 4

Re: Arduino Pro Mini

Добавлено: Вт апр 15, 2014 4:11 pm
ser009
Тоже использую модули NRF24L01+ поэтому и интересуюсь.
Библиотеку тоже использую RF24Network как для Mega2560 так и для IBoard

Re: Arduino Pro Mini

Добавлено: Вт апр 15, 2014 9:07 pm
PAV
А можно код для меги и мини? Если вот, например, мега слушает данные трех мини и отправляет им команды.

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 6:08 am
ser009
Чтобы не засорять форум индивидуальным мусором прошу писать в ЛС, МайлАгент([email protected]), ICQ

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 7:18 am
Amarok
Ненене. На форум лучше

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 8:39 am
dmw
В библиотеке по ссылке выше есть папка examples с примерами!
Поиграйтесь с examples/meshping, там есть инструкция как ей пользоваться. Вкратце:
Код единый для всех узлов, заливаете его во все arduino с модулями nrf24l01.
Вам только нужно при первом запуске присвоить адреса: 00 - базе, 01 и т.д. - всем остальным. Делается это в консоле, нужно послать цифру от 0 до 9, что будет соответствовать адресу который будет присвоен и записан в eprom: 0=00, 1=02, 2=05, 3=012, 4=015, 5=022, 6=025, 7=032, 8=035, 9=045. Можно заменить на любые свои (22 строчка файла nodeconfig.cpp).

Что делает данный пример:
все узлы отправляют пакеты базе с заданной периодичностью, база выводит результат в консоль.

Пакеты отправляются так:

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

message="test";
RF24NetworkHeader header(/*Кому*/ 01, /*Тип*/ 'a');
network.write(header,&message,sizeof(message)); 
Принимаются так:

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

while (network.available())
{
    RF24NetworkHeader header;
    static char message[32];
    network.read(header,message,sizeof(message));
    Serial.print("Received: ");
    Serial.println(message);
} 
Все узлы всегда должны слушать эфир, иначе транзитные пакеты будут теряться, для этого периодически нужно вызывать команду

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

network.update(); 
Маршрутизацию пакетов обеспечивает сама библиотека, поэтому не стоит с ней заморачиваться, главное правильно раздать узлам адреса в самом начале и всё.
Понять какому узлу какой адрес присвоить при конфигурации не сложно, например пакет от 015 идет не сразу на 01, а следующим образом: Узел 015 -> Узел 05 -> База 00 -> Узел 01. С таким подходом правда имеется минус - транзитные узлы не должны спать. Тоесть если у вас имеются энергозависымые arduin-ы на батарейках которые основное время находятся в спящем режиме, то их лучше всего поставить последними в дереве.
Все выглядит примерно так:

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 9:01 am
ser009
Это теоретически :)
Сколько клиентов подключали, проверка надежности связи, потеря пакетов и т.д.

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 9:12 am
dmw
6 работают, больше ардуин нет :)
планировка помещения не позволяет использовать сеть "точка-точка" сигнал не проходит через несколько несущих перегородок поэтому так.
с транзитами все ок, пакеты бегают.
бывает периодически (последний раз пару месяцев назад) какой нибудь узел виснет, но об этом МД оперативно извещает.

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 9:27 am
ser009
dmw писал(а):бывает периодически (последний раз пару месяцев назад) какой нибудь узел виснет, но об этом МД оперативно извещает.
а как отслеживаешь живучесть клиентов?
проверяешь периодически пришли от них пакеты или нет?
dmw писал(а):планировка помещения не позволяет использовать сеть "точка-точка" сигнал не проходит через несколько несущих перегородок поэтому так.
На сервере использую NRf24l01+PA+LNA с внешней антенной.
В принципе спокойно пробивает межкомнатные стены + кирпичную стенку в гараж.
Есть удаленный клиент на котором так же будет стоять передатчик с внешней антенной. Дальность и стабильность связи пока не проверял.

внизу в подписях клиент в гараже как раз и работает через 2 межкомнатные стенки и кирпичную стену гаража

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 9:49 am
dmw
ser009 писал(а):а как отслеживаешь живучесть клиентов?
проверяешь периодически пришли от них пакеты или нет?
Да именно так, каждый должен присылать пинг раз в 10 минут на "00". Если в течении последних 30 минут ничего не пришло, то МД говорит об этом.

Re: Arduino Pro Mini

Добавлено: Ср апр 16, 2014 9:54 am
ser009
dmw писал(а):
ser009 писал(а):а как отслеживаешь живучесть клиентов?
проверяешь периодически пришли от них пакеты или нет?
Да именно так, каждый должен присылать пинг раз в 10 минут на "00". Если в течении последних 30 минут ничего не пришло, то МД говорит об этом.
30 минут - это долго.
Думаю над разработкой удаленной настройки клиента, в том числе и времени передачи сообщений, т.е. не все клиенты отвечают скажем 1 раз в 10 минут, кто чаще кто реже.
Ну смысл определения твоей живучести ясен