Mirf и Ethernet.h

danis
Offline
Зарегистрирован: 03.09.2013

К ардуино уно подключен ethernet shield и nrf24l01(cs пины разные). Пытаюсь сделать так: 

1. Пользователь видет html страницу отдаваемую arduino + ethernet shield.

2. Вводит текст в поле и отправляет.

3. Arduino + ethernet shield принимают и отправляют его по nrf24l01 на другую ардуину.

Для этого ипсрользую библиотеку Mirf и Ethernet.h. Объеденил 2 примера Mirf и Ethernet.h не могу скомпилировать.

Вот код:

#include <SPI.h>
#include <Ethernet.h>

#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define MAX_BUFF 32 //Буфер приёма-передачи

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
byte ip[] = { 192, 168, 0, 2 }; // IP адрес (В броузере вводим 192.168.0.2)
EthernetServer server(80);


char buff2[MAX_BUFF];

void setup() {
  Ethernet.begin(mac, ip);
  server.begin();

  Serial.begin(9600); 

  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  
  Mirf.setRADDR((byte *)"app1"); 
  Mirf.payload = MAX_BUFF;
  Mirf.channel = 10; 
  Mirf.config();
  
  Serial.println("Start.."); 
}

void loop()
{
  EthernetClient client = server.available();
  if (client)
  {
    // Проверяем подключен ли клиент к серверу
    while (client.connected())
    {
      // Проверяем идет ли запрос к серверу
      int dataCount = client.available();
      if (dataCount > 0)
      {       
          // чтобы не мучатся пока просто берем 4 символа из ответа
          buff2[0] = client.read();
          buff2[1] = client.read();
          buff2[2] = client.read();
          buff2[3] = client.read();


          Mirf.setTADDR((byte *)"app2"); //Адрес!
          Serial.print(">");
          Mirf.send((uint8_t *)buff2);
          while(Mirf.isSending()){
          }
         
      }     
      
      
      // Страница ввода текста
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");     
      client.println("<html>");
      client.println("<head>");
      client.println("<title>SEND TEXT</title>");
      client.println("</head>");
      client.println("<body>");
      client.println("<h3>SEND TEXT FOR nRF24L01</h3>");  
      client.println("<input name='text'>");      
      client.println("<input type='submit' value='Submit'>");
      client.println("</form>");
      client.println("</body>");
      client.println("</html>");
      client.stop(); 

    }
  }
}

Вот что какие ошибки выдает компилятор:

C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:82: error: expected constructor, destructor, or type conversion before '<' token
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:93: error: expected constructor, destructor, or type conversion before ';' token
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp: In function 'void setup()':
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:95: error: redefinition of 'void setup()'
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:19: error: 'void setup()' previously defined here
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp: In function 'void loop()':
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:113: error: redefinition of 'void loop()'
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:36: error: 'void loop()' previously defined here
[Stino - Error 1]
 
NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

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

danis
Offline
Зарегистрирован: 03.09.2013

я весь код из редактора сюда вставил

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

просто тот код что вы вставили ошибок не содержит...

danis
Offline
Зарегистрирован: 03.09.2013

Странно в arduino IDE все компилируется. А через плагин в sublime text нет. 

Ну теперь вопрос в другом как допилить этот скетч чтоб работал ethernet shield и nrf24l01. В таком варианте как сейчас страница то возвращается то нет, данные то оптравляются  то нет. Вообще модуль ведет себе странно. Подскажите как доделать программу чтобы они нормально поочередно работали.

danis
Offline
Зарегистрирован: 03.09.2013

Неужели никто не знает?

std
Offline
Зарегистрирован: 05.01.2012

Попробуйте сборку Dr. Monk'а для либы Nuelectronics, плюс сеть не на W5100 а на ENC28J60.

Обёртка: http://dl.dropbox.com/u/3993179/ETHER_28J60.zip

Библа: http://www.nuelectronics.com/download/projects/etherShield.zip

Сетевуха: http://item.taobao.com/item.htm?id=21579360796