Модули и шилды Ethernet для Arduino – это один из самых простых способов организовать подключение к интернету в ардуино проекте. В этой статье расскажем о том, как организовать выход в интернет и управление платой Arduino на расстоянии при помощи шилдов Ethernet Shield, опишем основные характеристики модулей на базе w5100 enc28j60. Мы узнаем, как подключиться через SPI, как написать скетч для создания своего сервера на Arduino или отправки данных на удаленный сервер.
Модули Ethernet для Arduino
Подключить плату arduino к интернету можно несколькими способами. Беспроводное подключение прекрасно организуется с использованием платформ ESP8266 или ESP32. Можно использовать Lora модули с соответствующими WiFi-шлюзами. Но самым помехоустойчивым и “традиционным” является старый добрый Ethernet. Используя обычный RJ45 разъем и витую пару вы сможете объединить вашу плату с другим сетевым оборудованием, будь то роутер, маршрутизатор или тот же WiFi модем. Преимущества Ethernet-подключения – скорость, стабильность, бОльшая защищенность от помех. Недостатки очевидны – оборудование привязывается проводом, причем в условиях реальной эксплуатации качество этого провода должно быть высоким.
Наиболее популярные Ethernet модули для ардуино сегодня выпускаются на основе микросхемы wiznet w5100, которая способна поддерживать обмен данными с постоянной скоростью в 100 Мбит/сек. Для устройств на базе w5100 написаны готовые библиотеки, данная архитектура является простой и идеально подойдет начинающим любителям электроники, которые могут использовать как стартовую площадку для последующих проектов.
Ключевые характеристики модулей на базе W5100:
- Рабочее напряжение – 5 Вольт, подходит питание с платы Arduino.
- Внутренний буфер 16 Кб.
- Скорость соединения достигает значения в 10/100 Мбит/сек.
- Связь с платой ардуино осуществляется посредством порта SPI.
- W5100 поддерживает TCP и UDP.
Варианты модулей на базе других микросхем:
- Модуль на базе Wiznet W5500. Имеет меньшие размеры, меньше греется, имеет большую мощность.
- Модуль на базе enc28j60. Это гораздо более бюджетный вариант, дешевле W5100, но и потенциальных проблем с ним может возникнуть больше.
Шилды Ethernet Shield для Arduino Uno или Nano
Наиболее удобным способом работы с W5100 является использование готовых шилдов Ethernet Shield для Arduino Uno или Nano. На таких модулях уже выполнены все необходимые обвязки, шилд просто вставляется в соответствующие разъемы платы и вам остается только загрузить скетч. Естественно, что при желании к плате могут быть подключены и другие устройства.
Подключение платы расширения происходит через соединение RJ-45. Плата обладает встроенным слотом SD/MicroSD , который используется для хранения файлов, используемых для подключения и передачи по локальной сети. Такой слот совместим со всеми платами Arduino/Genuino, т.е. работать с данными на карте можно с помощью стандартной библиотеки SD Library. На плате расширения также можно найти кнопку перезагрузки . питания. Ранние версии платы расширения не дружили с ардуино мега, там требовался ручной сброс после поступления питания.
Если плата оснащена POE модулем (питание подается по витой паре), то шилд будет соответствовать следующим спецификациям:
- Совместим со стандартом IEEE3af.
- Имеет низкие пульсации на выходе.
- Защищает от явлений перегрузки и короткого замыкания.
- Эффективно преобразует напряжение.
- Имеет изоляцию 1500 вольт на точке между «вход-выход»
По умолчанию плата не комплектуется данным модулем, нужно находить соответствующую модель.
Назначение светодиодов Ethernet Shield:
- PWR показывает наличие питания на плате.
- LINK светится при наличии сети и мигает при передаче/приеме данных.
- FULLD обозначает сетевое полнодуплексное соединение.
- 100M обозначает сетевое соединение со скоростью 10мбит/сек.
- RX мигает при приеме экраном данных.
- TX мигает при отправке данных экраном.
- COLL мигает при обнаружении сетевых конфликтов.
Кроме этих имеются еще пара светодиодов на гнезде rj 45, один из которых при подключенном шнуре светится, а другой мерцает при поступлении данных.
Ehternet для Arduino Nano
Отдельного упоминания заслуживает модуль Arduino Nano Ethernet. Он выполнен в формфакторе, облегчающим подключение к плате Nano v 3.0, но обладает практически такими же возможностями, что и “обычный” вариант для Uno. В основе шилда лежит микросхема ENC28J60.
Модуль точно так же имеет разъем RJ-45, слот для SD и в некоторых модификациях тоже оснащен PoE контроллером.
Как работает Ethernet
Подразумевается, что для проектов, связанных с подключением Arduino к сети вы должны обладать хотя бы общими знаниями в области сетевых технологий. Сегодня можно без труда найти соответствующие материалы в интернете. Хотя мы не ставим себе целью написать учебник по Ethernet, но общие сведения могут оказаться полезными.
Сегодня Ethernet – ключевая и наиболее распространенная наряду с WiFi технология организации локальных сетей. В стандартной модели OSI она находится на канальном и физическом уровне, определяя подуровни управления доступом к среде и управления логическим каналом. Создателем Ethernet стала компания Xerox, ее инженер Роберт Метклаф создал технологию как инструмент подключения многих компьютеров к общим ресурсам в локальной сети. Официальным стандартом технология стала в 1982 году после появления спецификации IEEE802.3.
Сегодня существует несколько вариантов и модификаций Ethernet, отличающихся скоростными характеристиками и способом организации физического канала:
- Ethernet. Скорость до 10Mb/s. Любые типы проводов (коаксиал, витая пара, оптоволокно).
- Fast Ethernet. Скорость до 100Mb/s. Только витая пара или оптика.
- Gigabit Ethernet. Скорость до 1Gb/s. . Только витая пара и оптика.
- 10G Ethernet. Скорость до 10Gb/s. Естественно, тоже без коаксиала.
Существует еще с десяток различных групп и подгрупп стандарта, в этой статье мы не будем рассматривать их все.
С практической точки зрения работа с Ethernet выглядит как возможность соединить определенным образом конечное оборудование с ближайшей точкой, имеющей выход в другие сегменты сети. Чаще всего это роутер или маршрутизатор с доступом в интернет или к другим ресурсам локальной сети.
Если вы начинаете проект с Ethernet, то вам нужно будет понимать следующие базовые понятия, имеющие отношение к этой технологии:
- Кабель. Как правило, это витая пара, реже – оптоволокно (ее подключить к арудино простым способом не получится).
- Разъемом для подключения кабеля – RJ-45. На самом деле, стандарт для штекеров носит совсем другое название (8P8C), но “в народе” принято называть стандартный Ethernet разъем именно как RJ45. Следует отметить, что есть и другие стандарты – RJ-25, RJ-14 и т.п. Для подключения к ардуино через стандартные модули они не подойдут.
- Сетевой Ethernet MAC-адрес. Это уникальный шестибайтовый идентификатор устройства в сети, который обычно прошивается в само устройство, но в некоторых случаях может быть изменен программно. Всего может быть задано 2 в 48 степени адресов, это триллионы разных вариантов (точнее, 281 474 976 710 656), так что пока их с головой хватает для создания действительно уникальных идентификаторов.
В подавляющем большинстве задач проект с Ардуино будет подключен к уже существующей Ethernet сети через стандартное оборудование. Т.е. вы просто берете модуль Ethernet, подключаете его к Ардуино, а затем вставляете сетевой кабель в этот самый модуль. Все, что вам понадобится – правильно настроить в своем скетче ваш MAC адрес (его можно менять!) и прописать IP адрес устройств, к которым вы будете подключаться. Мы рассмотрим пример в разделе, посвященным программированию.
Как подключить модуль Ethernet к Arduino
Подключение модулей w5100 к ардуино осуществляется через SPI. При наличии некоторого опыта работы c платформой никаких трудностей это вызвать не должно. В самом простом случае нужно просто “надеть” плату шилда, вставив в соответствующие разъемы платы Uno или Nano. В случае использования отдельного модуля подключить w5100 к ардуино можно через стандартные SPI-выводы.
Нужно помнить, что в Arduino Uno для SPI выделены пины 11, 12, 13. В Arduino Mega – 50, 51, 52. На шилде для Uno SS сигнал связан с 10 пином. На плате Mega за SS отвечает пин 53, но он не используется. Не смотря на этой, вам нужно обязательно установить его в режим OUTPUT с помощью функции pinMode.
Распиновка шилда с описанием элементов платы для Arduino Uno представлена на следующем рисунке.
После подключения внешнего модуля к арудино нужно будет подключить его к уже существующей сетевой инфраструктуре через витую пару с RJ45 разъемом. Причем подключать можно и к WiFi роутеру, что позволяет вашему проекту выходить на связь в беспроводном режиме (провод от ардуино до роутера все равно понадобится).
Выполнив физическое подключение, останется сделать только последний, но самый сложный и важный шаг. Нужно написать и загрузить в плату соответствующий скетч, который превратит плату в сервер, отвечающий на запросы удаленных устройств или в клиента, собирающего данные с серверов или отправляющего на них данные.
Программирование скетча для Ethernet модуля в Arduino
Создавая программу на ардуино для работы с сетью, вы всегда будете отправлять или получать какие-то данные. В зависимости от целей проекта ваше устройство может выступать и в качестве сервера, и в качестве клиента – все зависит от выбранной вами логики и структуры системы. Можно отправлять данные с датчиков и вашей ардуинки на удаленный сервер и получать указания от него. А можете сделать управляющий сервер, получающий данные от остальных устройств или от человека через Web-браузер, который уже будет выступать в качестве клиента.
Поддержка Ethernet для платформы ардуино появилась уже в первых версиях Arduino IDE. Вам нужно просто добавить стандартные библиотеки в ваш скетч с помощью и использовать уже готовые классы.
Нельзя сказать, что библиотека написана безупречно, время от времени в ней находят очень сомнительные фрагменты кода, влияющие на производительность. Но для первых учебный проектов она подходит полностью. Для работы с картой памяти можно использовать встроенную библиотеку SD.
Сервер на Arduino Ethernet
Создаваемый Web-Сервер работает в полном соответствии с НТТР протоколом. Основные функции сервера заключаются в отслеживании клиентских запросов и выполнении различных функций на основе принятых данных. А затем следует отправка непосредственно самого результата в виде НТМL кода. Пример скетча можно найти в Arduino IDE (Файл-Примеры). Ниже приведем лишь короткие фрагменты и описание ключевых моментов.
Работа с библиотекой разбивается на два этапа. Сначала мы создаем необходимые объекты и производим настройку. В процессе инициализации следует прописать MAC-адрес и IP, по которому пользователь будет получать доступ к серверу.
byte macAddress[] = { 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF }; IPAddress ipAddress (192, 168, 1, 10); // IP адрес зависит от ваших сетевых настроек EthernetServer myServer(80); // Можно выбрать и другой порт // ... void setup() { Serial.begin(9600); // Подключились к Ethernet Ethernet.begin(macAddress, ipAddress); // Запустили сервер server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); }
Затем мы включаем бесконечный цикл, в котором постоянно проверяем наличие в очереди запросов от клиентов. Если запросы есть, то анализируем их и в зависимости от параметров формируем ответ. В принципе, мы реализуем логику обычного web-сервера, только все задачи по аутентификации, роутингу и генерации ответа приходится реализовывать самостоятельно. Дополнительный неудобства создают весьма скромные возможности встроенных библиотек по работе со строками.
void loop() { // Проверяем, есть ли запросы EthernetClient client = server.available(); if (client) { // Запросы есть Serial.println("Новый клиент!"); while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // ... Здесь идет разбор строки и описание логики ответа client.println("HTTP/1.1 200 OK"); // Это пример кода для отправки клиенту данных. // ... } } // Запрос // Даем немного времени на получение данных клиентом delay(5); // Закрываем коннект client.stop(); Serial.println("Клиент отключился"); Ethernet.maintain(); } // if(client) } // Loop
После того, как пользователь загрузил скетч и подключил его к компьютеру при помощи сетевого кабеля, сервер на ардуино ожидает команд. После того как пользователь перейдет по заданному IP адресу, на сервер попадает get запрос, который информирует о необходимости выдачи интернет-страницы. В задачу сервера входит формирование этой страницы и посыле ее на клиента обратно, после чего браузер сам перерабатывает НТМL код и отображает формы, таблицы и другой контент. Пользователь может выполнить какие-то действия в форме (например, отметив включение необходимых пинов) и они опять отправятся на Arduino-сервер. И так до бесконечности, пока будет работать система и не отвалится сеть.
Arduino Ethernet как клиент. Отправка данных на сервер
Если мы хотим отправлять данные через Ethernet подключение, то нужно использовать методы класса Client стандартной библиотеки Arduino. Процесс инициализации выглядит точно так же – мы указываем IP и МАК-адрес. Но создаем объект клиента, а не сервера.
byte macAddress[] = { 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF }; IPAddress ipAddress (192, 168, 1, 10); // IP адрес зависит от ваших сетевых настроек EthernetClient client;
Следующим этапом является подключение и отправка данных на сервер
void setup() { Serial.begin(9600); // Подключаемя через Ethernet: if (Ethernet.begin(mac) == 0) { Ethernet.begin(macAddress, ipAddress); } delay(1000); Serial.println("connecting..."); if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: client.println("GET /search?q=arduino HTTP/1.1"); client.println("Host: www.arduinomaster.ru"); client.println("Connection: close"); client.println(); } else { Serial.println("connection failed"); } }
Отправив данные, мы хотим получить какой-то ответ от сервера. Например, о том, что данные успешно дошли или возникла ошибка. Сервер может также дать какие-то инструкции на выполнение в ответ на полученную от нас информацию. Поэтому следующим этапом является прослушивание ответов сервера и выполнение какой-то реакции.
void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); while (true); } }
Все приведенные фрагменты скетчей не будут работать по отдельности. Вы можете получить полный работающий код для Ethernet модуля бесплатно в самой среде Arduino IDE. На рисунке показано, где именно это можно сделать.
Выводы
В данной статье была рассмотрена возможность управления платой Arduino через интернет посредством Etherent модуля на базе w5100. Как мы убедились, подключение модуля и программирование скетча не представляет существенной сложности. Главное, это правильно определиться со структурой проекта, определить, что будет являться сервером, а что клиентом, как будет осуществлено подключение к интернету.
Самый удобный и быстрый способ подключения модуля – использовать готовый Ethernet Shield для Arduino Uno или Nano. Подключение осуществляется через интерфейс SPI, который есть в любых платах платформы. Взяв за основу уже готовые библиотеки и скетчи из примеров Arduino IDE можно создать приложение любой сложности. Но для этого вам обязательно понадобятся навыки программирования и понимания принципов работы существующих сетевых протоколов. Будем надеяться, что наша статья помогла вам сделать первый шаг.
Рассмотрим управление устройствами на расстоянии на базе Arduino Ethernet Shield, какие бывают, преимущества и недостатки.
Веб-сервер на Ардуино
Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения.
Так выглядит шилд Ethernet Shield w5100:
Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.
Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».
Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.
На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino.
С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Например, для платы Arduino Mega выводы: 50, 51, 52, а для Duemilanove: 12, 12, 13.
Модуль может вызывать прерывания в Ардуино. Это нужно для уведомления микроконтроллера о разного рода событиях, что очень полезно.
Миниатюрные системы для сетевого доступа и беспроводной доступ по GSM
Шилд W5100 довольно громоздкий, и в связке с миниатюрными pro mini и nano выглядит нелепо, да и далеко не всегда нужна на шилде карта памяти.
Вы можете обратить свое внимание на модель arduino Ethernet модуля W5500, тоже на базе чипа WIZnet, как и предыдущий вариант.
Связь с микроконтроллером осуществляется по тому же SPI интерфейсу, а сам чип построен на Cortex M0. Чип W5500 меньше греется и имеет большую мощность, нежели у W5100 (значительно сильнее грелся).
В отличие от младших чипов, добавлен режим параллельной 8 битной шины. Но и ток потребления 160 мА при работе на полной скорости – 100 м/бит.
Другой вариант миниатюрного шилда – это arduino enc28j60. Главное его преимущество – это то, что он дешевле в 2-3 раза, чем W5500, например.
Я сделал акцент на том, что это главное преимущество, потому что в целом, если есть возможность, лучше использовать W5500, т. к. на них в сети больше информации по работе и настройке, а также есть различные проекты.
28J60 отлично подойдёт для интернета, для простейших мелких задач, типа Ethernet термометра. Микросхема произведена компанией Microchip, работает по тому же SPI интерфейсу, что и предыдущие. Библиотеки для работы с ней отлично подходят для Ардуино на 168/328 ATmega, в их числе Uno, Nano, Pro Mini. Для Mega нужно правильно назначить пины.
Но еще более интересный вопрос – это беспроводная связь с Ардуино. Это стало возможно благодаря GSM модулям, а с помощью w5500 вы можете осуществлять связь только по сети. В шилд или модуль для Ардуино вставляешь sim-карту, и вы можете управлять своей автоматизацией с помощью SMS или вызова.
Рассмотрим модуль Neoway M590E, рассчитанный на два диапазона (900/1800 мГц) – голосовую связь он не поддерживает. Работает в сети GPRS с максимальной скоростью в 48 кбит/с, способен принимать и передавать SMS сообщения. Модуль стоит около 1-2х долларов. Для своей цены он более чем универсален.
Этого набора функций достаточно как для мониторинга чего-либо, так и для управления умным домом на расстоянии, но о сферах применения будет расписано позже.
Питание M590E может осуществляться от li-ion аккумулятора или любого другого источника на 3,3 — 4,8 В с током порядка 1 ампера (номинальным 0.6 А).
Сфера применения и проекты с сетевыми шилдами
Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов.
К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице.
Одно дело, когда вы находитесь в непосредственной близости к управляемой системе, но что делать, если ваша теплица находится на участке загородного дома?
Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.
В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.
А подключается всё по такой схеме:
Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.
Только использовать вместо MEGA младшие платы Ардуино.
Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.
С Ардуино он может взаимодействовать и передавать как сообщения от неё в виде SMS, так и команды к микроконтроллеру после принятия сообщения от вас. Команды очень просты, например:
AT+CMGS=»+79123456789″;
Команда выше отправит СМС на указанный номер, точка с запятой обязательны.
Это незаменимо в проектировании охранных комплексов и устройств.
В современном мире нельзя недооценивать важность устройств автоматического управления домом, различными бытовыми сферами и охраной вашего имущества. Связь с окружающим миром нужна для наглядности в плане контроля и слежения за состоянием всех узлов вашей системы.
Модули Arduino Ethernet и GSM помогут добиться этого, а в комбинации представляют собой практически бесперебойную систему удаленного управления и контроля. Комбинировать разные способы передачи информации, безусловно, нужно для повышения надежности связи и универсальности всей конструкции.
- Цена: $39.90
Данный модуль призван обеспечить сетью ваши поделки на микроконтроллерах, придав им существенно большие возможности. Под катом будем смотреть насколько модуль соответствует описанию и использовать его по прямому назначению. А так же сравним его с другими собратьями по функционалу. Цена за 5 штук (не пугайтесь 🙂 ) Если вы планируете (или уже занимаетесь) автоматизацией рутинных процессов (сейчас принято это называть «умным домом»), то безусловно приходите к необходимости взаимодействия различных устройств межу собой. И, почти как всегда, существует множество альтернативных решений. Одно из них (не самое плохое) будет рассмотрено далее. Модульки пришли в антистатических пакетиках, все вместе сложены в коробочку. Доехали хорошо, за 35 дней. Трек номер отслеживался (ехали из Китая через Финляндию). Тут показатели весьма средние. Размеры модулей 3 на 5 см. Что не может не радовать, модулек меньше своих собратьев.
Раз уж мы планируем стыковать данный модуль с arduino, то напомню, что arduino представляет собой некий стандарт для быстрого построения устройств автоматики и робототехники не профессионалами, фактически же это заключается в среде разработки, язык (на самом деле это c++ с несколькими специфическими функциями), загрузчик для контроллеров, формат плат и дополнительных подсоединяемых устройств. Существует несколько плат, для которых можно разрабатывать в одной среде, конкретная плата выбирается исходя из потребностей по производительности, памяти, габаритам и цене. Более подробно прочитать можно здесь. Вкратце для arduino есть шилды (плата которая подсоединяется непосредственно к одной или нескольким видам плат с arduino) и модули (платы которые нуждаются в проводах для подключения к arduino), в данном случае это именно модуль, то есть если вы используете arduino, например UNO, то для подсоединения потребуются провода. Шилды удобны для быстрой сборки, а модули более компактны и удобно встраиваются в самодельные устройства — тут каждый решает сам. Стоимость обычно определяется тиражом, соответственно, если модули популярнее шилдов они дешевле и наоборот. В данном случае шилд немного дешевле чем модуль, но если вы планируете использовать контроллер или arduino pro mini — то использование шилда малоцелесообразно. Сделан модуль довольно аккуратно, флюса нет. Шелкография четкая. При рассмотрении обрадовали обозначения POE+ и POE-, которые, судя по всему, должны были подавать питание приходящее по сетевому кабелю на соответствующие выводы… Но оказалось что это совсем не так, сетевой разъем имеет встроеный трансформатор с гальванической развязкой выводов, что делает данную процедуру невозможной, хотя это очень бы пригодилось для такого модуля. Соответственно POE+ и POE- ни к чему не подсоединены и их следует рассматривать как не используемые выводы. POE (Power Over Ethernet) Я решил в своих поделках пойти по пути Passive POE — так как: — легко реализовать инжектор из обычного коммутатора, припаяв проводки питания к неиспользуемым ножкам — на приемной стороне достаточно стабилизировать напряжение до нужного — стоимость итогового варианта очень низкая — к устройству идет один кабель сразу с питанием и сигналомФото переделки коммутатораЯ использовал 16 портовые 3com OfficeConnect (купленные на авито за 300 р штука). Немного великоваты, но в моем случае размер не критичен. Предварительно нужно отпаять smd резисторы подтягивающие неиспользуемые выводы на землю. В общем, немного расстроил модулек отсутствием проброса POE на ножки с соответствующими подписями, ну что же, используем вот такие сплиттеры пассивного питания: Чтобы удобно было сравнивать и оценивать данный модуль, представим его конкурентов: 1) родной шилд arduino uno на том же чипе w5100 (китайская версия) 2) модуль на базе enc28j60 (родного шилда не имеет) Принципиальная разница в чипах: w5100 (datasheet) имеет аппаратную реализацию tcp/ip, стандартную библиотеку входящую в состав среды arduino. Enc28j60 (datasheet) реализует протоколы через библиотеки, которые нужно устанавливать дополнительно. Если кратко, забегая вперед, то лучше использовать w5100, безпроблемная работа, мало памяти и нет танцев с бубном. Хотя цена — весомый аргумент за enc28j60 (он стоит в 4 раза дешевле). Количество необходимых выводов контроллера, да и, собственно, их номера для данных модулей совпадают. Обозначения выводов сохранил оригинальными, хоть они и странные 🙂 Cхема подключения enc28j60 (тот что на фото): Q3 — 3.3 V GND — GND CS — любой цифровой вывод (задается в функции библиотеки, по умолчанию используется d8, я обычно переопределяю на d10 — так удобнее) ST — d11 SCK — d13 SO — d12 RST — (либо на RST arduino, либо на один из цифровых выводов, чтобы иметь возможность перезагружать модулек без перезагрузки платы) Выводы сделаны удобно для односторонней платы. После тестов пришел к выводу, что наиболее адекватная библиотека для работы с данным модулем: EtherCard. Cхема подключения модуля w5100 (тот что на фото): V+5 — 3.3 V (да именно так, не всегда нужно верить тому что написано) GND — GND NSS — любой цифровой вывод (задается в функции библиотеки, по умолчанию используется d10) MO — d11 SCK — d13 MI — d12 RST — (либо на RST arduino, либо на один из цифровых выводов, чтобы иметь возможность перезагружать модулек без перезагрузки платы) Выводы сделаны не сильно удобно для односторонней платы. Библиотека входит в состав среды( не нужно скачивать) — Ethernet. Очень удивило обозначение V+5, и наличие стабилизатора ams1117 на 3.3В, когда модулек отказался работать от 5В. Подал 3.3 и все стало нормально. при этом напряжение на выходе ams: 1.8 В. Видимо китайские инженеры проектировщики, как-то неудачно спроектировали и использовали недокументированные возможности ) потребляемый ток: enc28j60 w5100 То есть, оба модуля не подходят для автономного питания, впрочем, сложно представить кому это может потребоваться. Используемая память при компиляции самого простого web-сервера enc28j60 w5100 отличия налицо, но иногда это не так важно. Собственно выводы, если вам важны ресурсы производительности и памяти — используйте w5100, если устройство простое и/или логика на центральном сервере можно использовать enc28j60. Шилд w5100 отличается от рассматриваемого модуля только механизмом подключения + наличие разъема для TF карты, который, кстати, просто съест пины контроллера, если вам не нужна карта (где-то даж мелькала инструкция какие дорожки надо перерезать, чтобы их можно было использовать). Теперь про поделки на данном модуле: У меня на веранде дачи встроены динамики, провода от которых уходят в дом и там располагается ресивер к которому еще и подключен компьютер. Напрягает необходимость хождения в дом для переключения радиостанций, управления звуком и тп. Решено расположить на веранде приемник ик сигналов, заодно совместив в нем небольшой индикатор температуры и прочего: Индикатор сообщит нам когда баня готова (температура), и что сейчас происходит в автоматике. Плюс, к данному контроллеру решено подключить кнопку выключения света на всей даче. Устройство будет передавать (через Ethernet) на другой контроллер сигналы пульта, а тот уже посредством ИК светодиода посылать их на ресивер. Помимо этого, добавляется возможность посылать сигналы управления ресиверу через компьютер или телефон, что повышает удобство дачного прослушивания музыки. Так как, I2C индикатор LCD (точнее библиотеки по работе с ним) требует много памяти то выбран был модуль w5100 для работы с сетью. Питание устройству планируется подавать по витой паре от коммутатора. Контроллер посылающий сигналы на ресивер не требует много памяти и является простым устройством, поэтому принято решение на него установить enc28j60. Печатные платы изготовлены по технологии ЛУТ. Приемник ИК Передатчик ИК Ранее я описывал устройство по управлению электрическим шаровым краном через сеть: обзор, там же описаны особенности ЛУТ. Схемы очень похожи, поэтому не будем на этом останавливаться. Кстати, если вам понравился данный обзор то небольшая просьба плюсануть тот обзор про кран, не хватает совсем немного голосов для получения приза в рубрике «Сделано руками», впрочем, если не победит тот обзор — не сильно расстроюсь, меня гораздо больше порадует если кому-то пригодится информация из данных обзоров при построении своих поделок автоматизации. В коментариях к тому обзору просили выложить программу, немного причесал код для устройства управления краном и выложу его здесь, может кому-то пригодится. В ходе тестов выяснилось что устройства работают как и задумывалось, впереди причесывание кода и установка в корпуса, а также монтаж собранной схемы. Планирую этим занятся в майские праздники. Кто-то скажет, а как же связь без проводов — радиоканал. Скажу что такую связь тоже использую и если интересно могу сделать обзор данных устройств. сейчас планирую автоматизировать дачную теплицу, если будет интересно обязательно опишу. Товар приобретен за свои деньги для решения конкретных задач. Спасибо тем, кто дочитал до конца. UPD: чуть не забыл главного помощника и критика в своих поделкахИспользуемые источники:- https://arduinomaster.ru/datchiki-arduino/w5100-modul-arduino-ethernet/
- https://arduinoplus.ru/arduino-ethernet-upravlyaem-platoj-na-rasstoyanii/
- https://mysku.ru/blog/aliexpress/31727.html