Рубрики
Схемы на 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).

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

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 не будет опубликован. Обязательные поля помечены *