Библиотека Ethernet library

Для работы с Ethernet shield используется стандартная Arduino-библиотека Ethernet library. Она поставляется в составе дистрибутива Arduino. Рассмотрим ее подробнее.

Класс Ethernet (Ethernet class)

Класс Ethernet инициализирует библиотеку и сетевые настройки. Начиная с версии 1.0, библиотека поддерживает DHCP. Использование Ethernet.begin (mac) позволяет автоматически получать IP-адрес.

Функции класса Ethernet:

 begin();

 localIP().

Функция Ethernet.begin()

Функция Ethernet.begin() инициализирует библиотеку и сетевые настройки.

Синтаксис функции:

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

Параметры:

 mac — mac-адрес (Media Access Control) устройства (массив из 6 байтов). Это аппаратный адрес адаптера вашего устройства. Новые Arduino Ethernet shield включают наклейку с MAC-адресом устройства. Для более старых его нужно найти самостоятельно;

 ip — IP-адрес устройства (массив из 4 байтов);

 gateway — IP-адрес сетевого шлюза (массив из 4 байтов). Опционально — по умолчанию IP-адрес устройства с последнего октета установлен в 1;

 subnet — маска подсети сети (массив из 4 байтов). Опционально — по умолчанию 255.255.255.0.

Возвращаемого значения нет.

Функция Ethernet.localIP()

Функция Ethernet.localIP() возвращает IP-адрес Ethernet shield. Синтаксис функции:

Ethernet.localIP()

Возвращаемое значение: IP-адрес устройства.

Класс IPAddress (IPAddress class)

Класс IPAddress работает с локальными и удаленными IP-адресами.

Функция IPAddress()

Функция IPAddress() определяет IP-адрес. Он может быть использован для объявления локальных и удаленных адресов.

Синтаксис:

IPAddress(address)

Параметр: address — назначаемый IP-адрес. Возвращаемого значения нет.

Класс Server (Server class)

Класс Server создает сервер, который может передавать данные и получать данные от подключенных клиентов.

Функции класса Server:

 ethernetServer();

 begin();

 available();

 write();

 print();

 println().

Функция ethernetServer()

Функция ethernetServer() создает сервер, который прослушивает входящие соединения на указанный порт.

Синтаксис:

ethernetServer (port)

Параметр: port — назначаемый для прослушивания порт. Возвращаемого значения нет.

Функция begin()

Функция begin() запускает прослушивание входящих соединений. Синтаксис:

server.begin()

Параметров нет. Возвращаемого значения нет.

Функция available()

Функция available() получает ссылку на подключенного к серверу клиента для обмена данными.

Синтаксис:

available()

Параметров нет.

Возвращаемое значение: ссылка на подключенный к серверу клиент (EthernetClient client = server.available();).

Пример использования функции available() представлен в примере

#include <Ethernet.h>

#include <SPI.h>

// mac-адрес Ethernet shield:

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

// IP-адрес, назначаемый Ethernet shield: byte ip[] = { 192, 168, 0, 177 };

// адрес шлюза:

byte gateway[] = { 192, 168, 0, 1 };

// маска:

byte subnet[] = { 255, 255, 0, 0 };

// порт для сервера

EthernetServer server = EthernetServer(23);

void setup()

{

// инициализация Ethernet shield Ethernet.begin(mac, ip, gateway, subnet);

// запуск сервера server.begin();

}

void loop()

{

// получение ссылки на подключенного клиента EthernetClient client = server.available();

// пока подключение активно if (client == true) {

// читаем данные, отправляемые клиентом,

// и отправляем их обратно клиенту: server.write(client.read());

}

}

Функция write()

Функция write() отправляет данные всем клиентам, подключенным к серверу. Синтаксис:

server.write(data)

Параметр: data — отправляемые данные (байт или символ). Возвращаемого значения нет.

 Функция print()

Функция print() отправляет данные всем клиентам, подключенным к серверу. При этом число отправляется как последовательность цифр данного числа.

Синтаксис:

server.print(data) server.print(data,BASE)

Параметры:

 data — отправляемые данные (байт, символ, число, строка).

 BASE — вид передаваемых символов:

• BIN — двоичный;

• DEC — десятичный;

• OCT — восьмеричный;

• HEX — шестнадцатеричный.

Возвращаемое значение: количество переданных байтов.

Функция println()

Функция println() отправляет данные всем клиентам, подключенным к серверу. Аналогична функции print() с добавлением в отправку символа перехода на но- вую строку.

Синтаксис:

server.println() server.println(data) server.println(data,BASE)

Параметры:

 data — отправляемые данные (байт, символ, число, строка).

 BASE — вид передаваемых символов:

• BIN — двоичный;

• DEC — десятичный;

• OCT — восьмеричный;

• HEX — шестнадцатеричный.

Возвращаемое значение: количество переданных байтов.

Класс Client (Client class)

Класс Client создает клиентов, которые могут подключаться к серверам и обмениваться данными.

Функции класса Client:

 client;

 EthernetClient();

 connected();

 connect();

 write();

 print();

 println();

 available();

 read();

 flush();

 stop().

Функция client()

Функция client() создает клиента, который подключается к серверу по указанному в параметрах IP-адресу и порту.

Синтаксис: сlient(ip, port) Параметры:

 ip — IP-адрес подключения клиента (массив из 4 байтов);

 port — порт подключения клиента. Возвращаемого значения нет.

Функция EthernetClient()

Функция EthernetClient() создает клиента, который подключается к серверу. Параметры подключения (IP-адрес и порт) определяются в функции client.connect()).

Синтаксис: EthernetClient() Параметров нет.

Возвращаемого значения нет.

Функция connected()

Функция connected() определяет, подключен клиент или нет. Клиент считается подключенным, если соединение закрыто, но есть непрочитанные данные.

Синтаксис:

client.connected() Параметров нет.

Возвращаемые значения: true — если клиент подключен, и false — если нет.

Функция connect()

Функция connect() подключается к серверу по указанному IP-адресу и порту.

Синтаксис:

client.connect()

Параметры:

 ip — IP-адрес подключения клиента (массив из 4 байтов);

 port — порт подключения клиента.

Возвращаемые значения: true — если клиент подключен, и false — если нет.

Функция write()

Функция write() отправляет на сервер данные с подключенного клиента.

Синтаксис:

client.write(data)

Параметр: data — отправляемые данные (байт или символ). Возвращаемого значения нет.

Функция print()

Функция print() отправляет данные на сервер с подключенного клиента. При этом число отправляется как последовательность цифр данного числа.

Синтаксис:

client.print(data) client.print(data,BASE)

Параметры:

 data — отправляемые данные (байт, символ, число, строка).

 BASE — вид передаваемых символов:

• BIN — двоичный;

• DEC — десятичный;

• OCT — восьмеричный;

• HEX — шестнадцатеричный.

Возвращаемое значение: количество переданных байтов.

Функция println()

Функция println() отправляет данные на сервер с подключенного клиента. Аналогична функции print() с добавлением в отправку символа перехода на новую строку.

Синтаксис:

client.println() client.println(data) client.println(data,BASE)

Параметры:

 data — отправляемые данные (байт, символ, число, строка).

 BASE — вид передаваемых символов:

• BIN — двоичный;

• DEC — десятичный;

• OCT — восьмеричный;

• HEX — шестнадцатеричный.

Возвращаемое значение: количество переданных байтов.

Функция available()

Функция available() возвращает число байтов, доступных для чтения (т. е. объем данных, который был отправлен сервером для клиента).

Синтаксис: client.available() Параметров нет.

Возвращаемое значение: количество доступных для чтения байтов.

Функция read()

Функция read() получает следующий (после последнего, полученного командой read()) байт от сервера или –1, если данных больше нет.

Синтаксис:

client.read()

Параметров нет.

Возвращаемое значение: байт или –1.

Функция flush()

Функция flush() сбрасывает полученные от сервера, но еще не прочитанные данные.

Синтаксис:

client.flush() Параметров нет.

Возвращаемого значения нет.

Функция stop()

Функция stop() отключает клиента от сервера.

Синтаксис:

client.stop()

Параметров нет. Возвращаемого значения нет.

Класс EthernetUDP (EthernetUDP class)

Класс EthernetUDP позволяет отправлять и получать UDP-сообщения. Функции класса EthernetUDP:

 begin();

 read();

 write();

 beginPacket();

 endPacket();

 parsePacket();

 available();

 remoteIP();

 remotePort().

Функция begin()

Функция begin() инициализирует библиотеки Ethernet UDP и сетевые параметры.

Синтаксис:

client.begin(port)

Параметр: port — локальный порт для прослушивания.

Возвращаемого значения нет.

Функция read()

Функция read() читает UDP-данные из указанного буфера. Если аргументы не заданы, то она вернет следующий символ в буфере.

Синтаксис:

UDP.read() UDP.read(packetBuffer,maxSize)

Параметры:

 packetBuffer — буфер для хранения входящих пакетов;

 maxSize — максимальный размер буфера. Возвращаемое значение: символы из буфера.

 Функция write()

Функция write() записывает UDP-данные в удаленное соединение. Данные должны быть заключены между beginPacket() и endPacket(). beginPacket() инициализирует пакет данных, данные не отправляются до вызова endPacket().

Синтаксис:

UDP.write(message)

Параметр: message — отправляемое сообщение.

Возвращаемое значение: количество возвращаемых символов.

Пример использования функции write()

// мас-адрес Ethernet shield:

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

// IP-адрес в локальной сети: IPAddress ip(192, 168, 1, 177);

// порт

unsigned int localPort = 8888; EthernetUDP Udp;

void setup() {

// запустить UDP-соединение Ethernet.begin(mac,ip); Udp.begin(localPort);

}

void loop() {

Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); Udp.write("hello");

Udp.endPacket();

}

Функция beginPacket()

Функция beginPacket() инициирует UDP-подключение на отправку данных в удаленное соединение.

Синтаксис:

beginPacket (remoteIP, port)

Параметры:

 remoteIP — IP-адрес удаленного соединения;

 port — порт удаленного соединения.

Возвращаемого значения нет.

Функция endPacket()

Функция endPacket() вызывается после записи UDP-данных удаленного соединения.

Синтаксис:

endPacket()

Параметров нет. Возвращаемого значения нет.

Функция parsePacket()

Функция parsePacket() проверяет наличие пакета UDP и его размер. Функция parsePacket() должна вызываться перед чтением буфера с UDP.read().

Синтаксис:

parsePacket()

Параметров нет.

Возвращаемое значение: размер полученных данных.

Пример использования функции parsePacket() представлен в примере.

 

// мас-адрес Ethernet shield

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

// ip-адрес

IPAddress ip(192, 168, 1, 177);

// порт

unsigned int localPort = 8888; EthernetUDP Udp;

void setup() {

// запустить UDP-соединение Ethernet.begin(mac,ip); Udp.begin(localPort); Serial.begin(9600);

}

void loop() {

// получить размер данных

int packetSize = Udp.parsePacket(); if(packetSize)

{

Serial.print("size="); Serial.println(packetSize);

}

delay(10);

}

Функция available()

Функция available() получает количество данных, доступных для чтения из буфера.

Синтаксис:

available()

Параметров нет.

Возвращаемое значение: количество байтов, доступных для чтения.

Функция remoteIP()

Функция remoteIP() получает IP-адрес удаленного соединения. Эта функция должна быть вызвана после UDP.parsePacket().

Синтаксис:

remoteIP()

Параметров нет.

Возвращаемое значение: IP-адрес удаленного соединения (4 байта).

Функция remotePort()

Функция remotePort() получает IP-адрес удаленного соединения UDP.

Синтаксис:

remotePort()

Параметров нет.

Возвращаемое значение: порт соединения с удаленным хостом.

 

Вверх

 

Основные версии плат Arduino

Due — плата на базе 32-битного ARM микропроцессора Cortex-M3 ARM SAM3U4E;

Leonardo — плата на микроконтроллере ATmega32U4;

Uno — самая популярная версия базовой платформы Arduino;

Duemilanove — плата на микроконтроллере ATmega168 или ATmega328;

Diecimila — версия базовой платформы Arduino USB;

Nano — компактная платформа, используемая как макет. Nano подключается к компьютеру при помощи кабеля USB Mini-B;

Mega ADK — версия платы Mega 2560 с поддержкой интерфейса USB-host для связи с телефонами на Android и другими устройствами с интерфейсом USB;

Mega2560 — плата на базе микроконтроллера ATmega2560 с использованием чипа ATMega8U2 для последовательного соединения по USB-порту;

Mega — версия серии Mega на базе микроконтроллера ATmega1280;

Arduino BT — платформа с модулем Bluetooth для беспроводной связи и программирования;

LilyPad — платформа, разработанная для переноски, может зашиваться в ткань;

Fio — платформа разработана для беспроводных применений. Fio содержит разъем для радио XBee, разъем для батареи LiPo и встроенную схему подзарядки;

Mini — самая маленькая платформа Arduino;

Pro — платформа, разработанная для опытных пользователей, может являться частью большего проекта;

Pro Mini — как и платформа Pro, разработана для опытных пользователей, которым требуется низкая цена, меньшие размеры и дополнительная функциональность.