Шилд 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