ПЗ (1190607), страница 6
Текст из файла (страница 6)
Продолжение таблицы 2
| Этап | Срок | Содержание | Техническое обеспечение | Количество участников | стоимость, руб |
| 3 | 2 дня | Написание клиент-серверного приложения | PC.IDE.Raspberry Pi | 1 | 5000 |
| 4 | 3 дня | Подключение всех датчиков и сервоприводов к Arduino | Датчики, сервоприводы, соединительные провода | 1 | 5000 |
| 5 | 2 дня | Написание программы для Arduino | Arduino. PC, Arduino Sketch | 1 | 4000 |
| 6 | 2 дня | Связь между Raspberry Pi и Arduino | Raspberry Pi ,Arduino, IDE | 1 | 4000 |
| 7 | 3 дня | Отладка | Собранный макет | 1 | 3000 |
Из таблицы видно, что разработка лабораторного макета занимает 14 дней, за это время на разработку уйдет 24000 рублей.
Суммируя полученные значения, получаем полную стоимость лабораторного макета, минимальная 33350 рублей, максимальная 48350 рублей.
ЗАКЛЮЧЕНИЕ
Разработанный аппаратно-программный модуль решает поставленные задачи и удовлетворяет требованиям заказчика. Изучая аналоги уже существующих роботов выявлено, что использованные в них аппаратно-программные модули имеют меньший функционал, чем представленный в ВКР модуль. Робот в котором будет использоваться данный модуль в отличие от аналогов будет имеет большое количество датчиков и возможность дистанционного управления. Так же не маловажным отличием является возможность беспроводной загрузки программы в плату.
Рассмотрены различные способы взаимодействия всех компонентов модуля между собой и выбраны наиболее подходящие для решения поставленной задачи.
В ходе изучения различных сред разработки программного обеспечения представлены преимущества и недостатки выбранных сред.
Аппаратная часть представлена контроллером Arduino Mega 2560 к которому подсоединены все датчики и сервоприводы. Выбранная плата, получая команды, выполняет их и если необходимо отсылает ответ. Микрокомпьютер Raspberry Pi является промежуточным звеном между PC и платой и обеспечивает взаимодействие между ними.
Получившийся аппаратно-программный модуль имеет открытый исходный код и выводит на экран значимые промежуточные результаты выполнения команд. Что позволит студентам лучше понять основные принципы работы как робота в целом, так и отдельных его частей вследствие чего повысит уровень их знаний в области робототехники. Использование модуля как базы для более крупных проектов может значительно сократить затраченное студентами время на тестирование и разработку новых идей.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1 Bruno Siciliano, Oussama Khatib Springer Handbook of Robotics /Springer-Verlag New York, Inc. Secaucus, NJ, USA, 2007. – 1593 p.
2 James A. Langbridge Arduino Sketches: Tools and Techniques for Programming Wizardry/ John Wiley & Sons, Inc., Indianapolis, 2015. – 270 p.
3 Гопкало В.Н. Выпускная квалификационная работа. Общие требования и правила оформления: методическое пособие / В.Н. Гопкало, О.А. Графский – Хабаровск: Изд-во ДВГУПС, 2010. – 82 с.
4 В.М. Шарапов, Е.С. Полищук Датчики: Справочное пособие / В.М. Шарапов, Е.С. Полищук, Н.Д. Кошевой, Г.Г. Ишанин, И.Г. Минаев, А.С. Совлуков. – Москва: Изд-во Техносфера, 2012. – 624 с.
5 Карпенко А.П. Робототехника и системы автоматизированного проектирования учебное пособие/ А.П. Карпенко – М.: МГТУ им. Н.Э. Баумана, 2014. – 71 с.
6 Ивкина К.И., Ивкина Л.М. Актуальность обучения робототехнике/ Актуальные проблемы авиации и космонавтики 2015. – Т.2. 942 с.
7 Э.Накано Введение в робототехнику /Пер. с япон – Логинов А.И., Филатов А.М. изд. Мир, 1988. – 334 с.
8 Роботы-манипуляторы [Электронный ресурс] – Режим доступа: http://роботы-манипуляторы.рф/theory/type.php (Дата обращения 12.05.2017)
9 Практические методы оценки интеллектуальной собственности [Электронный ресурс] – Режим доступа: http://www.elitarium.ru/intellektualnaya-sobstvennost-metod-ocenka-dohod-royalti-pribyl-diskontirovanie-stavka-kapitalizaciya-licenziya-aktiv/ (Дата обращения 08.06.2017)
10 Основы интеллектуальной собственности / научно-образовательный материал С.А.Платонов [Электронный ресурс] – Режим доступа: http://www.msu.ru/projects/amv/doc/h6_1_6_1_r2_nom8.pdf (Дата обращения 08.06.2017)
11 Методы оценки интеллектуальной собственности [Электронный ресурс] – Режим доступа: http://1-inc.ru/metody-otsenki-intellektual-noj-sobstvennosti/ (Дата обращения 07.06.2017)
12 Программирование Arduino [Электронный ресурс] – Режим доступа: http://arduino.ru/Reference (Дата обращения 05.06.2017)
13 Подключение Arduino к Raspberry Pi [Электронный ресурс] – Режим доступа: https://blogs.msdn.microsoft.com/sos/2015/07/01/arduino-raspberry-pi/ (Дата обращения 03.06.2017)
14 Raspberry Pi модель B+ [Электронный ресурс] – Режим доступа: https://www.raspberrypi.org/products/model-b-plus/ (Дата обращения 25.05.2017)
15 Сравнение wi-fi и Bluetooth [Электронный ресурс] – Режим доступа: http://masters.donntu.org/2013/fknt/mironyuk/library/article10.htm (Дата обращения 28.05.2017)
16 Сравнение wi-fi и Bluetooth [Электронный ресурс] – Режим доступа: http://www.nortel.ru/computer/kakaya-raznica-mezhdu-wi-fi-i-bluetooth.htm (Дата обращения 28.05.2017)
17 Компиляторы и IDE [Электронный ресурс] – Режим доступа: http://www.raspberry-projects.com/pi/category/programming-in-c/compilers-and-ides (Дата обращения 04.06.2017)
18 Geany официальная страница [Электронный ресурс] – Режим доступа:
https://www.geany.org/Main/About (Дата обращения 04.06.2017)
19 Arduino Mega 2560 описание контроллера [Электронный ресурс] – Режим доступа: http://arduino.ru/Hardware/ArduinoBoardMega2560 (Дата обращения 08.06.2017)
20 Qt Creator официальная страница [Электронный ресурс] – Режим доступа: https://www.qt.io/ide/ (Дата обращения 04.06.2017)
21 Обзор Qt [Электронный ресурс] – Режим доступа: http://mintlinux.ru/blogs/ruskii-linux-mint-nastroika-obzory/obzor-kros-platformenoi-sredy-razrabotki-qtcreator.html (Дата обращения 04.06.2017)
22 NetBeans преимущества [Электронный ресурс] – Режим доступа: https://netbeans.org/features/index.html (Дата обращения 04.06.2017)
23 NetBeans описание [Электронный ресурс] – Режим доступа: https://netbeans.org/about/index.html (Дата обращения 04.06.2017)
24 Eclipse официальная страница [Электронный ресурс] – Режим доступа: https://eclipse.org/org/ (Дата обращения 06.06.2017)
25 Краткий обзор языка C# [Электронный ресурс] – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/articles/csharp/tour-of-csharp/ (Дата обращения 06.06.2017)
26 Обзор языка C++ [Электронный ресурс] – Режим доступа: https://msdn.microsoft.com/ru-ru/library/hh279654.aspx (Дата обращения 06.06.2017)
27 Python официальная страница [Электронный ресурс] – Режим доступа: https://www.python.org/about/ (Дата обращения 06.06.2017)
28 Microsoft Visual Studio описание продукта [Электронный ресурс] – Режим доступа: https://www.microsoft.com/rus/business/smb/products-list/visualstudio2010/ (Дата обращения 08.06.2017)
29 MonoDevelop официальная страница [Электронный ресурс] – Режим доступа: http://www.monodevelop.com/ (Дата обращения 08.06.2017)
30 SharpDevelop официальная страница [Электронный ресурс] – Режим доступа: http://www.icsharpcode.net/opensource/sd/Default.aspx (Дата обращения 08.06.2017)
31 Raspberry Pi B+ техническая информация [Электронный ресурс] – Режим доступа: https://cdn-learn.adafruit.com/downloads/pdf/introducing-the-raspberry-pi-model-b-plus-plus-differences-vs-model-b.pdf (Дата обращения 25.05.2017)
32 PuTTY ssh клиент [Электронный ресурс] – Режим доступа: https://putty.org.ru (Дата обращения 02.06.2017)
ПРИЛОЖЕНИЕ А
(обязательное)
Листинг PC программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using MjpegProcessor;
namespace WinPO
{
public partial class Form1 : Form
{
MjpegDecoder m_mjpeg;
bool cameraStatus = false;
string raspberryIP = "192.168.0.43";
public void SendMessage(TextBox tBox, string MoveType, int ButtonNum)
{
IPHostEntry ipHost = Dns.Resolve(raspberryIP);
IPEndPoint endPt = new IPEndPoint(ipHost.AddressList[0], 11000);
Socket Sender = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
// Соединяем сокет с удаленной точкой
Sender.Connect(endPt);
if (tBox.Text != null)
{
int data = Int32.Parse(tBox.Text);
byte[] msgToSend = Encoding.UTF8.GetBytes(MoveType + data + "button" + ButtonNum.ToString());
int bytesSent = Sender.Send(msgToSend);
}
Sender.Shutdown(SocketShutdown.Both);
Sender.Close();
}
public Form1()
{
InitializeComponent();
m_mjpeg = new MjpegDecoder();
m_mjpeg.FrameReady += mjpeg_FrameReady;
}
private void GetDataButton_Click(object sender, EventArgs e)
{
if (listBox2.SelectedIndex > -1)
{
byte[] bytes = new byte[1024];
int recivedMsg;
IPHostEntry ipHost = Dns.Resolve(raspberryIP);
IPEndPoint endPt = new IPEndPoint(ipHost.AddressList[0], 11000);
Socket Sender = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
Sender.Connect(endPt);
byte[] msgToSend = Encoding.UTF8.GetBytes(listBox2.SelectedItem.ToString());
int bytesSent = Sender.Send(msgToSend);
recivedMsg = Sender.Receive(bytes);
DataTextBox.Text += Encoding.UTF8.GetString(bytes, 0, recivedMsg) + Environment.NewLine;
Sender.Shutdown(SocketShutdown.Both);
Sender.Close();
}
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
IPHostEntry ipHost = Dns.Resolve(raspberryIP);
IPEndPoint endPt = new IPEndPoint(ipHost.AddressList[0], 11000);
Socket Sender = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
// Соединяем сокет с удаленной точкой
Sender.Connect(endPt);
ConnectionStatus.Text = "подключено";
Sender.Shutdown(SocketShutdown.Both);
Sender.Close();
}
catch (Exception ex)
{
ConnectionStatus.Text = ex.ToString();
}
}
private void LeftButton_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(MoveAmount.Text))
SendMessage(MoveAmount, "Move", 1);
}
private void UpButton_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(MoveAmount.Text))
SendMessage(MoveAmount, "Move", 2);
}
private void RightButton_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(MoveAmount.Text))
SendMessage(MoveAmount, "Move", 3);
}
private void DownButton_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(MoveAmount.Text))
SendMessage(MoveAmount, "Move", 4);
}
private void Zveno1_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(DegreeAmount.Text))
SendMessage(DegreeAmount, "Turn", 1);
}
private void Zveno2_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(DegreeAmount.Text))
SendMessage(DegreeAmount, "Turn", 2);
}
private void Zveno3_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(DegreeAmount.Text))
SendMessage(DegreeAmount, "Turn", 3);
}
private void PickFile_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Arduino ino files(*.ino)|*.ino";















