Выбрать главу
Клиенты и серверы

В этой главе вы узнаете, как использовать Arduino с платой расширения Ethernet shield в качестве сервера и клиента. Все устройства, подключенные к Интернету, выступают в роли сервера или клиента (хотя на самом деле часто исполняют обе роли). Сервер выдает информацию по запросу от запрашивающего компьютера, поступающему по сети. Это может быть запрос веб-страницы, данных из информационной базы, электронной почты и многого другого. Клиент - это устройство, которое запрашивает данные и получает ответ. При подключении компьютера к Интернету веб-браузер вашего компьютера выступает в качестве клиента.

Подключение к сети платы Arduino

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

Совет Я рекомендую использовать внешний Ethernet-адаптер, т. к. он работает устойчивее, чем плата Arduino Ethernet со встроенным интерфейсом.

Прикрепите Ethernet-адаптер к вашей плате Arduino и подключите порт Ethernet адаптера к свободному порту Ethernet на вашем домашнем маршрутизаторе с помощью кабеля Ethernet. Подойдет обычный Ethernet-кабель типа "crossover". Соедините плату Arduino кабелем USB с вашим компьютером для программирования.

- 306 -

Если маршрутизатор находится далеко от компьютера, используемого для программирования, сначала запрограммируйте плату, а затем подключайте ее к маршрутизатору. Тем не менее, в некоторых примерах потребуется вывод информации, необходимой для отладки, в монитор последовательного порта. Чтобы не быть привязанным к компьютеру, можно подключить ЖК-дисплей для отображения IP-адреса, который в рассмотренных примерах выводится в последовательный терминал. Здесь пригодятся сведения из главы 10.

14.2. Управление платой Arduino из Интернета

Сначала используем плату Arduino в качестве веб-сервера. С помощью некоторых HTML-форм и интегрированной библиотеки Ethernet настроим Arduino для автоматического подключения к Сети и выведем веб-страницу, с помощью которой получим доступ для управления некоторыми контактами платы Arduino. Мы разместим кнопки на веб-интерфейсе для переключения цвета RGB-светодиода и управления частотой звука. Наша программа будет расширяемой, что позволит добавлять дополнительные устройства, чтобы более комфортно работать с Arduino.

14.2.1. Настройка оборудования для управления вводом-выводом

Настроим оборудование для управления платой Arduino в качестве сервера для управления контактами платы из сети Интернет. Для этого примера возьмем RGB-светодиод и пьезозуммер или обычный динамик. Схема соединения элементов показана на рис. 14.2. Напомним, что контакты 4, 10, 11, 12 и 13 предназначены для связи платы Arduino с адаптером Ethernet. Мы подключаем RGB-светодиод к выводам 5, 6, 7, а динамик - к выводу 3 платы Arduino.

14.2.2. Создание простой веб-страницы

Разработать веб-страницу можно независимо от Arduino. На нашей веб-странице будут простые кнопки для переключения цвета RGB-светодиода и ползунок для регулировки частоты звука, воспроизводимого динамиком. Веб-страница будет отправлять команды из браузера на сервер по протоколу НТТР GET. При разработке дизайна страницы веб-сайт может не быть подключенным к серверу Arduino, на этом этапе не нужно, чтобы взаимодействие со страницей вызывало какие-нибудь действия на плате Arduino.

Откройте свой любимый текстовый редактор (я рекомендую Notepad++ в Windows, который осуществляет визуальное цветовое выделение кода) и создайте новый файл с расширением html. Название не имеет значения, например test.html. Это будет пустая страница, без тегов, которые обычно присутствуют на веб-страницах, например <body> и <header>. Но это не повлияет на отображение страницы в браузере. Поместите в HTML-файл код из листинга 14.1.

- 307 -

Рис. 14.2. Схема подключения к Arduino-серверу RGB-светодиода и динамика

Листинг 14.1. HTML-страница с формой - server_form.html

<form action = '' method = 'get'>

<input type = 'hidden' name = 'L' value = '7' />

<input type = 'submit' value = 'Toggle Red' />

</form>

<form action = '' method = 'get'>

<input type = 'hidden' name = 'L' value = '6' />

<input type = 'submit' value = 'Toggle Green' />

</form>

<form action = '' method = 'get'>

<input type = 'hidden' name = 'L' value = '5' />

<input type = 'submit' value = 'Toggle Blue' />

</form>

<form action = '' method = 'get'>

<input type = 'range' name = 'S' min = '0' max = '1000' step = '100' value = '0'/>