Рубрики
Схемы на Arduino

Подключение Arduino к сети интернет с помощью Ethernet модуля W5100

В настоящее время большинство устройств интернета вещей (Internet of Things, IoT) подключаются к сети Интернет с помощью технологии Wi-Fi. Однако в ряде случаев для стационарных устройств целесообразно подключение к сети Интернет с помощью Ethernet кабеля поскольку такое соединение более стабильно чем Wi-Fi и обеспечивает более высокую скорость передачи данных.

Ранее на нашем сайте мы уже рассматривали подключение платы Arduino к сети Интернет с помощью модулей ESP8266 (удаленный мониторинг здоровья пациента, управление сервомотором, удаленный мониторинг температуры и влажности, передача данных на веб-страницу и другие). В этой же статье мы рассмотрим подключение платы Arduino к сети интернет с помощью Ethernet модуля W5100. Таким образом, плата Arduino будет подключена к компьютеру с помощью локальной вычислительной сети (LAN). С помощью установленного интернет соединения мы будем управлять светодиодом, подключенным к плате Arduino.

Для реализации данного проекта необходимы базовые знания основ построения локальных вычислительных сетей, принципов работы хабов/роутеров, разъемов RJ45, IP и MAC адресации.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress) или Nano (купить на AliExpress).
  2. Ethernet модуль W5100 (купить на AliExpress).
  3. Светодиод (купить на AliExpress).

Ethernet модуль W5100

Ethernet модуль W5100 позволяет устанавливать полнофункциональное интернет соединение. С его помощью можно подключать плату Arduino к сети интернет без поддержки операционной системы компьютера. Модуль поддерживает различные протоколы стека TCP/IP: TCP, PPPoE, Ethernet, UDP, ICMP, IPv4 и другие. Модуль W5100 способен работать в дуплексном и полудуплексном режимах работы. Также он имеет поддержку ADSL соединений (до 4-х соединений одновременно).

Для подключения Ethernet модуля W5100 мы будем использовать библиотеку Arduino Ethernet library, которая поддерживает все версии плат Arduino: UNO, NANO, mega 1280, mega 2560 и другие. Функциональность Ethernet модуля W5100 такая же, как и у шилда (shield) Arduino Ethernet, а стоит модуль в два раза дешевле чем данный шилд.

Схема проекта

Схема подключения Ethernet модуля W5100 к плате Arduino Nano представлена на следующем рисунке.

В схеме необходимо подключить контакты 5V и GND платы Arduino Nano к контактам +5 и G Ethernet модуля соответственно – это обеспечит подачу питания на модуль.

Также необходимо подключить контакты 9, 10, 11, 12 и 13 платы Arduino к контактам to R, SS, MO, MI, CK Ethernet модуля соответственно – это обеспечит взаимодействие между платой Arduino и Ethernet модулем по интерфейсу SPI.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим библиотеку для работы по интерфейсу SPI.

Затем подключим библиотеку для работы с Ethernet модулем.

Далее установим для Ethernet модуля Mac адрес.

Затем установим IP адрес 192.168.0.12. В этом адресе “0”  зависит от хоста (шлюза по умолчанию) сети, к которой вы подключены. Его можно определить с помощью команды ipconfig в командной строке компьютера.

На следующем рисунке показан пример шлюза по умолчания для других сетей.

Далее в программе создадим локальный сервер на порту 80, к которому позже будут получать доступ клиенты.

Затем объявим строковую переменную, в которую будем сохранять ответ от клиента когда он будет пытаться получить доступ к веб-серверу.

Далее дадим название контакту, к которому будем подключать светодиод, и зададим режим его работы (на вывод данных). После этого инициализируем Ethernet модуль с заданными параметрами (Mac адрес, IP адрес, шлюз, маска подсети) и запустим сервер с помощью команды “server.begin()”.

В функции loop мы создадим клиентское соединение и будем проверять пытается ли кто-нибудь получить доступ к назначенному IP адресу через браузер.

Если соединение установлено мы будем проверять передает ли клиент какое-либо сообщение серверу.

После этого мы будем считывать символы этого HTTP ответа и добавлять их по одному к строке readString, которую мы инициализировали ранее в программе.

Если код принятого символа равен 0x0D, то в коде ASCII это будет символ \n, что обозначает возврат каретки (завершение передачи).

Как только мы получили символ завершения передачи (OK response) мы начнем отображать веб-страницу с помощью следующего HTML кода.

Когда пользователь будет нажимать на ссылку TURN ON LED на сформированной нами веб-странице он будет перенаправляться на URL адрес (URL \?LEDON), с помощью которого далее будет включаться светодиод.

Аналогичным образом будет происходить и перенаправление на URL для выключения светодиода (“TURN OFF LED”).

Оставшаяся часть HTML кода:

Далее в зависимости от адреса URL, на который был перенаправлен пользователь, мы будем включать/выключать светодиод.

И, наконец, очищаем строку для ее последующего использования.

Подключение Arduino к компьютеру или Ethernet порту роутера

Чтобы подключить плату Arduino к компьютеру нам будет нужен подходящий кабель, например, категории CAT-6. При этом если Ethernet порт компьютера не может автоматически определять направление передачи (auto-direction sensing), то вам понадобится CAT-6 crossover cable (кроссовер, перекрестный кабель). Если же Ethernet порт компьютера может автоматически определять направление передачи, то вам подойдет обычный Ethernet кабель.

В этом перекрестном кабеле контакты TX+/TX- и RX+/RX- должны соответствующим образом перекрещиваться.

Если же на вашем компьютере нет Ethernet порта или же вы не хотите покупать подобный перекрестный кабель, то вы можете просто подключить Ethernet модуль к LAN порту роутера (маршрутизатора).

Тестирование работы проекта

После осуществления описанных выше соединений подключитесь к роутеру с помощью компьютера или смартфона. Откройте любой веб-браузер и введите в нем URL http://192.168.0.12 (если в программе вы использовали другой Ethernet IP адрес, то вы должны использовать его в URL, который вводите в адресе). После этого вы сможете управлять включением/выключением светодиода с открывшейся веб-страницы.

Если на данной веб-странице вы будете нажимать на ссылку “Turn On LED”, то светодиод будет включаться, а если на ссылку Turn OFF LED” – светодиод будет выключаться.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *