WizNET (W5100) Ethernet shield + Nrf24l01 + Arduino Mega

Olá, estou tentando criar um ethernet Getway, do My Sensor, para fazer uma automação em minha casa.
Já tentei fazer de varios modos e nada.
Se alguém já fez e poder ensinar, por favor.

ligação atual, mas não funciona.
pin 5 =ce
pin 6 = csn
PIN 50 = MISO
PIN 51 = MOSI
PIN 52 = SCK

ja tentei fazer a alteração na biblioteca tbm, e nada.

Qual é o programa que está a usar?

/*
 * Copyright (C) 2013 Henrik Ekblad <henrik.ekblad@gmail.com>
 * 
 * Contribution by a-lurker
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 * 
 * DESCRIPTION
 * The EthernetGateway sends data received from sensors to the ethernet link. 
 * The gateway also accepts input on ethernet interface, which is then sent out to the radio network.
 *
 * The GW code is designed for Arduino 328p / 16MHz.  ATmega168 does not have enough memory to run this program.
 * 
 *
 * COMPILING WIZNET (W5100) ETHERNET MODULE
 * > Edit RF24_config.h in (libraries\MySensors\utility) to enable softspi (remove // before "#define SOFTSPI").
 *
 * COMPILING ENC28J60 ETHERNET MODULE
 * > Use Arduino IDE 1.5.7 (or later) 
 * > Disable DEBUG in Sensor.h before compiling this sketch. Othervise the sketch will probably not fit in program space when downloading. 
 * > Remove Ethernet.h include below and include UIPEthernet.h 
 * > Remove DigitalIO include 
 * Note that I had to disable UDP and DHCP support in uipethernet-conf.h to reduce space. (which means you have to choose a static IP for that module)
 *
 * VERA CONFIGURATION:
 * Enter "ip-number:port" in the ip-field of the Arduino GW device. This will temporarily override any serial configuration for the Vera plugin. 
 * E.g. If you want to use the defualt values in this sketch enter: 192.168.178.66:5003
 *
 * LED purposes:
 * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
 * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
 * - ERR (red) - fast blink on error during transmission error or recieve crc error  
 * 
 * See http://www.mysensors.org/build/ethernet_gateway for wiring instructions.
 *
 */

#include <DigitalIO.h>     // This include can be removed when using UIPEthernet module  
#include <SPI.h>  
#include <MySensor.h>
#include <MyGateway.h>  
#include <stdarg.h>

// Use this if you have attached a Ethernet ENC28J60 shields  
//#include <UIPEthernet.h>  

// Use this fo WizNET W5100 module and Arduino Ethernet Shield 
#include <Ethernet.h>   


#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
#define INCLUSION_MODE_PIN  3 // Digital pin used for inclusion mode button

#define RADIO_CE_PIN        5  // radio chip enable
#define RADIO_SPI_SS_PIN    6  // radio SPI serial select
#define RADIO_ERROR_LED_PIN 7  // Error led pin
#define RADIO_RX_LED_PIN    8  // Receive led pin
#define RADIO_TX_LED_PIN    9  // the PCB, on board LED

#define IP_PORT 5003        // The port you want to open 
IPAddress myIp (192, 168, 178, 66);  // Configure your static ip-address here    COMPILE ERROR HERE? Use Arduino IDE 1.5.7 or later!

// The MAC address can be anything you want but should be unique on your network.
// Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
// Note that most of the Ardunio examples use  "DEAD BEEF FEED" for the MAC address.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  // DEAD BEEF FEED

// a R/W server on the port
EthernetServer server = EthernetServer(IP_PORT);

// No blink or button functionality. Use the vanilla constructor.
MyGateway gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN, INCLUSION_MODE_TIME);

// Uncomment this constructor if you have leds and include button attached to your gateway 
//MyGateway gw(RADIO_CE_PIN, RADIO_SPI_SS_PIN, INCLUSION_MODE_TIME, INCLUSION_MODE_PIN, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN);


char inputString[MAX_RECEIVE_LENGTH] = "";    // A string to hold incoming commands from serial/ethernet interface
int inputPos = 0;

void setup()  
{ 
  Ethernet.begin(mac, myIp);

  // give the Ethernet interface a second to initialize
  delay(1000);

  // Initialize gateway at maximum PA level, channel 70 and callback for write operations 
  gw.begin(RF24_PA_LEVEL_GW, RF24_CHANNEL, RF24_DATARATE, writeEthernet);

  // start listening for clients
  server.begin();
}

// This will be called when data should be written to ethernet 
void writeEthernet(char *writeBuffer) {
  server.write(writeBuffer);
}


void loop()
{
  // if an incoming client connects, there will be
  // bytes available to read via the client object
  EthernetClient client = server.available();

  if (client) {
      // if got 1 or more bytes
      if (client.available()) {
         // read the bytes incoming from the client
         char inChar = client.read();

         if (inputPos<MAX_RECEIVE_LENGTH-1) { 
           // if newline then command is complete
           if (inChar == '\n') {  
              // a command was issued by the client
              // we will now try to send it to the actuator
              inputString[inputPos] = 0;

              // echo the string to the serial port
              Serial.print(inputString);

              gw.parseAndSend(inputString);

              // clear the string:
              inputPos = 0;
           } else {  
             // add it to the inputString:
             inputString[inputPos] = inChar;
             inputPos++;
           }
        } else {
           // Incoming message too long. Throw away 
           inputPos = 0;
        }
      }
   }  
   gw.processRadioMessage();    
}

Qual é a parte que não está a funcionar, o módulo ethernet ou o rádio?
Pelo que percebi do programa, os 2 dispositivos vão comunicar via SPI e assim, é necessário alterar o SPI de comunicação do rádio para software. Em princípio, assim, os pinos que terão que ser utilizados não podem ser os que descreve no 1º post (esses são os pinos para o SPI por hardware).

Eu tenho essa configuração a funcionar sem problemas... uso os pinos A2 e A3 como Chip Enable e Chip Select.

Já conseguiste colocar o nRF24 a funcionar sem o shield Ethernet?

Pelo que percebi do programa, os 2 dispositivos vão comunicar via SPI e assim, é necessário alterar o SPI de comunicação do rádio para software.

Boas camaradas.
Luis não entendo esta sua afirmação, como assim alterar a comunicação do radio para software?
Eu conheço minimamente o Nrf24l01 e não me lembro de haver uma comunicação via SPI por “software”
Estarás a sugerir BitBang?

Em princípio, assim, os pinos que terão que ser utilizados não podem ser os que descreve no 1º post (esses são os pinos para o SPI por hardware).

Penso que é esperado que ambos os dispositivos fiquem “pendurados” no SPI ao mesmo tempo, manipulando apenas o chip select Pin de modo a escolher para qual dos dispositivos quer falar , mantendo o outro desativado.Eventualmente é necessário mudar “on the fly” o modo do SPI caso ele seja diferente de dispositivo para dispositivo no momento que se quer falar com ele.

Bem-vindos de volta! :slight_smile:
Sim, Hugo, essa seria a situação ideal, no entanto, pelo que eu percebi do que li nos comentários do programa:

 * COMPILING WIZNET (W5100) ETHERNET MODULE
  • Edit RF24_config.h in (libraries\MySensors\utility) to enable softspi (remove // before "#define SOFTSPI").

por algum motivo deve haver uma incompatibilidade e o programa não compila. Ou estou a perceber mal?

Talvez a solução seja uma biblioteca diferente?

Talvez a solução seja uma biblioteca diferente?

Também penso isso e inicialmente seria este o meu objetivo se tivesse com isso em mãos , não ter de reinventar a roda tentando fazer bit bang para não ligar ambos no mesmo SPI.Em suma isso tem de funcionar no mesmo SPI, e é a situação desejável que aconteça.Agora o porque de o autor ter feito assim não estou a ver

E há quem já tenha colocado isso a funcionar...

Já agora, se usarem o Arduino MEGA tem de haver um certo cuidado com a fonte de alimentação (adicionar um condensador) para que o nRF24 funcione como deve ser.

bubulindo:
Eu tenho essa configuração a funcionar sem problemas... uso os pinos A2 e A3 como Chip Enable e Chip Select.

Já conseguiste colocar o nRF24 a funcionar sem o shield Ethernet?

bubulindo, já coloquie o mesmo pra funcionar sim..
Quando abri o monitor serial, ele dava um erro pedindo pra verificar os fios.

Vc usa os pinos a2 e A3 para o nrf?
Poderia demonstra uma imagEm de ligação..

Grato pela resposta pessoal..
E sim já fiz a alteração da biblioteca.