Ответы пользователя по тегу Сетевое администрирование
  • Как сделать обменн данными между arduino nano и Ethernet Shield Module(For Arduino UNO MEGA)?

    @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");    
      }
    }
    Ответ написан
    Комментировать