"Умная штора"

курсовая работа

Заключение

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

В ходе выполнения задач с трудностями столкнулась - «спалила» один контроллер форм-фактора Nano, поле чего был произведен переход на Uno.

В настоящее время проект готов к доработке.

Дальнейшие направления развития:

· Разработка Android-приложения для управления платформой через Bluetooth;

· Интеграция датчика света;

· Интеграция часов;

· Физическое присоединение к механизму жалюзи;

· Эстетическое улучшение внешнего вида.

Список использованных источников

1. Майоров В. Г., Гаврилов А. И. Практический курс программирования микропроцессорных систем // Машиностроение. 2009;

2. Фрибель В., Ролоф Х., Шиллер Х. Программирование микропроцессоров // Энергоиздат. 2009;

3. URL: http://www arduino.ru/ (дата обращения 16.12.15);

4. URL: http://www CyberForum.ru/ (дата обращения 21.11.15);

5. URL: http://www cxem.net/ (дата обращения 16.12.15);

6. URL: http://www miniinthebox.com/ (дата обращения 16.12.15);

7. URL: http://www habrahabr.ru/ (дата обращения 21.03.16);

8. URL: http://www freeduino.ru/ (дата обращения 14.02.16);

9. URL: http://www radioparty.ru/ (дата обращения 14.02.16);

10. URL: http://www forum.amperka (дата обращения 21.11.16).

Приложение 1

Полный код программы.

#include <StepperMotor.h>

const int IN1 = 2;

const int IN2 = 3;

const int IN3 = 4;

const int IN4 = 5;

StepperMotor stepper(IN4, IN3, IN2, IN1);

/**

* Используется для управления

*/

class Blinds

{

private:

/**

* Хранит текущее положение штор, изначально закрыты

* */

boolean stateBlinds;

public:

Blinds(boolean stateBlinds) {

this->stateBlinds = stateBlinds;

}

/**

* Открывает шторы

* */

void blindsUp()

{

stepper.move(2048);

stateBlinds = true;

}

/**

* Закрывает шторы

* */

void blindsDown()

{

stepper.move(-2048);

stateBlinds = false;

}

/**

* Возращает true в случае, если состояние возможно изменить

* */

boolean checkPosition(byte message)

{

if ((stateBlinds == false && message == 0) || (stateBlinds == true && message == 1))

{

return false;

}

return true;

}

};

Blinds *blind;

/**

* Проверяет наличие новых данных из приложения и запускает соответствующие действие

*/

void read() {

if (Serial.available() > 0) {

byte message = Serial.read();

if (blind->checkPosition(message)) {

if (message == 0) {

blind->blindsDown();

}

if (message == 1) {

blind->blindsUp();

}

}

}

}

void setup() {

blind = new Blinds(false);

Serial.begin(9600);

stepper.setPeriod(5);

}

void loop() {

read();

}

Делись добром ;)