@petriychuk

Как сделать обменн данными между arduino nano и Ethernet Shield Module(For Arduino UNO MEGA)?

Здравствуйте. Хочу запустить Веб сервер на arduino. Как правильно, и вообще можно соединить arduino и это ethernet модуль что на рисунке. Потому что где то прочитал что он только для arduino MEGA и UNO.
SKU099516h.JPG
  • Вопрос задан
  • 5497 просмотров
Пригласить эксперта
Ответы на вопрос 2
Dremkin
@Dremkin
forum.arduino.cc/index.php?topic=16325.0

Nano - Ethernet Sheild
---
TX1 - D1
RX0 - D0
D10 - D10
D11 - D11
D12 - D12
D13 - D13
REF - AREF
5V - 5V
GND - GND
D2 - RESET (see sketch above)
---
Ответ написан
Комментировать
@papkinv
Делал так:
Шилд подключается к arduino mega 2560. Подключать к более простым не считаю целесообразным - под страницы и изображения требуется много памяти которая есть в MEGA примерно 256K.
скетч (выдает html если адрес ip-addres или json если запрос к ip-addres/data, прикрутить другие данные просто, вплоть до картинок и др.)

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

// 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);

float data[2];
uint8_t buflen = 8;

const int receive_pin = 2;

String htmlContentType = "text/html";
String jsonContentType = "application/json";

const char html[] PROGMEM = "<!DOCTYPE html>\r\n"
"<html>\r\n"
"<head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n"
"</head>\r\n"
"<body>\r\n"
"</body>\r\n"
"</html>\r\n";

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());  
}

void respondPage(EthernetClient client, const prog_char page[])
{
  char c;
  while((c = pgm_read_byte(page++)))
    client.write(c);
}

void responseHeader(EthernetClient client, String contentType) {
  client.println("HTTP/1.1 200 OK");
  client.print("Content-Type: ");
  client.println(contentType);
  client.println("Connection: close");
  client.println();
}

String readURL(EthernetClient client) {
  if(client.find("GET /")) {
    String URL = client.readStringUntil(' ');
    while(client.available()) 
      client.read();
    return URL;
  }
  return "&nothing";
}

void loop() {
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    while (client.connected()) {
      if (client.available()) {
          String URL = readURL(client);
          Serial.println("'"+URL+"'");
          if (URL == "") {
            responseHeader(client, htmlContentType);
            respondPage(client, html);
          }
          else if (URL == "data") {
            responseHeader(client, jsonContentType);
            client.print("[1,1]");            
          }
          break;
      }
    }
    delay(1);
    client.stop();
    Serial.println("disconnected");    
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы