Шилд Ethernet w5100

Шилд Ethernet Shield W5100 в проектах Arduino часто используется для организации веб-сервера с доступом к нем. С помощью этого шилда можно подключить контроллер форм-фактора UNO/MEGA к сети Интернет или локальной сети.

Сам шилд основан на чипе Wiznet W5100 и поддерживает скорость передачи данных до 100 Мбит/с. На плате также расположен разъем для SD карты, если потребуется увеличить объем хранимых данных. Шилд с легкостью можно установить, например, на плату Arduino-совместимую UNO R3 и в дальнейшем расширить возможности устройства, дополнив его другими подходящими шилдами.

Контроллер может взаимодействовать как с чипом W5100, так и с SD-картой. Для этого на платах семейства UNO используется шина SPI и выводы 10, 11, 12 и 13. В случае с платами семейства MEGA используются выводы 50, 51 и 52. Для плат форм-фактора UNO/MEGA вывод 10 используется для выбора W5100 и вывод 4 – для SD-карты, эти пины при подключении Ethernet не должны использоваться в схеме. Так-как W5100 и SD-карта используют одну шину SPI, одновременно может быть активно только одно устройство.

Код для подключения шилда Ethernet W5100

В качестве кода подключения можно использовать стандартную библиотеку Ethernet по пути Файл/Примеры/Ethernet/Web-Server. Схема подключения в данном случае не требуется, так как достаточно установить шилд на плату контроллера.

#include <SPI.h>                                   // подключение библиотеки SPI
#include <Ethernet.h>                              // подключение библиотеки Ethernet
 
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // указание MAC адреса 
IPAddress ip(192, 168, 21, 105);                   // указание статического IP 
 
EthernetServer server(80);                         // инициализация библиотеки Ethernet "server" на порту 80 
 
void setup() 
{
  Serial.begin(9600);                              
  while (!Serial) {;}
 
  Ethernet.begin(mac, ip);                         // запуск сервера  
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
 
void loop() 
{
  EthernetClient client = server.available();     // прием данных от клиента 
  if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // соединение будет закрыто после завершения ответа
          client.println("Refresh: 5");  // обновление страницы каждые 5 секунд
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
  }
}

Скачать файл с кодом, формат .INO: Ethernet w5100