- Характеристики шилда и его составляющее
- Эксперимент
- Необходимые комплектующие
- Схема соединений
- Конфигурация Ethernet
- IP адрес
- MAC адрес
- Программа
- Шаг 2. Суть проекта
- Принцип работы Ethernet Shield и необходимые компоненты для подключения
- Arduino Uno R3 (ATmega 328P / CH340G)
- Сервер
- Шлейф проводов «Папа — Папа» (30см, 40шт.)
- Самые популярные материалы в блоге
- За все время
- Подключение Ethernet Shield к Arduino
- Шаг 3. Схема соединения
- Вариант 1
- Вариант 2
- Шаг 4. Настройка соединения
- Шаг 5. Общаемся с Arduino Uno через смартфон
- ENC28J60 – миниатюрный Ethernet модуль
- Необходимое оборудование
- Написание скетча программы для создания web-сервера для Arduino на базе Ethernet shield W5100
- 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); //время для получения новых данных клиент. Останавливаться(); // закрываем соединение } }
- Первые шаги
- Технические характеристики Ethernet шилда
Характеристики шилда и его составляющее
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 к ноутбуку.
Программа
Ниже приведен блок кода, отображающий HTML-код простой веб-страницы.
клиент.println(«Ethernet Tutorial</title>»);клиент.println(»
Шаг 2. Суть проекта
Есть много способов использовать ESP866 для связи. Некоторые могут использовать его для отправки/получения данных онлайн или регулярной загрузки данных. В этом уроке мы покажем, как установить беспроводную связь с Arduino с помощью телефона (Android или iPhone). Все будет сделано в автономном режиме, поэтому вам не нужно подключение к Интернету.
ESP8266 будет выполнять роль точки доступа (режим AP), то есть будет предоставлять доступ к сети Wi-Fi другим устройствам (станциям) и затем подключать их к проводной сети. Этот процесс довольно прост.
Распиновка ESP
Используйте свой телефон, чтобы отправить команду на Arduino, и с ESP8266 все будет работать без проводов.
Принцип работы Ethernet Shield и необходимые компоненты для подключения
Ethernet Shield подключает Arduino к серверу через Интернет или маршрутизатор Wi-Fi. А пока мы будем использовать Wi-Fi-роутер для передачи информации от датчиков и управления светодиодом. Вся информация будет отображаться на самой простой странице, которую мы создали заранее.
Для нашей работы нам понадобятся следующие компоненты:
- Плата Arduino (мы используем Arduino UNO)
- Экран Ethernet
- Датчик влажности и температуры DHT11
- Подключить провода
- Вспомогательная макетная плата — макетная плата
- Любой Wi-Fi роутер
- Сетевой кабель
Все эти элементы можно купить недорого и с высоким качеством в интернет-магазине SmartElement.
Для вашего удобства вы можете нажать на имя в списке выше, чтобы перейти к покупке продукта.
Arduino Uno R3 (ATmega 328P / CH340G)
1 050 ₽ – 1 250 ₽ В наличии
Выбирать…
Сервер
Вы можете использовать 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
Схема подключения этих элементов показана ниже. Хочу напомнить, что соединять все элементы нужно очень аккуратно!.
Для начала расскажу, как подключить Wi-Fi роутер к Ethernet шилду. Для подключения нужен сетевой кабель, которым соединяются эти два элемента. Для нашей процедуры интернет не требуется, поэтому один конец кабеля подключаем к Ethernet Shield, а другой к Wi-Fi роутеру. Осталось подключить Wi-Fi роутер к питанию и все готово, мы соединили эти два элемента.
Давайте поговорим о подключении Ethernet-шилда к Arduino. Как нетрудно догадаться, чтобы подключить Ethernet Shield к Arduino, нужно соединить эти два элемента напрямую, как показано на рисунке.
Осталось подключить остальные компоненты к Ethernet Shield, как показано на изображении выше. У вас должно получиться что-то вроде этого соединения.
Обратите внимание, что при длительном подключении 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 ₽В наличии 15
Добавить в корзину
Необходимое оборудование
Чтобы использовать Arduino в качестве веб-сервера, вам потребуется следующее:
- напряжение 5В от Ардуино;
- плата расширения Ethernet Shield;
- скорость соединения: 10/100 Мбит/с;
- соединение с Arduino через порт SPI.
Ethernet Shield подключает Arduino к локальной сети или Интернету. Установка очень проста. Просто вставьте разъемы платы расширения в разъемы Arduino, а затем подключите кабель Ethernet к плате расширения. На изображении ниже вы можете увидеть Arduino Mega с установленным Ethernet Shield.
Написание скетча программы для создания 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-код, который будет отображаться в браузере. Вы также можете найти описание каждой линии в самом эскизе. Это самый простой сайт, поэтому ничего сложного в нем нет.
В конце у вас должно получиться что-то похожее на это!
Вы также можете посмотреть видеоверсию нашего проекта!
Надеюсь, у вас все получилось! Если у вас есть вопросы, вы можете написать нам в ВКонтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы как можно скорее!
Первые шаги
Подключите 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