Дистанционно управляемые роботы. Удаленное управление роботом с планшета. Схема подключения пульта дистанционного управления

Чтобы наработать опыт в работе с платой Arduino, так сказать в качестве учебного опыта и просто для интереса был создан этот проект. Целью проекта было создать автомобиль, который может автономно перемещаться, объезжая различные препятствия и не сталкиваясь с ними.

Шаг 1: Список компонентов и стоимость проекта

1. Игрушечная Машинка с радиоуправлением (radio controlled).

Стоит эта штука около 20 баксов, если у вас есть возможность потратить больше, то можете использовать и получше.

2. Arduino Uno микроконтроллер - 25 долларов

3. Motor shield для контроля электромоторов - 20 долларов

4. GPS для навигации. Adafruit Ultimate GPS Shield - 50 долларов

5. Магнитометр в качестве компаса для навигации. Adafruit HMC5883 Magnetometer - 10 долларов

6. Ультразвуковой датчик расстояния, чтобы избегать препятствия. HC-SR04 - 6 долларов

7. ЖК-дисплей для отображения состояния транспортного средства и информации. LCD Display Blue 1602 IIC, I2C TWI - 6 долларов (можете использовать другой)

8. Инфракрасный датчик и пульт.

9. Arduino sketch (программа C++).

10. Тонкая древесная плита в качестве монтажной платформы.

11. Макетные платы. Одна длинная и узкая, а другая маленькая, чтобы отдельно установить на ней магнитометр подальше от других элементов.

12. Перемычки.

13. Набор для монтажа ультразвукового датчика - 12 долларов

14. Паяльник и припой.

Итак, в общем на всё ушло около 150 долларов, это при условии, если закупать все эти компоненты, поскольку возможно у вас уже что то имеется из этого.

Шаг 2: Шасси и монтаж платформы

Радиоуправление изъяли из ненужной игрушки, которая стоила 15 баксов.

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

Использовалась тонкая доска в качестве монтажной поверхности, на которой были прикреплены макетные платы, Arduino, ЖК и т.д. Батарейки размещены под доской и провода пропущены через просверленные отверстия.

Шаг 3: Программа

Arduino управляется через программу С ++.

Исходный код

RC_Car_Test_2014_07_20_001.ino

Шаг 4: ЖК-дисплей

Во время работы экран отображает следующую информацию:

Ряд 1:

1. TH - Задача, курс к текущей маршрутной точки

2. CH - Текущее направление робота

Ряд 2:

3. Err - Направление по компасу, показывает в каком направлении движется робот (влево или вправо)

4. Dist - Фокусное расстояние (в метрах) до текущей маршрутной точки

Ряд 3:

5. SNR - Sonar расстояние, то есть расстояние до любых объектов в передней части робота

6. Spd - Скорость робота

Ряд 4:

7. Mem - Память (в байтах). В памяти Arduino имеется 2 КБ

8. WPT n OF x - Показывает, где робот находится в списке маршрутных точек

Шаг 5: Избежать столкновения с объектами

Чтобы робот избегал препятствий, здесь использовался ультразвуковой датчик » Ping». Было решено совместить его с библиотекой Arduino NewPing, поскольку она лучше, чем простая PIng библиотека.

Библиотека была взята отсюда: https://github.com/fmbfla/Arduino/tree/master/NewPing

Датчик был установлен на бампере робота.

Здравствуй, Хабрахабр! Я сидел вечером 11 июня, смотрел фильм. Неожиданно для себя я обнаружил, что мне написала незнакомая мне ранее женщина с предложением сделать робота для их нового квеста. Суть заключается в том, что нужно разгадывать головоломки, исследовать тайники, правильно применять подсказки, использовать доступные вещи и в итоге добывать ключи и открывать двери… От меня требовалось сделать робота, управляемого с компьютера с помощью отдельной программы. У мебя были сомнения по поводу некоторых проблем, например: успею ли я и как именно сделать беспроводную передачу данных (беспроводной передачей данных я занимался до этого только на NXT)? Взвесив все за и против я согласился. После этого я стал думать над передачей данных. Поскольку требовалось сделать робота быстро, то вспоминать и доосваивать, например, Delphi не было времени, поэтому возникла идея сделать модуль который будет заниматься отправкой команд. От компьютера требуется просто посылать данные в СОМ-порт. Этот способ странный, но наиболее быстрый. Его я и хочу описать здесь. Так же я приложу 3 программы которые помогут сделать радиоуправляемую машинку.
Сборка передатчика и его программа.
Я сделал модуль для компьютера из FTDI Basic Breakout 5/3.3V от DFrobot, довольно распространённого микроконтролера ATMEGA 328P-PU с загрузчиком Arduino и радиомодуля на основе микросхемы nRF24L01. По-сути это просто Arduino Uno с радиомодулем. Что есть, то есть. У радиомодуля есть особенность, которую я не сразу заметил: входное напряжение должно быть в диапазоне от 3 до 3.6 вольт (хотя подача на него 5 вольт его не убьёт, но работать не будет), верхняя граница логической единицы составляет 5В. Это означает то, что для подключения радиомодуля к меге не нужен преобразователь уровней между 3.3В и 5В, а вот стабилизатор на 3.3В установить нужно. У FTDI есть встроенный стабилизатор, от него я и подпитал радиомодуль.

Так выглядит сам модуль (внутри и в сборке) :

Программа состоит из инициализации, стартового сообщения и обработки команд из программы управления. Так было в моём случае. Основные команды библиотеки Mirf:

#include
#include
#include
#include
#include
Эти библиотеки нужны для работы радиомодуля

Mirf.csnPin = 4 - задаёт номер пина, отвечающего за «разрешение общаться» радиомодуля и МК
Mirf.cePin = 6 - задаёт номер пина, отвечающего за режим работы радиомодуля (приёмник/передатчик)
Mirf.spi = &MirfHardwareSpi - настраивает линию SPI
Mirf.init() - инициализирует радиомодуль
Mirf.payload = 1 - размер в байтах одного сообщения (поумолчанию 16, максимум 32)
Mirf.channel = 19 - задаёт канал (0 - 127, по умолчанию 0)
Mirf.config() - задаёт параметры передачи


Mirf.setTADDR((byte *)«serv1») - переводит радиомодуль в режим передатчика
Mirf.setRADDR((byte *)«serv1») - переводит радиомодуль в режим приёмника

Mirf.send(data) - отправляет массив типа byte
Mirf.dataReady() - сообщает об окончании обработки принятых данных
Mirf.getData(data) - записать принятые данные в массив data

Прилагаю код программы передатчика.

Программа передатчика

#include
#include
#include
#include
#include

Char active;
byte data;

Void setup()
{
Serial.begin(19200);

Mirf.csnPin = 4;
Mirf.cePin = 6;

Mirf.init();
Mirf.payload = 1;
Mirf.channel = 19;
Mirf.config();

Mirf.setTADDR((byte *)«serv1»);

//сигнальное сообщение о начале работы
data=7;
Mirf.send(data);
delay(200);
}

Void loop()
{
if (Serial.available()) //Если данные готовы к считыванию
{
active=Serial.read(); // Запись данных в переменную
}

If (active=="2")
{
data=2;
}

If (active=="3")
{
data=3;
}

If (active=="4")
{
data=4;
}

If (active=="5")
{
data=5;
}

If (active=="6")
{
data=6;
}

Mirf.send(data); //Отсылаем данные
while(Mirf.isSending()); // Ждём пока данные отсылаются
}

Программа управления.

Есть одна интересная штука - Processing. Синтаксис такой же как в Arduino, только вместо void loop() там расположился void draw(). Но она становилась ещё более интересной в моей ситуации с библиотекой processing Serial, которая позволяет работать с сериал-портом. Прочитав уроки на сайте Spurkfun`а, я поигрался с миганием светодиода на подключенной к компьютеру ардуинке по клику мышки. После этого я написал программу управления роботом с клавиатуры. Прилагаю код управления с помощью стрелок. В нём, в принципе, ничего необычного нет.

Программа управления машинкой

import processing.serial.*;
import cc.arduino.*;

Serial myPort;
PFont f=createFont(«LetterGothicStd-32.vlw», 24);

Void setup()
{
size(360, 160);
stroke(255);
background(0);
textFont(f);

String portName = «XXXX»; // Сюда нужно написать имя вашего порта
myPort = new Serial(this, portName, 19200);
}

Void draw() {
if (keyPressed == false)
{
clear();
myPort.write("6");
println(«6»);
}
}

Void keyPressed()
{
// 10 - enter
// 32 - probel
// 37/38/39/40 - keys
clear();

Fill(255);
textAlign(CENTER);
//text(keyCode, 180, 80);

Switch(keyCode)
{
case 37:
text(«Edem vlevo», 180, 80);
myPort.write("1");
break;

Case 38:
text(«Edem pryamo», 180, 80);
myPort.write("2");
break;

Case 39:
text(«Edem vpravo», 180, 80);
myPort.write("3");
break;

Case 40:
text(«Edem nazad», 180, 80);
myPort.write("4");
break;

Default:
text(«Takoy kommandi net», 180, 80);
myPort.write("6");
break;
}
}

Программа приёмника.

Инициализация этой программы отличается от инициализации программы передатчика буквально одной строчкой. Ключевая команда в бесконечном цикле Mirf.getData(data). Дальше полученная команда сравнивается с числами, которым соответствуют какие-либо действия робота. Ну а дальше робот действует точно по командам. Прилагаю код программы приёмника машинки.

Программ машинки

#include
#include
#include
#include
#include

Void setup()
{
Serial.begin(9600);

PinMode(13, OUTPUT); //LED

Mirf.csnPin = 10;
Mirf.cePin = 9;
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.payload = 1;
Mirf.channel = 19;
Mirf.config();
Mirf.setRADDR((byte *)«serv1»);
}

Void loop()
{
byte data;

If(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData(data);
Serial.println(data);
}

Switch (data)
{
case 1:
motors(-100, 100); // поворачиваем влево
break;

Case 2:
motors(100, 100); // едем прямо
break;

Case 3:
motors(100, -100); // поворачиваем вправо
break;

Case 4:
motors(-100, -100); // едем назад
break;

Default:
motors(0, 0); // стоим
break;
}

Delay(50);
}

Заключение.

Что из этого всего вышло:

Этого робота я сделал для «Клаустрофобии» . Они проводят квесты в реальности в разных городах, и как раз для одного из таких квестов организаторам понадобился радиоуправляемый робот-сапер. Мне понравилось. Это, конечно, ущербно, т.к. на фоне управления с помощью встроенных в ноутбук средств связи, но зато своё, сделанное весьма быстро и без особых проблем. Надеюсь эта статья поможет сделать нечто подобное, а, может, даже сложнее. Тут уж кому что захочется.

Теги: Добавить метки

Основной модуль конструктора Lego Mindstorms EV3 может работать с прошивкой leJOS , позволяющей запускать Java-приложения. Специально для этого Oracle выпустил и поддерживает отдельную версию полноценной Java SE .

Нормальная JVM позволила мне использовать встроенный в нее протокол Java Management Extensions (JMX), чтобы реализовать удаленное управление роботом-манипулятором. Для объединения управляющих элементов, показаний датчиков и картинок с установленных на роботе IP-камер используется мнемосхема, сделанная на платформе AggreGate.


Сам робот состоит из двух основных частей: шасси и руки-манипулятора. Они управляются двумя полностью независимыми компьютерами EV3, вся их координация осуществляется через управляющий сервер. Прямого соединения между компьютерами нет.

Оба компьютера подключены к IP-сети помещения через Wi-Fi адаптеры NETGEAR WNA1100. Робот управляется восемью двигателями Mindstorms - из них 4 «большие» и 4 «маленькие». Также установлены инфракрасный и ультразвуковой датчики для автоматической остановки у препятствия при движении задним ходом, два датчика прикосновения для остановки поворота манипулятора из-за препятствия, и гироскопический датчик, облегчающий ориентировку оператора при помощи визуализации положения плеча.

В шасси установлены два двигателя, каждый из которых передает усилие на пару гусеничных приводов. Еще один двигатель поворачивает всю руку-манипулятор целиком на 360 градусов.

В самом манипуляторе два двигателя отвечают за подъем и опускание «плеча» и «предплечья». Еще три двигателя занимаются подъемом/опусканием кисти, ее поворотом на 360 градусов и сжиманием/разжиманием «пальцев».

Самым сложным механическим узлом является «кисть». Из-за необходимости выноса трех тяжелых двигателей в район «локтя» конструкция получилась достаточно хитрой.

В целом все выглядит так (коробок спичек был с трудом найден для масштаба):

Для передачи картинки установлены две камеры:

  • Обычный Android-смартфон с установленным приложением IP Webcam для общего обзора (на снимке HTC One)
  • Автономная Wi-Fi микро-камера AI-Ball , установленная прямо на «кисти» манипулятора и помогающая хватать предметы сложной формы

Программирование EV3

ПО самого робота получилось максимально простым. Программы двух компьютеров очень похожи, они запускают JMX сервер, регистрируют MBean"ы, соответствующие двигателям и датчикам, и засыпают в ожидании операций по JMX.

Код главных классов ПО руки-манипулятора

public class Arm { public static void main(String args) { try { EV3Helper.printOnLCD("Starting..."); EV3Helper.startJMXServer("192.168.1.8", 9000); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); EV3LargeRegulatedMotor motor = new EV3LargeRegulatedMotor(BrickFinder.getDefault().getPort("A")); LargeMotorMXBean m = new LargeMotorController(motor); ObjectName n = new ObjectName("robot:name=MotorA"); mbs.registerMBean(m, n); // Registering other motors here EV3TouchSensor touchSensor = new EV3TouchSensor(SensorPort.S1); TouchSensorMXBean tos = new TouchSensorController(touchSensor); n = new ObjectName("robot:name=Sensor1"); mbs.registerMBean(tos, n); // Registering other sensors here EV3Helper.printOnLCD("Running"); Sound.beepSequenceUp(); Thread.sleep(Integer.MAX_VALUE); } catch (Throwable e) { e.printStackTrace(); } } } public class EV3Helper { static void startJMXServer(String address, int port) { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); try { java.rmi.registry.LocateRegistry.createRegistry(port); JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + address + ":" + String.valueOf(port) + "/server"); Map props = new HashMap(); props.put("com.sun.management.jmxremote.authenticate", "false"); props.put("com.sun.management.jmxremote.ssl", "false"); JMXConnectorServer connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, props, server); connectorServer.start(); } catch (Exception e) { e.printStackTrace(); } } static void printOnLCD(String s) { LCD.clear(); LCD.drawString(s, 0, 4); } }

Для каждого типа датчика и мотора создан интерфейс MBean"а и реализующий его класс, которые напрямую делегирует все вызовы классу, входящему в leJOS API.

Пример кода интерфейса

public interface LargeMotorMXBean { public abstract void forward(); public abstract boolean suspendRegulation(); public abstract int getTachoCount(); public abstract float getPosition(); public abstract void flt(); public abstract void flt(boolean immediateReturn); public abstract void stop(boolean immediateReturn); public abstract boolean isMoving(); public abstract void waitComplete(); public abstract void rotateTo(int limitAngle, boolean immediateReturn); public abstract void setAcceleration(int acceleration); public abstract int getAcceleration(); public abstract int getLimitAngle(); public abstract void resetTachoCount(); public abstract void rotate(int angle, boolean immediateReturn); public abstract void rotate(int angle); public abstract void rotateTo(int limitAngle); public abstract boolean isStalled(); public abstract void setStallThreshold(int error, int time); public abstract int getRotationSpeed(); public abstract float getMaxSpeed(); public abstract void backward(); public abstract void stop(); public abstract int getSpeed(); public abstract void setSpeed(int speed); }

Пример кода реализации MBean"а

public class LargeMotorController implements LargeMotorMXBean { final EV3LargeRegulatedMotor motor; public LargeMotorController(EV3LargeRegulatedMotor motor) { this.motor = motor; } @Override public void forward() { motor.forward(); } @Override public boolean suspendRegulation() { return motor.suspendRegulation(); } @Override public int getTachoCount() { return motor.getTachoCount(); } @Override public float getPosition() { return motor.getPosition(); } @Override public void flt() { motor.flt(); } @Override public void flt(boolean immediateReturn) { motor.flt(immediateReturn); } // Similar delegating methods skipped }

Как ни странно, на этом программирование закончилось. На стороне сервера и операторского рабочего места не было написано ни одной строчки кода.

Подключение к серверу

Непосредственное управление роботом осуществляет сервер IoT-платформы AggreGate . Установленная бесплатная версия продукта AggreGate Network Manager включает драйвер протокола JMX и позволяет подключить до десяти JMX-хостов. Нам понадобится подключить два - по одному на каждый кирпичик EV3.

Прежде всего, нужно создать аккаунт JMX устройства, указав в настройках URL, заданный при запуске JMX сервера:

Свойства соединения с JMX-устройством


После этого выбираем активы (т.е. MBean"ы в данном случае), которые будут добавлены в профиль устройства:

Выбор MBean"ов


И через несколько секунд смотрим и меняем текущие значения всех опрошенных свойств MBean"ов:

Снимок устройства


Можно также потестировать различные операции вызывая вручную методы MBean"ов, например forward() и stop().

Список операций


Далее настраиваем периоды опроса для датчиков. Высокая частота опроса (100 раз в секунду) используется, так как управляющий сервер находится в локальной сети вместе с роботом и именно сервер принимает решения об остановке вращения при упоре в препятствие и т.п. Решение, безусловно, не промышленное, но в хорошо работающей Wi-Fi сети в рамках одной квартиры показало себя вполне адекватным.

Периоды опроса


Интерфейс оператора

Теперь переходим к созданию интерфейса оператора. Для этого сначала создаем новый виджет и накидываем в него нужные компоненты. В конечном работающем варианте выглядит он так:

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

Вид изнутри редактора интерфейсов

Вся форма:

Вид с показанными панелями-контейнерами:


Теперь, как говорят АСУТПшники, осталось «оживить мнемосхему». Для этого применяются так называемые привязки связывающие свойства и методы графических компонентов интерфейса со свойствами и методами серверных объектов. Так как компьютеры EV3 уже подключены к серверу, серверными объектами могут быть и MBean"ы нашего робота.

Весь интерфейс оператора содержит около 120 привязок, большая часть из которых однотипна:

Половина однотипных привязок реализует управление при помощи кликов на кнопки, расположенные на мнемосхеме. Это красиво, удобно для тестирования, но совершенно непригодно для реального передвижения робота и перемещения грузов. Активаторами привязок из этой группы являются события mousePressed и mouseReleased различных кнопок.

Вторая половина привязок позволяет управлять роботом с клавиатуры, предварительно нажав на кнопку Keyboard Control. Эти привязки реагируют на события keyPressed и keyReleased , а в условии каждой привязки прописано, на какой именно код кнопки нужно реагировать.

Все управляющие привязки вызывают методы forward() , backward() и stop() различных MBean"ов. Поскольку доставка событий происходит асинхронно, важно, чтобы вызовы функций forward() /backward() и последующие вызовы stop() не перепутались. Для этого привязки, вызывающие методы одного MBean"а, добавлены в одну очередь (Queue).

Две отдельные группы привязок выставляют начальные скорости и ускорения двигателей (сейчас это реализовано на стороне сервера при помощи модели, поэтому эти привязки отключены) и меняют скорости/ускорения при перемещении ползунков Speed и Acceleration.

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Разработка дистанционной системы управления учебным роботом

Введение

робототехника пользователь программа микропроцессорный

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

Поразительно, как в наше время быстро развиваются технологии, кажется, что за темпами их развития, уже, сложно проследить. Сотовые телефоны - один из ярких примеров, они на сегодняшний день есть у каждого человека. Более того, они стали неотъемлемой частью нашего общества. Существуют телефоны с минимальным набором функций, а есть «продвинутые» с функциями сравнимыми с персональным компьютером.

Сотовые телефоны частично заменяют многие устройства такие как: фотоаппарат, компьютер, электронную книгу и т.п. Стоит задуматься «а почему бы не управлять с помощью телефона какими-нибудь не сложными устройствами?». Предлагается заменить не все устройство, а только некоторые средства дистанционного управления. Это упростит управление различными приборами в повседневной жизни человека. Например, один телефон с функцией Bluetooth сможет заменить все пульты от домашней техники, которые так часто теряются.

Эта актуальная проблема будет решена благодаря подобному устройству, разработанному в данном проекте, основной идеей и целью которого является создание дистанционной системы управления учебным роботом по каналу связи Bluetooth.

Bluetooth является самым распространенным каналом связи на данный момент. Он есть почти на всех телефонах, и очень прост в использовании. Bluetooth или блютус - производственная спецификация беспроводных персональных сетей. Bluetooth обеспечивает обмен информацией между такими устройствами как персональные компьютеры, мобильные телефоны, принтеры, цифровые фотоаппараты, мышки, клавиатуры, джойстики, наушники, гарнитуры. Bluetooth позволяет этим устройствам сообщаться, когда они находятся в радиусе до 200 метров друг от друга (дальность сильно зависит от преград и помех), даже в разных помещениях.

Слово Bluetooth - переводится с датского языка как «Синезубый». Это прозвище носил король Харальд I, правивший в X веке Данией и частью Норвегии и объединивший враждовавшие датские племена в единое королевство. Подразумевается, что Bluetooth делает то же самое с протоколами связи, объединяя их в один универсальный стандарт.

В данной работе производится разработка системы дистанционного управления учебным роботом. Учебный мобильный робот построен на базе машинки с радиоуправлением. А дистанционное управление осуществляется по каналу связи Bluetooth. Устройством передачи сигнала был выбран телефон с возможностью передачи информации по Bluetooth, а устройство приемник - это Bluetooth модуль установленный на плате в машинке.

Дадим определение, что такое робот. Робот - электромеханическое, пневматическое, гидравлическое устройство или их комбинация, предназначенное для осуществления производственных и других операций, обычно выполняемых человеком (иногда животным). Использование роботов позволяет облегчить или вовсе заменить человеческий труд.

С развитием робототехники определились 3 разновидности роботов:

С жёсткой программой действий;

Управляемые человеком-оператором;

С искусственным интеллектом, действующие целенаправленно без вмешательства человека.

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

Когда мы говорим о роботах, то часто задаемся вопросом, насколько они разумны и могут ли в связи с этим представлять опасность или пользу для человека. Интересная тема, хотя говорить здесь надо не о роботах, а о компьютерах, управляющих их действиями. Сам робот всего лишь комплекс исполнительных механизмов. Команды для перемещения, исполнительным механизмам дает компьютер, в данном случае телефон.

Для выполнения цели проекта поставлены и решены следующие задачи:

1) Разработка структурной схемы устройства управления. Разрабатывается структурная схема работы учебного мобильного робота с дистанционной системой управления.

2) Разработка микропроцессорного устройства управления двигателями постоянного тока. Осуществляется разработка схемы электрической принципиальной - выбор двигателей, микроконтроллера, интерфейса связи. Расчет схемы электрической принципиальной и осуществляется разработка печатной платы и сборочного чертежа.

3) Разработка алгоритма и программы устройства управления;

1 . Разработка структурной схемы устройства управления

Структурная схема системы

С помощью программного обеспечения установленного на телефоне формируются и передаются сигналы на устройство приемник, в данном случае это Bluetooth модуль.

Bluetooth модуль в свою очередь принимает сигналы, и не обрабатывая передает их на главный управляющий элемент - микроконтроллер.

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

2 . Разработка микропроцессорного устройства управления двигателями постоянного тока

В данном разделе осуществляется разработка схемы электрической принципиальной - выбор двигателей, микроконтроллера, интерфейса связи. Расчет схемы электрической принципиальной и осуществляется разработка печатной платы и сборочного чертежа.

Разработка схемы электрической принципиальной

Выбор двигателя

В качестве объекта управления в данной работе были выбраны двигатели, установленные в машине на радиоуправлении, приобретенной специально для выполнения работы.

Выбор микроконтроллера

В качестве основного элемента получения и обработки сигналов был выбран микроконтроллер Atmega8 фирмы Atmel (см. приложение Б). У микроконтроллера имеются порты UART, 3 таймера, что необходимо для данной работы.

Цифровые сигнальные процессоры фирмы Atmel получили широкое применение, так как они имеют доступную цену и достаточный набор периферии.

Выбор микросхемы и интерфейса связи

Для управления двигателями стоял выбор между драйверами L298N и L293D. Но выбор остановился на драйвере L298N. Он работает в более широком диапазоне напряжений, и в связи с этим отпадает риск перегрева микросхемы. Так же он легкодоступный и имеет полный ряд функций необходимых для выполнения данной работы.

В качестве интерфейса связи с компьютером в данном проекте выбран интерфейс UART. Данный интерфейс был выбран не случайно, потому что для передачи данных используется Bluetooth модуль, который в свою очередь использует интерфейс UART. Так же его плюсом является хорошая скорость передачи данных - 9600 Кбит/с.

Расчет механической мощности.

Вес модели равен 0,7 кг, максимальная скорость 1 м/с при диаметре колес 30 мм.

Рассчитаем ускорение:

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

При моменте инерции и угловом ускорении б =

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

Мощность двигателя пропорциональна вращающему моменту и частоте вращения:

Расчет схемы электрической принципиальной

Выбор силового драйвера управления.

В данной работе мы используем драйвер L298N со следующими характеристиками:

Максимальное рабочее напряжение: Uпит < Uдрайвера=46 В;

Напряжение питания U пит =+5 В, +3,3 В;

Максимальный выходной ток (на один канал): Iпит < Iдрайвера=2 А:

Расчет резисторов.

Вывод Reset микроконтроллера, согласно технической документации, рекомендовано подключать к питанию через подтягивающий резистор номиналом 10 кОм.

Резисторы для соединения микроконтроллера и Bluetooth модуля устанавливаются исходя из технической документации модуля: рабочее напряжение 3.3 В, при работе с напряжением 5 В установить резисторы номиналом 4,7 кОм.

Для стабильной работы и избежание сгорания светодиода необходимо, что бы ток текущей в цепи, соответствовал номинальному (10 или 20 миллиампер), для этого установим резистор сопротивлением 1 кОм.

Расчет конденсаторов.

Для стабилизации напряжения поступающего с источника питания были параллельно подключены конденсаторы емкостью 30 мкФ и 100 мкФ.

Уже известно, что Bluetooth модуль работает от напряжения 3,3 В, получается рабочее напряжение в микросхеме 5 В будет излишним, что может привести к сгоранию модуля. Поэтому для уменьшения напряжения необходимо подключить стабилизатор L78L33. Исходя из его технической документации потребуются 2 конденсатора емкостью 0,33 мкФ и 0,1 мкФ. Схема соединения представлена на рисунке.

Схема соединения стабилизатора L78L33

Разработка печатной платы

Разработка конструкции устройства осуществляется на основе разработанной принципиальной электрической схемы с учетом требований к ремонтопригодности, требований технической эстетики, с учетом условий эксплуатации и других требований.

При конструировании печатной платы необходимо учитывать следующее.

Если нет каких-либо ограничений, печатная плата (ПП) должна быть квадратной или прямоугольной. Максимальный размер любой из сторон не должен превышать 520 мм. Толщина ПП должна соответствовать одному из чисел ряда: 0.8; 1.0; 1.5; 2.0 в зависимости от площади ПП.

Центры отверстий должны располагаться в узлах координатной сетки. Каждое монтажное и переходное отверстие должно быть охвачено контактной площадкой.

Диаметр монтажных отверстий, диаметры выводов микросхем колеблются в пределах 0,8…1,2 мм, а диаметры выводов резисторов колеблются около 0,66 мм. Для упрощения процесса изготовления, монтажные отверстия на плате имеют диаметр 0,8 и 1,2 мм. Шаг координатной сетки составляет 1,27 мм.

Паять элементы припоем ПОС-61. Материал платы стеклотекстолит фольгированный СТЭФ 2-1,5-50 по ГОСТ 10316-86.

Разработка сборочного чертежа

В ходе разработки сборочного чертежа необходимо уделить внимание следующим требованиям:

1) разработка сборочного чертежа устройства управления двигателями постоянного тока осуществляется на основе разработанной принципиальной электрической схемы с учетом требований к чертежным документам;

2) в соответствии со схемой деления изделия на составные части присвоить обозначение сборочной единице и ее элементам по ГОСТ 2.201-68;

3) проставить необходимые размеры согласно требованиям ГОСТ 2.109-73;

4) заполнить спецификацию, выдерживая все требования ГОСТ 2.108-68;

5) заполнить основную надпись и выполнить другие необходимые надписи (технические требования и пр.).

3 . Разработка алгоритма и программы устройства управления

В данном разделе осуществляется разработка алгоритма для микропроцессорного устройства управления двигателями постоянного тока, а также разработка программы управления на телефон.

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

На рисунке 3 представлена схема алгоритма работы микропроцессорного устройства управления.

Значения передаваемого байта:

10: 00 - Стоп; 01 - Вперед; 10 - Назад; 11 - Стоп.

23: 00 - Стоп; 01 - Вправо; 10 - Влево; 11 - Стоп.

Разработка программы.

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

Данная программа необходима для управления двигателями постоянного тока. Микроконтроллер управляется программой с телефона.

Программа управления двигателем постоянного тока, с использованием микроконтроллера ATmega8 (см. приложение А).

Разработка программы на телефон.

Для запуска этой программы необходимо иметь на компьютере установленную версию Windows 98/2000/ME/XP. Данная программа разрабатывалась в среде Android SDK.

Для работы используются следующие пространства имен:

import java.io.IOException;

import java.io. OutputStream;

import java.util. List;

import java.util.UUID;

import android.app. Activity;

import android.app. AlertDialog;

import android.app. ProgressDialog;

import android.bluetooth. BluetoothAdapter;

import android.bluetooth. BluetoothDevice;

import android.bluetooth. BluetoothSocket;

import android.content. Context;

import android.content. DialogInterface;

import android.content. Intent;

import android.content. DialogInterface. OnClickListener;

import android.hardware. Sensor;

import android.hardware. SensorEvent;

import android.hardware. SensorEventListener;

import android.hardware. SensorManager;

import android.net. Uri;

import android.os. Bundle;

import android.os. Handler;

import android.os. Message;

import android.view. LayoutInflater;

import android.view. Menu;

import android.view. MenuInflater;

import android.view. MenuItem;

import android.view. MotionEvent;

import android.view. View;

import android.widget. Button;

import android.widget. TextView;

import android.widget. Toast;

Назначение и условия применения программы.

Программа предназначена для формирования и передачи сигналов на микропроцессорное устройство.

Для запуска этой программы необходимо иметь устройство с операционной системой Android любой версии. Данная программа разрабатывалась в среде Android SDK.

Обращение к программе

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

Для запуска программы необходимо включить Bluetooth на устройстве и запустить приложение «BluCar». С помощью кнопки «Connect to a device» установить соединение с Bluetooth модулем («linvor»). После того как светодиод перестанет мигать можно приступать к передаче данных.

4. Руководство пользователя

Для проверки работоспособности учебного мобильного робота необходимо следующее:

Включить питание учебном мобильном роботе при помощи кнопки представленной на рисунке.

Кнопка включения питания

Дождаться мигания двух светодиодов представленных на рисунке 5. Первый (белый) установлен на схеме мигая через каждую секунду, извещая о том, что в схеме есть питание и она готова к работе. Второй светодиод находится на Bluetooth модуле, и имеет 2 режима работы:

Мигание: ожидание подключения;

Постоянное горение: показывает наличие подключения.

Рабочее состояние светодиодов

Далее включаем на телефоне Bluetooth и запускаем программу «BluCar» представленную на рисунке 6. В программе нажимаем кнопку «Connect from device», из предоставленного списка выбираем linvor, которым является Bluetooth модуль. Дожидаемся когда светодиод на модуле начинает гореть постоянно, что означает успешное подключение. Учебный мобильный робот с дистанционной системой управления готов к работе.

Программа на телефоне «BluCar»

Способы управления:

Кнопка «Forward» - движение вперед;

Кнопка «Reverse» - движение назад;

Поворот телефона по горизонтальной плоскости правым ребром вниз - поворот передних колесо вправо;

Поворот телефона по горизонтальной плоскости левым ребром вниз - поворот передних колес влево;

Для выключения мобильного робота необходимо отключить питание схемы и в программе нажать кнопку «Disconnect from device».

Заключение

В результате выполнения выпускной квалификационной бакалаврской работы на тему: «Разработка дистанционной системы управления учебным роботом» произведена и создана система дистанционного управления учебным роботом по каналу связи Bluetooth. Учебным роботом является машинка с двумя двигателями постоянного тока и элементом питания. Устройством передачи сигнала был выбран телефон с возможностью передачи информации по Bluetooth, а устройство приемник - это Bluetooth модуль установленный на плате в машинке.

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

Созданная система дистанционного управления осуществляется с помощью микроконтроллера. Микроконтроллеры намного лучше своих предшественников. Они намного меньших размеров и обладают большей производительностью, а так же существенно ускоряют работу поставленной им задачи. В данной работе микроконтроллер используется для обрабатывания сигналов, которые поступают на него с телефона. Так же он отвечает за формирование сигналов для драйвера двигателей, заставляющего непосредственно крутиться движки. Микроконтроллер установлен в схеме, которая в свою очередь установлена в машинке и подсоединена к движкам.

Вышеуказанные выводы сделаны по первой (теоретической) части. Создана структурная схема.

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

В третьей главе создан алгоритм и программа на телефон для визуализации управления двигателями постоянного тока.

В результате выполнения данной работы все поставленные цели и задачи успешно достигнуты. В процессе выполнения работы закреплены навыки по разработке электросхем их расчете, компоновке. Так же во время работы улучшены навыки программирования микроконтроллеров и получен опыт программирования в среде Android.

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

1. Семенов Б.Ю. Силовая электроника для любителей и профессионалов - М.: Солон-Р, 2001. -126 с.

2. Лорен Дэрси, Шейн Кондер: Android за 24 часа. Программирование приложений под операционную систему Google. Изд. Рид Групп, 2011 г.

3. Касаткин А.С. Электротехника: Учеб. пособие для вузов. 4-е изд. - М.:Энергоатомиздат, 1983. -440 с., ил.

4. Евстифеев А.В.: Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. Издательский дом «Додэка-XXI», 2008. - 558 с.

5. Романычева Э.Т. Разработка и оформление конструкторской документации радиоэлектронной аппаратуры. / Справочник. М.: Радио и связь, 1989. - 448 с.

6. Сивухин Д.В. Общий курс физики: Т.1. Механика: Учебное пособие для физических специальностей вузов. - М.: Наука, 1974. - 520 с.

7. Хорвиц П., Хилл У. Искусство схемотехники. В 3-х томах. Пер. с англ. - М.: Мир, 1993.

8. Atmel, 8-bit Microcontroller with 16K Bytes In-System Programmable Flash Atmega16 - Datasheet.

9. L298 - Dual Full-Bridge Driver - Datasheet.

10. L78L00 SERIES - Positive voltage regulators - Datasheet.

11. Bluetooth Serial Converter UART Interface 9600bps User"s Guide - Datasheet

12. Википедия: Свободная энциклопедия. 2012. URL: http://ru.wikipedia.org. (Дата обращения 20.05.2012).

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа , добавлен 24.06.2013

    Разработка принципиальной электрической схемы микропроцессорного устройства управления двигателем постоянного тока на базе контроллера ATmega 128. Разработка пакета подпрограмм на языке Assembler в целях регулирования и корректной работы устройства.

    курсовая работа , добавлен 14.01.2011

    Характеристика устройства и технологических данных промышленного робота СМ40Ц. Описание микропроцессорного комплекта серии U83-K1883, системы его команд, микросхемы К572ПВ4, функциональной, принципиальной схем и алгоритма работы программы управления.

    курсовая работа , добавлен 02.06.2010

    Разработка управляющего микропроцессорного устройства, реализующего заданное взаимодействие с объектом управления, особенности аппаратного и программного обеспечения. Программные средства системы, обеспечивающие выполнение заданного алгоритма управления.

    курсовая работа , добавлен 25.10.2009

    Назначение, классификация и состав системы контроля управления доступом. Основные характеристики биометрических средств идентификации личности. Идентификация пользователя по радужной оболочке глаз. Разработка алгоритма функционирования устройства.

    дипломная работа , добавлен 25.11.2014

    Анализ существующих систем создания и управления сайтами, их общая характеристика и оценка функциональности на современном этапе. Требования к серверной части, средства ее разработки. Тестирование интерфейса. Формирование руководства пользователя.

    дипломная работа , добавлен 11.04.2012

    Актуальность задачи. Разработка функциональной схемы устройства. Радиолокационная установка (РЛУ). Микропроцессорная часть. Обоснование алгоритма работы устройства. Разработка управляющей программы устройства. Схема алгоритма. Пояснения к программе.

    курсовая работа , добавлен 18.10.2007

    Анализ технического задания. Разработка интерфейса программы и ее алгоритмов. Кодирование и тестирование разработанного программного обеспечения, оценка его практической эффективности и функциональности. Формирование, содержание руководства пользователя.

    курсовая работа , добавлен 31.07.2012

    Современные технологии ведения боя. Роботизированные средства в военной сфере. Устройство беспилотных летательных аппаратов, наземных и морских роботов. Разработка программы на языке Prolog для выполнения задачи разминирования военным роботом-сапером.

    курсовая работа , добавлен 20.12.2015

    Проектирование микропроцессорного устройства, которое преобразует интерфейс RS-232 (COM-порт) в IEEE 1284 (LPT-порт). Структурная схема устройства. Преобразование последовательного интерфейса в параллельный интерфейс на микроконтроллере ATMega 8.