Разработка программного продукта для системы запуска и остановки двигателя
Проектирование и разработка приложения для взаимодействия с микропроцессором Arduino. Факторы, влияющие на правильную работу, как приложения, так и автомобиля. Разработка и сбор принципиальной схемы запуска двигателя и написание необходимого кода для нее.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 18.11.2017 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
void check_start()-основная функция проверки запуска двигателя
void do_start()-функция запуска двигателя
void check_for_shutdown()-функция запущенного двигателя
void do_shutdown()-функция отключения питания
7. Тестирование программного продукта
7.1 Функциональное тестирование
При функциональном тестировании исследуется работа всех функций программного продукта и проверяется соответствие полученных результатов ожидаемым, т.е. рассматриваются системные характеристики программ, но игнорируется их внутренняя логическая структура.
Проверка работоспособности кнопок. При нажатии на кнопку поднятия левого стеклоподъемника соответствующий диод загорается, а при отпускании диод перестает гореть. Также происходит с кнопкой опускания и кнопками правого стеклоподъемника. Работоспособность показана в соответствии с рисунком 7.1.
Рисунок 7.1 - Поднятие стеклоподъемника
При включении переключателя центрального замка, соответствующий диод загорается, а при отключении перестает гореть. Работоспособность показана в соответствии с рисунком 7.2.
Рисунок 7.2 Включен центральный замок: 1 - на макетной плате; 2 - в приложении
Нажав на кнопку «Старт» в приложении загорается красный индикатор, информирующий о том, что зажигание включено. Результат можно наблюдать в соответствии с рисунком 7.3. Соответствующие два диода на макетной плате тоже загораются, информируя о том, что пришли оба необходимых сигнала.
Рисунок 7.3 Включено зажигание: 1 - на макетной плате; 2 - в приложении
Пробуем, не нажав ни на одну кнопку на макетной плате, запустить двигатель - изменений не происходит. Нажав два раза быстро на кнопку «Старт» красный индикатор перестает гореть и все соответствующие диоды на плате тоже перестают гореть. Опять запустив зажигание, пробуем, нажав на макетной плате на кнопки, отвечающие за педаль тормоза и индикации зарядка аккумулятора, запустить двигатель. После трех необходимых секунд видим в соответствии с рисунком 7.4, что сигнал на стартер пришел, соответственно машина пытается завестись.
Рисунок 7.4 - Запущен стартер
Не отпуская клавиш, ждем пять секунд. Через пять секунд все питание отключается, значит, защита от перекручивания стартера работает исправно и это не даст нам пытаться запустить двигатель впустую. Опять зажав все клавиши и нажав кнопку «Старт» пытаемся завести двигатель, только в этот раз в момент, когда стартер начнет крутить, мы отпустим клавишу индикации заряда батарее на макетной плате, информируя о том, что машина завелась. Проделав эти действия в приложении, индикатор загорелся зеленым цветом, сообщая, что машина заведена. Результат можно увидеть в соответствии с рисунком 7.5.
Рисунок 7.5 - Машина заведена
Нажав еще раз на кнопку «Старт» происходит запланированное отключение питания.
Таким образом, проведя функциональное тестирование, было проверено, что все заявленные функции работают так, как и должны работать.
7.2 Структурное тестирование
При структурном тестировании (тестировании «белого ящика») известна внутренняя структура программы, исследуются внутренние элементы программы и связи между ними. Здесь проверяется корректность построения элементов программы и правильность их внутреннего взаимодействия друг с другом.
При выполнении структурного тестирования была проверена работоспособность всех функций и веток программного кода. Ошибок не обнаружено.
7.3 Альфа-тестирование
Альфа-тестирование - имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком.
При проведении некоторого количества раз альфа-тестирования была имитирована работа программного продукта. В результате ошибок не было обнаружено.
Заключение
Существует большое количество микропроцессоров и платформ осуществляющие схожие функции с Arduino: такие как Raspberry Pi, Iskra Neo, Strela, STM,Teensy,BeaglyBone и другие. Все эти устройства объединяет разрозненную информацию о программировании и заключает ее в легкую в использовании сборку. Однако Arduino имеет ряд преимуществ перед остальными для использования преподавателями, студентами и простыми пользователями:
Самое главное это низкая стоимость платы, по отношению к остальным.
Второе это кросс-платформенность. Arduino работает почти со всеми операционными системами: Windows, Macintosh и Linux.
В третьих среда программирования проста и понятна. Она подходит как для начинающих пользователей, так и для опытных. Также эта среда очень полезна как для преподавателей, так и для студентов, потому что все программы пишутся на языке C/C++.
В ходе выполнения программного продукта был спроектировано и разработано приложение для взаимодействия с микропроцессором Arduino. Была разработана и собрана принципиальная схема, а так же написан необходимый код, удовлетворяющий потребностям выпускной квалификационной работы.
Список использованных источников
1. Arduino [Электронный ресурс] Режим доступа: https://ru.wikipedia.org/wiki/Arduino.
2. Документация [Электронный ресурс] // Официальный сайт приложения RemoteXY - Режим доступа: http://remotexy.com/ru/help.
3. Резисторы [Электронный ресурс] // Школа для электрика - Режим доступа: http://electricalschool.info/main/sovety/464-rezistory.html.
4. Среда разработки Arduino [Электронный ресурс] // Официальный российский сайт Arduino - Режим доступа: http://arduino.ru/Arduino_environment.
Приложение 1 (обязательное)
Блок-схема алгоритма
Приложение 2 (обязательное)
Код программы
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__HC05_HARDSERIAL
#include <RemoteXY.h>
/* настройки соединения */
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600
/* конфигурация интерфейса приложения */
unsigned char RemoteXY_CONF[] =
{ 6,2,199,0,5,5,2,1,0,12
,6,23,23,19,3,24,24,2,208,161
,209,130,208,176,209,128,209,130,0,2
,0,12,44,27,13,19,39,22,11,2
,79,78,0,79,70,70,0,1,1,57
,18,12,12,13,64,12,12,2,203,132
,0,1,1,57,37,12,12,13,83,12
,12,2,203,133,0,1,1,82,18,12
,12,41,65,12,12,2,203,132,0,1
,1,82,37,12,12,41,83,12,12,2
,203,133,0,65,6,30,3,6,6,40
,1,7,7,2,129,0,2,36,51,5
,1,30,18,6,8,208,166,208,181,208
,189,209,130,209,128,208,176,208,187,209
,140,208,189,209,139,208,185,32,208,183
,208,176,208,188,208,190,208,186,0,129
,0,50,9,49,5,2,52,18,6,8
,208,161,209,130,208,181,208,186,208,187
,208,190,208,191,208,190,208,180,209,138
,208,181,208,188,208,189,208,184,208,186
,208,184,0 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
unsigned char start_in; /* =1 если кнопка нажата, иначе =0 */
unsigned char switch_central_locking; /* =1 если переключатель включен и =0 если отключен */
unsigned char button_windows_l_u; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_windows_l_d; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_windows_r_u; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_windows_r_d; /* =1 если кнопка нажата, иначе =0 */
/* output variable */
unsigned char led_1_r; /* =0..255 яркость зеленого цвета индикатора */
unsigned char led_1_g; /* =0..255 яркость зеленого цвета индикатора */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/*---------------------------------------------------------------------*/
//Настройки
int ENGINE_START_MAX_TIME = 3; //В секундах максимальное время работы стартера
int kol=0;
// Порты входа
const int hand_brake_in = 12; // adruino Контакт ножного тормоза «-»
const int sharging_in = 3; //сигнал лампочки аккамулятора
const int sharging_on = 0; // 0 когда во время работы генератора или от датчика давления масла на этом входе низкое состояние , 1 когда на лампе генератора при работе генератора высокое состояние
const int hand_brake_on = 1; // 1= датчик ручника в поднятом состоянии выдает высокий уровень напряжения
// Порты выхода
const int starter_out = 11; // adruino реле стартера
const int engine_out = 10; // adruino зажигание
const int secpower_out = 9; // иницилизация вставленного ключа
const int windows_l_u = 8; // стеклоподъемник левый вверх
const int windows_l_d = 4; // стеклоподъемник левый вниз
const int windows_r_u = 6; // стеклоподъемник правый вверх
const int windows_r_d = 5; // стеклоподъемник правый вниз
const int central_locking = 7; // центральный замок
// variable for actual mode
int actual_mode = 0; // если 2 то двигатель запущен
unsigned long newTime=0; //начало отсчета времени работы программы
/*-------Начальные установки-------*/
void setup() {
RemoteXY_Init ();
Serial.begin(9600);//Для общения с Arduino и блютузом
RemoteXY.start_in = 0; //начальное значение 0 кнопки старт
//---- настройка входов и выходов контроллера --------------
// Входные пины
pinMode(hand_brake_in, INPUT); // enable input
pinMode(sharging_in, INPUT); // enable input
// Выходные пины ( на реле)
pinMode(starter_out, OUTPUT); // enable output
digitalWrite(starter_out, LOW); //set digital 0
pinMode(engine_out, OUTPUT); // enable output
digitalWrite(engine_out, LOW); //set digital 0
pinMode(secpower_out, OUTPUT); // enable output
digitalWrite(secpower_out, LOW); //set digital 0
pinMode(windows_l_u, OUTPUT); // enable output
digitalWrite(windows_l_u, LOW); //set digital 0
pinMode(windows_l_d, OUTPUT); // enable output
digitalWrite(windows_l_d, LOW); //set digital 0
pinMode(windows_r_u, OUTPUT); // enable output
digitalWrite(windows_r_u, LOW); //set digital 0
pinMode(windows_r_d, OUTPUT); // enable output
digitalWrite(windows_r_d, LOW); //set digital 0
pinMode(central_locking, OUTPUT); // enable output
digitalWrite(central_locking, LOW); //set digital 0
//---- конец настройки входов и выходов контроллера --------------
}
void loop()
{
//---- код программы --------------
/*-----Старт/стоп------*/
RemoteXY_Handler ();
if (actual_mode < 2 ) //если двигатель не запущен
check_start(); //Управляем режимом запуска
if (actual_mode == 2 ) // если двигатель запущен
{
check_for_shutdown(); //Управляем режимом ожидания
Serial.print(«Start_in:»); //Для проверки
Serial.println(RemoteXY.start_in);//тоже
}
/*------конец Старт/стоп ---------*/
/*---------Стеклоподъемники и центральный замок-----*/
if (RemoteXY.button_windows_l_u != 0) digitalWrite(windows_l_u, HIGH); // при нажатие на кнопку подается сигнал, для остальных так же
else digitalWrite(windows_l_u, LOW);
if (RemoteXY.button_windows_l_d != 0) digitalWrite(windows_l_u, HIGH);
else digitalWrite(windows_l_d, LOW);
if (RemoteXY.button_windows_r_u != 0) digitalWrite(windows_l_u, HIGH);
else digitalWrite(windows_r_u, LOW);
if (RemoteXY.button_windows_r_d != 0) digitalWrite(windows_l_u, HIGH);
else digitalWrite(windows_r_d, LOW);
if (RemoteXY.switch_central_locking != 0) digitalWrite(central_locking, HIGH);
else digitalWrite(central_locking, LOW);
}
//------------------конец основного кода -----------------
//---- а дальше идут используемые функции и подфункции --------------
void check_start()
{
if (RemoteXY.start_in != 0) // !=0 значит импульс старта пришел с планшета
{
RemoteXY.led_1_r = 255; //включаем красный индикатор, сообщая что зажигание включено
RemoteXY.start_in=0; //обнуляем значение кнопки
Serial.println(«on ACC!»); //----------------
Serial.println(digitalRead(sharging_in)); //Для проверки
Serial.println(digitalRead(hand_brake_in)); //----------------
digitalWrite(engine_out, HIGH); //включаем зажигание
digitalWrite(secpower_out, HIGH); //включаем печку фары итд
if(kol!=0) //если не первый раз запуск
{
newTime = millis()-newTime; //время между нажатиями клавишы
Serial.print(«newTime:»); //-----------------
Serial.println(newTime); //----------------
if(newTime<1500) //Если время меньше 1,5 сек
{
do_shutdown(); //то глушим все
kol=-1; //и обнуляем кол-во запусков
}
else
{
newTime=millis(); //Если больше то просто запоминаем время нажатия
}
}
else //если первый запуск
{
newTime=millis(); //запоминаем время
Serial.print(«newTime000:»); //-----------------
Serial.println(newTime); //----------------
kol++; //и увеличиваем колличество запусков
}
if (digitalRead(hand_brake_in) == hand_brake_on && digitalRead(sharging_in) != sharging_on ) // проверяем что ручник стоит а генератор не работает (0 - лампа горит, генератор не работает)
{
Serial.println(«3apyckaem dvigatel!»);
delay(3000);//Ждем 3 сек чтобы накачал бензонасос
if (digitalRead(sharging_in) != sharging_on) // проверяем что генератор не работает
{
Serial.println(«Krytim starter»);
do_start(); // пытаемся запустить двигатель
}
//actual_mode = 2; //Запоминаем что движок запущен
} // конец проверки что ручник стоит а генератор не работает
} // конец проверки что импульс старта пришел с дистанционного управления
} // конец процедуры старта
/*---Запуск двигателя---*/
void do_start()
{
Serial.print(«Start_in:»); //-----------------
Serial.println(RemoteXY.start_in);//----------------
digitalWrite(secpower_out, LOW); //выключаем печку фары итд
//----------------------------------------------------------------------------------- цикл стартера
digitalWrite(starter_out, HIGH); //включаем стартер
for (int secs=0; secs <= ENGINE_START_MAX_TIME ; secs++)
{
delay(1000); // и продолжаем его держать включенным 1 секунду
if (digitalRead(sharging_in) == sharging_on) //если зарядка пошла то
break; // прерываем цикл
}
//-----------------------------------------------------------------------------------
digitalWrite(starter_out, LOW); //отключаем стартер
digitalWrite(secpower_out, HIGH); //включаем печку фары итд
if (digitalRead(sharging_in) == sharging_on) //еще раз смотрим что зарядка пошла
{
actual_mode = 2; //Запоминаем что движок запущен
}
else
{
digitalWrite(engine_out, LOW); //выключаем зажигание чтбы разблокировать реле стартера
digitalWrite(secpower_out, LOW); //выключаем печку фары итд
RemoteXY.led_1_r = 0; //отключаем красный индикатор
}
}
void check_for_shutdown()
{
//сюда мы попадаем когда контроллер считает что движок работает
if (digitalRead(sharging_in) != sharging_on ) //проверяем что движок случайно не заглох
do_shutdown(); //если заглох, то все глушим
else
RemoteXY.led_1_g = 255; //Включаем индикатор в приложении
Serial.println(«dvigatel on!»);
Serial.println(RemoteXY.start_in);
if (RemoteXY.start_in != 0) //если нажалась кнопка в приложении, то глушим двигатель
{
RemoteXY.start_in=0;
do_shutdown();
}
}
/*----------функция отключения питания---------*/
void do_shutdown()
{
RemoteXY.led_1_g = 0; //Выключаем индикатор в приложении
RemoteXY.led_1_r = 0;
digitalWrite(secpower_out, LOW); //выключаем печку фары и т.д.
digitalWrite(engine_out, LOW); //вырубаем зажигание
actual_mode = 0; // движок выключили, запомним это
Serial.println(«Bce off!»);
}
Размещено на Allbest.ru
...Подобные документы
Спецификация требований к разрабатываемому приложению. Разработка структурной схемы интерфейса. Описание алгоритма шифрования DES. Разработка программного кода приложения "DES". Проведение исследования основных шагов для генерации ключей и шифрования.
курсовая работа [398,4 K], добавлен 13.12.2022Разработка приложения с помощью среды Microsoft Visual Studio 2010 Express. Интерфейс приложения. Разработка конечного программного продукта, демонстрирующего работу многопоточного приложения, использующего взаимоисключение на основе критической секции.
лабораторная работа [300,4 K], добавлен 21.07.2012Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.
дипломная работа [1,5 M], добавлен 09.11.2016Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.
курсовая работа [2,2 M], добавлен 14.04.2019Представление о системе Arduino. Структура платформы Android. Выбор средств разработки. Разработка структур данных и алгоритмов. Характеристика Bluetooth модуля, блок реле, резисторов, диодов. Графический интерфейс приложения. Написание кода программы.
дипломная работа [4,0 M], добавлен 19.01.2017Общее определение JavaScript-библиотеки, виды библиотек. Создание клиентского приложения с использованием одного из существующий JS-фреймворков. Значение, виды и выбор фреймворка. Выбор приложения и его тематики. Написание программного кода, итоги работы.
курсовая работа [545,8 K], добавлен 21.12.2013Изучение языков программирования PHP, SQL, C++, HTML. Рассмотрение правил запуска и использования локального сервера Denwer. Составление технического задания по разработке программного продукта. Описание создаваемого мобильного и веб-приложения.
курсовая работа [212,4 K], добавлен 07.04.2015Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.
курсовая работа [527,1 K], добавлен 27.09.2014Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Проектирование программного продукта "Корпоративный портал", решающего коммуникационные, организационные и HR-задачи компании. Разработка эскизного и технического проектов Web-приложения, его тестирование. Определение затрат на создание программы.
дипломная работа [4,1 M], добавлен 13.05.2012Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Разработка программного кода. Анализ набора функций, необходимых для реализации приложения. Создание компонента Timer. Получение списка имен процессов запущенных на локальном компьютере. Проверка правильности работы программы и соответствия требованиям.
курсовая работа [2,3 M], добавлен 05.01.2013Создание программного приложения для осуществления основных функций по заказу мебели, регистрации клиентов, сотрудничеству с поставщиками. Разработка интерфейса прикладной программы. Логическое проектирование базы данных и SQL-скрипт генерации таблиц.
курсовая работа [2,4 M], добавлен 11.02.2013Описание приложения в виде пользовательского сценария. Проектирование обмена сообщениями между модулями. Разработка общей структуры приложения. Обзор структуры файлов. Разработка получения данных со страницы. Характеристика результата работы программы.
дипломная работа [1,5 M], добавлен 22.03.2018Разработка программного продукта - приложения, позволяющего заносить данные анкетирования в базу данных MS SQL. Описание логики работы приложения, особенности пользовательского интерфейса. Формы просмотра анкет, описание процедур и функций программы.
курсовая работа [1,2 M], добавлен 16.08.2012Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.
курсовая работа [949,7 K], добавлен 22.02.2015Понятие, законодательное регулирование и виды электронных подписей. Разработка структурной схемы приложения и базы данных. Создание диаграммы прецедентов и классов. Проектирование интерфейса программы. Анализ руководства пользователя web-приложения.
дипломная работа [869,8 K], добавлен 12.08.2017Общее определение и история создания JavaScript библиотек, их назначение и использование. Виды и особенности JS фреймворков. Создание клиентского приложения (каталога комплектующих компьютера), написание кода страницы с использованием фреймворка Jquery.
курсовая работа [544,5 K], добавлен 17.12.2013Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.
курсовая работа [3,3 M], добавлен 15.09.2014