2017-03-02 1 views
0

Je souhaite utiliser mon Arduino Mega (avec un blindage de capteur) et un module Ethernet ENC28J60 (directement connecté à mon PC) pour envoyer et recevoir du simulateur de vol (X-Plane 11, capable d'envoyer un UDP via le réseau).arduino mega + ENC28J60 ethernet module connexion directe au PC pour recevoir/envoyer UDP

Le module réseau: http://www.ebay.de/itm/281353516180?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Je ne parviens pas à écrire les données UDP reçues dans le moniteur série cependant. Je ne suis même pas sûr que je reçois vraiment UDP. La connexion entre le module Ethernet et le PC semble être bonne, car la LED verte des E/S du module Ethernet est allumée en permanence, et la LED jaune clignote dès que je démarre ma simulation de vol et j'envoie UDP à partir de là .

J'ai essayé à la fois le câble Ethernet standard et le crossover.

J'ai essayé 2 façons de connecter le module Ethernet ENC28J60 au blindage du capteur Arduino Mega, selon 2 guides différents.


  1. câblage standard pour la Uno Arduino

    • ENC28J60 SO à Arduino broches 12
    • ENC28J60 SI à Arduino broche 11
    • ENC28J60 SCK à Arduino broche 13
    • ENC28J60 CS à la broche Arduino 10
    • Enc28j60 VCC à A rduino 3V3 pin
    • ENC28J60 GND à Arduino broches Gnd

  1. câblage recommandé pour l'Arduino Mega

    https://en.code-bude.net/2013/06/22/how-to-use-enc28j60-ethernet-shield-with-arduino-mega-2560/

    • GND à GND
    • 3.3 à 3.3V
    • SO à Pin50
    • SI à Pin51
    • SCK à Pin52
    • CS à Pin53

J'ai aussi essayé plusieurs libs:

  1. EtherCard: Il est recommandé de définir la broche cs sur 53 dans les fichiers de la bibliothèque, ce que j'ai fait. Plus on devrait utiliser cette ligne de code dans l'esquisse (qui n'a pas compilé.L'erreur est avec l'utilisation de sizeof en combinaison avec Ethernet::buffer)

    ether.begin(sizeof Ethernet::buffer, mac, 53) 
    
  2. UIPEthernet (je suppose que je pourrais utiliser un câblage standard ici, comme il est dit que cette lib utilise les paramètres de bouclier Ethernet standard?)

Aucune des combinaisons n'a permis d'avoir une sortie dans le moniteur série.

Un des croquis que j'ai essayé est la suivante:

#include <Dhcp.h> 
#include <Dns.h> 
#include <ethernet_comp.h> 
#include <UIPClient.h> 
#include <UIPEthernet.h> 
#include <UIPServer.h> 
#include <UIPUdp.h> 


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
IPAddress ip(192, 168, 1, 6); // local IP - address of my Arduino 
unsigned int localPort = 49001;  // local port to listen - default X-Plane port 
byte buf = 00; // buffer for UDP packet (BYTE, not char) 

EthernetUDP Udp; // An EthernetUDP instance to send and receive packets over UDP 

//------------------------------------------------------------------------------- 

void setup() 
{ 
    Ethernet.begin(sizeof Ethernet::buffer, mac, 53) 
    Ethernet.begin(mac,ip); // start the Ethernet 
    Udp.begin(localPort);  //..and UDP: 

    Serial.begin(9600);  // init serial port 
} 
void loop() { 
    int packetSize = Udp.parsePacket(); // Checks for the presence of a UDP packet, and returns its size 
    if(packetSize)      // UDP packet was received and its size defined 
    { 
    Serial.println(); 
    Serial.print("Packet size: "); 
    Serial.println(packetSize);   // Packet Size in bytes 

// When Udp.read used without parameters, it returns next char (byte in this case) : 

     Serial.println("Xplane Data:"); 
     for (int i =0; i/<packetSize; i++) 
     { 
      buf = Udp.read(); 
      Serial.print(buf); 
      Serial.print("-"); 
     } 
    } 
    delay(10); 
} 

Mes questions sont les suivantes:

  1. Quelle est la meilleure façon de tester les deux connexions:

    PC - > Module Ethernet et
    Module Ethernet -> Arduino? Dois-je définir les broches Arduino utilisées dans mon croquis ou est-ce que la lib le fait?

  2. L'esquisse doit-elle fonctionner correctement?

Répondre

0

https://github.com/jcw/ethercard télécharger. et compilez et exécutez l'exemple d'udplistener.

https://sourceforge.net/projects/sockettest/ télécharger ce programme (SocketTest). SocketTest est un programme très simple.

Et dans le code arduino, (ether.udpServerListenOnPort(&udpSerialPrint, 1337);)

vous changer le numéro de port que vous voulez. "udpSerialPrint" est une fonction de rappel. "1337" est un numéro de port. S'il existe des données udp, le programme appelle cette fonction.