Глава 2. Разработка устройства




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

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

Рисунок 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. Информация сайта https://habrahabr.ru/post/118817/

4. Информация сайта https://ab-log.ru/

5. Информация сайта https://a-bolshakov.ru/index/0-163

6. Информация сайта https://xively.com/?from_cosm=true

7. Информация сайта https://www.tesli.com/ru/service/automation/smarthouse/

8. Информация сайта https://www.fibaro.com


 

Приложение 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);

}

}

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-11-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: