Проектирование и производство такого рода приспособлений для связи, как разветвленные компьютерные сети, в последнее время используется гораздо активнее, нежели при соединении нескольких единиц компьютерной техники.
Снижение стоимости и повышение уровней вычислительных мощностей миниатюрных контроллеров привело к такому явлению как подключение к сетям локального типа под названием Ethernet, а также к Интернету приборов, которые характеризуются малыми мощностями. Данная маломощная аппаратура, как правило, осуществляет следующий функционал: контроль, манипулирование и производство замеров.
Также такого рода предложения разрабатываются для сетей в производственной и профессиональной областях использования — они приходят на смену устаревшим системам, которые основываются на RS232.
Получается, что в последние несколько лет пришла эпоха, именуемая Интернетом вещей (на английском это звучит как Internet of Things, сокращенно – IoT). В наши дни среди приспособлений IoT-типа распространены те, которые коммуницируют друг с другом преимущественно посредством беспроводного вида сетей и Wi-Fi, ZigBee, BLE либо Z-Wave-стандартов.
Также немало аппаратных решений (большинство из них относится к IIoT – Industrial Internet of Things), которым требуется стабильная передача и сохранность информационных массивов, используют Ethernet-сети.
Разработчики и производители платформы под названием Arduino учли потребности проектировщиков IIoT-аппаратов путем расширения традиционных продуктов Arduino-модулей. Они установили платы с Ethernet Shield 2-расширениями, которые адресованы к конкретным пользователям, а также Arduino MKR ETH SHIELD на основе WIZnet-устройств и схем MAC и PHY в пределах 1 интегральной схемы, которые используются для профессиональных целей.
Эти приспособления были в скором времени расширены инновационными и менее дорогостоящими типами модулей, созданных на базе распространенных схем из линейки ENC28J60. Далее будет более подробно рассказано об обоих предложениях: официальном (на базе схем из линейки W5x00) и продуктах, спроектированных Open Source/Open Hardware, на ENC28J60-модулях.
Применение Wiznet W5X00 и библиотеки Arduino Ethernet для связи
Это официальные модули, к преимуществам которых относится полнота программной поддержки благодаря библиотеке Ethernet, встраиваемой в стеки Arduino. Это достоинство относится и к аппаратным аналогам, оснащенным платами с типами расширений OKYSTAR OKY2102 либо DFROBOT DFR0125.
Таким образом, пользователи незамедлительно могут начинать создавать программное обеспечение непосредственно при включении Arduino IDE, причем потребность установки каких-либо еще программ отсутствует.
Ethernet-библиотекой поддерживается от 4 (в схемах W 5100 с памятью RAM, меньшей либо равной 2 кБ) до 8 (в схемах W 5200 и W 5500) входных/выходных соединительных элементов, расположенных параллельно. 5 классов программного интерфейса сгруппированы по характеристикам их функциональных возможностей, таких как: инициализация библиотек, наладка сетевых характеристик, IP-адреса, подсети, шлюзы и др.
IP-адресация обслуживается классом под названием IPAddres. Для запуска простого серверного приложения в Arduino требуется использование класса EthernetServer, позволяющего читать и записывать информацию, которая поступает от всего подключенного оборудования.
EthernetClient выполняет роль взаимодополняющего класса, он дает возможность при помощи набора несложных соединений выполнить подготовку многофункциональных клиентов сети, осуществляющих определенные функции (запись и чтение информационных массивов из серверов). Для связи по UPD-протоколам хранилище Ethernet предлагает решение класса EthernetUDP.
Но это далеко не все, подробная информация располагается на фирменном портале компании. В платформах Arduino непростой программный функционал был воплощен именно в таком решении, как библиотека. Это характерная особенность всех платформ данного типа представленного бренда.
Программист в качестве инструментов для работы имеет небольшой, но многофункциональный арсенал API, посредством которого разработка и создание программного обеспечения и всевозможных приложений осуществляется весьма оперативно, доскональное изучение работы сетевого стека при этом не требуется.
Предлагаем произвести анализ построения элементарного приложения для серверов, которое поставляется в комплекте с Ethernet-библиотекой. Данное приложение предназначено для прослушки соединений, поступающих от клиентов посредством протокола Telnet. Его работа строится по следующему алгоритму:
- Кодом приложения для серверов начинают добавляться файловые заголовки, которые нужны при установлении SPI-связей (обмен информацией между модулями WIZnet и микроконтроллерами осуществляется посредством данного протокола) и файловые заголовки из библиотеки.
- Далее настраиваются сетевые параметры и создаются серверы, посредством которых прослушивается порт № 23.
- В setup-функции инициализируется библиотека и запускается прослушивание. Кроме того, в качестве дополнительной конфигурации создан последовательный порт, где будет отображение сообщений относительно серверного адреса, подключения клиентов и информации, полученной в процессе работы.
- Основным циклом (по имени loop) ожидается соединение с клиентами и проверяются данные, которые нужно считать. После получения информации они в неизменном виде отправляются клиентам (эта функция называется echo).
- Тестирование на показатель правильной работы осуществляется благодаря протоколу Telnet либо при помощи еще одной платформы Arduino и EthernetClient.
Применение ENC28J60-модулей и библиотек внешнего типа для связи
В качестве альтернативного продукта официальным лицензированным схемам типов WIZnet W5x00 созданы приспособления, основанные на контроллерах ENC28J60 (сюда можно отнести OKYSTAR OKY3486 и ETH CLICK). За счет меньшей стоимости и несложной установки корпусов ручным способом (SSOP, SOIC, QFN, SPDIP и другие конфигурации) данные схемы являются достаточно сильно востребованными электронщиками-любителями.
Независимо от того, что официальная поддержка от компании Arduino для них отсутствует, программисты располагают большим количеством открытых библиотечных хранилищ opensourse-типа. Они способны обеспечить оперативное качественное взаимодействие ENC28J60-схем и программного обеспечения.
Отдельно стоит остановиться и заострить внимание на UIPEthernet-библиотеке и GPLv2-библиотеке под названием EtherCard (последняя поставляется с лицензией). К преимуществам первого продукта относится соответствие его API-интерфейса с Arduino Ethernet-библиотекой, которая является официальным продуктом.
Благодаря этой особенности разработка и создание разного рода приложений не будет зависеть от выбора тои или иной необходимой схемы (W5x00 либо ENC28J60). Предложение EtherCard позволяет реализовывать независимые программные интерфейсы (по желанию и предпочтениям программистов), которые могут стать достойной заменой официальным лицензированным решениям.
Реализовать сложный функционал можно посредством написания нескольких кодовых строчек, что было описано ранее в описании алгоритма работы с Arduino Ethernet-библиотекой. Таким образом, можно сделать вывод о том, что наряду с лицензированными продуктами для Ethernet-соединений, существуют неофициальные продукты, которые отличаются более низкой стоимостью и нежелательны для профессиональной области применения.
Однако, такие предложения являются достойной заменой решениям с лицензией для использования программистами-любителями. Их можно использовать хотя бы для того, чтобы получить достаточный опыт разработки программ.
ENC28J60-I/SS IC: контроллер Ethernet; 10Base-T; SPI; TSSOP28; 3,1÷3,6В
OKY2102 Модуль: Ethernet; shield; SPI; W5100; Применение: Arduino