Arduino - связь с использованием сети Ethernet

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

Arduino - связь с использованием сети Ethernet

С начала 21 века наблюдается эпоха Интернета вещей или IoT. Но чаще всего можно заметить, что на современном рынке IoT высоким спросом пользуются устройства, взаимодействующие, как правило, посредством беспроводных сетей, а также Wi-Fi, ZigBee, BLE или Z-Wave. При этом чрезвычайно важным аспектом является безопасная и надежная передача данных через Ethernet.

Разработчики, которые создали платформу Arduino, решили расширить обычную линейку модулей Arduino с Ethernet Shield 2, которые адресованы определенным юзерам либо Arduino MKR ETH SHIELD для профессионального направления. Модули основаны на WIZnet-контроллерах W5100/W5200/W5500 и интегрирующих MAC и PHY схемах в одной интегральной схеме. Независимые производители оперативно расширили это предложение, добавив новейшие, а самое главное дешевые модули на базе всем известного ENC28J60.

В этой статье коротко расскажем об обоих решениях: официальное, которое основано на чипах серии W5x00, и в целом разработанных сообществом решений Open Source/Open Hardware на базе модулей ENC28J60.

Связь с использованием модулей Wiznet W5x00 и библиотеки Arduino ethernet

К самым главным плюсам официальных модулей на базе систем серии W5x00 (в том числе аппаратные аналоги, к примеру, оверлеи OKYSTAR OKY2102 либо DFROBOT DFR0125) относят то, что обеспечивается полная программная поддержка — встроенная в стек Arduino библиотека Ethernet. Это способствует тому, что юзер получает возможность сразу создавать программы, как только запустится Arduino IDE. При этом, устанавливать дополнительные пакеты ПО необязательно.

Библиотека Ethernet может поддерживать 4 (для чипа W5100 и ОЗУ <= 2 кБ) либо 8 (системы W5200 и W5500) параллельных входящих/исходящих соединений. Это будет зависеть от выбранной системы WIZnet и объема доступной оперативной памяти.

Программный интерфейс библиотеки имеет 5 классов, в которых сгруппированы отдельные функциональные возможности. В задачи класса Ethernet входит настройка сетевых параметров (в том числе IP-адрес, адрес подсети либо параметры шлюза доступа) и инициализация библиотеки. Для IP-адресации создан класс IPAddress. Чтобы запустить простое серверное приложение на стороне Arduino, нужно применить класс EthernetServer. Он даст возможность записать, а также считать данные со всех устройств, которые подключены.

К дополнительному классу относят EthernetClient. Благодаря ему можно в считанные минуты и без сложностей подготовить функциональный сетевой клиент, который будет выполнять операции записи и чтения данных с сервера. Для связи по протоколу UDP библиотека Ethernet предоставляет класс EthernetUDP.

Поставляемая библиотека намного упрощает процесс разработок. Платформа Arduino всегда отличалась своей простотой и в то же время функциональностью. Чтобы понимать, о чем речь, приведем пример на анализе построения простейшего серверного приложения, который имеет библиотеку Ethernet. Приложение должно будет прослушивать входящие соединения от клиента протокола Telnet.

Сначала код серверного приложения добавляет заголовочные файлы, которые нужны, чтобы установить связь SPI (модули WIZnet обмениваются данными с микроконтроллером по этому протоколу) и заголовочные файлы библиотеки Ethernet.

Далее настраиваются параметры сети (MAC-адрес контроллера, IP-адрес шлюза доступа и маска подсети) и создается прослушивающийся сервер на порту No 23 (порт по умолчанию для протокола Telnet).

В теле функции setup() нужно инициализировать библиотеку Ethernet, после чего осуществить запуск процесса прослушивания. Благодаря конфигурации последовательного порта возможно отображение сообщений об адресе сервера, новом клиентском соединении и данных, которые получены в процессе устанавливаемого сеанса.

Ключевой цикл программы loop() ждет соединения от клиента, а также осуществляет проверку читаемых данных. Как только он получит данные, начинает отправлять назад клиенту, но в ином виде.

Чтобы проверить корректную работу приложения, которое было описано выше, достаточно воспользоваться любым клиентом протокола Telnet (к примеру, Putty в Windows либо команды telnet в Linux), а также можно использовать иные комплекты Arduino и класса EthernetClient.

Связь с помощью модулей ENC28J60 и внешних библиотек

Также заменой лицензированных поддерживаемых систем WIZnet W5x00 могут служить модули на базе контроллера ENC28J60 (такие, как OKYSTAR OKY3486 либо ETH CLICK). Данная схема востребована у новичков либо любителей, так как имеет низкую цену и простоту в установке пакета. Это проще, чем со схемами, которые содержатся в 5-контактных корпусах W00x80 LQFP, контроллерами ENC28J60 доступными в 28-контактных корпусах SSOP, SOIC, QFN и корпусах SPDIP, предназначенных для монтажа через отверстие.

Arduino не предоставляет официальную поддержку, но тем не менее большая часть библиотек, имеющих открытый исходный код, были доступны программистам. Это обеспечивает мгновенную интеграцию чипов ENC28J60 с ПО. Стоит выделить такие библиотеки, как UIPEthernet и EtherCard (есть доступ под лицензией GPLv2). UIPEthernet имеет совместимость интерфейса API с библиотекой Arduino Ethernet официального уровня, что является огромным преимуществом. Ведь в этом случае не будет особо важным, какой будет сделан выбор: W5x00 или система ENC28J60 в аппаратном обеспечении.

EtherCard представляет собой самостоятельный программный интерфейс. Он имеет все шансы стать хорошей альтернативой. Здесь также, как и с библиотекой Arduino Ethernet, сложная задача может быть реализована довольно просто.

W5500 Arduino shield; Ethernet; Сост.элем: W5500

OKY2102 Модуль: Ethernet; shield; SPI; W5100; Arduino

OKY3486 Модуль: Ethernet; 3,3ВDC; SPI; ENC28J60; 56x34мм; Arduino

Другие новости

Для организации процесса функционирования большинства устройств промышленного предназначения и бытовой техники необходимо обеспечить их...
Сегодня 32-разрядные чипы заполняют самую большой сектор на рынке микроконтроллеров. Их применяют во встроенных системах. Однако можно...
Регистрация