Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Элементы умного дома z-wave на Razberry и Z-Uno. Часть 2

В части 1 -  Элементы умного дома z-wave на Razberry и Z-Uno. Часть 1  было рассмотрено создание умного дома для устройств z-wave на контроллере Razberry.

Рассмотрим создание собственных устройств z-wave на плате Z-Uno

Z-Uno — это Arduino в мире Z-Wave. На этой плате вы можете собрать все ваши устройства. Код пишется на языке C в стиле Arduino прямо в среде Arduino IDE. Эта же среда используется для загрузки кода по USB (есть также возможность залить новый код по радио через контроллеры Z-Wave — так называемая перепрошивка OTA). Код управляет всеми ножками как в Arduino. Привычный набор функций Arduino дополнен специфическими для работы с сетью Z-Wave — получения и отправки команд. Все сложности Z-Wave скрыты «под капотом» Z-Uno.


Технические характеристики:

— 28 кБайт FLASH-памяти для ваших скетчей,
— 4 кБайта RAM,
— Z-Wave радио-трансивер на каналах 9.6, 40 и 100 кбит/с,
— 22 GPIO (некоторые перекрываются с другими функциями),
— 4 АЦП,
— 5 ШИМ,
— 2 UART,
— 1 USB (в режиме serial),
— 64 кБайта EEPROM,
— 1 SPI (master или slave режимы)
— 4 ИК-контроллера и 1 ИК-приёмник с функцией обучения,
— 1 TRIAC/ZEROX контроллеры для диммирования,
— 1 прерывание,
— 2 таймера (16 MHz или от внешнего источника),
— I2C (программный на ногах GPIO),
— 1-wire (программный на ногах GPIO),
— 8x6 сканер кнопок (в том числе в режиме глубокого сна),
— 2 сервисных светодиода, 1 сервисная кнопка,
— 1 пользовательский LED (как pin 13 у Arduino).


Распиновка Z-Uno



Режимы питания:

USB 5 В, внешнее 3 В, внешнее 4-15 В или батарейка 3 В,
всегда в сети, спящее или FLiRS,

Функции Z-Wave:

Соответствие Z-Wave Plus,
Все частоты Z-Wave (из-за разных SAW-фильтров будет 3 вида Z-Uno),
Поддержка из коробки шифрования AES 128 бит, описанного в протоколе Z-Wave,
Обновление прошивки и бутлоадера через USB или по радио (Z-Wave OTA),
MultiChannel (10 пользовательских каналов — каждый канал предоставляет одну функцию, см. ниже),
10 групп ассоциаций для управления другими устройствами,
Возможность управлять по радио Z-Wave реле, диммерами, замками, запуском сцен,

Каждый пользовательский канал может содержать один из следующих классов команд Z-Wave:
— Binary Switch (для реле),
— Multilevel Switch (для диммеров, жалюзи),
— Color Switch (для цветных ламп),
— Binary Sensor и Notification (для детекторов и сигнализаций),
— Multilevel Sensor (для датчиков, возвращающих числовое значение),
— Meter (для счётчиков).

Программирование Z-Uno в среде Arduino IDE с дополнительным специальным пакетом для платы Z-Uno. Позволяет создавать свои собственные проекты и загружать их в Z-Uno через USB. Содержит различные примеры для начала.

Запускаем Arduino IDE 1.6.5
Выбираем Файл --> Настройки
B поле Дополнительные ссылки для Менеджера плат добавим адрес z-uno.z-wave.me/files/z-uno/package_z-wave.me_index.json
и нажимаем OK

Выбираем Инструменты --> Плата --> Boards Manager
И в списке плат находим Z-Uno by Z-WANE>ME
и нажимаем Install

После загрузки Плата Z-WANE>ME Z-Uno появится в списке плат



Пункт Записать Загрузчик позволяет обновить загрузчик скетча Z-Uno и стек Z-Wave до самой последней версии, входящей в пакет Z-Uno.
Также в меню появится галочка для включения шифрования (класс команд Security), компактной отправки пакетов (класс команд MultiCommand) и рабочей частоты Frequency (RU, EU, USA). Эти функции не поддерживаются некоторыми контроллерами.
В меню Файл --> Образцы появятся примеры, специфичные для Z-Uno. С них можно начать изучение возможностей Z-Uno.



Создадим 2 устройства на Z-Uno. Одно - RFID-считыватель, второе реле с двойной защелкой.

RFID-считыватель 125 кГц и метки к нему. RFID-считыватель подключается к Z-Uno по последовательному порту

Скетч для Z-Uno

ZUNO_SETUP_CHANNELS(ZUNO_SENSOR_BINARY(ZUNO_SENSOR_BINARY_TYPE_GENERAL_PURPOSE, getter));
// vars
byte statusKey=0x00;
unsigned long millisOK = 0;
// buffer array for data receive over serial port
unsigned int buffer[15]; 
// counter for buffer array
int count = 0;
// time wait packet             
unsigned long millis1 = 0; 
// the code RFID tag combo that opens the door 
unsigned int rfid_ok[14] = 
    {0x2,0x30,0x31,0x30,0x30,0x30,0x37,0x30,0x36,0x30,0x35,0x30,0x35,0x3};

void setup() {
    Serial.begin();          // the USB Serial
    Serial0.begin(9600);     // the Serial port of rfid reader
}
 
void loop() {
    // read data from rfid reader
    if (Serial0.available()) {            
        millis1 = millis();
        // read into buffer
        buffer[count] = Serial0.read();
        count++;     
    }    
    if (millis() - millis1 > 1000 && count > 0) {
        // write rfid tag combo code
        for (int i = 0; i < count; i++) { 
            Serial.print(buffer[i], HEX);  
            Serial.print(" ");
        }
        // code review
        if (control_rfid()) {
            Serial.println("OK!!!");
            // command to controller
            statusKey=0xff;
            zunoSendReport(1);
            millisOK=millis();
        } else {
            statusKey=0x00;
            zunoSendReport(1);
            Serial.println("NO!!!");
        }       
        clearBufferArray();
        millis1 = millis();
        count = 0;
    } 
    if(statusKey==0xff && (millis()-millisOK >= 5000)) {
        statusKey=0x00;
        zunoSendReport(1);         
    }
}

// function to clear buffer array
void clearBufferArray() {
    for (int i = 0; i < 14; i++) {
        buffer[i] = NULL;
    }                  
}

// function code review
boolean control_rfid() {
    int count1;
  
    count1 = 0;
    for (int i = 0; i < 14; i++) {
        if (buffer[i] == rfid_ok[i]) {
            count1++;
        }
    }
    if (count1 == 14) {
        return true;
    }
  return false;                
}

byte getter(void) {
    return statusKey;
}

Загружаем скетч на плату и добавляем устройство в сеть z-wave (Включить устройство --> тройное нажатие на кнопку BTN на Z-Uno)

Появится устройство ZUNO_SENSOR_BINARY(), которое назовем rfid. Устройство принимает статус 1 при опознании выбранной метки и через 10 секунд принимает статус 0.

Дверная защелка подключена к Z-Uno через реле. При подаче 1 на выход 13 Z-Uno, на защелку подается 12В и она открывается.

Скетч для этой Z-Uno

// pin number, where relay is connected
#define RELAY_PIN     13

// variable to store current relay state
byte lastSetValue;

// next macro sets up the Z-Uno channels
// in this example we set up 1 switch binary channel
// you can read more on http://z-uno.z-wave.me/Reference/ZUNO_SWITCH_BINARY/
ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getter, setter));

void setup() {
  pinMode(RELAY_PIN, OUTPUT); // set up relay pin as output
}

void loop() {
  // loop is empty, because all the control comes over the Z-Wave
}


// function, which returns the previously saved relay value
// this function runs only once the controller asks
byte getter() {
    return lastSetValue;
}


// function, which sets new relay state
// this function runs only once the controller sends new value
void setter(byte newValue) {
  // newValue is a variable, holding a "value"
  // which came from the controller or other Z-Wave device
  if (newValue > 0) { // if greater then zero
    digitalWrite(RELAY_PIN, HIGH); //turn relay on
  } else {            // if equals zero
    digitalWrite(RELAY_PIN, LOW); //turn relay off
  }

  // save the new value in a variable
  lastSetValue = newValue;
}

Загружаем скетч на плату и добавляем устройство в сеть z-wave (Включить устройство --> тройное нажатие на кнопку BTN на Z-Uno)

Появится устройство Z-Wave.Me Switch.

Создаем 2 приложения Если --> Тогда. 

При поднесении нужной метки защелка будет открываться на 10 секунд

 

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 Участие в конкурсе 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Arduino UNO
Arduino UNO
200 Вт усилитель класса D на IRS2092 Печатная плата для усилителя "LM3886 + AD825"
вверх