Эксперементальная часть

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

Wi-Fi сети. Так же была установлена некоторая задержка приблизительно в 0,3 секунды между подачей команды со смартфона и исполнение ее роботом. Причиной данной проблемы оказался смартфон, который значительное время обрабатывал данные на WEB-странице.

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

Заключение

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

· Была детально изучена платформа Arduino Uno.

· Была изучена исходная модель робота.

· Изучены способы передачи данных через последовательный порт

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

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

· Был приобретен навык программирования в среде ARDUINO IDE.

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

1. А.В. Петин.,- Проекты с использованием контроллера Arduino.-СПб.: 2014.-400с. (дата обращения 20.05.2015)

2. У. Соммер., программирование микроконтроллерных плат Arduino/Freeduino.- СПб.: 2012.-256с. (Дата обращения 25.05.2015)

3. Т. Иго., Arduino, датчики и сети для связи устройств, 2-е изд.- СПб.: 2015.-544с. (Дата обращения 21.05.2015)

4. Дж. Блум., Изучаем Arduino: инструменты и методы технического волшебства.- СПб.: 2015.-36с. (Дата обращения 20.05.2015)

5. Гололобов В.Н., С чего начинаются роботы? О проекте Arduino для школьников.- 2011.-186с. (Дата обращения 26.05.2015)

6. Дипломная работа разработка мобильного робота на базе платформы arduino Д. С. Пнёв.- 2014. (Дата обращения 22.05.2015)

7. Микропроцессорное программирование [Электронный ресурс].- Режим доступа: http://www.mpcontrol.ru (Дата обращения 25.05.2015)

8. Программирование платформы Arduino [Электронный ресурс].- Режим доступа: http://arduino.ua (Дата обращения 25.05.2015)

9. Шарапов А.В. Основы микропроцессорной техники: Учебное пособие. Томск: ТУСУР, 2008.-200с. (Дата обращения 22.05.2015)

10. Харкевич А.А., Основы радиотехники.-2007.-512с. (Дата обращения 23.05.2015)

11. Баскаков С.И., Радиотехнические цепи и сигналы.-2000.-2014 (Дата обращения 21.05.2015)

12. Яшкардин В.Л. Последовательный порт. Программирование COM-порта в Windows и MS-DOS [Электронный ресурс].- Режим доступа: http://www.softelectro.ru/rs232.html (Дата обращения 23.05.2015)

Приложение А

Сертификат участника научно технического семинара.

Приложение Б

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

int M1 = 4;

int M2 = 7;

int M3 = 8;

int E1 = 5;

int E2 = 6;

int E3 = 9;

String inputString = ""; // строка для хранения поступающих данных

boolean stringComplete = false;

void Motor(int mNo, int mPower) {

int M = 0;

int E = 0;

if (mNo == 1) {

M = M1; E = E1;

} else if (mNo == 2) {

M = M2; E = E2;

} else if (mNo == 3) {

M = M3; E = E3;

}

if (mPower > 0) {

digitalWrite(M, HIGH);

} else {

digitalWrite(M, LOW);

}

mPower = abs(mPower);

analogWrite(E, mPower);

}

void setup() {

// initialize serial:

Serial.begin(115200);

// reserve 200 bytes for the inputString:

inputString.reserve(100);

pinMode(M1, OUTPUT);

pinMode(M2, OUTPUT);

pinMode(M3, OUTPUT);

}

void loop() {

// print the string when a newline arrives:

if (stringComplete) {

Serial.println(inputString);

int spaceIndex1 = inputString.indexOf(' ');

int spaceIndex2 = inputString.indexOf(' ', spaceIndex1 + 1);

String command = inputString.substring(0, spaceIndex1);

String motorNo = inputString.substring(spaceIndex1 + 1, spaceIndex2);

String motorPower = inputString.substring(spaceIndex2);

int mNo = motorNo.toInt();

int mPower = motorPower.toInt();

Serial.print(command);

Serial.print(' ');

Serial.print(mNo);

Serial.print(' ');

Serial.println(mPower);

Motor(mNo, mPower);

// clear the string:

inputString = "";

stringComplete = false;

}

}

/*

SerialEvent occurs whenever a new data comes in the

hardware serial RX. This routine is run between each

time loop() runs, so using delay inside loop can delay

response. Multiple bytes of data may be available.

*/

void serialEvent() {

while (Serial.available()) {

// get the new byte:

char inChar = (char)Serial.read();

// add it to the inputString:

inputString += inChar;

// if the incoming character is a newline, set a flag

// so the main loop can do something about it:

if (inChar == '\n') {

stringComplete = true;

}

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: