Монк . - Программируем Arduino

Тут можно читать онлайн Монк . - Программируем Arduino - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db, издательство Издательский дом Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программируем Arduino
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Питер
  • Год:
    2017
  • ISBN:
    978-5-496-02385-6
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Монк . - Программируем Arduino краткое содержание

Программируем Arduino - описание и краткое содержание, автор Монк ., читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Программируем Arduino - читать онлайн бесплатно полную версию (весь текст целиком)

Программируем Arduino - читать книгу онлайн бесплатно, автор Монк .
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Рис 123Плата Arduino WiFi Библиотека Ethernet Библиотека Ethernet - фото 81

Рис. 12.3.Плата Arduino WiFi

Библиотека Ethernet

Библиотека Ethernet претерпела существенные изменения с момента выпуска в 2011 году версии Arduino 1.0. Она не только позволяет плате Arduino с адаптером Ethernet действовать в роли веб-сервера или веб-клиента (возможность посылать запросы, подобно браузерам), но и реализует дополнительные возможности, такие как поддержка протокола динамической конфигурации сетевого узла (Dynamic Host Configuration Protocol, DHCP), автоматически присваивающего плате IP-адрес.

ПРИМЕЧАНИЕ

Превосходное описание библиотеки Ethernet можно найти в официальной документации Arduino: http://arduino.cc/en/reference/ethernet10.

Создание соединения

На первом этапе, прежде чем приступить к взаимодействиям по сети, необходимо установить соединение с сетью. Эту задачу решает функция Ethernet.begin(). Она позволяет вручную указать все параметры соединения с использованием следующего синтаксиса:

Ethernet.begin(mac, ip, dns, gateway, subnet)

Рассмотрим каждый из этих параметров:

• Mac — MAC-адрес сетевой карты (я расскажу о нем чуть позже);

• Ip — IP-адрес платы (можно выбрать любой допустимый для вашей сети);

• Dns — IP-адрес сервера доменных имен (Domain Name Server, DNS);

• Gateway — IP-адрес шлюза для выхода в Интернет (ваш домашний концентратор);

• Subnet — маска подсети.

Этот синтаксис кажется немного пугающим тем, кто не имеет опыта настройки параметров подключения к сети вручную. К счастью, все параметры, кроме mac, являются необязательными, и в 90% случаев вам придется указывать только параметры mac и ip или, весьма вероятно, только mac. Все остальные параметры будут настроены автоматически.

MAC-адрес, или адрес доступа к среде (Media Access Control), — это уникальный идентификатор сетевого интерфейса. Иными словами, это адрес платы расширения Ethernet или чего-то другого, предоставляющего сетевой интерфейс в распоряжение Arduino. Этот адрес должен быть уникальным только для вашей сети. Его обычно можно найти на наклейке с обратной стороны платы Ethernet или WiFi (рис. 12.4) или на упаковке. Если вы пользуетесь старой платой, не имеющей MAC-адреса, то можете просто создать свой адрес. Но не используйте в своей сети один и тот же адрес дважды.

Можно создать соединение с сетью с применением DHCP и получить динамический IP-адрес, как показано далее:

#include

#include

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

void setup()

{

Ethernet.begin(mac);

}

Рис 124Наклейка с MACадресом на плате WiFi Если потребуется присвоить плате - фото 82

Рис. 12.4.Наклейка с MAC-адресом на плате WiFi

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

#include

#include

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

byte ip[] = { 10, 0, 1, 200 };

void setup()

{

Ethernet.begin(mac, ip);

}

IP-адрес в параметре ip должен быть допустимым для вашей сети. Если вызвать функцию Ethernet.begin без параметра с IP-адресом, она по­пытается получить его с использованием DHCP и вернет 1, если соединение было установлено и динамический IP-адрес успешно получен, в противном случае вернет 0. Можно написать тестовый скетч, который будет устанавливать соединение и вызывать функцию localIP для получения IP-адреса, присвоенного Arduino. Следующий пример выполняет такую проверку и выводит сообщение с результатами в монитор последовательного порта. Это полноценный скетч, который вы можете опробовать самостоятельно. Но не забудьте заменить в коде MAC-адрес на указанный на вашей плате:

// sketch_12_01_dhcp

#include

#include

byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };

void setup()

{

Serial.begin(9600);

while (!Serial){}; // для совместимости с Leonardo

if (Ethernet.begin(mac))

{

Serial.println(Ethernet.localIP());

}

else

{

Serial.println("Could not connect to network");

}

}

void loop()

{

}

Настройка веб-сервера

Проект «Физический веб-сервер», описанный далее в этой главе, иллюстрирует организацию скетча, реализующего веб-сервер. А в этом разделе мы рассмотрим функции, помогающие реализовать веб-сервер.

Большая часть функций, необходимых для реализации веб-сервера, содержится в классе EthernetServer. Для запуска веб-сервера после установки соединения с сетью требуется пройти еще два этапа. Во-первых, нужно создать новый объект сервера, указав номер порта, который должен использоваться для приема входящих запросов. Это объявление находится в скетче перед функцией setup:

EthernetServer server = EthernetServer(80);

Обычно для приема запросов веб-серверы используют порт 80. То есть если вы настроили свой веб-сервер на обслуживание порта 80, вам не ­придется добавлять этот номер в адреса URL, чтобы связаться с сервером.

Во-вторых, чтобы фактически запустить сервер, в функции setup нужно выполнить следующую команду:

server.begin();

Эта функция запустит сервер, который будет ждать, пока кто-то не запросит страницу, которую обслуживает данный сервер. Фактическое обслуживание осуществляется в функции loop с применением функции available. Эта функция возвращает null (если нет запросов для обслуживания) или объект EthernetClient. Данный объект, как это ни странно, используется также для отправки исходящих запросов из Arduino к внешним веб-серверам. В данном случае EthernetClient представляет соединение между веб-сервером и браузером клиента.

Получив этот объект, можно прочитать входящий запрос с помощью read и вернуть HTML-ответ с помощью функций write, print и println. Закончив отправку HTML-ответа клиенту, нужно завершить сеанс вызовом функции stop объекта клиента. Я расскажу, как это сделать, в разделе «Физический веб-сервер» далее в этой главе.

Выполнение запросов

Плата Arduino может действовать не только как веб-сервер, но и как веб-браузер, посылая запросы удаленным веб-серверам, которые могут находиться в вашей сети или в Интернете.

Чтобы выполнить запрос, сначала нужно установить соединение с сетью, как в случае с веб-сервером, описанном в предыдущем разделе, но вместо объекта EthernetServer создать объект EthernetClient:

EthernetClient client;

Больше с объектом клиента ничего не требуется делать до отправки веб-запроса. Чтобы отправить веб-запрос, следует выполнить следующие действия:

if (client.connect("api.openweathermap.org", 80))

{

client.println("GET /data/2.5/weather?q=Manchester,uk HTTP/1.0");

client.println();

while (client.connected())

{

while (client.available())

{

Serial.write(client.read());

}

}

client.stop();

}

Функция connect вернет true, если соединение с веб-сервером было успешно установлено. Две команды client.println посылают веб-серверу запрос на получение желаемой страницы. Затем два вложенных цикла while читают данные, пока клиент остается подключенным к веб-серверу и продолжают поступать данные.

Может показаться заманчивым объединить два цикла while в один с условием client.available() && client.connected(), но такое объединение — далеко не то же самое, что два отдельных цикла, так как данные могут поступать от веб-сервера фрагментами из-за низкой скорости сети или по другим причинам. Внешний цикл поддерживает соединение открытым, а внутренний извлекает данные.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Монк . читать все книги автора по порядку

Монк . - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программируем Arduino отзывы


Отзывы читателей о книге Программируем Arduino, автор: Монк .. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x