Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2014, 12:52   #1
Victorovich
Member
 
Регистрация: 02.11.2014
Возраст: 74
Сообщений: 33
Вес репутации: 0
Victorovich is an unknown quantity at this point
По умолчанию Модуль nRF24L01+

Уважаемые форумчане! Как вы считаете,возможно ли сделать такой модуль,т.е. получение показаний с беспроводных датчиков и управление радиовыключателями с помощью веб-интерфейса?
Victorovich вне форума   Ответить с цитированием
Старый 06.12.2014, 13:09   #2
Kaspiysk
Junior Member
 
Регистрация: 30.03.2014
Сообщений: 10
Вес репутации: 0
Kaspiysk is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+

Если использовать связку роутер +ардуино+nRF24L01 <->nRF24L01+ардуино+датчик� � то думаю можно.
Хотя есть и подобные устройства

но поддерживаются ли они в openwrt вопрос.

Последний раз редактировалось Kaspiysk; 06.12.2014 в 13:16.
Kaspiysk вне форума   Ответить с цитированием
Старый 06.12.2014, 13:48   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль nRF24L01+

Цитата:
но поддерживаются ли они в openwrt вопрос.
Какая маркировка чипа моста?
Admin вне форума   Ответить с цитированием
Старый 06.12.2014, 16:59   #4
Kaspiysk
Junior Member
 
Регистрация: 30.03.2014
Сообщений: 10
Вес репутации: 0
Kaspiysk is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+


Есть такой еще вариант
Product Description
Wireless Communication free between computer and other devices
that can compliant wireless communication.
This device is recognized as serial port device on computer.
(Before you use it, you need to install the serial driver program).
Transmit Baud rate is settable.
It’s recommended that transmitting interval is 5ms.
One AT order
e.g: AT+SET=40270102030405
40 is stand for 0X40, which means physical frequency
---- You can set 126 0X40MHZ on the basis of 2400MHZ
27 is stand for SETUP register,
which is use for setting transmit frequency and transmit-receive Baud rate.
01 02 03 04 05 is stand for 5 software physical address.
When this module is transmitting data,
it’s entering into auto transmit-receive mode.
You can set it data format as dynamic data package.


Или такой



Copy the following code:
//----------------------------------------------------------------------//
// Pin 13 has an LED connected on most Arduino boards.
int led = 13;
String comdata = "";
void setup()
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
Serial.begin(9600);
Serial.println("Hello, I am Arduino!");
}
//Serial data transceiver
void loop()
{
while (Serial.available() > 0)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println(comdata);
comdata = "";
}
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
}
//----------------------------------------------------------------------//


Overview:

TB387 is based on 2.4GHz frequency band wireless transparent data-transmission module.
Module supports most basic AT commands: baud rate, ID number, frequency settings and inquiries; factory settings; version information.
When the module is in AT module, users can use serial-port to issue AT commands to set the module's parameters.
When the module is in transparent data transfer mode, the user transmit data, frame number data module, add packaged rowcount, and then automatically transmit , at reliable range, the module will automatically re-transmit data to ensure successful transmission.
For more details : Please contact seller on ebay message ;

Performance Parameter:

Working voltage: 3.3V/5V;
RS232 Interface ( 3.3V/5V TTL level)
Frequency range: 2402~2482MHz
Transmit power: 20dBm(100mw);
Receiver sensitivity: -87dBm;
Operating temperature: -40~+85 ° c;
10 kinds can set the baud rate: 2400,4800,9600(Default),14400,19200,38 400,57600,115200,12800,25600
AT mode configured baud rate fix is: 9600;
Open ground Transmission distance(5V Power) : 400 meter
when transmitting, current up to 120mA; receiveing current is 30mA , please use smaller ripple power supply

Size : 32x13mm
Weight :Wireless Transceiver Module < 2g ,IPEX Antenna about 1g


Pinout :
1, VDD:3.3V / 5V power supply ;
2, GND: Power Ground;
3, TXD: serial port output, Arduino or USB to TTL232 RXD;
4, RXD: serial port input, Arduino or USB to TTL232 TXD;
5, CMD: Enter PIN AT mode, active low level;

Product Name: USB UART Serial port Wireless 2.4G Module replace Zigbee APC220 NRF24L01+ CC1101

Module No.: TB395

Packing list:
2 pcs 2.4G RS232(TTL Lever) Wireless Transceiver Module;
1 pcs USB to TTL 232(Ch340 IC)
1 pcs 5pins female to female dupont wire;

2.4G UART + USB TO TTL:

Последний раз редактировалось Kaspiysk; 06.12.2014 в 17:32.
Kaspiysk вне форума   Ответить с цитированием
Старый 06.12.2014, 17:17   #5
Victorovich
Member
 
Регистрация: 02.11.2014
Возраст: 74
Сообщений: 33
Вес репутации: 0
Victorovich is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+

Предыдущий вариант с usb может иметь только одного клиента.
Есть еще вариант - http://homes-smart.ru/index.php/obor...-usb-iz-usbasp
Victorovich вне форума   Ответить с цитированием
Старый 07.12.2014, 09:44   #6
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Модуль nRF24L01+

у всех таких модулей один неостаток, так что лучше все же мост через usb-arduno и нормальный модуль с внешней антенной
Bulatovor вне форума   Ответить с цитированием
Старый 07.12.2014, 10:34   #7
Victorovich
Member
 
Регистрация: 02.11.2014
Возраст: 74
Сообщений: 33
Вес репутации: 0
Victorovich is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+

Цитата:
Сообщение от Bulatovor Посмотреть сообщение
у всех таких модулей один неостаток, так что лучше все же мост через usb-arduno и нормальный модуль с внешней антенной
У меня опыта с этими модулями "кот наплакал", может быть попробуете предложить практическое решение, т.е. скетч на шлюз и на клиента, там глядишь и до веб-интерфейса дойдем?
Victorovich вне форума   Ответить с цитированием
Старый 08.12.2014, 09:10   #8
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Модуль nRF24L01+

вот то что я щас делаю потихоньку связка -комп с Мажородомо(передает и принимает web запросы) - шлюз на Меге2560 - перевоит запросы в радио и передает клиента - исполнительные устройства
код шлюза с элементами вебморды на базе библиотеки webserver
PHP код:

/**
 * Контроллер- головное исполнительное устройство (к проекту http://smartliving.ru/)
 * Platform: Arduino Mega 2560 + EthernetShield W5100
 * IDE: Arduino 1.0.5
 *
 * Основное его назначение передача сигнала полученного с LAN в радиосеть к головным устройствам с модулем Nrf24l01+
 * по сети с древовидной структурой и обратно.
 * 
 *  *
 **/

// Подключение библиотек
#include <Ethernet.h>
#include <SPI.h>
#include <Arduino.h>
#include <WebServer.h> // Webduino (https://github.com/sirleech/Webduino)

#include <digitalWriteFast.h>
#include <iBoardRF24Network.h>
#include <iBoardRF24.h>

// Сетевые насторойки
byte mac[] = { 
  
0xDE0xAD0xBE0xE40xDE0x35 }; // MAC-адрес нашего устройства
byte ip[] = { 
  
1921681};
byte subnet[] = { 
  
255255255};
byte gateway[] = { 
  
1921681};
byte dns_server[] = { 
  
1921681};
// ip-адрес удалённого сервера
byte rserver[] = { 
  
1921681};
EthernetClient rclient;


// Настройки радиомодуля
// Адрес отправителя
const uint16_t this_node 00;
// адрес приемного узла
uint16_t other_node 0;
byte fsend=0;// флаг для отправки

// переменные данных
int Send[50][5]; // Создаем массив 
int MaxMas=50;// максимум строк массива
int Wmas=0// Счетчик записи массива
int Rmas=0// Счетчик чтения массива
int CSend=10;// максимальное количество попыток отправки


// Формируем главную страницу
#define VERSION_STRING "1.0"
#define COMPILE_DATE_STRING "2014-01-2"
P(Page_info) = "<html><head><meta charset='utf-8'><title>smartliving.ru controller "VERSION_STRING"</title></head><body>\n";
P(location_info) = "Радиошлюз сервера умного дома";
P(version_info) = VERSION_STRING ". Дата релиза: " COMPILE_DATE_STRING;

// Задаем параметры запросов
String url String(25);
int maxLength=25// Максимальная длина строки запроса
#define MAX_COMMAND_LEN             (10)
#define MAX_PARAMETER_LEN           (10)
#define COMMAND_TABLE_SIZE          (10)
#define PREFIX ""

WebServer webserver(PREFIX80);

#define NAMELEN 32
#define VALUELEN 32

char gCommandBuffer[MAX_COMMAND_LEN 1];
char gParamBuffer[MAX_PARAMETER_LEN 1];
long gParamValue;

typedef struct {
  
char const    *name;
  
void          (*function)(WebServer &server);

command_t;

// Задаем комманды
command_t const gCommandTable[COMMAND_TABLE_SIZE] = {
  { 
    
"ADRESS",     commandsAdress,     }
  , 
  
// присваивает значение адреса (вызов http://xx.xx.xx.xx/command?001=ADRESS)
  

    
"DATA1",     commandsData1,     }
  ,
  
// пприсваивает значение передаваемых данных (вызов http://xx.xx.xx.xx/command?1=DATA1)
  

    
"DATA2",     commandsData2,     }
  ,
  
// присваивает значение передаваемых данных (вызов http://xx.xx.xx.xx/command?1=DATA2)
  

    
"HELP",     commandsHelp,     } 
  , 
  
// Выводит список комманд (вызов http://xx.xx.xx.xx/command?8=HELP )
  

    
"MASSIV",     commandsMassiv,     } 
  , 
  
// Выводит смассив очереди на отправку(вызов http://xx.xx.xx.xx/command?8=MASSIV )
  

    
NULLNULL  }
};

/**********************************************************************************************************************
 *
 *Функции: cliProcessCommand
 *
 * Описание: Посмотрите эту команду в таблице. Если
 * команда найдена, вызовите команду функции. Если
 * команда не найдена, вывод сообщения об ошибке.
 **********************************************************************/
void cliProcessCommand(WebServer &server)
{
  
int bCommandFound false;
  
int idx;

  
gParamValue strtol(gParamBufferNULL0);  // Преобразует параметр в значение типа integer. Если этот параметр пустой, gParamValue становится 0.
  
for (idx 0gCommandTable[idx].name != NULLidx++) {  // поиск команды в командной таблице до тех пор, пока она найдена, либо в конец стола, не будет достигнут. Если команда найдена, вырваться из петли.
    
if (strcmp(gCommandTable[idx].namegCommandBuffer) == 0) {
      
bCommandFound true;
      break;
    }
  }

  if (
bCommandFound == true) {  // Если команда найдена (в массиве команд), то выполняем ее. Если нет - игнорируем
    
(*gCommandTable[idx].function)(server);
  }
  else { 
    
server.print("ERROR: Command not found");  
  }
}


/**********************************************************************************************************************/
/* Обработчики команд */


void commandsAdress(WebServer &server

  if (
Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
  
Send[Wmas][0]=gParamValue;
}

void commandsData1(WebServer &server

  
Send[Wmas][1]=gParamValue;
}

void commandsData2(WebServer &server

  
Send[Wmas][2]=gParamValue;
}

void commandsMassiv(WebServer &server

  for (
int i=0i<MaxMas-1i++)
    {
server.print("<hr><br> Строка  "); server.println(iDEC);
        for (
int j=0j<4j++)
      {
        
server.print(Send[i][j]); server.print(" "); 
      };
        }
   }

void commandsHelp(WebServer &server) {
  
int idx;
  for (
idx 0gCommandTable[idx].name != NULLidx++) {
    
server.print(gCommandTable[idx].name);
    
server.print("<br>");
  }
}


/**********************************************************************************************************************
 * Разбор запроса
 **/
void parsedRequest(WebServer &serverWebServer::ConnectionType typechar *url_tailbool tail_complete)
{
  
URLPARAM_RESULT rc;
  
char name[NAMELEN];
  
int  name_len;
  
char value[VALUELEN];
  
int value_len;

  
server.httpSuccess();  
  if (
type == WebServer::HEAD)
    return;

  if (
strlen(url_tail))
  {
    while (
strlen(url_tail)) // Разбор URI на составные части (выборка параметров)
    
{
      
rc server.nextURLparam(&url_tailnameNAMELENvalueVALUELEN);
      if (
rc == URLPARAM_EOS) {
      }
      else 
// Получили параметр (name) и его значение (value)
      
{
        
// Выполняем команды
        
strcpy (gCommandBuffervalue); // параметры (значение)
        
strcpy (gParamBuffername); // команда
        
cliProcessCommand(server);
      }
    }
  }

}

/**********************************************************************************************************************
 * Генерация и вывод информации об устройстве
 **/
void infoRequest(WebServer &serverWebServer::ConnectionType typechar *url_tailbool tail_complete)
{
  
server.printP(Page_info);
  
server.print("IP:");
  
server.print(Ethernet.localIP());
  
server.print("<br>Устройство: ");
  
server.printP(location_info);
  
server.print("<hr>Перечень команд:<br>");
  
commandsHelp(server);
  
server.print("<hr><br>Версия: ");
  
server.printP(version_info);
}

// nRF24L01(+) Запуск сети
//iBoardRF24 radio(42,46,48,47,44,49);
iBoardRF24 radio(36,30,32,40,38,34);
iBoardRF24Network network(radio);
//задание структуры сообщения 
struct payload_t 

  
int Data1;
  
int Data2;
};



/**********************************************************************************************************************/
void setup() {

  
Serial.begin(57600);//Поднятие ком для отладки, потом удалить
 
  
Ethernet.begin(macipdns_servergatewaysubnet); // Инициализируем Ethernet Shield
  
webserver.setDefaultCommand(&infoRequest); // дефолтная страница вывода (информация о контроллере)
  
webserver.addCommand("command", &parsedRequest); // команды
  
webserver.begin();
  
SPI.begin();
  
radio.begin();
  
network.begin(/*channel*/ 90/*node address*/ this_node);   
}

/**********************************************************************************************************************/
void loop() {
  
char buff[64];
  
int len 64;
  
webserver.processConnection(buff, &len);  // process incoming connections one at a time forever


  // Прием сообщений
  
network.update();
  while ( 
network.available() )// если есть что для этого узла
  

    
Serial.println("PRIEM"); // Отладка
    
RF24NetworkHeader header;
    
payload_t payload;
    
network.read(header,&payload,sizeof(payload));

    
Serial.print("ID ");
    
Serial.print(payload.Data1);
    
Serial.print(" status ");
    
Serial.println(payload.Data2);
    
     if (
rclient.connect(rserver80)) {
    
// HTTP Запрос:
    
rclient.print("GET /objects/?object="); //Отправка статуса на MajorDoMo
    
rclient.print(payload.Data1,DEC);
    
rclient.print("&op=set&p=statusActual&v=");
    
rclient.println(payload.Data2,DEC);
    
rclient.println();
    
rclient.stop();}
    else {
Serial.print("Error connect");};




  };

  
// Передача данных по сети.

  
for (int i=0<= MaxMas-1i++)// перебираем массив, но не больше его максимального значения
  
{   if (Send [Rmas][0]==0)// если адрес нулевой в этой строке, тогда читаем следующую строку
    
{ if (Rmas==MaxMas-1) { Rmas=0;} else { Rmas++;};}
    else 
// иначе отправляем сообщение 
    
network.update();
      
other_node=Send[Rmas][0];
      
payload_t payload = {
        
Send[Rmas][1],Send[Rmas][2]};
      
RF24NetworkHeader header(other_node);
      
bool ok network.write(header,&payload,sizeof(payload));
      if (
ok)// если отправка удачна то сообщаем об этом
      

        
i=MaxMas// выходим из цикла  
      
}
      else 
// иначе переписываем в конец очереди массива
      
{   if (Send[Rmas][3]< CSend)// Если количество отправоке не прывышает максимальное
        
{ if (Wmas==MaxMas-1) { Wmas=0;}else {Wmas++;};
          
Send[Wmas][0]=Send[Rmas][0];
          
Send[Wmas][1]=Send[Rmas][1];
          
Send[Wmas][2]=Send[Rmas][2];
          
Send[Wmas][3]=Send[Rmas][3]+1;
        };
      }
Send[Rmas][0]=0;// Отмечаем что эту строку мы по крайней мере пытались отправить
    
}
    }





код исполнительного устройства в данном случае реле
PHP код:
// библиотеки для кнопки и реле
#include "CyberLib.h"      //подключаем библиотеку быстрого управления пинами
#include <Bounce.h>        // библиотека для устранения дребезга  
#include <leOS.h>          // библиотека многозадачности

// подключаем библиотеки для работы беспроводной сети
#include <RHMesh.h>
#include <RH_NRF24.h>
#include <RHSoftwareSPI.h>
#include <SPI.h>

//переменные для кнопки
int qbutton1 ;        //  начальное значение счетчика нажатий на кнопку 1
int t 20;               // переменная количество секунд таймера
unsigned long b1millis;   // время последнего пррывания по кнопке 1
int tcl 1500// время, после которого считается что кнопка нажата


// Переменные для датчика тока
//volatile unsigned int PintTic=0; // счетчик прерываний
//volatile unsigned int Vout;// значение аналогового порта
//volatile unsigned int Vmax;// максимальное значение за период 
//volatile unsigned int PeriodTic; // счетчик полных периодов 
//volatile unsigned int  Smax; // сумма максимальных значений 
//volatile unsigned int Power=40; // значение потребляемой мощности 
//volatile unsigned int I = 0; // сила тока 

// Переменные для сети
#define CLIENT_ADDRESS 100
#define SERVER1_ADDRESS 1
#define RH_MESH_MAX_MESSAGE_LEN 50 // Максимальная длина сообщения
// Создание класса драйвера и програмного SPI
RHSoftwareSPI softspi;
RH_NRF24 driver(910,softspi);
// создание класса управления сообщения
RHMesh manager(driverCLIENT_ADDRESS);


unsigned int ID;// ID реле
int IDRelay=115;
//unsigned int IDCurrent=2;// ID датчика тока
unsigned int IDTimer=117;// ID таймера отключения

int Send[50][5]; // Создаем массив 
int MaxMas=50;// максимум строк массива
int Wmas=0// Счетчик записи массива
int Rmas=0// Счетчик чтения массива
int CSend=10;// максимальное количество попыток отправки

// создание экземпляров класса для кнопок и реле
Bounce bouncer Bounce(35); //создаем экземпляр класса Bounce для 9 вывода   
leOS myOS;                     //создать экземпляр класса 

//задание структуры сообщения 
//struct payload_t 
//{ 
//  int ID; // Имя устройства 
//  int Data;// состояние устройства
//};

void setup() {
  
// Настройка входов кнопки и выходов реле 
D5_Out//Настраиваем порт на выход реле 1
pinMode(13OUTPUT);
//D13_Out; //Настраиваем порт на выход светодиода
D5_Low
//D13_High;  //установить на выходах  уровень сигнала
D3_In//настраиваем порт на вход для кнопки 1
D3_High;  //установить на входах высокий уровень и подключить резистор 

  // Поднятие  соединений и задач
myOS.begin();      // поднимаем задачи
//StartTimer1(current_meter, 100);// запускаем задачу опроса датчик тока

  // Поднятие сети
  
Serial.begin(57600);
  
softspi.setPins(4,8,6);
  
softspi.begin();
};
// подпрограмма обработки отключения по таймеру
void Relay_Timer()
{
D5_Low// выключение реле 1 
if (Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
      
Send[Wmas][0]=1;
      
Send[Wmas][1]=ID;
      
Send[Wmas][2]=D5_Read;
};


//**********подпрограмма измерения тока
//void current_meter()  //измерение тока  
//{  
//  PintTic++;  //счетчик периодов   
//  Vout=A3_Read; // читаем  порт к которому подключен выход датчика 
//  Vmax=max(Vout,Vmax); //  если полученное значение самое большое, присваиваем его переменной Vmax 
//  if(PintTic>=200) 
//  { 
//    PintTic=0;  //обнуляем счетчик
//    Smax=Smax+Vmax; // Добавляем сумму максимальных значений 
//    Vmax=0; // обнуляем переменную максимума 
//    PeriodTic++; // увеличиваем счетчик периодов 
//  };
//}; 



void loop() 
{
  
//// *****************************************Обработка нажатий кнопки
  //if (bouncer.update()) {   //если состояние кнопки изменилось
    //if (bouncer.read()==0) //если кнопка нажата
    //{//если кнопка нажата
      //b1millis=millis();
      //qbutton1++;
    //};
  //};
  //// если переменная количества нажатий кнопки не равна 0 - 
  //if(qbutton1!=0 && millis()-b1millis>tcl)
  //{ 
    ////если было одно нажатие и с момента последнего нажатия прошло время заданное переменной tc1
    //if(qbutton1==1 )
      //// значит это короткое нажатие и принимаем соответствующие действия для него
    //{ 
      //qbutton1=0;                  // и обнуляем преременную количества нажатий
      //D5_Inv;// инвертируем  состояние выхода для реле 1
      //if (Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
      //Send[Wmas][0]=1;
      //Send[Wmas][1]=ID;
      //Send[Wmas][2]=D5_Read;
    //}; // соответственно переключаем реле                                             

    ////если было два нажатия и с момента последнего нажатия прошло время заданное переменной tc1
    //if(qbutton1==2 )
      //// значит это короткое нажатие и принимаем соответствующие действия для него
    //{ 
      //qbutton1=0;                  // и обнуляем преременную количества нажатий
      //if(D5_Read==0){myOS.addTask(Relay_Timer, 1000*t, ONETIME);};
    //};// запускаем таймер отсчёта перед выключением         

    ////если было 3 и более нажатия и с момента последнего нажатия прошло время заданное переменной tc1
    //if(qbutton1>2 )
      //// значит это кроткое нажатие и принимаем соответствующие действия для него
    //{ 
      //t=(qbutton1-3)*10; // изменяем переменую таймера
      //qbutton1=0; 
       //if (Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
      //Send[Wmas][0]=1;
      //Send[Wmas][1]=IDTimer;
      //Send[Wmas][2]=t;
      //;
    //}                // и обнуляем преременную количества нажатий           

  //};
//  //  Управление сигнальным светодиодом
//  if (D4_Read==1) { 
//    //D13_Low;
 //    digitalWrite(13, HIGH);
//  }
//  else {
//    //D13_High;
//   digitalWrite(13, LOW); 
//  };

  //  Прием данных м мсполнение комманд 
  // Прием сообщений
  
network.update();
  while ( 
network.available() )// если есть что для этого узла
  

    
RF24NetworkHeader header;
    
payload_t payload;
    
network.read(header,&payload,sizeof(payload));
    
// Обработка сообщения
    
Serial.print (payload.ID,DEC); Serial.print (" "); Serial.println (payload.Data,DEC);
    if(
payload.ID==IDRelay)
    {
      if(
payload.Data==1){D4_High;};
      if(
payload.Data==0){D4_Low;};
      if (
Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
      
Send[Wmas][0]=1;
      
Send[Wmas][1]=IDRelay;
      
Send[Wmas][2]=D4_Read;
           
    };

//    if(payload.ID==IDCurrent)
//    {
//      Sfsend=1;
//       };
//
 //if(payload.ID==IDTimer)
//{ t=payload.Data;
//if (Wmas==MaxMas-1) {Wmas=0;} else { Wmas++;};
      //Send[Wmas][0]=1;
      //Send[Wmas][1]=IDTimer;
      //Send[Wmas][2]=t;
//};

  
};
  
//// Отправка сообщений
  //for (int i=0; i <= MaxMas-1; i++)// перебираем массив, но не больше его максимального значения
  //{   if (Send [Rmas][0]==0)// если адрес нулевой в этой строке, тогда читаем следующую строку
    //{ if (Rmas==MaxMas-1) { Rmas=0;} else { Rmas++;};}
    //else // иначе отправляем сообщение 
    //{ Serial.println("Yes! No nul");
        //network.update();
        //payload_t payload = {
        //Send[Rmas][1],Send[Rmas][2]      };
      //RF24NetworkHeader header(other_node);
      //bool ok = network.write(header,&payload,sizeof(payload));
      //if (ok)// если отправка удачна то сообщаем об этом
      //{ Serial.print(Send[Rmas][0],DEC);
        //Serial.println(" ");
        //Serial.print(Send[Rmas][1],DEC);
        //Serial.println(" ");
        //Serial.print(Send[Rmas][2],DEC);
        //Serial.println(" ");
        //Serial.println("OK");
        //i=MaxMas; // и выходим из цикла
        
      //}
      //else // иначе переписываем в конец очереди массива
      //{ Serial.print(Send[Rmas][0],DEC);
        //Serial.println(" ");
        //Serial.print(Send[Rmas][1],DEC);
        //Serial.println(" ");
        //Serial.print(Send[Rmas][2],DEC);
        //Serial.println(" ");
        //Serial.println("Eror send");
          //if (Send[Rmas][3]< CSend)// Если количество отправоке не прывышает максимальное
        //{ if (Wmas==MaxMas-1) { Wmas=0;}else {Wmas++;};
          //Send[Wmas][0]=Send[Rmas][0];
          //Send[Wmas][1]=Send[Rmas][1];
          //Send[Wmas][2]=Send[Rmas][2];
          //Send[Wmas][3]=Send[Rmas][3]+1;
        //};
      //}Send[Rmas][0]=0;// Отмечаем что эту строку мы по крайней мере пытались отправить
    //}
    
  //}

Bulatovor вне форума   Ответить с цитированием
Старый 08.12.2014, 13:36   #9
Victorovich
Member
 
Регистрация: 02.11.2014
Возраст: 74
Сообщений: 33
Вес репутации: 0
Victorovich is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+

Интересно, обязательно попробую.
Victorovich вне форума   Ответить с цитированием
Старый 16.12.2014, 08:34   #10
Victorovich
Member
 
Регистрация: 02.11.2014
Возраст: 74
Сообщений: 33
Вес репутации: 0
Victorovich is an unknown quantity at this point
По умолчанию Re: Модуль nRF24L01+

Цитата:
Сообщение от Victorovich Посмотреть сообщение
Интересно, обязательно попробую.
Запускаю сервер , но на любую команду- EPIC FAIL
Victorovich вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:44. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика