Arduino.ru
Соединение двух Ардуино через Ethernet посредством Ethernwt Shield W5100
- Войдите на сайт для отправки комментариев
Втр, 17/06/2014 — 14:41
Зарегистрирован: 17.06.2014
Подскажите кто-нибудь соединял две ардуино по Ethernet на базе W5100? У меня задача передавать данные с одной дуины на другую на расстояние 15 метров, решил попробовать использовать Ethernet. Привожу в пример скетчи:
Arduino 1 (sender):
#include #include byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED >; IPAddress ip(192,168,1,101); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); EthernetServer server(23); // telnet defaults to port 23 void setup () < Serial.begin(115200); Ethernet.begin(mac, ip, gateway, subnet); server.begin(); Serial.print("Chat server address:"); Serial.println(Ethernet.localIP()); >void loop () < EthernetClient client = server.available(); if (client) < client.print("hello"); client.println(" world"); >>
Arduino 2 (receiver):
#include #include byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED >; IPAddress ip(192,168,1,102); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); IPAddress server(192,168,1,101); EthernetClient client; void setup() < Serial.begin(115200); Ethernet.begin(mac, ip); delay(1000); Serial.println("connecting. "); if (client.connect(server, 23)) < Serial.println("connected"); >else < Serial.println("connection failed"); >> void loop() < if (client.available()) < char c = client.read(); Serial.print(c); >if (!client.connected()) < Serial.println(); Serial.println("disconnecting."); client.stop(); delay(1000); >>
Мониторю принимающую сторону, в порту вижу «disconnecting». Несмотря на это на передающем Шилде все время мигает лампочка Tx, а на принимающем Шилде так же мигает Rx..
Помогите пожалуйста разобраться в чем дело
- Войдите на сайт для отправки комментариев
Втр, 05/08/2014 — 17:11
BeletskyAV
Зарегистрирован: 19.11.2013
Попробуй это. У меня работает.
#include #include #include byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE>; IPAddress ip(192, 168, 1, 100); IPAddress ipcl(192, 168, 1, 106); unsigned int localPort = 8888; char packetBuffer[20]; char clearBuffer[] = " "; EthernetUDP Udp; void setup() < Ethernet.begin(mac, ip); Udp.begin(localPort); Serial.begin(115200); Udp.beginPacket(ipcl, 8888); Udp.write("test"); Udp.endPacket(); >void loop() < for (int i = 0; i < 19; i++) < packetBuffer[i] = clearBuffer[i]; >int packetSize = Udp.parsePacket(); if (packetSize) < IPAddress remote = Udp.remoteIP(); for (int i = 0; i < 4; i++) < Serial.print(remote[i], DEC); if (i < 3) < Serial.print("."); >> Serial.print(" "); Udp.read(packetBuffer, 20); Serial.print(packetBuffer); char* copy = packetBuffer + 3; Serial.println(copy); Udp.beginPacket(ipcl, 8888); Udp.write("test"); Udp.endPacket(); > delay(1000); >
#include #include #include byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xDE>; IPAddress ip(192, 168, 1, 106); IPAddress ipsrv(192, 168, 1, 100); unsigned int localPort = 8888; char packetBuffer[20]; char clearBuffer[] = " "; char* copy; EthernetUDP Udp; void setup() < Ethernet.begin(mac, ip); Udp.begin(localPort); Serial.begin(115200); >void loop() < for (int i = 0; i < 19; i++) < packetBuffer[i] = clearBuffer[i]; >int packetSize = Udp.parsePacket(); if (packetSize) < IPAddress remote = Udp.remoteIP(); for (int i = 0; i < 4; i++) < Serial.print(remote[i], DEC); if (i < 3) < Serial.print("."); >> Serial.print(" "); Udp.read(packetBuffer, 20); Serial.print(packetBuffer); copy = packetBuffer + 3; Serial.println(copy); Udp.beginPacket(ipsrv, 8888); Udp.write("test"); Udp.endPacket(); > delay(1000); >
- Войдите на сайт для отправки комментариев
Ethernet — EthernetUDP.begin()
Initializes the ethernet UDP library and network settings.
Syntax
EthernetUDP.begin(localPort);
Parameters
- localPort: the local port to listen on (int)
Returns
- 1 if successful, 0 if there are no sockets available to use.
Example
#include #include #include // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = < 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED >; IPAddress ip(192, 168, 1, 177); unsigned int localPort = 8888; // local port to listen on // An EthernetUDP instance to let us send and receive packets over UDP EthernetUDP Udp; void setup() < // start the Ethernet and UDP: Ethernet.begin(mac,ip); Udp.begin(localPort); >void loop()
Ethernet — client.localPort()
Returns the local port number the client is connected to.
Syntax
client.localPort
Parameters
Returns
- the local port number the client is connected to (uint16_t).
Example
#include #include byte mac[] = ; IPAddress ip(10, 0, 0, 177); // telnet defaults to port 23 EthernetServer server = EthernetServer(23); void setup() < // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) < ; // wait for serial port to connect. Needed for native USB port only >// initialize the Ethernet device Ethernet.begin(mac, ip); // start listening for clients server.begin(); > void loop() < // if an incoming client connects, there will be bytes available to read: EthernetClient client = server.available(); if (client) < Serial.print("Client is connected on port: "); Serial.println(client.localPort()); client.stop(); >>
Ethernet — client.localPort()
Returns the local port number the client is connected to.
Syntax
client.localPort
Parameters
Returns
- the local port number the client is connected to (uint16_t).
Example
#include #include byte mac[] = ; IPAddress ip(10, 0, 0, 177); // telnet defaults to port 23 EthernetServer server = EthernetServer(23); void setup() < // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) < ; // wait for serial port to connect. Needed for native USB port only >// initialize the Ethernet device Ethernet.begin(mac, ip); // start listening for clients server.begin(); > void loop() < // if an incoming client connects, there will be bytes available to read: EthernetClient client = server.available(); if (client) < Serial.print("Client is connected on port: "); Serial.println(client.localPort()); client.stop(); >>