Читаем Программируем Arduino. Профессиональная работа со скетчами полностью

Плата расширения Ethernet (рис. 12.1) не только дает возможность подключения к сети Ethernet, но и имеет слот для карты памяти microSD, которую можно использовать для хранения данных (см. раздел «Использование SD-карты» главы 6).

Рис. 12.1. Плата расширения Ethernet

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


Arduino Ethernet/EtherTen

Альтернативой использованию отдельной платы расширения является покупка Arduino со встроенным адаптером Ethernet. Официальной считается модель Arduino Ethernet, однако в продаже имеется очень неплохая и совместимая с Uno плата EtherTen, производимая компанией Freetronics (www.freetronics.com) (рис. 12.2).

Рис. 12.2. Плата EtherTen

Комбинированные платы, содержащие все необходимое, наиболее предпочтительны для сетевых проектов на основе Arduino. Платы Arduino Ethernet поддерживают технологию питания по линиям Ethernet (Power over Ethernet, PoE) через отдельный инжектор PoE, что позволяет уменьшить количество проводов, идущих к плате Arduino, до единственного кабеля Ethernet. Платы EtherTen выпускаются уже настроенными на питание с использованием технологии PoE. Более полную информацию об использовании технологии PoE в платах EtherTen можно найти по адресу www.doctormonk.com/2012/01/power-over-ethernet-poe.html.


Arduino и WiFi

Главная проблема подключения к Интернету через Ethernet заключается в необходимости прокладки кабеля. Если вы хотите подключить Arduino к Интернету или сети без использования проводов, то вам потребуется плата расширения WiFi (рис. 12.3). Эти платы стоят довольно дорого, но есть более дешевые альтернативы сторонних производителей, такие как Sparkfun WiFly (https://www.sparkfun.com/products/9954).

Рис. 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);

}

Рис. 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);

}

Перейти на страницу:

Похожие книги

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных
Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных