Модуль W5100 предназначен для подключения Arduino к локальной сети/интернету с помощью кабеля. Такой модуль позволяет удаленно получать данные с нашей Arduino при наличии подключения к сети, в которой он находится, а также удаленно управлять различными устройствами, подключенными к контроллеру.
Характеристики:
- Питание: 5В постоянного тока
- Размеры: 5.2x3x1.5 см (Д*Ш*В).
- Скорость передачи данных: до 25Mbps
- Интерфейс подключения: SPI
Модуль имеет 10 выводов. Для подключения к Arduino нам необходимо использовать 6 из них:
+5 – Питание
G – “Земля”
MI – линия “MISO” интерфейса SPI
MO – линия “MOSI” интерфейса SPI
CK – линия “SCK” интерфейса SPI
SS – линия “SS” интерфейса SPI
Подключение к Arduino:
Для подключения и настройки модуля нам необходимы:
- Любая Arduino-совместимая плата
- Компьютер с установленной средой Arduino IDE
- USB кабель для подключения Arduino к персональному компьютеру
- Патч-корд (RJ45-RJ45)
- Маршрутизатор/сетевой коммутатор (не обязательно)
Принципиальная схема подключения компонентов:
Патч-корд необходимо подключить с одной стороны к модулю w5100, а с другой к свободному входу маршрутизатора или, в случае, если его нет, к разъему сетевой карты вашего компьютера.
Скетч для Arduino:
Для работы с модулем будем использовать следующие библиотеки*:
Ethernet.h
Spi.h
Эти библиотеки уже встроены в среду, скачивать их дополнительно не нужно.
*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.
Скетч для пробного запуска модуля можно получить из меню примеров:
После выбора примера, обратите внимание на строку IPAddress
IP-адрес вам необходимо указать самостоятельно, в зависимости от ваших сетевых настроек. Узнать IP-адрес ваших сетевых устройств вы можете с помощью команды ipconfig (для Windows) в командной строке.
Выбирать адрес для модуля следует из доступного для вашей подсети диапазона IP-адресов.
Адрес сети (первые 3 байта) должен совпадать с настройками вашего сетевого устройства (маршрутизатора или сетевой карты компьютера)
Адресом хоста (последний байт) нужно указать любой свободный адрес в подсети.
Если вы подключаете модуль напрямую к сетевой карте компьютера, вам необходимо установить сетевые настройки вручную.
Для этого необходимо зайти в Панель управления компьютера и выбрать раздел “Настройки параметров адаптера”
В свойствах устройства вам необходимо зайти в раздел “IP версии 4 (TCP/IPv4)” и задать IP-адрес, например: 192.168.100.1 (маску подсети для нашего примера можно задать любую)
Нажимаем “ОК”, чтобы сохранить изменения.
Теперь в скетче вы можете указать IP-адрес для нашего модуля. (для примера выше он будет таким: 192.168.100.2)
После загрузки скетча, наша Arduino превратится в веб-сервер.
С помощью любого браузера, введя в адресной строке IP-адрес нашего модуля, мы сможем увидеть результат работы скетча (в нашем случае это показания с аналоговых входов).
Еще один пример:
Теперь немного усложним задачу и создадим веб-сервер, выдающий показания с термометра DS18B20 (подробней о нём вы можете прочитать здесь).
Принципиальная схема подключения компонентов:
Скетч для Arduino:
#include <OneWire.h> #include <DallasTemperature.h> #include <SPI.h> #include <Ethernet.h> OneWire oneWire(2); DallasTemperature ds(&oneWire); // Введите MAC-адрес (или оставьте таким) // IP-адрес зависит от ваших сетевых настроек byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 2, 100); EthernetServer server(80); void setup() { // Открытие последовательного порта Serial.begin(9600); ds.begin(); while (!Serial) { ; // Ожидание подключения последовательного порта } // запускаем инициализацию Ethernet-модуля Ethernet.begin(mac, ip); server.begin(); Serial.print("Server is at "); Serial.println(Ethernet.localIP()); } void loop() { ds.requestTemperatures(); 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>"); // создание html страницы client.print("T="); // вводим текст страницы client.print(ds.getTempCByIndex(0)); // получаем числовое значение температуры с датчика 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"); } }
Комментарии