Научная статья на тему 'ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА ДЛЯ СИСТЕМЫ УДАЛЕННОГО УПРАВЛЕНИЯ'

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА ДЛЯ СИСТЕМЫ УДАЛЕННОГО УПРАВЛЕНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
142
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
it-технологии / программирование микроконтроллеров / автоматизация / Arduino. / it technologies / microcontroller programming / automation / Arduino.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ефимов Станислав Александрович, Заворуев Роман Дмитриевич, Шейкин Дмитрий Алексеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ефимов Станислав Александрович, Заворуев Роман Дмитриевич, Шейкин Дмитрий Алексеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

REMOTE CONTROL MICROCONTROLLER PROGRAMMING

The subject of this article is the development of an automated system for remote control of an industrial facility with the ability to monitor and collect information.

Текст научной работы на тему «ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА ДЛЯ СИСТЕМЫ УДАЛЕННОГО УПРАВЛЕНИЯ»

УДК 62-5

Ефимов Станислав Александрович Efimov Stanislav Aleksandrovich, Заворуев Роман Дмитриевич Zavoruev Roman Dmitrievich, Шейкин Дмитрий Алексеевич Dmitry Sheikin Alexeyevich Студент Student

Санкт-Петербургский Политехнический Университет Петра Великого Peter the Great St. Petersburg Polytechnic University

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА ДЛЯ СИСТЕМЫ УДАЛЕННОГО УПРАВЛЕНИЯ

REMOTE CONTROL MICROCONTROLLER PROGRAMMING

Аннотация. Предметом исследования статьи является разработка автоматизированной системы удаленного управления промышленным объектом с возможностью мониторинга и сбора информации.

Abstract: The subject of this article is the development of an automated system for remote control of an industrial facility with the ability to monitor and collect information.

Ключевые слова: it-технологии, программирование микроконтроллеров, автоматизация, Arduino.

Key words: it technologies, microcontroller programming, automation, Arduino.

Для осуществления управления промышленным предприятием необходимо, чтобы контроллер наладил связь с датчиками и научился управлять подключенными устройствами. Есть несколько способов связать контроллер с удаленным устройством мониторинга и управления, один из которых - способ связи через протокол Modbus TCP. Для реализации наших задач этот протокол является подходящим.

Программирование контроллера Seeduino Xiao будем выполнять с помощью среды Arduino IDE. Она достаточно проста в освоении и

X Международная научно-практическая конференция имеет обширную базу библиотек, позволяющих наладить взаимодействие с совершенно различными устройствами. На рисунке 1 представлена данная среда разработки.

|void setup <) <

// put your setup code here, to run once:

>

void, loop (J (

// put your main code here, to run repeatedly:

>

Рис.1 - Среда разработки Arduino IDE

В начале разработки нам необходимо настроить среду и компилятор для корректной работы с нашим устройством. Для этого необходимо открыть в верхней панели вкладку «Инструменты» и в разделе с выбранной платой выбрать «Менеджер плат» где по поиску через глобальную сеть интернет можно найти практически любые библиотеки для поддержки работы с разного рода АМшпо -совместимых устройств [1, с. 69]. При отсутствии таковых в онлайн -библиотеке АМшпо можно скачать их у производителя и установить вручную. На рисунке 2 представлено окно менеджера плат, через которое мы устанавливаем необходимые библиотеки.

ф Менеджер плат X

Тип Все V |Xiao

Seeed 5AMD Boards л

by Seeed Studio версия 1.8.1 INSTALLED Seeeduino Wio Terminal, Seeeduino XIAO MO, Seeeduino Femto HO, Seeeduino Zero, Seeeduino LoRaWAN, Wio CPS Board, Wio Lite MG126, Grove UI Wireless. Online Help More Info

Выберите вере... ч/ Установка Удалить

Рис. 2 - Окно менеджера плат Arduino IDE

После установки библиотек необходимо выбрать необходимую нам плату для разработки, а именно Seeduino Xiao, после чего можно приступать к написанию скетча [2, c. 217].

Для работы с датчиком температуры, влажности, датчиком дыма и газа, датчиком огня, сервоприводом, датчиком движения, а также, с протоколом Modbus TCP необходимо подключить в скетч необходимые для работы библиотеки, которые можно увидеть на рисунке 3.

Далее нам необходимо присвоить выбранным устройствам регистры для взаимодействия через протокол Modbus TCP, объявить необходимые переменные и пины для устройств. На рисунке 4 предоставлен результат.

О MODBUSWORKING | Arduino 1.8.13 Файл Правка Скетч Инструменты Помощь

00 HD I

| MODBUSWORKINGg ^

#include <SPI.h> // библиотека для взаимодействия с SPI устройствами #include <Ethernet2.h> // Библиотека для осуществления передачи данных по сети #include <DHT.h> // Библиотека датчика температуры и влажности #include <TroykaMQ.h> // Библиотека датчика раза и дыма MQ-2 #include <Servo.h> // Библиотека для взаимодействия с сервоприводом #include <Modbus.h> // Библиотека для осуществления связи по Modbus RTU

#include <ModbusIP.h> // Дополнительная библиотека, расширяющая возможности связи по Modbus TCP

Рис. 3 - Подключаемые для работы библиотеки и их описание

® MODBUSWORKING | Arduino 1.8.13 Файл Правка Скетч Инструменты Помощь

а X

| MODBUSWORKING §

DHT dht(DHTPIN, DHTTYPE); // создаём объект для работы с датчиком MQ2 mq2 (MQ2PIN); // создаём объект для работы с датчиком

const int LAMP1_C0IL =4; If Присвоение значения регистра для связи по Modbus TCP, значение соответствует ад

const int SENSOR_IREG = 2;

const int SENSORTEMP_IREG = 3;

const int SMOKE_IREG = 7;

const int FLAME_IREG = 6;

const int BUZZER_COUL = 5;

const int SERVO_HREG = 8;

const int MOVING_IREG = 9;

|c:onst byte Sensor Pin = 1; // выбираем 1 пин для датчика

const int ledPin = 4;

const int flame = 6;

const int Beep =5;

const int ServoPin = 0;

//ModbusIP object

ModbusIP mb;

long ts;

Servo servo;

Рис. 4 - Объявление пинов датчиков и регистров для Modbus TCP

После этой операции следует произвести инициализацию в функции «void setup()» , прописав MAC-адрес модуля Wiznet w5500, IP-адрес для связи по протоколу Modbus TCP , задать работу пинов ардуино для датчиков и добавить переменные заданных типов для дальнейшего присваивания им значений [3, с. 384]. Команды, написанные в этой функции, выполняются единожды, при загрузке устройства. На рисунке 5 показана часть кода основной функции.

Завершающей функцией в программе является «void loop()». Эта функция выполняется бесконечное число раз пока наше устройство запущено и осуществляет свою работу.

D M0DBU5W0RKING 11 ■айл Правка Скетч И

О ШЕ9Е9

MODBUSWORKING:

Е.

// MAC — адрес интернет-модуля

// Присвоение пина датчику ; //Настройка режима работы пина

byte mac[] = { OxDE, OxAD, OxBE, OxEF, OxFE, OxED // The IP address for the shield

byte ip [ ] = ■( 192, 168, 0, 179 }; ff Выделенный для осуществления передачи данных ip-адрес //Config Modbus ip| mb.config(mac, ip) ; servo.attach(ServoPin); pinMode(ledPin, OUTPUT) pinMode(flame, INPUT); pinMode(Beep, OUTPUT); pinMode(SensorPin, INPUT);

nib.addCoil(LAMP1 COIL); //Добавление переменной, содержащей цифровое значение (0 или 1), доступной для чтен mb.addCoil(BUZZER_COUL);

mb.addlreg(SENSOR IREG); //Добавление переменной, содержащей аналоговое значение, доступной только для чтен

mb.addlreg(SENSORTEMP_IREG);

mb.addlreg(SMOKE_IREG);

mb.addlreg(FLAME_IREG);

mb.addlreg(MOVING_IREG);

mb.addHreg(SERVO HREG, 127); ///Добавление переменной, содержащей аналоговое значение, доступное как для чт

Автоформатирование завершен

Рис.5 - Часть кода основной функции «void setup()»

Здесь мы с установленной задержкой в 500 миллисекунд считываем данные с датчиков и присваиваем соответствующие значения заданным переменным, либо же записываем новые значения в устройство, изменяя значения аналоговых и цифровых выходов. Данная функция представлена на рисунке 6.

ООШШН

mb.addHreg(SERVO_HREG, 127); ///Добавление переменной, с последующей записью аналогового значения, доступно

}

void loop() {

rob.task(); //Вызывается один раз в блоке 1оор()

if (milliaO > ta + 500) { // цикл осуществляется для задержки опроса датчиков 500 мс

ta = milli3 ();

mb.Ireg(SENSOR_IREG, dht.readHumidity()); // чтение значения влажности(%) и присвоение значений объявлен mb.Ireg(SENSORTEMP_IREG, dht.readTemperature()); mb.Ireg(SMOKE_IREG, mq2.readSmoke() ) ; mb.Ireg(FLAME_IREG, analogRead(flame));

digitalWrite(ledPin, mb.Coil(LAMP1_C0IL)); // запись цифрового значения сигнала

digitalWrite(Веер, mb.Coil(BÜZZER_COUL));

digitalWrite(ledPin, mb.Coil(LAMP1COIL));

digitalWrite(Веер, mb.Coil(BUZZER_COUL));

mb.Ireg(MOVING_IREG, digitalRead(SenaorPin));

servo.write(mb.Hreg(SERVO_HREG)); // запись нового значения аналогового сигнала

Рис.6 - Функция «void loop()»

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

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

Q MODBUSWORKING | Arduino 1.8.U

Файл Правка Скетч Инструменты Помощь

0О Щ ЕЭ БЭ Проверить

MODBUSWORKING

mb.addHreg(SERVO_HREG, 127); ///Добавление переменной, с последующей записью аналогового значения, доступно

void loop () -{

mb.task(); //Вызывается один раз в блоке 1оор()

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

if (millis() > ts + 500) { // цикл осуществляется для задержки опроса датчиков 500 мс ts = millis();

mb.Ireg(SENSOR IREG, dht.readHumidity()); // чтение значения влажности(%) и присвоение значений объявлен mb.Ireg(SENSORTEMP_IREG, dht.readTemperature() ) ; mb.Ireg(SMOKE_IREG, mq2.readSmoke() ) ; mb.Ireg(FLAME_IREGr analogRead(flame));

digitalWrite(ledPin, mb.Coil(LAMP1 COIL)); // запись цифрового значения сигнала

digitalWrite(Веер, mb.Coil(BUZZER_COUL));

digitalWrite (ledPin, mb.Coil(LAMPl_COIL) ) ;

digitalWrite(Beep, mb.Coil(BUZZER_COUL));

mb.Ireg(MOVING_IREG, digitalRead(SensorPin));

servo.write(mb.Hreg(SERVO HREG)); // запись нового значения аналогового сигнала

}

устройства. Всего доступно 262144 байт.

Рис. 7 - Успешно скомпилированный и готовый для записи в

устройство скетч

Когда мы загрузим скетч в устройство необходимо будет произвести подключение необходимого перечня датчиков, модулей и управляемых устройств, после чего, подключить всё оборудование по кабелю RJ-45 к роутеру TP-LINK Archer C2, подключить роутер к сети интернет по кабелю или с помощью беспроводного модема. Также нам необходимо подключиться нашим устройством мониторинга к роутеру по wi-fi или кабелю и произвести необходимые настройки оборудования.

«Научные исследования и инновации» Библиографический список:

1. Проекты домашней автоматики на Arduino [Текст]: пер. с англ. / сост. М. Шварц, Самиздат, 2016. - 120 с.;

2. Освоение Arduino [Текст]: пер. с англ. / сост. Д. Хофман, Самиздат, 2018. - 306 с.;

3. Федоров, Ю.Н. Основы построения АСУ ТП том первый [Текст] / Ю.Н. Федоров. - М.: Монография, 2006. - 720 с..

i Надоели баннеры? Вы всегда можете отключить рекламу.