Ethernet Shield и Arduino — создание web-сервера, управление светодиодом

Вопросы и ответы
Содержание
  1. Характеристики шилда и его составляющее
  2. Эксперимент
  3. Необходимые комплектующие
  4. Схема соединений
  5. Конфигурация Ethernet
  6. IP адрес
  7. MAC адрес
  8. Программа
  9. Шаг 2. Суть проекта
  10. Принцип работы Ethernet Shield и необходимые компоненты для подключения
  11. Arduino Uno R3 (ATmega 328P / CH340G)
  12. Сервер
  13. Шлейф проводов «Папа — Папа» (30см, 40шт.)
  14. Самые популярные материалы в блоге
  15. За все время
  16. Подключение Ethernet Shield к Arduino
  17. Шаг 3. Схема соединения
  18. Вариант 1
  19. Вариант 2
  20. Шаг 4. Настройка соединения
  21. Шаг 5. Общаемся с Arduino Uno через смартфон
  22. ENC28J60 – миниатюрный Ethernet модуль
  23. Необходимое оборудование
  24. Написание скетча программы для создания web-сервера для Arduino на базе Ethernet shield W5100
  25. HelpDuino Web Server</h1>»); // Заголовок страницы клиент.принт («Включить</button>»); // кнопка включения клиент.принт («Выключить</button>»); //кнопка выкл client.println(«<>br> <br>»); // переход на следующую строку клиент.println («<hr>»); //строка===================================== client.println(«Температура = «); //Температура с DHT 11 клиент.println(t); // переменная температуры клиент.println(«*C»); клиент.println (» «); // переход на следующую строку client.println(«Влажность = «); //Влажность с DHT 11 клиент.println(ч); // переменная влажности клиент.println(«%t»); клиент.println (» «); // переход на следующую строку клиент.println («<hr>»); //строка===================================== клиент.println («</body>»); клиент.println («</html>»); // закрываем HTML-тег ломать; //выход } } } задержка (1); //время для получения новых данных клиент. Останавливаться(); // закрываем соединение } }
  26. Первые шаги
  27. Технические характеристики Ethernet шилда

Характеристики шилда и его составляющее

Ethernet Shield, вид спереди

Ethernet Shield основан на чипе W51000, у которого нет топовых возможностей, но их достаточно. Этот шилд работает с использованием библиотеки Arduino Ethernet.

Отмечу, что на видеокарте есть слот для карты micro SD. Это необходимо, чтобы иметь возможность хранить больше информации и загружать веб-страницы с самого Arduino. Чтобы использовать карту micro SD, вам необходимо использовать дополнительную библиотеку.

Спецификации экрана Ethernet

  • Рабочая мощность — 5 В (плата питается от Arduino)
  • Размер буфера: 16 КБ
  • Скорость соединения: 10/100Мб

Эксперимент

Чтобы продемонстрировать, как использовать Arduino в качестве веб-сервера, мы прочитаем состояние кнопки.

Необходимые комплектующие

  • 1 кабель Ethernet
  • 1 х WiFi-роутер
  • 1 х Ардуино Мега2560
  • 1 х Ethernet-экран
  • 1 х макетная плата
  • 3 х свитера
  • 1 х 1 кОм резистор
  • 2 источника питания 9 В
  • 1 х кнопка

Схема соединений

схема подключения

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

Конфигурация Ethernet

Для управления картой расширения Ethernet мы используем библиотеку Ethernet.h.

Плате расширения необходимо назначить MAC- и IP-адреса с помощью функции Ethernet.begin(). Для конкретного устройства MAC-адрес является глобальным уникальным идентификатором. Современные карты расширения Ethernet поставляются с наклейкой, на которой указан MAC-адрес. Для более старых плат расширения следует назначать случайный адрес, но не используйте один и тот же адрес для нескольких плат. Правильность IP-адресов зависит от конфигурации сети. Если используется DHCP, IP-адрес может динамически назначаться плате расширения.

IP адрес

IP-адрес — это числовая метка, присваиваемая каждому устройству в компьютерной сети с использованием Интернет-протокола (IP). IP-адрес легко указать в скетче:

байт ip = {192, 168, 0, 112 }

И измените его на свою собственную сеть. Например, если IP-адрес маршрутизатора — 192.168.0.60, а сканера — 192.168.0.40, плате расширения можно назначить IP-адрес 192.168.0.50:

байт ip = {192, 168, 0, 50 };

Первые три байта должны быть одинаковыми.

MAC адрес

MAC-адрес (адрес управления доступом к среде) — это уникальный идентификатор, назначаемый каждому устройству, участвующему в физической сети. Каждое сетевое устройство имеет уникальный серийный номер, позволяющий идентифицировать себя в сети и связанный с прошивкой устройства. Однако для Arduino мы можем сами установить MAC-адрес:

байт mac = {0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 };

Вы можете установить подсеть и шлюз с помощью следующего кода:

байтовая подсеть = {255, 255, 255, 0}; // назначаем маску подсети byte gateway = { 192, 168, 0, 1 }; // назначаем адрес шлюза

Ниже приведен блок кода с настройками карты расширения Ethernet Shield:

/********************* НАСТРОЙКИ ETHERNET ********************/ byte mac = { 0x90 , 0xA2, 0xDA, 0x0D, 0x85, 0xD9 }; // назначаем байт mac адреса ip = { 192, 168, 0, 112 }; // ip в локальной сети byte subnet = { 255, 255, 255, 0 }; // назначаем маску подсети byte gateway = { 192, 168, 0, 1 }; // назначаем адрес шлюза по умолчанию

Ниже представлена ​​собранная схема. Кабель Ethernet соединяет карту расширения с маршрутизатором, который подключается через WiFi к ноутбуку.

Arduino + Ethernet Shield + Маршрутизатор + Макетная плата

Программа

Ниже приведен блок кода, отображающий HTML-код простой веб-страницы.

клиент.println(«Ethernet Tutorial</title>»);клиент.println(»

Шаг 2. Суть проекта

Есть много способов использовать ESP866 для связи. Некоторые могут использовать его для отправки/получения данных онлайн или регулярной загрузки данных. В этом уроке мы покажем, как установить беспроводную связь с Arduino с помощью телефона (Android или iPhone). Все будет сделано в автономном режиме, поэтому вам не нужно подключение к Интернету.

ESP8266 будет выполнять роль точки доступа (режим AP), то есть будет предоставлять доступ к сети Wi-Fi другим устройствам (станциям) и затем подключать их к проводной сети. Этот процесс довольно прост.

Распиновка ESP
Распиновка ESP

Используйте свой телефон, чтобы отправить команду на Arduino, и с ESP8266 все будет работать без проводов.

Принцип работы Ethernet Shield и необходимые компоненты для подключения

Ethernet Shield подключает Arduino к серверу через Интернет или маршрутизатор Wi-Fi. А пока мы будем использовать Wi-Fi-роутер для передачи информации от датчиков и управления светодиодом. Вся информация будет отображаться на самой простой странице, которую мы создали заранее.

Для нашей работы нам понадобятся следующие компоненты:

  • Плата Arduino (мы используем Arduino UNO)
  • Экран Ethernet
  • Датчик влажности и температуры DHT11
  • Подключить провода
  • Вспомогательная макетная плата — макетная плата
  • Любой Wi-Fi роутер
  • Сетевой кабель

Все эти элементы можно купить недорого и с высоким качеством в интернет-магазине SmartElement.

Для вашего удобства вы можете нажать на имя в списке выше, чтобы перейти к покупке продукта.

Необходимые компоненты для подключения Ethernet Shield к Arduino

Arduino Uno R3 (ATmega 328P / CH340G)

1 050 ₽ – 1 250 ₽ В наличии Ардуино Уно R3
Выбирать…

Сервер

Вы можете использовать Arduino Ethernet Shield в качестве веб-сервера для загрузки HTML-страницы или функции. Вы можете отслеживать (анализировать) запросы, отправленные клиентом через браузер. В следующих двух примерах показано, как использовать нашу «круговую диаграмму» для отображения HTML-страниц и анализа строк URL.

Важно помнить, что вы должны ввести IP-адрес вашей платы Arduino, чтобы приведенные ниже примеры работали правильно.

Код ниже изменяет содержимое веб-страницы при нажатии кнопки:

/*

Веб-сервер с использованием экрана Ethernet Shield — пример

Простой пример веб-сервера, который меняет страницу после нажатия кнопки.

Схема подключения

* Экран Ethernet подключен к контактам 10, 11, 12, 13

* кнопка подключена между контактами D2 и 5V

* Резистор 10 кОм подключен между контактом D2 и землей

*/

#включают #включают

// ниже нужно ввести MAC-адрес и IP-адрес контроллера.

// IP-адрес будет зависеть от вашей локальной сети:

байт mac = {0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };

IP-адрес ip(191,11,1,1); //<<< ВВЕДИТЕ СВОЙ IP-АДРЕС ПО ЭТОЙ ССЫЛКЕ!!!

// Инициализируем библиотеку сервера Ethernet

// с IP-адресом и портом, который вы хотите использовать

// (порт 80 — порт по умолчанию для HTTP):

Сервер EthernetServer(80);

кнопка intPress = 1;

недействительная установка()

{

pinMode(2, ВВОД);

// запускаем Ethernet-соединение и сервер:

Ethernet.begin(mac, ip);

сервер.начать();

}

пустой цикл()

{

buttonPress = цифровое чтение (2);

// отслеживаем входящего клиента

Клиент EthernetClient = сервер.доступный();

если (клиент) {

// HTTP-запрос заканчивается пустой строкой

логическое значение currentLineIsBlank = true;

в то время как (клиент подключен()) {

если (клиент.доступен()) {

char c = client.read();

// если вы дошли до конца строки (получили символ новой строки)

// и строка пуста, http запрос заканчивается.

// Соответственно, вы отправляете ответ:

если (c == ‘n’ && currentLineIsBlank) {

// отправляем стандартный HTTP-ответ

client.println(«HTTP/1.1 200 OK»);

client.println(«Тип контента: текст/html»);

клиент.println();

// обслуживает другую версию сайта в зависимости от состояния кнопки (нажата или нет),

// который подключен к контакту 2

если (нажать кнопку == 1) {

клиент.println(«ЛЕГКИЙ!</cke:html>»);

}

иначе если (buttonPress == 0){

клиент.println(«ТЕМНЫЙ!</cke:html>»);

}

ломать;

}

если (с == ‘n’) {

// начинаем с новой строки

текущаяЛайнИсБланк = Истина;

}

иначе если (с != ‘r’) {

// если в этой строке получен символ

currentLineIsBlank = ложь;

}

}

}

// дать браузеру время для получения данных

задержка (1);

// закрыть соединение:

клиент.стоп();

}

}

Чтобы скетч заработал, подключите кнопку между контактами D2 и 5V. Сопротивление 10 кОм между землей и контактом D2. После этого вы вводите IP-адрес вашего Arduino в браузере. Страница должна загружаться с черным фоном. Нажмите и удерживайте кнопку, затем перезагрузите страницу браузера. После этого страница должна загрузиться с белым фоном.

Код ниже включает светодиод в зависимости от URL-адреса, отправленного на Arduino:

/*

Веб-сервер — пример

Позволяет включать и выключать светодиод при вводе разных URL-адресов в браузере

Как активировать:

http://ВАШ_IP_АДРЕС/$1

выключить:

http://ВАШ_IP_АДРЕС/$2

Схема подключения:

* Экран Ethernet подключается к контактам 10, 11, 12, 13

* Подключите светодиод к контакту D2, а другую ногу к земле через резистор 220 Ом

*/

#включают #включают

логическое входящее = 0;

// ниже нужно ввести MAC-адрес и IP-адрес контроллера.

// IP-адрес будет зависеть от вашей локальной сети:

байт mac = {0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };

IP-адрес ip(191,11,1,1); //<<< ВВЕДИТЕ СВОЙ IP-АДРЕС ПО ЭТОЙ ССЫЛКЕ!!!

// Инициализируем библиотеку сервера Ethernet

// используя указанный вами IP-адрес и порт

// (порт HTTP по умолчанию установлен на 80):

Сервер EthernetServer(80);

недействительная установка()

{

pinMode(2, ВЫХОД);

// запускаем Ethernet-соединение и сервер:

Ethernet.begin(mac, ip);

сервер.начать();

Серийный.начать(9600);

}

пустой цикл()

{

// получаем данные от клиента:

Клиент EthernetClient = сервер.доступный();

если (клиент) {

// Запрос HHTP заканчивается пустой строкой

логическое значение currentLineIsBlank = true;

в то время как (клиент подключен()) {

если (клиент.доступен()) {

char c = client.read();

// если вы достигли конца строки, а следующая строка пуста,

// HTTP-запрос завершается, и вы можете отобразить ответ

// считывает строку URL от $ до первого пробела

если (входящий && c == ‘ ‘){

входящий = 0;

}

если (с == ‘){

входящий = 1;

}

// проверка строки URL. Он содержит $1 или $2

если (входящий == 1){

Серийный println(c);

если (с == ‘1’){

Serial.println(«ВКЛ»);

цифровая запись (2, ВЫСОКИЙ);

}

если (с == ‘2’){

Serial.println(«ВЫКЛ»);

цифровая запись (2, НИЗКИЙ);

}

}

если (с == ‘n’) {

// начинаем новую строку

текущаяЛайнИсБланк = Истина;

}

иначе если (с != ‘r’) {

// получаем символ в текущей строке

currentLineIsBlank = ложь;

}

}

}

// дать браузеру время для получения данных

задержка (1);

// закрыть соединение:

клиент.стоп();

}

Чтобы этот пример работал правильно, подключите положительную ветвь светодиода к контакту D2, а отрицательную ветвь к земле через резистор 220 Ом.

Чтобы включить светодиод, введите в строке браузера:

http://[ВАШ_IP_АДРЕС]/$1

Чтобы выключить светодиод, введите в строке браузера:

http://[ВАШ_IP_АДРЕС]/$2

Примечание. Вы должны заменить строку [YOUR_IP_ADDRESS] своим IP-адресом.

 

Шлейф проводов «Папа — Папа» (30см, 40шт.)

380 ₽В наличии 65Комплект проводов
Добавить в корзину

Самые популярные материалы в блоге

За все время

  • BMS — обзор контроллеров защиты аккумуляторов
  • Установка ESP32 в Arduino IDE (Руководство для Windows)
  • Arduino и адресная светодиодная лента WS2812B
  • Веб-сервер потокового видео ESP32-CAM (работает с Home Assistant)
  • DS1302 — Схема подключения Arduino

Подключение Ethernet Shield к Arduino

Схема подключения этих элементов показана ниже. Хочу напомнить, что соединять все элементы нужно очень аккуратно!.

Схема подключения Ethernet Shield к Arduino для создания сервера

Для начала расскажу, как подключить Wi-Fi роутер к Ethernet шилду. Для подключения нужен сетевой кабель, которым соединяются эти два элемента. Для нашей процедуры интернет не требуется, поэтому один конец кабеля подключаем к Ethernet Shield, а другой к Wi-Fi роутеру. Осталось подключить Wi-Fi роутер к питанию и все готово, мы соединили эти два элемента.

Подключите Ethernet Shield к маршрутизатору Wi-Fi

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

Подключение Ethernet Shield к Arduino
Подключение Ethernet Shield к Arduino

Осталось подключить остальные компоненты к Ethernet Shield, как показано на изображении выше. У вас должно получиться что-то вроде этого соединения.

Готов к подключению Ethernet Shield к Arduino со всеми компонентами

Обратите внимание, что при длительном подключении Ethernet-шилда к питаемому Arduino шилд значительно нагревается. Для постоянного использования необходимо установить охлаждение, например, радиатор или вентилятор. Не забудьте учесть этот момент.

Шаг 3. Схема соединения

Мы можем соединить Arduino и модуль WiFi двумя способами — первый с резистором и второй без резистора. Рассмотрим обе схемы.

Вариант 1

Подключаем контакты как описано в приложенной таблице контактов ниже:

Следуйте этим инструкциям:

  • подключить красный провод VIN (3,3В) к питанию +3,3В от микроконтроллера;
  • соедините черный провод с землей;
  • подключите зеленый провод к TX модуля Wifi и микроконтроллера;
  • подключите желтый провод RX к модулю Wi-Fi и микроконтроллеру.

Важно! ESP8266 питается строго только до 3,3В, при более высоких значениях можно разрушить модуль. Не используйте напряжение выше 3,3 В!

Подключите VIN к 3,3 В, чтобы включить питание, а также к контакту ENABLE, чтобы включить модуль.

TX подключен к RX, что означает, что все, что мы хотим отправить на ESP8266, будет получено Arduino UNO. И наоборот для RX на TX. Создав эту схему, мы теперь готовы запустить WiFi с Arduino UNO.

Вариант 2

Подключите контакты в соответствии с этой схемой контактов ниже:

Следуйте этим инструкциям:

  • подключите оба контакта ECC VCC/3.3V/Power и Enable (красные провода) к резистору 10 кОм, а затем к выводу питания Uno + 3,3 В;
  • соедините контакт заземления/земли ESP (черный провод) с контактом заземления/земли Arduino Uno;
  • подключите TX ESP (зеленый провод) к контакту 3 на Uno;
  • подключите RSP (синий провод) ESP к резистору 1 кОм, затем к контакту 2 Uno;
  • подключите RX (синий провод) ESP к резистору 1k, затем к контакту GND Uno.

Об аранжировке

Контакт питания ESP на ESP11 помечен VIN, но для некоторых версий это может быть 3.3V или Power или VCC. Вам также необходимо включить ESP CH_EN или включить контакт, чтобы он работал.

Как мы уже говорили, не используйте больше 3,3 В на ESP. ESP8266 строго использует 3,3 В. Кроме того, это уничтожит модуль. Так как в Ардуино 5В, то пришлось вставить делитель напряжения — это резисторы.

TX ESP подключен к RX Arduino Uno, а это означает, что все, что мы хотим отправить (TX) в ESP, получит (RX) от Uno, и наоборот. Создав эту схему, мы теперь готовы запустить WIFI с Arduino UNO.

Обратите внимание на следующее! Если вы подключите последовательный отладчик через USB-кабель или откроете COM-порт, связь между ESP и Arduino будет прервана и не будет работать. Поэтому перед прошивкой Uno сначала удалите Rx/Tx из ESP.

Шаг 4. Настройка соединения

Как только все будет настроено, вы заметите, что ваш Wi-Fi ESP8266 будет доступен в пределах досягаемости вашего телефона.

1. Загрузите TCP-клиент для Android

Вы можете загрузить любой TCP-клиент, доступный в Play Store, но я использовал TCP-клиент от Sollae Systems

2. Подключите ESP8266 Wi-Fi с телефона

Если ваш ESP8266 Wi-Fi не отображается в доступных сетях Wi-Fi, убедитесь, что ваш Arduino работает и все подключено правильно. Если нет, устраните неполадки с ESP, следуя документации модуля.

Обычно имя wifi/ssid в ESP начинается после названия версии, у меня это ESP11.

3. После подключения вам будет предоставлен статический IP-адрес.

Важно! Вы можете проверить IP-адрес вашего ESP, зайдя в настройки Wi-Fi вашего телефона и щелкнув информацию о сети.

IP-адрес по умолчанию в режиме точки доступа — 192.168.4.1.

Вы можете изменить статический IP-адрес, перейдя по этой ссылке Wifi.config.

4. Откройте загруженный ранее клиент TCP.

Создайте соединение, нажав кнопку «Подключить», добавьте IP-адрес ESP и порт 80 следующим образом:

80 — это порт, который я использовал для нашего сервера ESP, но вы можете изменить его, заменив 80 на любой номер порта из нашего кода в строке 23.

5. Дождитесь появления сообщения «Подключено» на консоли TCP».

Читайте также: Кнопка станции старт стоп

Шаг 5. Общаемся с Arduino Uno через смартфон

После подключения отправьте запрос, введя следующий код для TCP-клиента:

esp8266:

Связь с ESP8266 осуществляется с помощью Attention Command или AT-команд. См приведенную выше таблицу команд AT, чтобы увидеть коды.

Или включить встроенный светодиод командой:

ЛЕДОН

Или выключите встроенный светодиод командой:

СТРАДАЛ ОТ

Или просто скажите:

ПРИВЕТ

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

Важно: esp8266, LEDON, LEDOFF и HELLO являются идентификаторами пользовательских команд. Если вы используете что-то другое, кроме этих, он вернет ErrRead. ErrRead означает, что в отправленном вами сообщении не найден идентификатор команды. Сообщение ErrRead закодировано в строке 64.

 

ENC28J60 – миниатюрный Ethernet модуль

800 ₽В наличии 15ENC28J60 - миниатюрный сетевой модуль
Добавить в корзину

Необходимое оборудование

Чтобы использовать Arduino в качестве веб-сервера, вам потребуется следующее:

  • напряжение 5В от Ардуино;
  • плата расширения Ethernet Shield;
  • скорость соединения: 10/100 Мбит/с;
  • соединение с Arduino через порт SPI.

Ethernet Shield подключает Arduino к локальной сети или Интернету. Установка очень проста. Просто вставьте разъемы платы расширения в разъемы Arduino, а затем подключите кабель Ethernet к плате расширения. На изображении ниже вы можете увидеть Arduino Mega с установленным Ethernet Shield.

arduino mega и сетевой шилд

Написание скетча программы для создания web-сервера для Arduino на базе Ethernet shield W5100

Для работы датчика на Arduino необходимо скачать и установить библиотеку DHT11 .

Скачать библиотеку можно здесь .

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

Диск С стрелка
Программные файлы стрелка

Ардуино стрелка
Библиотеки

папка экрана

После того, как мы все сделали, переходим к самому важному шагу, а именно к программированию.

/*—————- 1 часть —————-*/
#include «DHT.h» //библиотека для работы с DHT
#include «SPI.h» //библиотека для работы с SPI
#include «Ethernet.h» //библиотека для работы с Ethernet
#define DHTPIN 3 //Дизайн номера контакта, к которому подключен датчик
логическое новоеИнформация = 0; // переменная для новой информации
байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//вводим мак адрес, обычно он выглядит так, может варьироваться
IP-адрес ip(192, 168, 1, 177);
// введите любой IP, который не совпадает с вашим
Сервер EthernetServer(80); // инициализируем библиотеку сервера Ethernet
DHT dht (DHTPIN, DHT11); // инициализируем датчик DHT
/*—————- Часть 2 —————-*/
недействительная установка() {
pinMode (8, ВЫХОД); // инициализируем контакт 8 как выход для светодиода
Ethernet.begin(mac,ip);//запускаем сервер с ранее указанным MAC и вашим IP
Серийный.начать(9600);
дхт начать();
начало сервера();
}
/*—————- Часть 3 —————-*/
недействительный цикл() {
float h = dht.readHumidity(); //Чтение влажности в переменной «h»
float t = dht.readTemperature(); // Читаем температуру в переменную «t»
Клиент EthernetClient = сервер.доступный(); //получаем данные, отправленные клиентом
if (client){ //если запрос заканчивается пустой строкой
логическое значение currentLineIsBlank = true;
//отмечаем конец запроса (буквально: текущая строка готова)
while (client.connected()) { //пока есть соединение с клиентом
if (client.available()) { //если клиент активен
char c = client.read(); //читаем отправленную информацию в переменную «c»
если (новая информация && c == ‘ ‘){
//если новая информационная переменная = 1 и «c», где пишется запрос, равна пустой строке
новая информация = 0; //затем обнуляем переменную для поступления новой информации
}
если (с == ‘){
// если переменная «c», несущая отправленный нам запрос, содержит символ $
// «$» подразумевает разделение полученной информации (символов)
новая информация = 1; //поэтому поступила новая информация, устанавливаем метку для новой информации на 1
}
//Проверяем содержимое URL — присутствует $1 или $2
if (newInfo == 1){ //если есть новая информация
Серийный.println (с);
if (c == ‘1’){ //и «c» содержит 1
Serial.println(«Включить»);
цифровая запись (8, ВЫСОКИЙ); // затем включаем светодиод
}
if (c == ‘2’){ //если «c» содержит 2
Serial.println(«Завершение работы»);
цифровая запись (8, НИЗКИЙ); //выключаем светодиод
}
}
if (c == ‘n’) { //если «c» — символ новой строки
текущаяЛайнИсБланк = Истина; //затем начинаем новую строку
}
иначе если (с != ‘r’) {
//иначе, если «c» не равно курсору, возвращаем символ в начало строки
currentLineIsBlank = ложь; //затем получаем символ текущей строки
}
if (c == ‘n’ && currentLineIsBlank) { // отобразить HTML-страницу
/*—————- Часть 4 —————-*/
client.println(«HTTP/1.1 200 OK»); // информация заголовка
client.println(«Тип контента: текст/html»);
client.println(«Соединение: закрыть»);
client.println(«Обновление: 5″); //автоматическое обновление каждые 5 секунд
клиент.println(); //Это не ошибка, так и должно быть
клиент.println (» «); //Тип HTML-документа
клиент.println («»); // открываем HTML-тег клиент.println («»); // открывает тег Head
клиент.println («»);
клиент.принт («клиент.println («</head>»); // информация в заголовке
клиент.println («<body>»);
клиент.принт (»

HelpDuino Web Server</h1>»); // Заголовок страницы
клиент.принт («

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

Во-первых, я хочу разделить наш программный код на несколько частей. Вы можете увидеть это разделение в приведенном выше коде. Рассмотрим их отдельно для простоты. Теперь вы поймете, почему я разделил код нашей программы на четыре части.

Первая часть кода

В первой части кода, как обычно, указываем нужным библиотекам количество пинов наших устройств. Для подключения к Ethernet Shield нам нужно было указать ip-адрес и mac-адрес

байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IP-адрес ip(192, 168, 1, 177);

Хочу сказать, что мак адрес не зашит в шилд и вы его сами ставите в скетче. Вы можете использовать MAC-адрес, который мы указали в нашем примере! Что касается ip-адреса, то, как известно, по стандартам протоколов для частных сетей можно использовать разные адреса, в частности адресацию 192.168 . Следующие четыре цифры могут быть произвольными, но в том же порядке, что мы привели в эскиз. Важно, чтобы IP-адрес, введенный в скетч программы, не пересекался с IP-адресами всех устройств в домашней сети!

Вторая часть кода

Во второй части кода запускаем датчики и запускаем сервер с указанными ранее ip и mac. Здесь нет ничего сложного, так что идем дальше.

Третья часть кода

В третьей части кода происходят основные действия. Подробно описывать их не буду, так как все подробно описано в скетче программы. Здесь мы указали переменные «t» и «h».

float h = dht.readHumidity(); //Чтение влажности в переменной «h»
float t = dht.readTemperature(); // Читаем температуру в переменную «t»

Мы также вводим переменную «c» для работы со светодиодом.

в то время как (клиент подключен()) {
если (клиент.доступен()) {
char c = client.read();

Мы также указываем условие для включения и выключения светодиода

если (с == ‘1’){
Serial.println(«Включить»);
цифровая запись (8, ВЫСОКИЙ);
}
если (с == ‘2’){
Serial.println(«Завершение работы»);
цифровая запись (8, НИЗКИЙ);
}

Четвертая часть кода

В качестве последней части нашего скетча я выделил html-код, который будет отображаться в браузере. Вы также можете найти описание каждой линии в самом эскизе. Это самый простой сайт, поэтому ничего сложного в нем нет.

В конце у вас должно получиться что-то похожее на это!

Готов подключить Ethernet Shield к Arduino с созданием сервера
Готов подключить Ethernet Shield к Arduino с созданием сервера

Вы также можете посмотреть видеоверсию нашего проекта!

Надеюсь, у вас все получилось! Если у вас есть вопросы, вы можете написать нам в ВКонтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы как можно скорее!

Первые шаги

Подключите Arduino к компьютеру с помощью USB-кабеля, а Ethernet Shield — к маршрутизатору (или напрямую к интернет-кабелю).

После этого откройте Arduino IDE. Версии Arduino IDE после 1.0 имеют встроенную поддержку DHCP и не требуют установки IP-адреса вручную.

откройте скетч DhcpAddressPrinter, чтобы узнать IP-адрес, присвоенный вашей карте. Вы можете найти его в меню:

Файл —> Примеры —> Ethernet —> DhcpAddressPrinter

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

После ввода mac-адреса вы можете загрузить скетч на плату Arduino и открыть экран последовательного порта. Результат должен показать используемый IP-адрес.

Технические характеристики Ethernet шилда

Ethernet Shield основан на чипе W51000 с внутренним буфером 16 КБ. Скорость соединения достигает 10/100Мб. Это не самое быстрое соединение, но этого достаточно, поверьте мне.

Плата работает с использованием библиотеки Arduino Ethernet, которая по умолчанию интегрирована в оболочку Arduino IDE.

Плата Ethernet Shield имеет слот для карты micro SD, что позволяет хранить большие объемы информации и загружать веб-страницы прямо с Arduino. Не забывайте, что в этом случае нужно использовать дополнительную библиотеку. Подробнее о: использование SD-карты.

Также возможно питание Arduino с помощью соединения Ethernet. Для этого нужно использовать модуль Power over Ethernet (PoE), место для установки есть на шилде Ethernet.

Сводный список спецификаций экрана Ethernet:

  • Для работы требуется плата Arduino
  • Рабочее питание — 5В (питание от платы Arduino)
  • Контроллер Ethernet: W5100 с буфером 16 КБ
  • Скорость соединения: 10/100Мб
  • Подключается к Arduino через порт SPI
Оцените статью
Блог про технические приборы и материалы