Arduino Pro Mini

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

Модератор: immortal

Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Pro Mini

Сообщение ser009 »

Тоже использую модули NRF24L01+ поэтому и интересуюсь.
Библиотеку тоже использую RF24Network как для Mega2560 так и для IBoard
PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

Re: Arduino Pro Mini

Сообщение PAV »

А можно код для меги и мини? Если вот, например, мега слушает данные трех мини и отправляет им команды.
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Pro Mini

Сообщение ser009 »

Чтобы не засорять форум индивидуальным мусором прошу писать в ЛС, МайлАгент([email protected]), ICQ
Аватара пользователя
Amarok
Сообщения: 1434
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Контактная информация:

Re: Arduino Pro Mini

Сообщение Amarok »

Ненене. На форум лучше
Моя Алиска живёт на Proxmox в Debian 12
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Arduino Pro Mini

Сообщение 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-ы на батарейках которые основное время находятся в спящем режиме, то их лучше всего поставить последними в дереве.
Все выглядит примерно так:
Вложения
Дерево.png
Дерево.png (13.53 КБ) 9170 просмотров
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Pro Mini

Сообщение ser009 »

Это теоретически :)
Сколько клиентов подключали, проверка надежности связи, потеря пакетов и т.д.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Arduino Pro Mini

Сообщение dmw »

6 работают, больше ардуин нет :)
планировка помещения не позволяет использовать сеть "точка-точка" сигнал не проходит через несколько несущих перегородок поэтому так.
с транзитами все ок, пакеты бегают.
бывает периодически (последний раз пару месяцев назад) какой нибудь узел виснет, но об этом МД оперативно извещает.
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am

Re: Arduino Pro Mini

Сообщение ser009 »

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

внизу в подписях клиент в гараже как раз и работает через 2 межкомнатные стенки и кирпичную стену гаража
Последний раз редактировалось ser009 Ср апр 16, 2014 9:50 am, всего редактировалось 1 раз.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am

Re: Arduino Pro Mini

Сообщение dmw »

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

Re: Arduino Pro Mini

Сообщение ser009 »

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