Проект по робототехнике "Модель «Умный дом»"

Тематика: 
Автор: 
Московой Никита Максимович
Руководитель: 
Федченко Галина Михайловна
Учреждение: 
МБОУ "Гимназия имени Подольских курсантов" г. Подольск
Класс: 
9

Индивидуальный исследовательский проект по робототехнике "Модель «Умный дом»" содержит справочные сведения о системе "умный дом", а также автор представляет свою разработку модуля системы «умный дом», разработку и исследование алгоритмов системы, позволяющих увеличить экономию ресурсов.

Подробнее о проекте:


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

Готовая творческая работа по робототехнике на тему "Модель «Умный дом»" демонстрирует создание учащимся архитектуры аппаратных средств «умного дома» и разработку требований к многофункциональному программно-аппаратному стенду, а также описывает разработку его структуры. Коды для написания программы управления системой "умный дом" представлены в приложении к проекту.

Оглавление

Введение
1. Технологическая часть.
2. Разработка устройства.
Выводы
Список литературы
Приложение

Введение


Само понятие "умный" дом (англ. smart house) не такое уж молодое. Оно возникло в США в начале 70-х годов прошлого века, в недрах "Института интеллектуальных зданий". На тот момент под умным домом подразумевалось "здание, обеспечивающее продуктивное и эффективное использование рабочего пространства…".

Однако годом рождения современного "умного" дома можно считать 1978-й год. В этом году в США компании Х10 USA и Leviton разработали и внедрили в производство технологию управления бытовыми приборами по проводам бытовой электросети.

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

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

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

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

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

Задачи проекта

  1. Создание архитектуры аппаратных средств «умного дома»
  2. Анализ программно-аппаратных систем управления «умным домом»
  3. Отладка стенда

Содержание работы

  1. Обзор систем управления зданиями
  2. Обзор готовых программных решений
  3. Выбор аппаратных средств
  4. Создание архитектуры аппаратных средств «умного дома»
  5. Разработка требований к многофункциональному программно-аппаратному стенду
  6. Разработка структуры программно-аппаратного стенда

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

  • Отладка стенда

Технологическая часть


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

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

Микроконтроллер на плате программируется при помощи языка С++ и среды разработки Arduino. Проекты устройств, основанные на Arduino, могут работать самостоятельно, либо же взаимодействовать с программным обеспечением на компьютере (напр.: Flash, Processing, MaxMSP). Платы могут быть собраны пользователем самостоятельно или куплены в сборе. Программное обеспечение доступно для бесплатного скачивания. Исходные чертежи схем (файлы CAD) являются общедоступными, пользователи могут применять их по своему усмотрению.

В 2006 Arduino получила признание в категории Digital Communities на фестивале Ars Electronica Prix .

Аппаратная часть платформы Arduino

Существует несколько версий платформ Arduino. Последняя версия Leonardo базируется на микроконтроллере ATmega32u4.

Uno, как и предыдущая версия Duemilanove построены на микроконтроллере Atmel ATmega328.

Старые версии платформы Diecimila и первая рабочая Duemilanoves были разработаны на основе Atmel ATmega168 ,более ранние версии использовали ATmega8.

Arduino Mega2560, в свою очередь, построена на микроконтроллере ATmega2560.

Язык Arduino можно разделить на три раздела:

Операторы
· setup()
· loop()
Управляющиеоператоры
· if
· if...else
· for
· switch case
· while
· do... while
· break
· continue
· return
· goto
Синтаксис
· ; (semicolon)
· {} (curly braces)
· // (single line comment)
· /* */ (multi-line comment)
Арифметическиеоператоры
· = (assignment)
· + (addition)
- (subtraction)
· (multiplication)
· / (division)
· % (modulo)
Операторысравнения
· == (equal to)
· != (not equal to)
· < (less than)
· > (greater than)
· <= (less than or equal to)
· >= (greater than or equal to)
· Логические операторы
· && (И)
· || (ИЛИ)
· ! (Отрицание)
Унарныеоператоры
· ++ (increment)
· -- (decrement)
· += (compound addition)
· -= (compound subtraction)
· *= (compound multiplication)
· /= (compound division)
Данные
Константы
· HIGH | LOW
· INPUT | OUTPUT
· true | false
· Целочисленные константы
· Константы с плавающей запятой
Типыданных
· boolean
· char
· byte
· int
· unsigned int
· word
· long
· unsigned long
· float
· double
· string - массив символов
· String - объект класса
· массив (array)
· void
Преобразование типов данных
· char()
· byte()
· int()
· long()
· float()
Область видимости переменных и квалификаторы
· Область видимости
· static
· volatile
· const
Функции
Цифровой ввод/вывод
· pinMode()
· digitalWrite()
· digitalRead()
· Аналоговый ввод/вывод
· analogRead()
· analogReference()
· analogWrite()
Дополнительные фунции ввода/вывода
· tone()
· noTone()
· shiftOut()
· pulseIn()
· Работа со временем
· millis()
· micros()
· delay()
· delayMicroseconds()
Математические функции
· min()
· max()
· abs()
· constrain()
· map()
· pow()
· sq()
· sqrt()
Тригонометрические функции
· sin()
· cos()
· tan()
Генераторы случайных значений
· randomSeed()
· random()
Внешние прерывания
· attachInterrupt()
· detachInterrupt()
Функции передачи данных
· Serial

Разработка устройства


Проектирование системы можно разделить на 2 части: аппаратную и программную.

Аппаратная часть системы представлена платформой Arduino (рис.1) с расширениями и физическими модулями. Arduino – это инструмент для проектирования электронных устройств, более тесно взаимодействующих с окружающей физической средой, чем стандартные персональные компьютеры.

В данной работе будет использована версия платформы Arduino UNO – самая популярная версия базовой платформы Arduino с USB-интерфейсом и возможностью подключения большого разнообразия плат расширения. Эта платформа предназначена для физических расчетов (physical computing) с открытым программным кодом, построенная на простой печатной плате с современной средой для разработки программного обеспечения .

умный дом 1

Рисунок 1 - Внешний вид платформы Arduino MEGA

Arduino использует микроконтроллер Atmega328, который имеет 32 Кб флеш памяти. Этого будет вполне достаточно для выполнения возложенной на платформу задачи. Остальная обработка будет распределена на веб-ресурс.

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

Программная часть системы представлена в программном коде микроконтроллера (Arduino скетч) (см. Приложение 1)

  • Модуль управления кроватью
  • Модуль управления вентилятором
  • Модуль управления светом

Выводы

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

В данный момент работа не окончена. Идет стадия аппаратного проектирования системы «умный дом».

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

  1. В. Архипов «Системы для «интеллектуального» здания» - "СтройМаркет", № 45 1999 г.
  2. Mike Riley «Programming Your Home Automate with Arduino, Android, and Your Computer» - «The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina», 2012 г.
  3. Интернет-ресурсы.

Приложение 1

#include <Keypad.h>

#include <Servo.h>

const int

pin = 8,

DotDelay = 200;

const byte ROWS = 4; //four rows

const byte COLS = 4; //four columns

//define the cymbols on the buttons of the keypads

char hexaKeys[ROWS][COLS] = {

{'1','2','3','A'},

{'4','5','6','B'},

{'7','8','9','C'},

{'*','0','#','D'}

};

byte rowPins[ROWS] = {31,33,35,37}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {39,41,43,45}; //connect to the column pinouts of the keypad

int a;

//initialize an instance of class NewKeypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

char text[]="sos";

Servo servo; //объявляем переменную servo типа Servo

void setup()

{

Serial.begin(9600);

pinMode(pin, OUTPUT);

servo.attach(9);

}

void dot()

{

digitalWrite(pin,HIGH);

delay(DotDelay);

digitalWrite(pin,LOW);

delay(DotDelay);

}

void dash()

{

digitalWrite(pin,HIGH);

delay(DotDelay * 3);

digitalWrite(pin,LOW);

delay(DotDelay);

}

void A()

{

dot();

dash();

}

void B()

{

dash();

dot();

dot();

dot();

}

void C()

{

dash();

dot();

dash();

dot();

}

void D()

{

dash();

dot();

dot();

}

void E()

{

dot();

}

void f()

{

dot();

dot();

dash();

dot();

}

void G()

{

dash();

dash();

dot();

}

void H()

{

dot();

dot();

dot();

dot();

}

void I()

{

dot();

dot();

}

void J()

{

dot();

dash();

dash();

dash();

}

void K()

{

dash();

dot();

dash();

}

void L()

{

dot();

dash();

dot();

}

void M()

{

dash();

dash();

}

void N()

{

dash();

dot();

}

void O()

{

dash();

dash();

dash();

}

void P()

{

dot();

dash();

dot();

}

void Q()

{

dash();

dash();

dot();

dash();

}

void R()

{

dot();

dash();

dot();

}

void S()

{

dot();

dot();

dot();

}

void T()

{

dash();

}

void U()

{

dot();

dot();

dash();

}

void V()

{

dot();

dot();

dot();

dash();

}

void W()

{

dot();

dash();

dash();

}

void X()

{

dash();

dot();

dot();

dash();

}

void Y()

{

dash();

dot();

dash();

dash();

}

void Z()

{

dash();

dash();

dot();

dot();

}

void loop()

{

char customKey = customKeypad.getKey();

char customKey1 = customKeypad.getKey();

if (customKey)

{

Serial.println(customKey);

if (customKey == '5')

{

int a=0;

servo.write(180);

analogWrite(pin, 0);

delay(2000);

}

else

{

int a=1;

Serial.println(a);

servo.write(90);

analogWrite(pin, 400);

delay(1000);

morseText(text);

analogWrite(pin, 400);

delay(5000);

morseText(text);

analogWrite(pin, 400);

delay(10000);

morseText(text);

analogWrite(pin, 400);

delay(15000);

morseText(text);

analogWrite(pin, 400);

delay(20000);

morseText(text);

analogWrite(pin, 0);

delay(2000);

morseText(text);

}

}

}

void morseText(char text[])

{

int l=strlen(text);

for (int i=0; i<l; i++)

{

morseLetter(text[i]);

Serial.print(text[i]);

}

Serial.println();

}

void morseLetter(char letter)

{

if (letter==' ') delay(DotDelay * 6);

if (letter=='a') A();

if (letter=='b') B();

if (letter=='c') C();

if (letter=='d') D();

if (letter=='e') E();

if (letter=='f') f();

if (letter=='g') G();

if (letter=='h') H();

if (letter=='i') I();

if (letter=='g') G();

if (letter=='k') K();

if (letter=='l') L();

if (letter=='m') M();

if (letter=='n') N();

if (letter=='o') O();

if (letter=='p') P();

if (letter=='q') Q();

if (letter=='r') R();

if (letter=='s') S();

if (letter=='t') T();

if (letter=='u') U();

if (letter=='v') V();

if (letter=='w') W();

if (letter=='x') X();

if (letter=='y') Y();

if (letter=='z') Z();

}

Свет

#define led_pin1 13

#define led_pin2 12

#define led_pin3 11

#define led_pin4 10

#define led_pin5 9

#define ldr_pin A0

#define pot_pin A1

void setup()

{

pinMode(led_pin1, OUTPUT);

pinMode(led_pin2, OUTPUT);

pinMode(led_pin3, OUTPUT);

pinMode(led_pin4, OUTPUT);

pinMode(led_pin5, OUTPUT);

}

void loop()

{

int lightness = analogRead(ldr_pin);

int threshold = analogRead(pot_pin);

boolean tooDark = (lightness < threshold);

if (tooDark)

{

digitalWrite(led_pin1, HIGH);

digitalWrite(led_pin2, HIGH);

digitalWrite(led_pin3, HIGH);

digitalWrite(led_pin4, HIGH);

digitalWrite(led_pin5, HIGH);

}

else

{

digitalWrite(led_pin1, LOW);

digitalWrite(led_pin2, LOW);

digitalWrite(led_pin3, LOW);

digitalWrite(led_pin4, LOW);

digitalWrite(led_pin5, LOW);

}

}


Если страница Вам понравилась, поделитесь в социальных сетях:

Вставитьjs: 
нет