ПЗ (1190607), страница 4
Текст из файла (страница 4)
Для типа протокола используем TCP. Данный атрибут можно передавать в функцию в качестве 0, что соответствует протоколу по умолчанию. В большинстве случаев протокол однозначно определяется по домену и типу сокета.
Программа на компьютере, написанная на языке C#, выступает в роли клиента. И при отправке команды соединяется с сервером посредством сокетов. Для использования сокетов в среде разработки Visual Studio необходимо подключить библиотеки System.Net и System.Net.Sockets.
Если ошибок нет, то при нажатии на любую из кнопок сформируется команда и отправится на программу сервер, запущенную на Raspberry Pi. Если это команда из блока управление сервоприводами то она имеет следующий вид (тип передвижения)(введенное расстояние)(номер нажатой кнопки). Например, Move10button1. Кнопки передвижения пронумерованы по часовой стрелке начиная с кнопки влево, которой присвоен номер 1. Тип передвижения может быть либо Move либо Turn. Первый тип отвечает за управление двумя сервоприводами, которые будут использоваться для передвижения, а второй за управление дополнительно подключенными тремя сервоприводами. Если же это запрос на данные с датчика, то на сервер передается название датчика. Затем запрос обрабатывается и отправляется ответ. Полученный ответ выводится пользователю на экран в текстовое поле в блоке датчиков (рисунок 8).
Рисунок 8 – Вывод показаний с датчиков
Отправка программы для Arduino также осуществляется с помощью сокетов. Однако для правильного приема сервером файла сначала отправляется текстовое сообщение Файл и приходит ответ, разрешающий загрузку выбранного файла. Чтобы пользователь не мог выбрать файл с неправильным расширением, написан фильтр, который выглядит следующим образом openFileDialog1.Filter = "Arduino ino files(*.ino)|*.ino". Где .ino расширение файлов среды разработки Arduino Sketch.
Прием видеопотока с камеры осуществляется с использованием библиотеки Mjpeg Decoder. Создав объект типа MjpegDecoder используем функцию ParseStream в которую в качестве параметров указываем адресс на который транслируется видеопоток. В данном случае это http://192.168.0.43:8080/?action=stream где 192.168.0.43 IP адресс Raspberry Pi.
3.3 Программное обеспечение Raspberry Pi
Перед тем как пользоваться микрокомпьютером необходимо его правильно настроить. Для первоначальной настройки помимо Raspberry Pi необходимо какое-нибудь устройство вывода видеоинформации и устройства ввода, такие как USB компьютерная мышь и USB клавиатура.
Используем монитор с поддержкой HDMI. Для питания микрокомпьютера используем USB-порт компьютера. Так же необходимо сетевое подключение с помощью Ethernet-кабеля.
Первый шаг это установка операционной системы. В качестве ОС выбрана Raspbian. Это свободная операционная система на основе Debian, оптимизированная для аппаратных возможностей Raspberry Pi. Для установки выбранной ОС на карту micro-SD с компьютера необходимо воспользоваться утилитой Win32 Disk Imager. Данная программа предназначена для создания образов диска для переносных устройств и создания резервных копий этих же устройств.
Подключение к raspberry pi через Ethernet кабель требует знание IP адреса микрокомпьютера. Узнав его подключаем raspberry pi к компьютеру и используем программу PuTTY.
PuTTY это клиент использующий протоколы удаленного доступа SSH и Telnet. С помощью данной программы производится удаленное администрирование системы Linux [32].
К преимуществам данного ПО можно отнести:
– портативность, все настройки хранятся в директории программы;
– работа с ключами и версиями протокола SSH;
– наличие фильтра и менеджера сеансов;
– возможность перенаправления портов через SSH, включая передачу X11;
– поддержка большей части управляющих последовательностей xterm, VT-102, а также значительная эмуляция терминала ECMA-48;
– поддержка IPv6;
– сценарий входа в систему;
– поддержка аутентификации с открытым ключом, в том числе и без ввода пароля;
– возможность работы через последовательный порт;
– возможность работы через прокси-сервер;
– поддержка метода zlib@openssh.com (отсроченное сжатие данных до окончания процесса аутентификации).
Для удаленного управления ОС Rasbian используем SSH протокол. Сетевой протокол прикладного уровня, позволяющий производить удаленное управление операционной системой и туннелирование TCP-соединений. обеспечивающий защищенную аутентификацию, соединение и безопасную передачу данных между хостами сети, путем шифрования, проходящего через него трафика, с возможной компрессией данных. Еще одной важной функциональной особенностью, является возможность создания защищенных, шифрованных туннелей, для безопасной передачи через небезопасную среду (например интернет), других сетевых протоколов, так-же с возможность сжатия трафика. Кроме того протокол SSH отлично работает с форвардингом ( переадресация, перенаправление ) портов одной машины на порты другой в том числе и форвардинг удаленных клиентов XWindow.
Сейчас протокол SSH, является стандартом, и широко используется, например, для удаленного администрирования серверных систем, то есть выполнения различных команд и манипуляций в оболочке сервера через безопасное соединение, копирования файлов через сеть.
ПО для Raspberry Pi написано на языке python. Программа является сервером и постоянно находится в режиме ожидания. Для создания сокета используем следующие команды sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM), sock.bind(('', 11000)) и sock.listen(1).
При получении команды, используя написанную функцию Lamp мигает подключенная к Raspberry Pi лампочка. С помощью операторов if программа определяет какие пришли данные и что необходимо сделать.
Общение с подключенной Arduino Mega происходит с помощью функций подключенной библиотеки serial. Строка ser = serial.Serial('/dev/ttyACM0', 9600) указывает что Arduino подключена к COM порту ttyACM0 и задается скорость передачи данных 9600 бит/с. Отправка данных осуществляется функцией ser.write(), в параметрах которой указываются данные для передачи. Прием происходит функцией ser.readline(). Функция считывает данные пока не получит символ перехода на новую строку \n. Полученные данные отправляются программе клиенту командой conn.send(receivedData). После чего соединение с клиентом закрывается conn.close().
В целях экономии вычислительных мощностей Raspberry Pi все операции осуществляются с компьютера через терминал PuTTY в консоли.
Пример запуска программы, с использованием консоли. С помощью команд cd переходим в папку, где находится исполняемый файл, и запускаем его. Консоль представлена на рисунке 9.
Рисунок 9 – Запуск серверного приложения
В целях обучения студентов программа выводит в консоль происходящие в данный момент действия (рисунок 10).
Рисунок 10 – Вывод выполненных действий
Для включения камеры необходимо в консоли ввести следующую команду mjpg_streamer -i "input_uvc.so -d /dev/video0 -y -r 640x480 -f 60 -n" -o" "output_http.so -w /www -p 8080". При успешном её выполнении в консоли появится сообщение как на рисунке 11.
Рисунок 11 – Включение камеры
В качестве камеры можно использовать любую USB камеру, поддерживающую формат YUV или MJPG.
Перепрограммирование микроконтроллера осуществляется с помощью установленного на Raspberry Pi Arduino-mk. Mk обозначает Makefile с помощью которого написанный код собирается в hex файл и используя avrdude загружается в микроконтроллер. Так как в программе для микроконтроллера используются нестандартная библиотека необходимо в файле Arduino.mk прописать путь к этой библиотеке. Результатом успешной загрузки является сообщение в консоли (рисунок 12).
Рисунок 12 – Успешная загрузка программы
3.4 Аппаратное обеспечение
Программа для микропроцессора написана в среде разработки Arduino Sketch. Основной используемый оператор – switch-case. В зависимости от полученного значения программа решает, с какого из датчиков получить и отправить значения либо какой-из сервоприводов необходимо задействовать.
Показания датчиков выводятся с помощью команды Serial.print, в конце которых добавляется символ перехода на новую строку \n.
3.4.1 Датчики
Датчики – это преобразователь измеряемой (контролируемой) физической величины в величину, удобную для дальнейшего преобразования или измерения [4]. Датчики, выполненные на основе электронной техники, называются электронными датчиками. В состав датчика входят чувствительные и преобразовательные элементы. Основными характеристиками электронных датчиков являются чувствительность и погрешность. Датчики получили широкое применение в научных исследованиях, испытаниях, системах автоматизированного управления и в других областях деятельности и системах, где требуется получение измерительной информации. Датчики по своему назначению и технической реализации близки к понятию «измерительный инструмент» («измерительный прибор»). Однако показания приборов воспринимаются человеком, как правило, напрямую (посредством дисплеев, табло, панелей, световых и звуковых сигналов и проч.), в то время как показания датчиков требуют преобразования в форму, в которой измерительная информация может быть воспринята человеком. Датчики могут входить в состав измерительных приборов, обеспечивая измерение физической величины, результаты которого затем преобразуются для восприятия оператором измерительного прибора.
В автоматизированных системах управления датчики могут выступать в роли инициирующих устройств, приводя в действие оборудование, арматуру и программное обеспечение. Показания датчиков в таких системах, как правило, записываются на запоминающее устройство для контроля, обработки, анализа и вывода на дисплей или печатающее устройство. Огромное значение датчики имеют в робототехнике, где они выступают в роли рецепторов, посредством которых роботы и другие автоматические устройства получают информацию из окружающего мира и своих внутренних органов.
Говоря о классификаций датчиков, важнейшим признаком является физический принцип действия – принцип преобразования физических величин, который основывается на некотором физико-технической эффекте [2]. Такая классификация приведена на рисунке 13.
Рисунок 13 – Классификация датчиков по принципу действия
Общая классификация датчиков приведена на рисунке 14. В ней учтены многие классификационные признаки и она дает наиболее полное представление о всем разнообразии датчиков.
Рисунок 14 – Виды классификаций датчиков
В соответствии с задачей в аппаратном модуле используются следующие датчики.
Цифровой датчик температуры и влажности DHT11. Состоит из двух основных частей: ёмкостный датчик влажности и термистор. Также в корпусе установлен чип для преобразования аналогового сигнала в цифровой. Датчик показан на рисунке 15.
Рисунок 15 – Цифровой датчик температуры DHT11
Напряжение питания 5 В. Диапазон измерения температур от 0°C до +50°C с точностью ±2°C. Диапазон влажности 20-90% с погрешностью ±5%.
Для управления датчиком необходима библиотека dht.h, которую необходимо импортировать в Arduino IDE
ИК-датчик препятствий для роботов-машин YL-63 (FC-51). Бесконтактный датчик YL-63 обнаруживает объекты в диапазоне расстояний почти от нуля и до установленного предела не вступая с ними в непосредственный контакт. Датчик предназначен для применения, когда не требуется информация о расстоянии до объекта, а только о его наличии или отсутствии. Предельная дистанция регистрации зависит от настройки. Датчик YL-63 имеет дискретный выход. Это оптический датчик регистрирующий увеличение интенсивности отраженного инфракрасного (ИК) излучения в контролируемом пространстве. Изменение отраженного излучения происходит из-за движущихся частей механизмов или перемещения окружающих предметов. YL-63 может размещаться на движущемся объекте для определения положения в окружающем пространстве. Применяется для обнаружения препятствия при движении колесных и гусеничных автоматов. Датчик может стать частью наглядного пособия для обучающихся в области систем управления и автоматики.















