ТЕХНОЛОГИИ ВЗАИМОДЕЙСТВИЯ КОНТРОЛЛЕРА ARDUINO С СЕТЬЮ ИНТЕРНЕТ - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

ТЕХНОЛОГИИ ВЗАИМОДЕЙСТВИЯ КОНТРОЛЛЕРА ARDUINO С СЕТЬЮ ИНТЕРНЕТ

Сычев Д.А. 1, Гребнева Д.М. 1
1РГППУ (филиал) в г. Нижнем Тагиле
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Для работы был выбран контроллер ArduinoUNOR3. Программируемый контроллер ArduinoUNOR3 (ATMEGA16U2 + MEGA328P) – это представитель контроллеров компании «Arduino», созданных на микроконтроллере ATmega328 (рис. 1).

Рис. 1. ArduinoUNOR3

Плата имеет 14 цифровых входов/выходов, 6 из которых могут использоваться как выходы ШИМ, а также есть 6 аналоговых выходов. 

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

По сравнению с предыдущими версиями ArduinoUNOR3 характеризуется более удобной маркировкой входов и выходов. Функциональность платы может быть увеличена за счет использования многочисленных расширений. 

Питание ArduinoUNOR3 подается по USB или от внешнего источника питания, в качестве которого может использоваться аккумуляторная батарея или сетевой АС/DC-адаптер. Рекомендуется источник питания с напряжением в диапазоне 7-12 В. Объем флеш-памяти составляет 32 КБ.

Контроллер ArduinoUNOR3 может быть присоединен к компьютеру, другой плате Arduino или к другому микроконтроллеру. Для этого он оснащен всем необходимым. 

Следует обратить внимание, что запрещается превышать допустимые величины силы тока! Для одного любого вывода ток не должен составлять более 40 мА. Ток для одной группы выводов не может быть более 100 мА. 

Ток для всего микроконтроллера не должен превышать 200 мА. 

Можно выделить две основные технологии взаимодействия контроллера Ардуино с сетью Интернет: проводная (Ethernet) и беспроводная (Wi-Fi).

Ethernet – самый распространенный в мире сетевой интерфейс. Когда говорят об объединении компьютеров в локальную сеть, как правило, имеют в виду именно его. Ethernet контроллер стал штатным устройством для каждого компьютера.

Первый вариант стандарта Ethernet появился еще в 70х годах. Первоначально средой передачи был коаксиальный кабель, топология сети – шина, скорость передачи 10 мегабит/сек. Со временем появилось множество разновидностей Ethernet со скоростью передачи до 100 гигабит/сек, изменилась архитектура сети, стала другой среда передачи.

Нам интересны стандарты Ethernet (10 Мбит/сек) и  FastEthernet (100 Мбит/сек). Они совместимы и отличаются только скоростью передачи данных. Для подключения к сети плат Ардуино мы будем использовать контроллеры первого стандарта (10 Мбит/сек), а штатные сетевые контроллеры компьютеров поддерживают второй стандарт (100 Мбит/сек). Но это не помешает подключить компьютер к той же сети. Стандарты обозначаются соответственно 10BASE-T и 100BASE-TX.

Платы Ардуино будем подключать к сети Ethernet с помощью модуля ENC28J60. Физически он представляет собой плату размерами 51 x 18 мм (рис. 2).

Рис. 2. Ethernet модуль Arduino

Модуль выполнен на базе микросхемы ENC28J60 фирмы Microchip. Практически это микросхема ENC28J60 в стандартном включении.

Основные характеристики модуля ENC28J60

cовместимость с Ethernet сетями 10/100/1000 Base-T. Скорость передачи данных 10 мбит/сек, реализация TCP/IP стека.

интерфейс связи с микроконтроллером – SPI, частота до 20 мГц.

напряжение питания 3,1 – 3,6 В. Типовое 3,3 В.

интерфейсные входы модуля позволяют непосредственное подключение к сигналам с 5 вольтовыми уровнями. Максимально-допустимое напряжение на входах интерфейса SPI – 6 В.

ток потребления от источника питания 3,3 В: в момент передачи может достигать 180 мА, в активном состоянии, но без передачи 120 мА, в режиме ожидания (сигнал CS в неактивном уровне) не более 2 мА.

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

Главное для питания модуля необходимо использовать источник напряжением 3,3 В и выходным током до 180 мА; выводы интерфейса модуля допускается подключать к 5 вольтовым сигналам.

Интерфейс связи с микроконтроллером. К микроконтроллеру модуль подключается через 10 контактный разъем типа PLHD, расположенный на печатной плате устройства (рис. 3).

Рис. 3. МикроконтроллерEthernetМодуля

Назначение контактов (распиновка) модуля ENC28J60 представлена в таблице 1.

Таблица 1

Назначение контактов модуля ENC28J60

Контакт

Обозначение

Направление

Назначение

1

CLK

выход

Выход тактового сигнала

2

INT

выход

Сигнал прерывания

3

WOL

-

Зарезервирован

4

SO

выход

Сигнал SO интерфейса SPI

5

SI

вход

Сигнал SI интерфейса SPI

6

SCK

вход

Сигнал SCK интерфейса SPI

7

CS

вход

Сигнал CS интерфейса SPI (выбор контроллера)

8

RST

вход

Сброс

9

VCC

-

Питание модуля 3,3 В 180 мА

10

GND

-

Общий вывод

 

Рассмотрим возможности модуля Ethernet ENC28J60 для подключения контроллера Ардуино к сети.

Для управления модулем мы будем использовать аппаратный интерфейс SPI микроконтроллера.

Таблица соединения выводов платы ArduinoUNO и модуля ENC28J60 представлена в таблице 1 и на рисунке 4.

Таблица 1

Подключение модуля ENC28J60 к плате ArduinoUNO

Плата Arduino UNO

Модуль ENC28J60

Вывод

№ вывода

Обозначение

12

4

SO

11

5

SI

13

6

SCK

10

7

CS

RES

8

RST

3.3 V

9

VCC

GND

10

GND

Рис. 4.Схема подключения

Физическая реализация подключения представлена на рисунке 5.

Рис. 5.Схема подключения

К роутеру модуль присоединяется прямым кабелем (рис. 6).

Рис. 6. Кабель для подключения модуля Ethernet к Роутеру

После подключения модуля Ethernet контроллеру Ардуино необходимо выполнить проверку его работоспособности. Для этого можно запустить тестовый скетч из библиотеки UIPEthernet.h, которая предназначена для работы с сетью Ethernet. Следует отметить, что данная библиотека является внешней и ее необходимо устанавливать. Листинг проверки работоспособности модуля Ethernet приведен ниже.

// TCP сервер, возвращает полученные данные
#include <SPI.h>
#include <UIPEthernet.h>

// определяем конфигурацию сети
bytemac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; // MAC-адрес
byteip[] = {192, 168, 1, 10}; // IP-адрес
bytemyDns[] = {192, 168, 1, 1}; // адрес DNS-сервера
bytegateway[] = {192, 168, 1, 1}; // адрессетевогошлюза
bytesubnet[] = {255, 255, 255, 0}; // маскаподсети

EthernetServerserver(2000); // создаемсервер, порт 2000
EthernetClientclient; // объект клиент
booleanclientAlreadyConnected= false; // признак клиент уже подключен

voidsetup() {
 Ethernet.begin(mac, ip, myDns, gateway, subnet); // инициализация контроллера
 server.begin(); // включае можидание входящих соединений
 Serial.begin(9600); 
 Serial.print("Serveraddress:");
 Serial.println(Ethernet.localIP()); // выводим IP-адрес контроллера
}

voidloop() {
 client = server.available(); // ожидаем объект клиент
 if (client) {
   // есть данные от клиента
  if (clientAlreadyConnected == false) {
    // сообщение о подключении
   Serial.println("Clientconnected");
   client.println("Serverready"); // ответ клиенту
   clientAlreadyConnected= true; 
   }

  while(client.available() > 0) {
   charchr = client.read(); // чтение символа
   server.write(chr); // передача клиенту
   Serial.write(chr);
   } 
  } 
}

Как видно из кода, после подключения библиотеки, необходимо указать конфигурацию сети. Команды в UIPEthernet, имеют следующие форматы:

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

Дадим краткую характеристику параметрам:

mac: MAC-адрес модуля (массив из 6 байт). Может быть указан на наклейке модуля или задан программно.

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

dns: IP-адрес DNS-сервера (массив из 4 байт). Параметр необязательный. При отсутствии аргумента, в качестве адреса DNS-сервера будет установлен IP-адрес модуля, в котором последний октет равен 1.

gateway: IP-адрес сетевого шлюза (массив из 4 байт). Параметр необязательный. При отсутствии аргумента, в качестве адреса шлюза будет установлен IP-адрес модуля, в котором последний октет равен 1.

subnet: маска подсети (массив из 4 байт). Параметр необязательный. По умолчанию задается 255.255.255.0.

Напомним, что для просмотра настроек сети в командной строке необходимо выполнить команду ipconfig (рис. 7).

Рис. 7. Просмотр параметров сети

Проверка работоспособности модуля Ethernet с помощью специальной программы TCP/IP Builder приведена на рисунке 8. Вид монитора порта при правильной работе модуля представлен на рисунке 9.

Рис. 8. Проверка работоспособности модуля Ethernet

Рис. 9. Монитор порта при правильной работе модуля

Таким образом, основными технологиями взаимодействия контроллера Arduino с сетью Интернет являются проводная технология Ethernet и беспроводная Wi-Fi. Технология подключения и тестирования модулей ENC28J60и ESP8266 заключается в правильной распиновке устройств и проверке их работоспособности тестовыми скетчами.

Список литературы

Оборудование, технологии, разработки [Электронный ресурс]. URL: http://mypractic.ru/arduino-biblioteka-uipethernet-h-ethernet-h (дата обращения 02.02.2019).

Проект домашней автоматизации [Электронный ресурс]. URL: http://homes-smart.ru (дата обращения: 02.02.2019).

Сайт радиолюбителей. Всѐ для радиолюбителей Arduino [Электронный ресурс]. URL: http://iarduino.ru (дата обращения 02.02.2019).

Соммер У. Программирование микроконтроллерных плат Arduino. СПб.: БХВ, 2012. 256 с.

Статьи о Arduino [Электронный ресурс] URL: http://wikihandbk.com/wiki/ESP8266:Прошивки/Arduino/Библиотеки/Библиотека_ESP8266WiFi (дата обращения 02.02.2019).

Что такое библиотеки в Arduino? [Электронный ресурс]. URL: https://arduinomaster.ru/biblioteki-arduino/skachat-biblioteki-arduino/#__Arduino (дата обращения 02.02.2019).

Просмотров работы: 6