Как подключить ethernet модуль enc28j60 arduino

Сфера применения и проекты с сетевыми шилдами

Ардуино – одна из самых дешевых основ для проекта умного дома. Кроме домашнего облака и доступа к файлам можно реализовать удаленное управление исполнительными механизмами любых типов.

К таким проектам можно отнести и другую автоматизацию, например, управление поливом, освещением и проветриванием в теплице.

Одно дело, когда вы находитесь в непосредственной близости к управляемой системе, но что делать, если ваша теплица находится на участке загородного дома?

Если есть интернет связь за городом – Ethernet технологии придут на помощь, на фото ниже вы видите окно HTML страницы, находящейся на сервере на базе W5500.

В таком виде представлено управление группой из 4-х реле с отслеживанием их активности, по нажатию кнопки refresh.

А подключается всё по такой схеме:

Это на примере модуля w5500. Схема не сложная, но функциональная – вы можете сделать вот такую мульти задачную реле-станцию.

Только использовать вместо MEGA младшие платы Ардуино.

Что касается мобильной передачи данных, то M590E предназначен для так называемых M2M приложений.

С Ардуино он может взаимодействовать и передавать как сообщения от неё в виде SMS, так и команды к микроконтроллеру после принятия сообщения от вас. Команды очень просты, например:

AT+CMGS=»+79123456789″;

Команда выше отправит СМС на указанный номер, точка с запятой обязательны.

Это незаменимо в проектировании охранных комплексов и устройств.

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

Модули Arduino Ethernet и GSM помогут добиться этого, а в комбинации представляют собой практически бесперебойную систему удаленного управления и контроля. Комбинировать разные способы передачи информации, безусловно, нужно для повышения надежности связи и универсальности всей конструкции.

  • https://arduinomaster.ru/datchiki-arduino/w5100-modul-arduino-ethernet/
  • https://habr.com/post/382565/
  • https://arduinoplus.ru/arduino-ethernet-upravlyaem-platoj-na-rasstoyanii/

Соединяем всё воедино (ток)

Итак, у нас есть ардуина, способная выдать на любой свой GPIO до 40 мА и на два VCC-разъёма до 200 мА. При превышении этих значений наступит деградация микроконтроллера.

Релюшки жрут около 100 мА во включенном состоянии, модуль Ethernet — 180 мА. Отсюда следует, что питать что-то из этого нужно отдельно. Проще всего разделить JD-VCC и GND реле.

Запитать их можно через блок питания. Используя — например — такую вот плату с регуляторами напряжения:

Сам блок питания должен выдавать: 500мА (Arduino и ENC28J60, который питается через Arduino) + 100мА (питание реле) + 25% (от суммы) = 600мА + 25% = 750мА. Чаще всего в продаже встречаются блоки питания на 1А, скорее всего, именно он и нужен.

Как работает 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 выглядит как возможность соединить определенным образом конечное оборудование с ближайшей точкой, имеющей выход в другие сегменты сети.  Чаще всего это роутер или маршрутизатор с доступом в интернет или к другим ресурсам локальной сети.

Если вы начинаете проект с Ethernet, то вам нужно будет понимать следующие базовые понятия, имеющие отношение к этой технологии:

  • Кабель. Как правило, это витая пара, реже – оптоволокно (ее подключить к арудино простым способом не получится).
  • Разъемом для подключения кабеля – RJ-45. На самом деле, стандарт для штекеров носит совсем другое название (8P8C), но “в народе” принято называть стандартный Ethernet разъем именно как RJ45. Следует отметить, что есть и другие стандарты – RJ-25, RJ-14 и т.п. Для подключения к ардуино через стандартные модули они не подойдут.
  • Сетевой Ethernet MAC-адрес. Это уникальный шестибайтовый идентификатор устройства в сети, который обычно прошивается в само устройство, но в некоторых случаях может быть изменен программно. Всего может быть задано 2 в 48 степени адресов, это триллионы разных вариантов (точнее, 281 474 976 710 656), так что пока их с головой хватает для создания действительно уникальных идентификаторов.

В подавляющем большинстве задач проект с Ардуино будет подключен к уже существующей Ethernet сети через стандартное оборудование. Т.е. вы просто берете модуль Ethernet, подключаете его к Ардуино, а затем вставляете сетевой кабель в этот самый модуль.  Все, что вам понадобится – правильно настроить в своем скетче ваш MAC адрес (его можно менять!) и прописать IP адрес устройств, к которым вы будете подключаться. Мы рассмотрим пример в разделе, посвященным программированию.

Этапы создания

Следует сказать, что этапы создания системы «умного дома» с привлечением специалистов или же своими руками будут одинаковыми. Правда, в последнем случае готовый вариант в целом обойдется существенно дешевле, чем если привлекать специалистов, которых на рынке и так не хватает. По этой причине зарплаты у них будут соответствующими, а значит, если вы не хотите тратить лишние средства, то можно обойтись собственными силами. Итак, начнем с комплектующих для этой системы, если вы решили все-таки создавать ее самостоятельно.

Комплектация

Если говорить о комплектации системы, то технология будет включать в себя следующий набор компонентов:

  • датчик движения;
  • датчик температуры и влажности;
  • датчик освещенности;
  • пара температурных датчиков с маркировкой DS18B20;
  • Ethernet-модуль марки ENC28J60;
  • микрофон;
  • переключатель язычкового типа;
  • реле;
  • кабель типа «витая пара»;
  • кабель категории Ethernet;
  • резистор, имеющий сопротивление 4,7 килоома;
  • микропроцессорная плата Arduino.

Алгоритм подключения

Следует сказать, что умный дом должен быть оснащен исключительно светодиодными лампочками, так как обычные варианты просто могут не выдержать большого напряжения. Когда проект будет готов, а все нужные запчасти уже приобретены, следует начать подключение датчиков и контроллеров. Делать это необходимо исключительно по схеме, созданной ранее. Контакты необходимо полностью заизолировать.

Если говорить кратко, то поэтапно алгоритм подключения будет выглядеть таким образом:

  • установка кода;
  • настройка приложения для ПК или мобильного;
  • портовая переадресация;
  • осуществление тестирования ПО и датчиков;
  • устранение неисправностей, если они были выявлены при тестировании.

Итак, начнем с установки кода.

Сначала пользователю следует написать ПО в Arduino IDE. В нем представлены:

  • текстовый редактор;
  • создатель проектов;
  • программа для компиляции;
  • препроцессор;
  • инструмент для загрузки ПО в мини-процессор Arduino.

Следует сказать, что существуют версии ПО для основных компьютерных ОС – Windows, Linux, Mac OS X. Если говорить об используемом языке программирования, то речь идет о C++ с рядом упрощений. Программы, написанные пользователями для Arduino, обычно называют скетчами. Ряд функций система создает автоматически и пользователю не нужно разбираться в их написании, прописывая список обычных действий. Также нет необходимости вносить файлы заголовочного типа обычных библиотек. Но пользовательские вставлять необходимо.

Добавлять библиотеки в проектный IDE-менеджер можно различными методами. В виде исходников, прописанных на С++, идет добавление в отдельную директорию на рабочей директории IDE-оболочки. Теперь имена необходимых библиотек появляются в определенном IDE-меню. Те, что вы отметите, войдут в компиляционный список. В IDE существует малое количество настроек, а задавать тонкости компилятора вообще нет возможности. Это сделано для того, чтобы несведущий человек не натворил каких-либо ошибок.

Если вы скачали библиотеку, то ее необходимо распаковать и просто вставить в IDE. В программном тексте есть комментарии, которые поясняют принцип ее работы. Следует отметить, что все приложения на Arduino работают по одной технологии: пользователь шлет запрос на процессор, а он, в свою очередь, осуществляет загрузку нужного кода на экран устройства. Когда человек нажимает клавишу Refresh, то микроконтроллер отсылает информацию. С каждой из страниц с определенным обозначением идет программный код, что будет отображаться на экране.

Следующий комплекс действий заключается в установке клиента на персональный компьютер или смартфон. Скачать его можно в интернете, в Google Play Market или из другого источника. Для того чтобы сделать это, необходимо открыть файл на телефоне, который вы скачали, после чего щелкнуть по нему и в появившемся окне нажать на клавишу «Установить». При этом следует знать, что для этого должна быть активирована опция, позволяющая осуществлять установку программ не из сервиса Google Play. Чтобы включить эту опцию, необходимо войти в раздел настроек и выбрать там пункт «Безопасность». Именно так и необходимо активировать соответствующую опцию. Когда установка завершится, то можно будет осуществить активацию приложения и настроить его.

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, а стоит модуль в два раза дешевле чем данный шилд.

Основы Arduino

Ардуино – платформа, позволяющая множеству инженеров со всего мира создавать свои проекты с минимальными вложениями.

В первую очередь – это специальный микроконтроллер с одноимённой системой управления и библиотеками, построенными на языке С++. Соответственно, если вы планируете создавать что-то уникальное, вам следует изучить все нюансы, которые имеет программирование Arduino.

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

Абсолютно любой проект построен на поэтапной блок-модели, в которой описывается, что необходимо сделать вашему микроконтроллеру и как это сделать

Поэтому давайте рассмотрим, что вообще обозначает этот термин. Абсолютно любой проект построен на поэтапной блок-модели, в которой описывается, что необходимо сделать вашему микроконтроллеру и как это сделать

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

Для упрощения работы пользователей в Ардуино созданы готовые библиотеки функций, вам достаточно лишь вводить команды из них, чтобы добиться какой-то цели. Естественно, таким образом вы многого не добьётесь, но для создания собственных библиотек потребуется знание языка С++ на котором и построена прошивка чипа.

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

Все функции строятся из простейших операнд, которые характерны для С++. Этими операндами являются переменные различных типов и способы их применения. Поэтому любая функция, используемая в микроконтроллере для получения сведений или отправки сигнала, – это набор простейших операций, который записан в главной библиотеке. И вы будете ограничены до тех пор, пока не получите достаточно опыта и практики, чтобы понимать, какую библиотеку и для какой цели вам стоит написать.

Главный же недостаток конструирования с Arduino сложных проектов в том, что вам придётся с нуля писать код и подбирать компоненты для системы, поэтому лучше сначала попрактиковаться на простейших задачах.

Также, учитывайте, что язык написания библиотек системы – низкоуровневый, а соответственно, состоит из простейших команд, в отличие от высокоуровневых python или pascal, удобных для пользователей. С другой стороны, он также является мультипарадигмальным, поэтому подходит для решения любой задачи с помощью удобной вам парадигмы программирования.

Чаще всего применяется ООП. Сам С++ имеет ядро из многочисленных библиотек и дополнительных функций или методов, поэтому, если вы собираетесь разобраться во всём кардинально, стоит начинать с освоения языка с нуля.

Аналоговые входы Arduino

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (терморезисторы, фоторезисторы) и считывать аналоговый сигнал с них.

Для этих целей в Ардуино есть функция analogRead(). Для примера подключим фоторезистор к ардуино и напишем простейший скетч, в котором мы будем считывать показания и отправлять их в монитор порта. Вот так выглядит наше устройство:


Подключение фоторезистора к Ардуино

В схеме присутствует стягивающий резистор на 10 КОм. Он нужен для того что бы избежать наводок и помех. Теперь посмотрим на скетч:

int sensePin = 0; // Пин к которому подключен фоторезистор void setup() { analogReferense(DEFAULT); // Задаем опорное значение напряжения. Эта строка не обязательна. Serial.begin(9600); // Открываем порт на скорости 9600 бод. } void loop() { Serial.println(analogRead(sensePin)); // Считываем значение и выводим в порт delay(500); // задержка для того что бы значений было не слишком много }

Вот так из двух простейших элементов и четырех строк кода мы сделали датчик освещенности. На базе этого устройства мы можем сделать умный светильник или ночник. Очень простое и полезное устройство.

Вот мы и рассмотрели основы работы с Arduino. Теперь вы можете сделать простейшие проекты. Что бы продолжить обучение и освоить все тонкости, я советую прочитать книги по ардуино и пройти бесплатный обучающий курс. После этого вы сможете делать самые сложные проекты, которые только сможете придумать.

Что такое Arduino

Микрокомпьютеров для инженеров и программистов-разработчиков существует множество. И одной из самых популярных физически-программных платформ является Arduino. Она привлекает особенной простотой, совместимостью с большинством операционных систем и низкой стоимостью. А мы помогаем разобраться в том, что представляет собой платформа Arduino.

Arduino — это открытая электронная платформа, основанная на простых в использовании железе и программном обеспечении.

Платы с микроконтроллером Arduino способны считывать входящую информацию (загоревшаяся лампочка сенсора, палец на кнопке или сообщение в Твиттер), а зачем переформировывать её в исходящее действие — активировать двигатель, зажечь светодиод или опубликовать что-то в сети.

На протяжении нескольких лет платформа использовалась для создания многих тысяч проектов, начиная от конструирования простых бытовых девайсов до разработки сложных научных инструментов. Вокруг платформы построилось сообщество студентов, учёных и просто интересующихся со всего мира. И выбирают именно эту платформу за удобство и многофункциональность.

Программное обеспечение для Arduino

Для работы с платформой Arduino вам не обязательно будет ставить себе определённое программное обеспечение. Начать программировать можно с Arduino Web Editor, позволяющим сохранять скетчи в облачном хранилище. Инструмент постоянно обновляется онлайн, ничего скачивать и переустанавливать не приходится. Но для работы, конечно, потребуется постоянное интернет-соединение.

Однако, если вы предпочитаете программировать оффлайн, вам следует скачать последнюю версию приложения для рабочего стола Arduino. Это открытое программное обеспечение, совместимо со следующими операционными системами:

  • Windows;
  • Mac OS (Lion или более ранние версии);
  • Linux 32 bit;
  • Linux 64 bit;
  • Linux ARM.

Актуальная версия приложения для рабочего стола будет работать с любой версией микрокомпьютера Arduino, никакие дополнительные программы под определённое железо устанавливать не нужно.

Главное преимущество всей этой открытой платформы именно в её простоте.

Если вы только начинаете работать с Arduino, вас наверняка порадует огромное количество понятных инструкций, официально переведённых даже на русский язык.

Преимущества платформы Arduino

Для физического программирования существует множество микрокомпьютеров и платформ, в том числе популярный и дешёвый Raspberry Pi. Большинство существующих программ помогает облегчить работу и обучение программированию, Arduino не становится исключением. Но у этой платформы есть множество весомых преимуществ перед рядом конкурентов:

  • Низкая цена в сравнении с большинством подобных платформ.
  • Кроссплатформенность. С Arduino работать можно хоть на Windows, хоть на Mac OS, тогда как большинство платформ разрабатывается исключительно под Windows.
  • Простая программная обстановка. Платформа отлично подходит для новичков, а подробных уроков в сети великое множество.
  • Открытый ресурс и расширяемое программное обеспечение. Продвинутые программисты могут без проблем самостоятельно расширять под себя ПО (и даже железо).

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

Темная тема для Arduino IDE

Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.

Для такого случая сторонний разработчик разработал так называемую темную тему, тему которая позволяет вернуть знакомый с детства вариант черного фона и светлого текста на нем. Тема не идеальна, так как не позволяет полностью настроить все нюансы, но ограничение это связано не с самой темой, а с ограничениями Arduino IDE. Тему, при желании, можно подредактировать самостоятельно.

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

Синий кабель для программирования может выполнять следующие три функции:

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

После того как вы подадите питание на плату Arduino UNO на ней загорится маленький светодиод – это свидетельствует о том, что на плату подано питание. Также вы можете заметить как мигает другой светодиод – это результат работы программы по управлению миганием светодиода, которая по умолчанию загружена в вашу плату ее производителем.

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте “Диспетчер устройств (Device manager)” на вашем компьютере.

В диспетчере устройств откройте опцию “Порты” “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

При этом стоит отметить, что не стоит обращать внимание на то, какой номер порта отобразился у вашей платы Arduino – он может, к примеру, выглядеть как CCH450 или что то подобное. Этот номер порта просто определяется производителем платы и больше ни на что не влияет. Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером

В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

В некоторых случаях в указанной опции диспетчера устройств может отобразиться два COM порта для вашей платы и вы не будете знать какой из них правильный. В этой ситуации отключите и снова подключите плату Arduino к компьютеру – какой из COM портов при этом будет появляться и исчезать, значит тот и правильный порт.

Следует помнить о том, что номер COM порта будет изменяться при каждом новом подключении вашей платы к компьютеру – не пугайтесь, в этом нет ничего страшного.

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

Несомненным преимуществом официальных модулей на основе схем серии W5x00 (в том числе их аппаратных аналогов, например, плат расширения OKYSTAR OKY2102 или DFROBOT DFR0125, рис. 1) является полная программная поддержка в виде библиотеки Ethernet, встроенной в стек Arduino. Таким образом, пользователь может приступить к созданию программы сразу после запуска Arduino IDE, не устанавливая дополнительные программные пакеты.

В зависимости от схемы WIZnet и объема доступной памяти RAM библиотека Ethernet поддерживает максимум четыре (для схемы W5100 и памяти RAM ≤ 2 кбайт) или восемь (схемы W5200 и W5500) параллельных выходящих/входящих соединений. Программный интерфейс библиотеки разделен на пять классов, сгруппированных по отдельным функциональностям. Для нужд IP-адресации создан класс IP Address. Чтобы запустить простое серверное приложение на стороне Arduino, необходимо использовать класс Ethernet Server для выполнения чтения и записи данных со всех подключенных устройств. Взаимодополняющим классом является класс Ethernet Client, который позволяет с помощью нескольких простых вызовов подготовить функционального сетевого клиента, выполняющего операции записи и чтения данных с сервера. Для связи по протоколу UDPбиблиотека Ethernet предоставляет класс Ethernet UDP. Полное описание классов и методов представлено на сайте .

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

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

#include <SPI.h>
#include <Ethernet.h>

Следующий шаг — настройка сетевых параметров (MAC-адрес контроллера, IP-адрес шлюза доступа и маски подсети), а также создание сервера для прослушивания порта № 23 (порт по умолчанию для протокола Telnet):

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};


IPAddress ip(192,168,1, 177);
IPAddress gateway(192,168,1, 1);
IPAddress subnet(255, 255, 0, 0);

EthernetServer server(23);

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

void setup() {

   Ethernet.begin(mac, ip, gateway, subnet);
   server.begin();

   Serial.begin(9600);
      while (!Serial) {
   }

   Serial.print("Chat server address:");
   Serial.println(Ethernet.localIP());
}

Основной цикл loop () ожидает соединения от клиента и проверяет наличие данных для считывания. При получении данных он отправляет их без изменений клиенту, выполняя таким образом простую функцию echo:

void loop() {

 EthernetClient client = server.available();

   if (client) {
    if (!alreadyConnected) {
       client.flush();
       Serial.println("We have a new client");
       client.println("Hello, client!");
       alreadyConnected = true;
    }

    if (client.available() > 0) {

       char thisChar = client.read();

       server.write(thisChar);
       Serial.write(thisChar);
    }
   }
}

Правильность работы этого приложения можно протестировать, используя произвольного клиента протокола Telnet (например, программу Putty в системе Windows или команду telnet в системе Linux) или еще один комплект Arduino и классы Ethernet Client.

Загрузка кода ESP8266

Используйте любой из приведенных выше способов и откройте Arduino IDE, затем выберите плату ESP8266 в меню:

Tools → Board → Generic ESP8266 Module
(Инструменты → Плата → Модуль ESP8266)

Если вы не установили и не настроили плату ESP8266 для Arduino, сделайте это, выполнив шаги выше этого руководства. Затем можете идти дальше.

Теперь скопируйте приведенный ниже код в Arduino IDE и нажмите кнопку загрузки. Измените SSID на точку доступа Wi-Fi и измените пароль на свой пароль Wi-Fi и скомпилируйте.

#include <ESP8266WiFi.h>

const char* ssid = "YOUR_SSID";//type your ssid
const char* password = "YOUR_PASSWORD";//type your password

int ledPin = 2; // GPIO2 of ESP8266
WiFiServer server(80);//Service Port

void setup() {
Serial.begin(115200);
delay(10);

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

// Start the server
server.begin();
Serial.println("Server started");

// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}

// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}

// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Match the request

int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
} 
if (request.indexOf("/LED=OFF") != -1){
digitalWrite(ledPin, LOW);
value = LOW;
}

//Set ledPin according to the request
//digitalWrite(ledPin, value);

// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); //  do not forget this one
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.print("Led pin is now: ");

if(value == HIGH) {
client.print("On");  
} else {
client.print("Off");
}
client.println("<br><br>");
client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
client.println("Click <a href=\"/LED=OFF\">here turn the LED on pin 2 OFF<br>");
client.println("</html>");

delay(1);
Serial.println("Client disconnected");
Serial.println("");
}

Откройте последовательный монитор и откройте URL, показанный на вашем последовательном мониторе, через веб-браузер. Подключите GPIO 2 от ESP8266 к более длинному выводу светодиода. Теперь вы можете управлять светодиодом удаленно через Интернет!

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

Удалите все провода, которые были необходимы для загрузки кода. Модуль LM1117 используется для обеспечения регулируемого выхода 3,3 В. Это позволит вам сделать модуль ESP8266 или ESP-01 автономным.

Ардуино уроки для начинающих с нуля

Выводы

В данной статье была рассмотрена возможность управления платой Arduino через интернет посредством Etherent модуля на базе w5100. Как мы убедились, подключение модуля и программирование скетча не представляет существенной сложности. Главное, это правильно определиться со структурой проекта, определить, что будет являться сервером, а что клиентом, как будет осуществлено подключение к интернету.

Самый удобный и быстрый способ подключения модуля – использовать готовый Ethernet Shield для Arduino Uno или  Nano. Подключение осуществляется через интерфейс SPI, который есть в любых платах платформы. Взяв за основу уже готовые библиотеки и скетчи из примеров Arduino IDE можно создать приложение любой сложности. Но для этого вам обязательно понадобятся навыки программирования и понимания принципов работы существующих сетевых протоколов. Будем надеяться, что наша статья помогла вам сделать первый шаг.

В этой статье я опишу ситуацию с которой столкнулся во время разработки проекта Arduino Mega Server. Суть дела заключается в том, что существует такая библиотека Arduino Ethernet Library, написанная для поддержки сетевой платы Ethernet Shield на чипе W5100. Это стандартная плата и стандартная библиотека, которая многие годы поставляется в комплекте со средой разработки Arduino. И эта библиотека является основой для всех проектов, использующих обмен информацией по проводной сети. Так вот, оказалось, что эта библиотека попросту профнепригодна. На ней в принципе невозможно построить нормальное сетевое взаимодействие. Можно только «баловаться» одиночными запросами и ответами. Ни о каком построении серверов на базе этой библиотеки речь не может идти. Почему? Потому, что эта библиотека имеет встроенный «баг», который подвешивает неодиночные запросы на время от трёх до десяти секунд и более. Баг именно встроенный и автор библиотеки об этом знал, о чём свидетельствует его пометки в исходниках (но об этом несколько позже). Тут нужно понимать, что библиотека, поставляемая с официальной средой разработки является неким стандартом и если у вас не работает проект, то вы будете искать дефект где угодно, только не в стандартной библиотеке, ведь ей много лет и ею пользуются сотни тысяч, если не миллионы людей. Не могут же они все ошибаться?

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: