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

Электрика
Содержание
  1. Характеристики шилда и его составляющее
  2. Эксперимент
  3. Необходимые комплектующие
  4. Схема соединений
  5. Конфигурация Ethernet
  6. IP адрес
  7. MAC адрес
  8. Программа
  9. A Webserver Tutorial </h1>»);клиент.println(«
  10. Observing State Of Switch</h2>»);клиент.принт(«
  11. Switch is: «);
  12. ON</h3>»); } иначе { client.println(«
  13. OFF</h3>»);} клиент.println(«</body>»);клиент.println(«</html>»);
  14. Шаг 2. Суть проекта
  15. Товары из статьи в нашем магазине
  16. SYB-170 – макетная плата на 170 точек
  17. Принцип работы Ethernet Shield и необходимые компоненты для подключения
  18. Arduino Uno R3 (ATmega 328P / CH340G)
  19. Сервер
  20. Шлейф проводов «Папа — Папа» (30см, 40шт.)
  21. Самые популярные материалы в блоге
  22. За все время
  23. Подключение Ethernet Shield к Arduino
  24. Шаг 3. Схема соединения
  25. Вариант 1
  26. Вариант 2
  27. Шаг 4. Настройка соединения
  28. Шаг 5. Общаемся с Arduino Uno через смартфон
  29. ENC28J60 – миниатюрный Ethernet модуль
  30. Написание скетча программы для создания web-сервера для Arduino на базе Ethernet shield W5100
  31. HelpDuino Web Server</h1>»); // Заголовок страницы клиент.принт («
  32. Включить</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); //время для получения новых данных клиент. Останавливаться(); // закрываем соединение } }
  33. Первые шаги
  34. Технические характеристики 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(»

A Webserver Tutorial </h1>»);клиент.println(«

Observing State Of Switch</h2>»);клиент.принт(«

Switch is: «);

if (digitalRead(8))

{

client.println(»

ON</h3>»); } иначе { client.println(«

OFF</h3>»);} клиент.println(«</body>»);клиент.println(«</html>»);

Эта программа будет отображать веб-страницу в браузере при доступе к IP-адресу, назначенному Arduino. Следующая строка говорит браузеру обновить страницу:

клиент.println(«<http-equiv=»refresh» content=»» 1″»=»»>»);

Когда страница запрашивается снова, Arduino снова считывает состояние кнопки и отображает его.

Помните, что вы всегда можете увидеть исходный код отображаемой веб-страницы. Нажав кнопку, вы можете увидеть изменение состояния кнопки, как показано на видео ниже.

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

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

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

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

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

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

Товары из статьи в нашем магазине

SYB-170 – макетная плата на 170 точек

Макет SYB-170 170 точек (макет)

Принцип работы 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)

Ардуино Уно 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шт.)

Комплект проводов

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

За все время

Подключение 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 модуль

ENC28J60 - миниатюрный сетевой модуль

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

Чтобы использовать 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
Оцените статью
Блог про технические приборы и материалы